summaryrefslogtreecommitdiffstats
path: root/grammar/rscript.l
diff options
context:
space:
mode:
Diffstat (limited to 'grammar/rscript.l')
-rw-r--r--grammar/rscript.l38
1 files changed, 24 insertions, 14 deletions
diff --git a/grammar/rscript.l b/grammar/rscript.l
index 596becaf..b7c3e521 100644
--- a/grammar/rscript.l
+++ b/grammar/rscript.l
@@ -62,10 +62,10 @@ static int preCommentState;
<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>"contains" { return CMP_CONTAINS; }
+<EXPR>"contains_i" { return CMP_CONTAINSI; }
+<EXPR>"startswith" { return CMP_STARTSWITH; }
+<EXPR>"startswith_i" { return CMP_STARTSWITHI; }
<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; }
@@ -100,7 +100,7 @@ static int preCommentState;
return NAME; }
<INOBJ>"=" { return(yytext[0]); }
<INOBJ>\"([^"\\]|\\['"?\\abfnrtv]|\\[0-7]{1,3})*\" {
- yylval.estr = es_newStrFromCStr(yytext+1, yyleng-2);
+ yylval.estr = es_newStrFromBuf(yytext+1, yyleng-2);
return VALUE; }
"/*" { preCommentState = YY_START; BEGIN COMMENT; }
<EXPR>"/*" { preCommentState = YY_START; BEGIN COMMENT; }
@@ -122,18 +122,28 @@ static int preCommentState;
/*<<EOF>> { printf("EOF reached\n"); }*/
%%
- /*
-int
-main(int argc, char *argv[])
+/* set a new buffers. Returns 0 on success, something else otherwise. */
+int cnfSetLexFile(char *fname)
{
es_str_t *str;
YY_BUFFER_STATE bp;
- char ln[10240];
+ FILE *fp;
+ int r = 0;
- readConfFile(stdin, &str);
- //printf("buffer: %s\n", es_getBufAddr(str));
+ if(fname == NULL) {
+ fp = stdin;
+ } else {
+ if((fp = fopen(fname, "r")) == NULL) {
+ r = 1;
+ goto done;
+ }
+ }
+ readConfFile(fp, &str);
+ if(fp != stdin)
+ fclose(fp);
bp = yy_scan_buffer(es_getBufAddr(str), es_strlen(str));
- //yy_switch_to_buffer(bp);
- yylex();
+ yylineno = 1;
+
+done:
+ return r;
}
-*/