%{ #include #include void yyerror(char *s); %} %token MONTH %token DAY %token COMMA %token YEAR %% date : MONTH TWODIGITTHINGY COMMA FOURDIGITTHINGY | TWODIGITTHINGY MONTH FOURDIGITTHINGY | TWODIGITTHINGY SLASH TWODIGITTHINGY SLASH year ; year : TWODIGITTHINGY | FOURDIGITTHINGY ; %% extern FILE *yyin; int main(int argc, char *argv[]) { if (argc < 2) { fprintf(stderr, "usage: dates filename\n"); exit(-1); } yyin = fopen(argv[1],"r"); if (yyparse() == 0) printf("no errors\n"); else printf("there were errors\n"); } void yyerror(char *s) { printf("%s\n", s); }