cat << EOF %{ static int ign_kw(int yystate,int kw); %} /* Generated by gen_lex */ %e 1000 %p 4000 %n 700 %k 200 %a 4000 %o 4200 %x comment ws [ \t\n]+ ows [ \t\n]* ident [a-zA-Z]+[a-zA-Z\_0-9]* int_num [0-9]+ char_value \'[^\']*\'|\"[^\"]*\" schar_value \'[^\']*\' %option yylineno %% "}" {BEGIN INITIAL;} . ; [\n] ; "{" { BEGIN comment; yymore(); } --.*$ {yymore();} "DATETIME"[(]{char_value}[)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(]{int_num}[)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9][0-9][0-9]-[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" "[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" "[0-9][0-9]":"[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" "[0-9][0-9]":"[0-9][0-9]":"[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" "[0-9][0-9]":"[0-9][0-9]":"[0-9][0-9][.]{int_num}[)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]-[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]-[0-9][0-9]" "[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]-[0-9][0-9]" "[0-9][0-9]":"[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]-[0-9][0-9]" "[0-9][0-9]":"[0-9][0-9]":"[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]-[0-9][0-9]" "[0-9][0-9]":"[0-9][0-9]":"[0-9][0-9]"."{int_num}[)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]" "[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]" "[0-9][0-9]":"[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]" "[0-9][0-9]":"[0-9][0-9]":"[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]" "[0-9][0-9]":"[0-9][0-9]":"[0-9][0-9]"."{int_num}[)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]":"[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]":"[0-9][0-9]":"[0-9][0-9][)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]":"[0-9][0-9]":"[0-9][0-9]"."{int_num}[)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]":"[0-9][0-9]"."{int_num}[)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "DATETIME"[(][0-9][0-9]"."{int_num}[)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return DATETIME_VALUE;} "INTERVAL("{char_value}")" { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return INTERVAL_VALUE;} "INTERVAL("({int_num}|[0-9]*"."{int_num})")" { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return INTERVAL_VALUE;} "INTERVAL("{int_num}"-"{int_num}")" { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return INTERVAL_VALUE;} "INTERVAL("{int_num}" "{int_num}")" { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return INTERVAL_VALUE;} "INTERVAL("{int_num}{int_num}":"{int_num}")" { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return INTERVAL_VALUE;} "INTERVAL("{int_num}{int_num}":"{int_num}":"{int_num}")" { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return INTERVAL_VALUE;} "INTERVAL("{int_num}":"{int_num}[)] { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return INTERVAL_VALUE;} "INTERVAL("{int_num}":"{int_num}":"[0-9][0-9]"."{int_num}")" { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return INTERVAL_VALUE;} "INTERVAL("{int_num}":"[0-9][0-9]"."{int_num}")" { a4gl_upshift(yytext); strcpy(yylval.str,yytext); return INTERVAL_VALUE;} "::" { return DOUBLE_COLON;} EOF grep "token" 2.reqd | awk '{print $2}' | (while read a do #echo $a >> /dev/tty grep "^$a[ ]" ../4glc/rules/data/kwords | awk ' function isPunct(x) { if (x=="." || x=="(" || x==")" || x=="*" || x=="<" || x==">" || x=="!" || x=="=" ||x=="|") return 1; return 0 } /^DOUBLE_COLON/ {next} /^DATETIME_VALUE/ {next} /^INTERVAL_VALUE/ {next} /^INTERVAL_VALUE/ {next} /PLUS + +/ {next} { #print "/* " $0 " */" printf("\n"); if ($1=="SET_LOG") next; for (a=2;a<=NF;a++) { if (a!=2) { pr_ws=0; if ($(a-1)=="." && $a=="*" ) { printf("{ows}"); pr_ws++; } if ($(a-1)=="" && $a=="." ) { printf("{ows}"); pr_ws++; } if (pr_ws==0 && (isPunct($(a-1)) || isPunct($(a-1)))) { printf("{ows}"); pr_ws++; } if (!pr_ws) { printf("{ws}"); } } printed=0; if ($a=="") {printf("{ident}");printed=1;} if ($a=="") {printf("{int_num}");printed=1;} if ($a=="") {printf("{char_value}");printed=1;} if (printed==0) { printf "\"" $a "\"" } } printf(" { if (ign_kw(yystate, %s)) REJECT; a4gl_upshift(yytext); strcpy(yylval.str,yytext); return %s;} /* %d */\n",$1,$1,NR) } ' done) cat << EOF {ws} ; [\n] ; ";" {strcpy(yylval.str,";"); return SEMICOLON;} "?" {strcpy(yylval.str,"?"); return QUESTION_MARK;} "?@@PARAM@@?" {strcpy(yylval.str,"?"); return QUESTION_MARK;} {ident} {strcpy(yylval.str,yytext);return NAMED;} "!=" { strcpy(yylval.str,yytext); return NOT_EQUAL;} "<>" { strcpy(yylval.str,yytext); return NOT_EQUAL;} "<=" { strcpy(yylval.str,yytext); return LESS_THAN_EQ;} ">=" { strcpy(yylval.str,yytext); return GREATER_THAN_EQ;} \"[^\"]*\" { strcpy(yylval.str,yytext); return CHAR_VALUE;} \"\" { strcpy(yylval.str,yytext); return CHAR_VALUE;} {schar_value}+ { strcpy(yylval.str,yytext); return CHAR_VALUE;} \'\' { strcpy(yylval.str,yytext); return CHAR_VALUE;} "@@VARIABLE[" {return MARK_VAR;} "]@@" {return END_MARK_VAR;} {int_num} {strcpy(yylval.str, yytext); return(INT_VALUE);} [0-9]+|[0-9]*\.[0-9]+ {strcpy(yylval.str, yytext); return(NUMBER_VALUE);} . {strcpy(yylval.str,yytext);return CH;} %% #include "mk_sstates.c" static int ign_kw(int yystate,int kw) { if (!SQLPARSE_allow_token_state(yystate,kw)) { return 1; } return 0; } EOF