Change Details
b2/bom.c |
46 | 46 | s++; |
47 | 47 | for (t = s+1; *t && !isspace(*t); t++); |
48 | 48 | if (!*t) |
49 | | yyerror("invalid BOM record (1)\n"); |
| 49 | yyerror("invalid BOM record"); |
50 | 50 | |
51 | 51 | ref = unique_n(s, t-s); |
52 | 52 | if (bom_find(ref)) |
... | ... | |
86 | 86 | } |
87 | 87 | return b; |
88 | 88 | } |
| 89 | |
| 90 | |
| 91 | void bom_set_sym(const char *ref, const char *sym) |
| 92 | { |
| 93 | struct bom *b; |
| 94 | |
| 95 | b = bom_find(ref); |
| 96 | if (!b) |
| 97 | yyerrorf("cannot find component reference \"%s\"", ref); |
| 98 | if (b->sym) |
| 99 | yyerrorf("symbol is already set in \"%s\"", ref); |
| 100 | b->sym = sym; |
| 101 | } |
b2/bom.h |
30 | 30 | |
31 | 31 | |
32 | 32 | struct bom *bom_parse_line(const char *s); |
| 33 | void bom_set_sym(const char *ref, const char *sym); |
33 | 34 | |
34 | 35 | #endif /* !BOM_H */ |
b2/boom.c |
83 | 83 | " -p providers\n" |
84 | 84 | " -s substitutions\n" |
85 | 85 | " -b KiCad eeschema BOM\n" |
| 86 | " -X symbols (BOM supplement)\n" |
86 | 87 | " -q var=value ... run substitutions with the specified inputs\n" |
87 | 88 | " -Q var=value ... run substitutions and then do parametric search\n" |
88 | 89 | , name); |
... | ... | |
110 | 111 | process = parse_substitutions; |
111 | 112 | else if (!strcmp(argv[i], "-b")) |
112 | 113 | process = parse_kicad_bom; |
| 114 | else if (!strcmp(argv[i], "-X")) |
| 115 | process = parse_symbols; |
113 | 116 | else if (!strcmp(argv[i], "-q")) |
114 | 117 | process = add_var; |
115 | 118 | else if (!strcmp(argv[i], "-Q")) { |
b2/lang.h |
29 | 29 | void parse_providers(const char *name); |
30 | 30 | void parse_substitutions(const char *name); |
31 | 31 | void parse_kicad_bom(const char *name); |
| 32 | void parse_symbols(const char *name); |
32 | 33 | |
33 | 34 | void yywarnf(const char *fmt, ...); |
34 | 35 | void __attribute__((noreturn)) yyerrorf(const char *fmt, ...); |
b2/lang.l |
97 | 97 | do_parse(name, START_SUBST, 0, 1); |
98 | 98 | } |
99 | 99 | |
| 100 | |
| 101 | void parse_symbols(const char *name) |
| 102 | { |
| 103 | do_parse(name, START_SYMBOLS, 1, 0); |
| 104 | } |
| 105 | |
100 | 106 | %} |
101 | 107 | |
102 | 108 | |
b2/lang.y |
102 | 102 | |
103 | 103 | %token START_HIERARCHY START_CHAR START_INVENTORY |
104 | 104 | %token START_EXCHANGE START_PROVIDERS START_SUBST START_BOM |
| 105 | %token START_SYMBOLS |
105 | 106 | %token BOM_EESCHEMA |
106 | 107 | %token TOK_LE TOK_GE TOK_NL |
107 | 108 | %token <s> WORD PATTERN |
... | ... | |
140 | 141 | substitutions = $2; |
141 | 142 | } |
142 | 143 | | START_BOM bom |
| 144 | | START_SYMBOLS symbols |
143 | 145 | ; |
144 | 146 | |
145 | 147 | |
... | ... | |
669 | 671 | * bom.c |
670 | 672 | */ |
671 | 673 | ; |
| 674 | |
| 675 | |
| 676 | /* ----- Symbols (BOM supplement) ------------------------------------------ */ |
| 677 | |
| 678 | |
| 679 | symbols: |
| 680 | | TOK_NL |
| 681 | | symbol symbols |
| 682 | ; |
| 683 | |
| 684 | symbol: |
| 685 | WORD WORD TOK_NL |
| 686 | { |
| 687 | bom_set_sym($1, $2); |
| 688 | } |
| 689 | ; |
Download the corresponding diff file