From: Michael Tremer Date: Thu, 25 Feb 2021 16:36:18 +0000 (+0000) Subject: parser: Add a hack for "template NAME" lines X-Git-Tag: 0.9.28~1285^2~692 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5f17ac718fa59a5e933934a36aed33cce3b50263;p=pakfire.git parser: Add a hack for "template NAME" lines These will now be parsed as empty subparsers which are being turned into a regular declaration. Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/parser/grammar.y b/src/libpakfire/parser/grammar.y index e6fb886d2..6dacdc7c8 100644 --- a/src/libpakfire/parser/grammar.y +++ b/src/libpakfire/parser/grammar.y @@ -200,7 +200,7 @@ declaration : key T_ASSIGN value T_EOL int r = pakfire_parser_new_declaration(&$$, $1, $4); if (r) ABORT; - } + } ; empty : T_EOL @@ -240,6 +240,26 @@ subparser : subparser_name T_EOL subgrammar T_END T_EOL $$ = pakfire_parser_ref($3); } + | subparser_name T_EOL + { + char* key; + char* value; + + // Create a new parser + $$ = pakfire_parser_create(pakfire, NULL, NULL); + if (!$$) + ABORT; + + pakfire_partition_string($1, ":", &key, &value); + + if (key && value) + pakfire_parser_set($$, key, value); + + if (key) + free(key); + if (value) + free(value); + } ; subparser_name : T_SUBPARSER @@ -249,6 +269,7 @@ subparser_name : T_SUBPARSER if (r < 0) ABORT; } + ; if_stmt : T_IF T_STRING T_EQUALS T_STRING T_EOL subgrammar else_stmt T_END T_EOL { diff --git a/src/libpakfire/parser/scanner.l b/src/libpakfire/parser/scanner.l index 36b9020ff..5312f830f 100644 --- a/src/libpakfire/parser/scanner.l +++ b/src/libpakfire/parser/scanner.l @@ -158,7 +158,7 @@ scriptlet script(let)? return T_SUBPARSER; } -{named_subparsers} { +{named_subparsers} { yy_push_state(READLINE); yylval.string = strdup(yytext);