/* PERMITIR EL LENGUAJE DE SQL PARA ARCHIVOS DBF */
/* ----------------------------------------------------
-- Programa: dbf.lex -----
-- TEcnica: Dirigida por la sintAxis -----
-- Programador: J. Rafael R. ochoa -----
----------------------------------------------------
*/
%{
#include "y.tab.h"
%}
st [ \t]
blank ({st})
let [a-zA-Z]
numero ([0-9]+[0-9]*)
bdd ({let}+.dbf)
texto ({let}+{numero}*)
todo (\<[^\>]*\>)
%%
"*" {return ASTERISCO;}
"'" {return APOSTROFE;}
"," {return COMA;}
"=" {return IGUAL;}
"\n" {return LINEA;}
"(" {return LEFT;}
")" {return RIGHT;}
"\\Q" {return SALIR;}
"\\q" {return SALIR;}
"\\G" {return GO;}
"\\g" {return GO;}
"INSERT" {return INSERT;}
"INTO" {return INTO;}
"VALUES" {return VALUES;}
"DELETE" {return DELETE;}
"FROM" {return FROM;}
"WHERE" {return WHERE;}
"SELECT" {return SELECT;}
"UPDATE" {return UPDATE;}
"CREATE" {return CREATE;}
"TABLE" {return TABLE;}
"DROP" {return DROP;}
"NOT NULL" {return NOT_NULL;}
"SET" {return SET;}
"AND" {return AND;}
"OR" {return OR;}
"CHAR" {return CHAR;}
"INT" {return INT;}
"insert" {return INSERT;}
"into" {return INTO;}
"values" {return VALUES;}
"delete" {return DELETE;}
"from" {return FROM;}
"where" {return WHERE;}
"select" {return SELECT;}
"update" {return UPDATE;}
"create" {return CREATE;}
"table" {return TABLE;}
"drop" {return DROP;}
"not null" {return NOT_NULL;}
"set" {return SET;}
"and" {return AND;}
"or" {return OR;}
"char" {return CHAR;}
"int" {return INT;}
{numero} { sprintf(yylval.str, "%s", yytext);
return NUMERO;
}
{bdd} { sprintf(yylval.str, "%s",yytext);
return BDD;
}
{texto} { sprintf(yylval.str, "%s",yytext);
return TEXTO;
}
. { ; }
%%
int yywrap() { return(1); }