%{ /* rep_ex_l.l lexical definition for template expressions */ int rep_ex_getc(); #undef output #undef input #define output(c) #define YY_INPUT(buf,result,max_size) \ { \ int c = rep_ex_getc(); \ result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ } #if 0 #define input() (\ (\ (\ yytchar=\ yysptr>yysbuf?\ U(*--yysptr)\ :rep_ex_getc()\ ) == 10?\ (yylineno++,yytchar)\ :yytchar\ ) == (unsigned char) EOF?\ 0\ :yytchar\ ) #endif %} %option yylineno %% [ \t]* { /* ignored */ } ^# { /* ignored */ } [iI][fF] { /* ignored */ } [eE][nN][dD][iI][fF] { /* ignored */ } "//"[^\n]* { /* to end of input: comments ignored */ } [0-9]+"."[0-9]+ { yylval = atof(yytext); return NUMBER; } [0-9]+ { yylval = atof(yytext); return NUMBER; } [eE][xX][iI][sS][tT] { return EXIST;} [nN][oO][tT]"_"[eE][xX][iI][sS][tT] { return NOT_EXIST;} [sS][tT][rR][cC][mM][pP] { return STRCMP; } [tT][oO][uU][pP][pP][eE][rR] { return TOUPPER; } [tT][oO][lL][oO][wW][eE][rR] { return TOLOWER; } [sS][tT][rR][cC][pP][yY] { return STRCPY; } [sS][tT][rR][lL][eE][nN] { return STRLEN; } [Qq][Uu][oO][tT][eE] { return QUOTE; } [sS][uU][bB][sS][tT][rR] { return SUBSTR; } [sS][tT][rR][nN][cC][mM][pP] { return STRNCMP; } [fF][rR][oO][mM]"_"[lL][iI][sS][tT] { return FROM_LIST; } [fF][lL][oO][oO][rR] { return FLOOR; } [cC][eE][iI][lL] { return CEIL; } [sS][qQ][rR][tT] { return SQRT; } [sS][pP][lL][iI][tT] { return SPLIT; } [sS][yY][mM]"_"[sS][iI][zZ][eE] { return SYM_SIZE; } [rR][iI][cC][hH]"_"[tT][eE][xX][tT] { return RICH_TEXT; } [rR][iI][cC][hH]"_"[cC][aA][rR][dD] { return RICH_CARD; } [rR][iI][cC][hH]"_"[fF][iI][eE][lL][dD] { return RICH_FIELD; } [rR][iI][cC][hH]"_"[bB][uU][tT][tT][oO][nN] { return RICH_BUTTON; } [lL][iI][sS][tT]"_"[sS][eE][aA][rR][cC][hH] { return LIST_SEARCH; } ">" {return GT;} ">=" {return GTE;} "<" {return LT;} "<=" {return LTE;} "==" {return EQ;} "!=" {return NEQ;} "^" {return TO_THE;} "||" {return OR;} "&&" {return AND;} "!" {return NOT;} \"(\\\"|[^\n\"])*\" { /* copy while stripping quotes */ strcpy(string_list[str_l_index],&yytext[1]); string_list[str_l_index][strlen(yytext)-2] = '\0'; yylval = str_l_index; str_l_index++; return STRING; } [A-Za-z][0-9a-zA-Z_]* { strcpy(sym_list[sym_l_index],yytext); yylval = sym_l_index; sym_l_index++; return SYM; } .|\n { /* pass other characters through */ return yytext[0]; } %% yywrap() { return 1; }