%{
typedef union{
int num;
char *str;
} YYSTYPE;
char *monthtab[] =
{ "January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December" };
%}
%token <str> MONTH
%token <num> NUMBER
%type <str> monthnum
%type <num> day year
%%
date : day MONTH year { printf("%s %d, %d", $2, $1, $3); }
| monthnum '/' day '/' year { printf("%s %d, %d", $1, $3, $5); }
| MONTH day ',' year { printf("%s %d, %d", $1, $2, $4); }
;
monthnum : NUMBER { $$ = monthtab[$1 - 1 ] ; }
;
day : NUMBER ;
year : NUMBER ;