%{
/* $Id$ */
#include "Lpars.h"
#include "parser.h"


struct idf	*opval;		/* opcode of returned OPCODE*/
int		lastintval;	/* value of last integer seen */
int		linenum = 1;	/*current line number of input file*/
%}
%%
sfit		return(SFIT);
ufit		return(UFIT);
rotate		return(ROTATE);
p		return(PSIZE);
w2		return(DWSIZE);
w		return(WSIZE);
defined		return(DEFINED);
undefined	return(UNDEFINED);
samesign	return(SAMESIGN);
sameext		return(SAMEEXT);
samenam		return(SAMENAM);
offset		return(OFFSET);
[a-z][a-z][a-z]	{
		opval = str2idf(yytext,0);
		return(OPCODE);
		}
[0-9]+		{
		lastintval = atoi(yytext);
		return(INT);
		}
"$"		return(PATARG);
"&&"		return(LOGAND);
"||"		return(LOGOR);
"&"		return(BITAND);
"|"		return(BITOR);
"^"		return(XOR);
"-"		return(MINUS);
"+"		return(PLUS);
"*"		return(TIMES);
"/"		return(DIV);
"%"		return(MOD);
"=="		return(EQ);
"!="		return(NE);
"<"		return(LT);
"<="		return(LE);
">"		return(GT);
">="		return(GE);
"<<"		return(LSHIFT);
">>"		return(RSHIFT);
"!"		return(NOT);
"~"		return(COMP);
","		return(COMMA);
:[ \t]*\n[ \t]+	{ linenum++; return(':'); }
^"# "[0-9]+.*\n	{ linenum=atoi(yytext+2); }
^\#.*\n		{ linenum++; }
^\n		{ linenum++; }
[ \t]		;
\n		{ linenum++; return(yytext[0]);}
.		return(yytext[0]);
%%

int yywrap(void)
{
	return 1;
}

void back_token(void)
{
	yyless(0);
}
