summaryrefslogtreecommitdiffstats
path: root/discover
diff options
context:
space:
mode:
Diffstat (limited to 'discover')
-rw-r--r--discover/grub2/lexer.l1
-rw-r--r--discover/grub2/parser.y9
2 files changed, 10 insertions, 0 deletions
diff --git a/discover/grub2/lexer.l b/discover/grub2/lexer.l
index 5a4447b..3e1f9fa 100644
--- a/discover/grub2/lexer.l
+++ b/discover/grub2/lexer.l
@@ -37,6 +37,7 @@ VARNAME ([[:alpha:]][_[:alnum:]]*|[0-9]|[\?@\*#])
"do" return TOKEN_DO;
"done" return TOKEN_DONE;
"elif" return TOKEN_ELIF;
+"else" return TOKEN_ELSE;
"esac" return TOKEN_ESAC;
"fi" return TOKEN_FI;
"for" return TOKEN_FOR;
diff --git a/discover/grub2/parser.y b/discover/grub2/parser.y
index 2b229b8..e13cd72 100644
--- a/discover/grub2/parser.y
+++ b/discover/grub2/parser.y
@@ -29,6 +29,7 @@ static void yyerror(struct grub2_parser *, char const *s);
%token TOKEN_DO "do"
%token TOKEN_DONE "done"
%token TOKEN_ELIF "elif"
+%token TOKEN_ELSE "else"
%token TOKEN_ESAC "esac"
%token TOKEN_FI "fi"
%token TOKEN_FOR "for"
@@ -85,6 +86,14 @@ statement: TOKEN_EOL {
"fi" TOKEN_EOL {
$$ = create_statement_if(parser, $3, $6, NULL);
}
+ | "if" TOKEN_DELIM statement
+ "then" TOKEN_EOL
+ statements
+ "else" TOKEN_EOL
+ statements
+ "fi" TOKEN_EOL {
+ $$ = create_statement_if(parser, $3, $6, $9);
+ }
| "menuentry" TOKEN_DELIM words TOKEN_DELIM
'{' statements '}'
TOKEN_EOL {
OpenPOWER on IntegriCloud