3 %lex-param { yyscan_t scanner }
4 %parse-param { struct grub2_parser *parser }
11 #define YYLEX_PARAM parser->scanner
13 static void yyerror(struct grub2_parser *, char const *s);
17 struct grub2_word *word;
21 %token TOKEN_LDSQBRACKET "[["
22 %token TOKEN_RDSQBRACKET "]]"
23 %token TOKEN_CASE "case"
25 %token TOKEN_DONE "done"
26 %token TOKEN_ELIF "elif"
27 %token TOKEN_ESAC "esac"
29 %token TOKEN_FOR "for"
30 %token TOKEN_FUNCTION "function"
33 %token TOKEN_MENUENTRY "menuentry"
34 %token TOKEN_SELECT "select"
35 %token TOKEN_THEN "then"
36 %token TOKEN_TIME "time"
37 %token TOKEN_UTIL "until"
38 %token TOKEN_WHILE "while"
54 | statements statement
60 | "if" TOKEN_DELIM statement
64 | "menuentry" TOKEN_DELIM words TOKEN_DELIM
70 | words TOKEN_DELIM word
78 void yyerror(struct grub2_parser *parser, char const *s)
80 fprintf(stderr, "%d: error: %s '%s'\n",
81 yyget_lineno(parser->scanner),
82 s, yyget_text(parser->scanner));