%{ // scanner for Boolean equations // #include "parse.h" extern int fileno(FILE *); /* avoid gcc warning */ %} letter [A-Za-z_] digit [0-9] id {letter}({letter}|{digit})* %% [ \t\n\r\v\f] { /* ignore whitespace */ } "#".*\n { /* ignore comments */ } [=();] { return yytext[0]; /* punctuation */ } [Aa][Nn][Dd] { return AND; } [Oo][Rr] { return OR; } {id} { return ID; } . { return yytext[0]; /* bad token */ } %% void (*jj_junk)(int,char *) = yyunput; /* avoid gcc warnings */ int (*jj2_junk)(void) = input; void yyerror( const char *msg) /* called for parser syntax error */ { printf( "error: %s, yytext: %s\n", msg, yytext); } int yywrap( void) /* called at EOF */ { return 1; }