X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fgrub2%2Flexer.l;fp=discover%2Fgrub2%2Flexer.l;h=64eee279a3d0f3311c5c3cfe9770dfb5bd69797d;hp=18d16672e59d4c07019cbcb3ce3d8215ca0fa2da;hb=ce2275ed4fa099035af123c25a1a7657f1ea6e78;hpb=1284a547ec73795d7d76dc099426fb89c3359f25 diff --git a/discover/grub2/lexer.l b/discover/grub2/lexer.l index 18d1667..64eee27 100644 --- a/discover/grub2/lexer.l +++ b/discover/grub2/lexer.l @@ -1,5 +1,6 @@ %{ +#include "grub2.h" #include "parser.h" #include %} @@ -50,16 +51,15 @@ VARNAME ([[:alpha:]][_[:alnum:]]*|[0-9]|[\?@\*#]) /* anything that's not a metachar: return as a plain word */ {WORD} { - yylval->strval = talloc_strdup(yyscanner, yytext); - yylval->expand = 0; + yylval->word = create_word(yyget_extra(yyscanner), yytext, + false, false); return TOKEN_WORD; } \${VARNAME} | \$\{{VARNAME}\} { - yylval->strval = talloc_strdup(yyscanner, yytext); - yylval->expand = 1; - yylval->split = 1; + yylval->word = create_word(yyget_extra(yyscanner), yytext, + true, true); return TOKEN_WORD; } @@ -69,12 +69,11 @@ VARNAME ([[:alpha:]][_[:alnum:]]*|[0-9]|[\?@\*#]) } \' { yy_pop_state(yyscanner); - return TOKEN_WORD; } [^']+ { - yylval->expand = 0; - yylval->split = 0; - yylval->strval = talloc_strdup(yyscanner, yytext); + yylval->word = create_word(yyget_extra(yyscanner), yytext, + false, false); + return TOKEN_WORD; } /* double-quoted strings: return a single, expanded word token */ @@ -83,12 +82,11 @@ VARNAME ([[:alpha:]][_[:alnum:]]*|[0-9]|[\?@\*#]) } \" { yy_pop_state(yyscanner); - return TOKEN_WORD; } ([^"]|\\\")+ { - yylval->expand = 1; - yylval->split = 0; - yylval->strval = talloc_strdup(yyscanner, yytext); + yylval->word = create_word(yyget_extra(yyscanner), yytext, + true, false); + return TOKEN_WORD; }