WORD [^{}|&$;<> \t\n'"#]+
DELIM [ \t]+
-VARNAME ([[:alpha:]][_[:alnum:]]*|[0-9]|[\?@\*#])
+BLANK ["]{2}|[']{2}
+NUMBER 0|[1-9][0-9]*
+VARNAME ([[:alpha:]][_[:alnum:]]*|{NUMBER}|[\?@\*#])
%%
"until" return TOKEN_UTIL;
"while" return TOKEN_WHILE;
+ /* ignore quoted empty strings */
+{BLANK} {
+ yylval->word = create_word_text(yyget_extra(yyscanner), "");
+ yyget_extra(yyscanner)->inter_word = true;
+ return TOKEN_WORD;
+ }
/* anything that's not a metachar: return as a plain word */
{WORD} {
yylval->word = create_word_text(yyget_extra(yyscanner), yytext);