%{ #include extern int yylex(); void yyerror(char *); %} %token '=' %token X Y %token WIDTH HEIGHT %token BGCOLOR %token HREF NAME %token TITLE RESIZABLE TEXT %token INT_V %token COLOR_V STRING_V PERCENT_V %union { char * stringVal; } %% ListAttr: | ListAttr Attr Attr: AttrInt | AttrColor | AttrPercent | AttrString AttrInt: X '=' INT_V {fprintf(stderr, "", $3);} | Y '=' INT_V {fprintf(stderr, "", $3);} AttrColor: BGCOLOR '=' COLOR_V {fprintf(stderr, "", $3);} AttrPercent: WIDTH '=' PERCENT_V {fprintf(stderr, "", $3);} | HEIGHT '=' PERCENT_V {fprintf(stderr, "", $3);} AttrString: HREF '=' STRING_V {fprintf(stderr, "", $3);} | NAME '=' STRING_V {fprintf(stderr, "", $3);} | TITLE '=' STRING_V {fprintf(stderr, "", $3);} | RESIZABLE '=' STRING_V {fprintf(stderr, "<RESIZABLE = %s>", $3);} | TEXT '=' STRING_V {fprintf(stderr, "<TEXT = %s>", $3);}