summaryrefslogtreecommitdiffstats
path: root/discover/grub2
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-09-17 11:29:27 +0800
committerJeremy Kerr <jk@ozlabs.org>2013-09-24 13:14:59 +0800
commit63575c2045b1505da7a2abca8a51a4a7aa3df6f7 (patch)
tree439b63b1cab0a8c61075d78bec93df80f9c4bb64 /discover/grub2
parenta77e8d42cd7b983d9fa5746f07e66a6fe04b6a0d (diff)
downloadtalos-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.y26
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);
}
OpenPOWER on IntegriCloud