%{
# include "y.tab.h"
# include "global.h"

int numligne=1;
%}


bl		[ \t]*			
nl		\n
commentaire	#.*
nb		[-+]?[0-9]*
str		[^ \t\n]+
gstr		\"[^\"\n]*[\"\n]
inf		<
infeq		<=
equal		==
supeq		>=
sup		>
diff		<>
get		=

%%
{bl}		;
{commentaire}	;

^{bl}+WindowTitle	{ return WINDOWTITLE; }
^{bl}+WindowSize	{ return WINDOWSIZE; }
^{bl}+WindowPosition	{ return WINDOWPOSITION; }
^{bl}+ForeColor		{ return FORECOLOR; }
^{bl}+BackColor		{ return BACKCOLOR; }
^{bl}+ShadowColor	{ return SHADCOLOR; }
^{bl}+HilightColor	{ return LICOLOR; }
^{bl}+Item		{ return OBJECT; }
^{bl}+Property		{ return PROP; }
^{bl}+Main		{ return MAIN; }
^{bl}+End		{ return END; }
^{bl}+Font		{ return FONT; }

^{bl}+Type		{ return TYPE; }
^{bl}+Size		{ return SIZE; }
^{bl}+Position		{ return POSITION; }
^{bl}+Value		{ return VALUE; }
^{bl}+Title		{ return TITLE; }
^{bl}+Icon		{ return ICON; }
^{bl}+State		{ return STATE; }
Hiden			{ return HIDEN; }
Inactif			{ return INACTIF; }
Actif			{ return ACTIF; }

^{bl}+Do		{ return EXEC; }
^{bl}+HideItem		{ return HIDE; }
^{bl}+ShowItem		{ return SHOW; }
^{bl}+ChangeValue	{ return VALUE; }
GetTitle		{ return GETTITLE; }
GetValue		{ return GETVALUE; }
^{bl}+ChangePosition	{ return POSITION; }
^{bl}+ChangeSize	{ return SIZE; }
^{bl}+ChangeTitle	{ return TITLE; }
^{bl}+ChangeIcon	{ return ICON; }
^{bl}+ChangeFont	{ return FONT; }
^{bl}+ChangeForeColor	{ return COLOR; }
^{bl}+Set		{ return SET; }
^{bl}+SendSignal	{ return SENDSIGN; }
^{bl}+Quit		{ return QUIT; }
^{bl}+Init		{ return INIT; }
^{bl}+For		{ return FOR; }
^{bl}+WarpPointer	{ return WARP; }
To			{ return TO; }
Do			{ return DO; }
^{bl}+If		{ return IF; }
Then			{ return THEN; }
Else			{ return ELSE; }

{inf}			{ return INF; }
{infeq}			{ return INFEQ; }
{supeq}			{ return SUPEQ; }
{sup}			{ return SUP; }
{diff}			{ return DIFF; }
{equal}			{ return EQUAL; }
{get}			{ return GET; }

^{bl}+While		{ return WHILE; }
^{bl}+Case+[ \t]+message+[ \t]of { return CASE; }
ClicMouse		{ return CLIC; }
^{bl}+Begin		{ return BEG; }
:			{ return POINT; }
[\(]			{ return BEGF; }
[\)]			{ return ENDF; }


{nb}		{ yylval.number=atoi(yytext);
                  return NUMBER;
                }

[\$]+{str}	{
		  yylval.str=(char*) strdup(yytext+1);
		  yylval.str[yyleng-1]='\0';
                  return VAR;
		}
{gstr}		{ /* Str entre "" */
		  yylval.str=(char*) strdup(yytext+1);
		  yylval.str[yyleng-2]='\0';
                  return GSTR;
		}

{str}		{ yylval.str=(char*) strdup(yytext);
		  yylval.str[yyleng]='\0';
                  return STR;
		}


{nl}		{ numligne++; }
