/*****************************************
*  INTERPRETEUR D'ALGEBRE RELATIONNELLE  *
*    Olivier Christiaen - 07 Sep 2004    *
*                 UMH-LIG1               *
*   Evolutions: www.christiaen.org/sqf   *
******************************************/

%{

#include "projet_bison.tab.h"
#include <string.h>
extern int num_ligne;


%}
Chiffre 	[0-9]
Lettre 		[A-Za-z_]
Espace		[ ]

Mot		({Lettre}+({Lettre}|{Chiffre})*)|{Chiffre}+
Liste_mots	({Mot}[,])+{Mot}
Comparaison	[=<>]


%%

[ \t]			{}
[\n]			{num_ligne++;}

"WHERE"			{return OP_WHERE;}
"PROJECT"		{return OP_PROJECT;}
"JOIN"			{return OP_JOIN;}
"UNION"			{return OP_UNION;}
"MINUS"			{return OP_MINUS;}
"RENAME"		{return OP_RENAME;}
"AS"			{return OP_AS;}
"@relation "		{return SQF_RELATION;}
"@data "		{return SQF_DATA;}
"@let "			{return SQF_LET;}
"@print"		{return SQF_PRINT;}


{Mot}			{
			yylval.val_char=(char *) malloc((1+yyleng)*sizeof(char));
			strcpy(yylval.val_char, yytext);
                        return Mot;
			}

{Liste_mots}		{
			yylval.val_char=(char *)malloc((1+yyleng)*sizeof(char));
			strcpy(yylval.val_char, yytext);
			return Liste_mots;
			}

{Comparaison}		{
			yylval.val_char=(char *)malloc((1+yyleng)*sizeof(char));
			strcpy(yylval.val_char, yytext);
			return Comparaison;
			}

.			{return yytext[0];}

%%
int yywrap(void){
	return 1;
}
