From: Michael Tremer Date: Sat, 1 Jun 2019 02:45:20 +0000 (+0100) Subject: libpakfire: parser: Tidy up top grammar X-Git-Tag: 0.9.28~1285^2~1008 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=05ce4b897da5b1cf427cb789b31b07304ce5106d;p=pakfire.git libpakfire: parser: Tidy up top grammar Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/parser/grammar.y b/src/libpakfire/parser/grammar.y index f076ed638..8245b900c 100644 --- a/src/libpakfire/parser/grammar.y +++ b/src/libpakfire/parser/grammar.y @@ -83,6 +83,7 @@ static PakfireParser make_if_stmt(PakfireParser parser, const enum operator op, %type words; %type top; +%type item; %type assignment; %type block; %type block_assignments; @@ -101,24 +102,22 @@ static PakfireParser make_if_stmt(PakfireParser parser, const enum operator op, %% -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 ; @@ -318,10 +317,14 @@ static PakfireParser new_parser(PakfireParser parent, const char* namespace) { } 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; }