Date:2012-05-23 22:26:35 (11 years 10 months ago)
Author:Werner Almesberger
Commit:f22378937db114256bc787c942c1f189b009dfbe
Message:b2/: add parsing of supplemental symbol information (option -X)

Files: b2/bom.c (2 diffs)
b2/bom.h (1 diff)
b2/boom.c (2 diffs)
b2/lang.h (1 diff)
b2/lang.l (1 diff)
b2/lang.y (3 diffs)

Change Details

b2/bom.c
4646        s++;
4747    for (t = s+1; *t && !isspace(*t); t++);
4848    if (!*t)
49        yyerror("invalid BOM record (1)\n");
49        yyerror("invalid BOM record");
5050
5151    ref = unique_n(s, t-s);
5252    if (bom_find(ref))
...... 
8686    }
8787    return b;
8888}
89
90
91void 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
3030
3131
3232struct bom *bom_parse_line(const char *s);
33void bom_set_sym(const char *ref, const char *sym);
3334
3435#endif /* !BOM_H */
b2/boom.c
8383" -p providers\n"
8484" -s substitutions\n"
8585" -b KiCad eeschema BOM\n"
86" -X symbols (BOM supplement)\n"
8687" -q var=value ... run substitutions with the specified inputs\n"
8788" -Q var=value ... run substitutions and then do parametric search\n"
8889    , name);
...... 
110111                process = parse_substitutions;
111112            else if (!strcmp(argv[i], "-b"))
112113                process = parse_kicad_bom;
114            else if (!strcmp(argv[i], "-X"))
115                process = parse_symbols;
113116            else if (!strcmp(argv[i], "-q"))
114117                process = add_var;
115118            else if (!strcmp(argv[i], "-Q")) {
b2/lang.h
2929void parse_providers(const char *name);
3030void parse_substitutions(const char *name);
3131void parse_kicad_bom(const char *name);
32void parse_symbols(const char *name);
3233
3334void yywarnf(const char *fmt, ...);
3435void __attribute__((noreturn)) yyerrorf(const char *fmt, ...);
b2/lang.l
9797    do_parse(name, START_SUBST, 0, 1);
9898}
9999
100
101void parse_symbols(const char *name)
102{
103    do_parse(name, START_SYMBOLS, 1, 0);
104}
105
100106%}
101107
102108
b2/lang.y
102102
103103%token START_HIERARCHY START_CHAR START_INVENTORY
104104%token START_EXCHANGE START_PROVIDERS START_SUBST START_BOM
105%token START_SYMBOLS
105106%token BOM_EESCHEMA
106107%token TOK_LE TOK_GE TOK_NL
107108%token <s> WORD PATTERN
...... 
140141            substitutions = $2;
141142        }
142143    | START_BOM bom
144    | START_SYMBOLS symbols
143145    ;
144146
145147
...... 
669671         * bom.c
670672         */
671673    ;
674
675
676/* ----- Symbols (BOM supplement) ------------------------------------------ */
677
678
679symbols:
680    | TOK_NL
681    | symbol symbols
682    ;
683
684symbol:
685    WORD WORD TOK_NL
686        {
687            bom_set_sym($1, $2);
688        }
689    ;

Archive Download the corresponding diff file

Branches:
master



interactive