diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-09-17 11:14:18 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-09-24 13:14:59 +0800 |
commit | a77e8d42cd7b983d9fa5746f07e66a6fe04b6a0d (patch) | |
tree | 8da7723e1c214f7b69c7ff7e37b0e5af97845eac /discover/grub2/parser.y | |
parent | e8a50ad2461a8efaa4d71ea19692a1b63a0f9bc2 (diff) | |
download | talos-petitboot-a77e8d42cd7b983d9fa5746f07e66a6fe04b6a0d.tar.gz talos-petitboot-a77e8d42cd7b983d9fa5746f07e66a6fe04b6a0d.zip |
discover/grub2: Implement submenu
Just recurse into the submenu items, as we flatten everything into the
one menu.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover/grub2/parser.y')
-rw-r--r-- | discover/grub2/parser.y | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/discover/grub2/parser.y b/discover/grub2/parser.y index bcf5935..859eba3 100644 --- a/discover/grub2/parser.y +++ b/discover/grub2/parser.y @@ -39,6 +39,7 @@ static void yyerror(struct grub2_parser *, char const *s); %token TOKEN_IN "in" %token TOKEN_MENUENTRY "menuentry" %token TOKEN_SELECT "select" +%token TOKEN_SUBMENU "submenu" %token TOKEN_THEN "then" %token TOKEN_TIME "time" %token TOKEN_UTIL "until" @@ -103,6 +104,12 @@ statement: TOKEN_EOL { TOKEN_EOL { $$ = create_statement_menuentry(parser, $3, $6); } + | "submenu" TOKEN_DELIM words TOKEN_DELIM + '{' statements '}' + TOKEN_EOL { + /* we just flatten everything */ + $$ = create_statement_block(parser, $6); + } words: word { $$ = create_argv(parser); |