%type <string> words;
%type <parser> top;
+%type <parser> item;
%type <parser> assignment;
%type <parser> block;
%type <parser> block_assignments;
%%
-top : %empty
- {
- $$ = new_parser(parser, NULL);
- }
- | top assignment
- {
- $$ = merge_parsers($1, $2);
- }
- | top block
+top : top item
{
$$ = merge_parsers($1, $2);
}
- | top empty
+ | item
{
- $$ = $1;
+ $$ = merge_parsers(parser, $1);
}
;
+item : assignment
+ | block
+ | empty {
+ $$ = NULL;
+ };
+
empty : T_EOL
;
}
static PakfireParser merge_parsers(PakfireParser p1, PakfireParser p2) {
- PakfireParser p = pakfire_parser_merge(p1, p2);
-
- // Parser 2 is now obsolete
- pakfire_parser_unref(p2);
+ PakfireParser p = NULL;
+
+ if (p1 && p2)
+ p = pakfire_parser_merge(p1, p2);
+ else if (p1)
+ p = p1;
+ else if (p2)
+ p = p2;
return p;
}