%{
   /* ----------------------------------------------------------------
    *	xlog_lexer.l
    *
    * $Header: xlog_lexer.l,v 1.2 89/02/02 17:00:14 dillon Exp $ 
    *	LEX parser source for testxlog.c
    *	(improvised from amiint parser code)
    * ----------------------------------------------------------------
    */
   
#include "testxlog.h"

int lval;

%}

D	[0-9]
id	[A-Za-z0-9_]+

%%

c |
commit		return(COMMITXACT);

a |
abort		return(ABORTXACT);

cl |
clear		return(CLEARXACT);

g |
get		return(GET);

s |
show		return(SHOW);

i |
index		return(INDEX);

r |
range		return(RANGE);

d |
dir		return(DIR);

reset		return(RESET);

help		return(HELP);

q |
quit		return(QUIT);

"("		return(LPAREN);
","		return(COMMA);
")"		return(RPAREN);
";"		return(SEMI);
"?"		return(QMARK);

[\n]      	;
" "		; 
\#[^\n]*	; /* for comments */

\${D}+		{ lval = atoi(yytext+1); return(XID); }

p{D}+		{ lval = atoi(yytext+1); show(lval); return(INT); }

{D}+		{ lval = atoi(yytext); return(INT); }

.		printf("syntax error : -> %s\n",yytext);

%%

yywrap()
{
   cleanup();
}


yyerror(str)
   char *str;
{
   fprintf(stderr,"\tsyntax error : %s",str);
}

show(d)
int d;
{
   printf("(%d)\n", d);
}
