%x xQUOTED
%x xCOMMENT
+LEXEMCHARSTART [a-zA-Z_]
LEXEMCHAR [a-zA-Z0-9_]
PATH [a-zA-Z0-9_/\.]
+DIGIT [0-9]
%%
BEGIN xCOMMENT;
}
-<xVAR>{LEXEMCHAR}+ {
- yylval.str = strlower(mcnstrdup(lexContext, yytext, yyleng));
- return getIdent(yylval.str);
- }
-
-<xVAR>\|\| { return OR_P; }
-
-<xVAR>[,\|\^] {
+<xVAR>[,\|#] {
yylval.punct = *yytext;
return yylval.punct;
}
addchar(*yytext);
}
-<xEXPR>{LEXEMCHAR}+ {
+<xEXPR,xVAR>{DIGIT}+ {
+ yylval.intval = atoi(yytext);
+ return INTEGER;
+ }
+
+<xEXPR,xVAR>{LEXEMCHARSTART}{LEXEMCHAR}* {
yylval.str = strlower(mcnstrdup(lexContext, yytext, yyleng));
return getIdent(yylval.str);
}
+<xEXPR,xVAR>\|\| { return OR_P; }
+
+<xEXPR,xVAR>\&\& { return AND_P; }
+
+<xEXPR,xVAR>\! { return NOT_P; }
+
+<xEXPR,xVAR>[\^\%\+\*\/\-\(\)\?\:] {
+ yylval.punct = *yytext;
+ return yylval.punct;
+ }
+
+<xEXPR,xVAR>(\<|\<=|\>=|\>|==|\!=|\<\>) {
+ yylval.str = mcnstrdup(lexContext, yytext, yyleng);
+ return CMP_P;
+ }
+
+<xEXPR,xVAR>{DIGIT}+"."{DIGIT}+ {
+ yylval.floatval = atof(yytext);
+ return DOUBLE;
+ }
+
+<xEXPR,xVAR>{DIGIT}+[eE]["+""-"]?{DIGIT}+ {
+ yylval.floatval = atof(yytext);
+ return DOUBLE;
+ }
+
+<xEXPR,xVAR>{DIGIT}+"."{DIGIT}+[eE]["+""-"]?{DIGIT}+ {
+ yylval.floatval = atof(yytext);
+ return DOUBLE;
+ }
+
<xEXPR>\@\> {
BEGIN INITIAL;
return EXPR_CLOSE;
{ "H", 0, HTMLESCAPE },
{ "U", 0, URLESCAPE },
{ "IF", 0, IF_P },
- { "NOT", 0, NOT_P },
{ "ELSE", 0, ELSE_P },
{ "LOOP", 0, LOOP_P },
{ "ENDIF", 0, ENDIF_P },
- { "DEFINED", 0, DEFINED_P },
{ "ENDLOOP", 0, ENDLOOP_P }
};