discover/grub2: Initial grub2 lexer
[petitboot] / discover / grub2 / parser.y
1
2 %pure-parser
3 %lex-param { yyscan_t scanner }
4 %parse-param { struct grub2_parser *parser }
5
6 %{
7 #include "lexer.h"
8 %}
9
10 %union {
11         struct {
12                 char    *strval;
13                 int     expand;
14                 int     split;
15         };
16 }
17
18 /* reserved words */
19 %token  TOKEN_LDSQBRACKET       "[["
20 %token  TOKEN_RDSQBRACKET       "]]"
21 %token  TOKEN_CASE              "case"
22 %token  TOKEN_DO                "do"
23 %token  TOKEN_DONE              "done"
24 %token  TOKEN_ELIF              "elif"
25 %token  TOKEN_ESAC              "esac"
26 %token  TOKEN_FI                "fi"
27 %token  TOKEN_FOR               "for"
28 %token  TOKEN_FUNCTION          "function"
29 %token  TOKEN_IF                "if"
30 %token  TOKEN_IN                "in"
31 %token  TOKEN_MENUENTRY         "menuentry"
32 %token  TOKEN_SELECT            "select"
33 %token  TOKEN_THEN              "then"
34 %token  TOKEN_TIME              "time"
35 %token  TOKEN_UTIL              "until"
36 %token  TOKEN_WHILE             "while"
37
38 /* syntax */
39 %token  TOKEN_EOL
40 %token  TOKEN_DELIM
41 %token  TOKEN_WORD
42
43 %start  script
44
45 %%
46
47 script: /* empty */
48
49 %%