DBF.LEX



/* 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); }