From 63575c2045b1505da7a2abca8a51a4a7aa3df6f7 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Tue, 17 Sep 2013 11:29:27 +0800 Subject: discover/grub2: Allow empty statements Re-arrange the script/statements parse rules to allow empty statements. We also move the EOL token out of the 'statement' definition, and use it to separate 'statements'. Signed-off-by: Jeremy Kerr --- discover/grub2/parser.y | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'discover') diff --git a/discover/grub2/parser.y b/discover/grub2/parser.y index 859eba3..0540ff3 100644 --- a/discover/grub2/parser.y +++ b/discover/grub2/parser.y @@ -60,23 +60,23 @@ static void yyerror(struct grub2_parser *, char const *s); %% -script: statements { +script: statements { parser->script->statements = $1; } -statements: statement { +statements: /* empty */ { $$ = create_statements(parser); - statement_append($$, $1); } - | statements statement { + | statements statement TOKEN_EOL { statement_append($1, $2); $$ = $1; } - -statement: TOKEN_EOL { - $$ = NULL; + | statements TOKEN_EOL { + $$ = $1; } - | words TOKEN_EOL { + +statement: + words { $$ = create_statement_simple(parser, $1); } | '{' statements '}' { @@ -85,7 +85,7 @@ statement: TOKEN_EOL { | "if" TOKEN_DELIM statement "then" TOKEN_EOL statements - "fi" TOKEN_EOL { + "fi" { $$ = create_statement_if(parser, $3, $6, NULL); } | "if" TOKEN_DELIM statement @@ -93,20 +93,18 @@ statement: TOKEN_EOL { statements "else" TOKEN_EOL statements - "fi" TOKEN_EOL { + "fi" { $$ = create_statement_if(parser, $3, $6, $9); } | "function" TOKEN_DELIM word TOKEN_DELIM '{' statements '}' { $$ = create_statement_function(parser, $3, $6); } | "menuentry" TOKEN_DELIM words TOKEN_DELIM - '{' statements '}' - TOKEN_EOL { + '{' statements '}' { $$ = create_statement_menuentry(parser, $3, $6); } | "submenu" TOKEN_DELIM words TOKEN_DELIM - '{' statements '}' - TOKEN_EOL { + '{' statements '}' { /* we just flatten everything */ $$ = create_statement_block(parser, $6); } -- cgit v1.2.1