%{ #include extern FILE * yyin; void yyerror(const char * str) { fprintf(stderr, "error: %s\n", str); } int yywrap() { return 1; } int main(int argc, char * argv[]) { if (argc > 0) { yyin = fopen(argv[1], "r"); } yyparse(); } %} %token BIN_NUMBER OCT_NUMBER DEC_NUMBER HEX_NUMBER %% program: /* empty */ | number program { printf("Saw a number\n"); } number: BIN_NUMBER | OCT_NUMBER | DEC_NUMBER | HEX_NUMBER { printf("Saw a number\n"); } ;