diff options
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); |