mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-11-26 21:01:31 +02:00
b2/: add parsing of supplemental symbol information (option -X)
This commit is contained in:
parent
a537cc5503
commit
f22378937d
15
b2/bom.c
15
b2/bom.c
@ -46,7 +46,7 @@ struct bom *bom_parse_line(const char *s)
|
|||||||
s++;
|
s++;
|
||||||
for (t = s+1; *t && !isspace(*t); t++);
|
for (t = s+1; *t && !isspace(*t); t++);
|
||||||
if (!*t)
|
if (!*t)
|
||||||
yyerror("invalid BOM record (1)\n");
|
yyerror("invalid BOM record");
|
||||||
|
|
||||||
ref = unique_n(s, t-s);
|
ref = unique_n(s, t-s);
|
||||||
if (bom_find(ref))
|
if (bom_find(ref))
|
||||||
@ -86,3 +86,16 @@ struct bom *bom_parse_line(const char *s)
|
|||||||
}
|
}
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void bom_set_sym(const char *ref, const char *sym)
|
||||||
|
{
|
||||||
|
struct bom *b;
|
||||||
|
|
||||||
|
b = bom_find(ref);
|
||||||
|
if (!b)
|
||||||
|
yyerrorf("cannot find component reference \"%s\"", ref);
|
||||||
|
if (b->sym)
|
||||||
|
yyerrorf("symbol is already set in \"%s\"", ref);
|
||||||
|
b->sym = sym;
|
||||||
|
}
|
||||||
|
1
b2/bom.h
1
b2/bom.h
@ -30,5 +30,6 @@ extern int n_bom;
|
|||||||
|
|
||||||
|
|
||||||
struct bom *bom_parse_line(const char *s);
|
struct bom *bom_parse_line(const char *s);
|
||||||
|
void bom_set_sym(const char *ref, const char *sym);
|
||||||
|
|
||||||
#endif /* !BOM_H */
|
#endif /* !BOM_H */
|
||||||
|
@ -83,6 +83,7 @@ static void usage(const char *name)
|
|||||||
" -p providers\n"
|
" -p providers\n"
|
||||||
" -s substitutions\n"
|
" -s substitutions\n"
|
||||||
" -b KiCad eeschema BOM\n"
|
" -b KiCad eeschema BOM\n"
|
||||||
|
" -X symbols (BOM supplement)\n"
|
||||||
" -q var=value ... run substitutions with the specified inputs\n"
|
" -q var=value ... run substitutions with the specified inputs\n"
|
||||||
" -Q var=value ... run substitutions and then do parametric search\n"
|
" -Q var=value ... run substitutions and then do parametric search\n"
|
||||||
, name);
|
, name);
|
||||||
@ -110,6 +111,8 @@ int main(int argc, char **argv)
|
|||||||
process = parse_substitutions;
|
process = parse_substitutions;
|
||||||
else if (!strcmp(argv[i], "-b"))
|
else if (!strcmp(argv[i], "-b"))
|
||||||
process = parse_kicad_bom;
|
process = parse_kicad_bom;
|
||||||
|
else if (!strcmp(argv[i], "-X"))
|
||||||
|
process = parse_symbols;
|
||||||
else if (!strcmp(argv[i], "-q"))
|
else if (!strcmp(argv[i], "-q"))
|
||||||
process = add_var;
|
process = add_var;
|
||||||
else if (!strcmp(argv[i], "-Q")) {
|
else if (!strcmp(argv[i], "-Q")) {
|
||||||
|
@ -29,6 +29,7 @@ void parse_currencies(const char *name);
|
|||||||
void parse_providers(const char *name);
|
void parse_providers(const char *name);
|
||||||
void parse_substitutions(const char *name);
|
void parse_substitutions(const char *name);
|
||||||
void parse_kicad_bom(const char *name);
|
void parse_kicad_bom(const char *name);
|
||||||
|
void parse_symbols(const char *name);
|
||||||
|
|
||||||
void yywarnf(const char *fmt, ...);
|
void yywarnf(const char *fmt, ...);
|
||||||
void __attribute__((noreturn)) yyerrorf(const char *fmt, ...);
|
void __attribute__((noreturn)) yyerrorf(const char *fmt, ...);
|
||||||
|
@ -97,6 +97,12 @@ void parse_substitutions(const char *name)
|
|||||||
do_parse(name, START_SUBST, 0, 1);
|
do_parse(name, START_SUBST, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void parse_symbols(const char *name)
|
||||||
|
{
|
||||||
|
do_parse(name, START_SYMBOLS, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
18
b2/lang.y
18
b2/lang.y
@ -102,6 +102,7 @@ static struct subst *parse_jump(const char *keyword, const char *target)
|
|||||||
|
|
||||||
%token START_HIERARCHY START_CHAR START_INVENTORY
|
%token START_HIERARCHY START_CHAR START_INVENTORY
|
||||||
%token START_EXCHANGE START_PROVIDERS START_SUBST START_BOM
|
%token START_EXCHANGE START_PROVIDERS START_SUBST START_BOM
|
||||||
|
%token START_SYMBOLS
|
||||||
%token BOM_EESCHEMA
|
%token BOM_EESCHEMA
|
||||||
%token TOK_LE TOK_GE TOK_NL
|
%token TOK_LE TOK_GE TOK_NL
|
||||||
%token <s> WORD PATTERN
|
%token <s> WORD PATTERN
|
||||||
@ -140,6 +141,7 @@ all:
|
|||||||
substitutions = $2;
|
substitutions = $2;
|
||||||
}
|
}
|
||||||
| START_BOM bom
|
| START_BOM bom
|
||||||
|
| START_SYMBOLS symbols
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
@ -669,3 +671,19 @@ bom:
|
|||||||
* bom.c
|
* bom.c
|
||||||
*/
|
*/
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/* ----- Symbols (BOM supplement) ------------------------------------------ */
|
||||||
|
|
||||||
|
|
||||||
|
symbols:
|
||||||
|
| TOK_NL
|
||||||
|
| symbol symbols
|
||||||
|
;
|
||||||
|
|
||||||
|
symbol:
|
||||||
|
WORD WORD TOK_NL
|
||||||
|
{
|
||||||
|
bom_set_sym($1, $2);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
Loading…
Reference in New Issue
Block a user