diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-09-17 11:29:27 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-09-24 13:14:59 +0800 |
commit | 63575c2045b1505da7a2abca8a51a4a7aa3df6f7 (patch) | |
tree | 439b63b1cab0a8c61075d78bec93df80f9c4bb64 /discover/grub2 | |
parent | a77e8d42cd7b983d9fa5746f07e66a6fe04b6a0d (diff) | |
download | talos-petitboot-63575c2045b1505da7a2abca8a51a4a7aa3df6f7.tar.gz talos-petitboot-63575c2045b1505da7a2abca8a51a4a7aa3df6f7.zip |
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 <jk@ozlabs.org>
Diffstat (limited to 'discover/grub2')
-rw-r--r-- | discover/grub2/parser.y | 26 |
1 files changed, 12 insertions, 14 deletions
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); } |