]> git.ozlabs.org Git - petitboot/blobdiff - discover/grub2/lexer.l
discover/grub2/lexer: Require 1+ spaces for a TOKEN_DELIM
[petitboot] / discover / grub2 / lexer.l
index 3e1f9fa148c62174acb30258328c578c231f954e..0558ed9d791c38c12b852e1eba95389aa65b0915 100644 (file)
@@ -12,6 +12,7 @@
 %option stack noyy_top_state
 %option reentrant
 %option bison-bridge
+%option yylineno
 %option noyyalloc noyyfree noyyrealloc
 %option extra-type="struct grub2_parser *"
 %option header-file="lexer.h"
@@ -20,7 +21,7 @@
 %x sqstring
 %x dqstring
 
-WORD   [^{}|&$;<> \t\n'"]+
+WORD   [^{}|&$;<> \t\n'"#]+
 VARNAME ([[:alpha:]][_[:alnum:]]*|[0-9]|[\?@\*#])
 
 %%
@@ -28,7 +29,7 @@ VARNAME ([[:alpha:]][_[:alnum:]]*|[0-9]|[\?@\*#])
  /* discard leading & trailing whitespace, but keep inter-word delimeters */
 ^[ \t]+        ;
 [ \t]+$        ;
-[ \t]* return TOKEN_DELIM;
+[ \t]+ return TOKEN_DELIM;
 
  /* reserved words */
 "[["         return TOKEN_LDSQBRACKET;
@@ -46,6 +47,7 @@ VARNAME ([[:alpha:]][_[:alnum:]]*|[0-9]|[\?@\*#])
 "in"         return TOKEN_IN;
 "menuentry"  return TOKEN_MENUENTRY;
 "select"     return TOKEN_SELECT;
+"submenu"    return TOKEN_SUBMENU;
 "then"       return TOKEN_THEN;
 "time"       return TOKEN_TIME;
 "until"      return TOKEN_UTIL;
@@ -114,8 +116,7 @@ VARNAME ([[:alpha:]][_[:alnum:]]*|[0-9]|[\?@\*#])
 [ \t]*(;|\n)[ \t]*     return TOKEN_EOL;
 
  /* strip comments */
-#.*$   ;
-
+#.*    ;
 
 .      printf("unknown token '%s'\n", yytext); exit(1);