ALPHA [a-zA-Z_] ALPHADIGIT [a-zA-Z0-9_] DIGIT [0-9] DAY [0-3][0-9] MONTH [0-1][0-9] YEAR [0-9]{1,4} A [aA] B [bB] C [cC] D [dD] E [eE] F [fF] G [gG] H [hH] I [iI] J [jJ] K [kK] L [lL] M [mM] N [nN] O [oO] P [pP] Q [qQ] R [rR] S [sS] T [tT] U [uU] V [vV] W [wW] X [xX] Y [yY] Z [zZ] %% {O}{P}{E}{N} { ECHO ; putchar(' '); return OPEN; } {C}{L}{O}{S}{E} { ECHO ; putchar(' '); return CLOSE; } {D}{A}{T}{A}{B}{A}{S}{E} { ECHO ; putchar(' ');return DATABASE; } {I}{N}{T}{O} { ECHO ; putchar(' '); return INTO; } {V}{A}{L}{U}{E}{S} { ECHO ; putchar(' '); return VALUES; } {S}{E}{L}{E}{C}{T} { ECHO ; putchar(' '); return SELECT; } {F}{R}{O}{M} { ECHO ; putchar(' '); return FROM; } {W}{H}{E}{R}{E} { ECHO ; putchar(' '); query_part = UNDEFINED; return WHERE; } {U}{N}{I}{O}{N} { ECHO ; putchar(' '); return UNION; } {H}{A}{V}{I}{N}{G} { ECHO ; putchar(' '); return HAVING; } {G}{R}{O}{U}{P} { ECHO ; putchar(' '); return GROUP; } {O}{R}{D}{E}{R} { ECHO ; putchar(' '); return ORDER; } {B}{Y} { ECHO ; putchar(' '); return BY; } {A}{S}{C} { ECHO ; putchar(' '); return ASC; } {A}{S}{C}{E}{N}{D}{I}{N}{G} { ECHO ; putchar(' '); return ASC; } {D}{E}{S}{C}{N}{D}{I}{N}{G} { ECHO ; putchar(' '); return DESC; } {D}{E}{S}{C} { ECHO ; putchar(' '); return DESC; } {I}{N}{S}{E}{R}{T} { ECHO ; putchar(' '); return INSERT; } {D}{E}{L}{E}{T}{E} { ECHO ; putchar(' '); return DELETE; } {U}{P}{D}{A}{T}{E} { ECHO ; putchar(' '); return UPDATE; } {I}{N} { ECHO ; putchar(' '); return IN; } {B}{E}{T}{W}{E}{E}{N} { ECHO ; putchar(' '); return BETWEEN; } {L}{I}{K}{E} { ECHO ; putchar(' '); return LIKE; } {I}{S} { ECHO ; putchar(' '); return IS; } {N}{U}{L}{L} { ECHO ; putchar(' '); return SNULL; } {E}{X}{I}{S}{T}{S} { ECHO ; putchar(' '); return EXISTS; } {D}{I}{S}{T}{I}{N}{C}{T} { ECHO ; putchar(' '); return DISTINCT;} {A}{L}{L} { ECHO ; putchar(' '); return ALL;} {C}{O}{U}{N}{T} { ECHO ; putchar(' '); return COUNT; } {S}{U}{M} { ECHO ; putchar(' '); return SUM; } {M}{I}{N} { ECHO ; putchar(' '); return MIN; } {M}{A}{X} { ECHO ; putchar(' '); return MAX; } {A}{V}{G} { ECHO ; putchar(' '); return AVG; } ; { ECHO ; putchar(' '); return SEMICOLON; } , { ECHO ; putchar(' '); return COMMA; } {O}{R} { ECHO ; putchar(' '); return OR; } {A}{N}{D} { ECHO ; putchar(' '); return AND; } {N}{O}{T} { ECHO ; putchar(' '); return NOT; } {D}{B}{D}{I}{R} { ECHO ; putchar(' '); return DBDIR; } {W}{O}{R}{K}{D}{I}{R} { ECHO ; putchar(' '); return WORKDIR; } {O}{P}{F}{I}{L}{E} { ECHO ; putchar(' '); return OPFILE; } {O}{P}{F}{I}{L}{E}{T} { ECHO ; putchar(' '); return OPFILET; } {O}{N} { ECHO ; putchar(' '); return ON; } {O}{F}{F} { ECHO ; putchar(' '); return OFF; } {B}{E}{A}{U}{T}{I}{F}{Y} { ECHO ; putchar(' '); return BEAUTIFY; } "=" { ECHO ; putchar(' '); return EQUAL; } "<=" { ECHO ; putchar(' '); return LESSEQ; } ">=" { ECHO ; putchar(' '); return GREATEQ; } "<" { ECHO ; putchar(' '); return LESS; } ">" { ECHO ; putchar(' '); return GREAT; } "!=" { ECHO ; putchar(' '); return NOTEQ; } "<>" { ECHO ; putchar(' '); return NOTEQ; } \" { int i; char ch; char s[100]; putchar(' '); i = 0; while ((ch = input()) != '"') s[i++] = ch; s[i] = '\0'; strcpy(yylval.str,s); puts(s); return CONST_STR; } \' { int i; char ch; char s[100]; putchar(' '); i = 0; while ((ch = input()) != '\'') s[i++] = ch; s[i] = '\0'; strcpy(yylval.str,s); puts(s); return CONST_STR; } {ALPHA}{ALPHADIGIT}*\.{ALPHA}{ALPHADIGIT}* { ECHO ; putchar(' '); strcpy(yylval.str,yytext); return FIELD_IDENTIFIER; } {ALPHA}{ALPHADIGIT}* { ECHO ; putchar(' '); strcpy(yylval.str,yytext); return IDENTIFIER; } {MONTH}"/"{DAY}"/"{YEAR} { /* Date in mm/dd/yyyy format */ ECHO ; putchar(' '); strcpy(yylval.str,yytext); return CONST_DATE; } {DIGIT}+\.{DIGIT}+ { ECHO ; putchar(' '); strcpy(yylval.str,yytext); return CONST_REAL; } {DIGIT}+ { ECHO ; putchar(' '); strcpy(yylval.str,yytext); return CONST_NUM; } [ \t] ; . { ECHO ; putchar(' '); return yytext[0]; } "--" { while (input() != '\n') ; } "/*" { loop: while (input() != '*'); { switch(input()) { case '/' : break; case '*' : unput('*'); default : goto loop; } } } \n|. {ECHO; printf(" lex unexpected\n");} %% int yywrap(void) { return(1); }