HEXDIGIT [0-9a-fA-F]
FORMAT [ubcdgiswx]
IDENTIFIER [_a-zA-Z~][_a-zA-Z0-9~@]*
-PATHNAME [/_a-zA-Z\.~][/_a-zA-Z0-9\.~@]*
+PATHNAME [-/_a-zA-Z\.~][-/_a-zA-Z0-9\.~@]*
STRING \"[^\n"]+\"
%s FORMAT_EXPECTED
<*>\n { BEGIN(INITIAL); syntax_error = 0; return tEOL; }
/* Indicates end of command. Reset state. */
+ /* This rule must precede the ones below, */
+ /* otherwise paths like '/' or '0x9' would */
+ /* get parsed as an operator or tNUM */
+<PATH_EXPECTED>{PATHNAME} { yylval.string = lexeme_alloc(yytext); return tPATH; }
+
"||" { return OP_LOR; }
"&&" { return OP_LAND; }
"==" { return OP_EQ; }
{IDENTIFIER} { yylval.string = lexeme_alloc(yytext); return tIDENTIFIER; }
"$"{IDENTIFIER} { yylval.string = lexeme_alloc(yytext+1); return tINTVAR; }
-<PATH_EXPECTED>{PATHNAME} { yylval.string = lexeme_alloc(yytext); return tPATH; }
-
<*>[ \t\r]+ /* Eat up whitespace and DOS LF */
<NOPROCESS>. { BEGIN(ASTRING_EXPECTED); yyless(0); return tNOPROCESS;}