summaryrefslogtreecommitdiffstats
path: root/grammar/rscript.l
diff options
context:
space:
mode:
Diffstat (limited to 'grammar/rscript.l')
-rw-r--r--grammar/rscript.l19
1 files changed, 9 insertions, 10 deletions
diff --git a/grammar/rscript.l b/grammar/rscript.l
index f7e51e25..596becaf 100644
--- a/grammar/rscript.l
+++ b/grammar/rscript.l
@@ -55,21 +55,20 @@ static int preCommentState;
<EXPR>"-" |
<EXPR>"(" |
<EXPR>")" { return yytext[0]; }
-<EXPR>"==" { printf("==\n"); }
-<EXPR>"<=" { printf("<=\n"); }
-<EXPR>">=" { printf(">=\n"); }
+<EXPR>"==" { return CMP_EQ; }
+<EXPR>"<=" { return CMP_LE; }
+<EXPR>">=" { return CMP_GE; }
<EXPR>"!=" |
-<EXPR>"<>" { printf("!=\n"); }
-<EXPR>"<" { printf("<\n"); }
-<EXPR>">" { printf(">\n"); }
+<EXPR>"<>" { return CMP_NE; }
+<EXPR>"<" { return CMP_LT; }
+<EXPR>">" { return CMP_GT; }
<EXPR>"contains" { printf("CONTAINS\n"); }
<EXPR>"contains_i" { printf("CONTAINS_I\n"); }
<EXPR>"startswith" { printf("STARTSWITH\n"); }
<EXPR>"startswith_i" { printf("STARTSWITH_I\n"); }
-<EXPR>0[0-7]+ { printf("NUMBER (oct) %s\n", yytext); }
-<EXPR>0x[0-7a-f] { printf("NUMBER (hex) %s\n", yytext); }
-<EXPR>([1-9][0-9]*|0) { printf("NUMBER (dec) %s\n", yytext);
- yylval.n = atoll(yytext); return NUMBER; }
+<EXPR>0[0-7]+ | /* octal number */
+<EXPR>0x[0-7a-f] | /* hex number, following rule is dec; strtoll handles all! */
+<EXPR>([1-9][0-9]*|0) { yylval.n = strtoll(yytext, NULL, 0); return NUMBER; }
<EXPR>\$[$!]{0,1}[a-z][a-z0-9\-_\.]* { printf("VARNAME: '%s'\n", yytext); return VAR; }
<EXPR>\'([^'\\]|\\['])*\' { printf("EXPR string: -%s-\n", yytext); return STRING; }
<EXPR>[ \t\n]