%{ #include "gram.tab.h" void checkF( char *h ) { fprintf(stderr,"[%s:%s]", h, yytext ); } %} D [0-9] I2 {D}{2} H [0-9A-Fa-f] H3 {H}{3} S [ ]+ AN [A-Za-z][A-Za-z0-9]* %% {D}+pt { checkF("F.SZ"); return FT_SIZE_VAL; } [-]?{D}*\.{D}+ | {D}+\. { checkF("FLOAT"); return FLOAT; } [-]?{D}+ { checkF("INT%d"); return INT; } #{H3}{1,2} { checkF("H.COL"); return COLOR; } rgb\({I2}%,{S}{I2}%,{S}{I2}%\) { checkF("RGB.COL"); return COLOR; } black|blue|gray| green|red|yellow { checkF("PDEF.COL"); return COLOR; } none { checkF("NONE]"); return COLOR; } href { checkF("HREF"); return HREF; } style { checkF(""); return STYLE; } fill { checkF(""); return FILL; } stroke { checkF(""); return STROKE; } font-family { checkF(""); return FONT_FAMILY; } font-size { checkF(""); return FONT_SIZE; } points { checkF(""); return POINTS; } transform { checkF(""); return TRANSFORM; } (sans-)?serif { checkF(""); return FONT_FAM_VAL; } [#]{AN} { checkF("ref"); return REFERENCE; } {AN} { checkF("SYMB"); return SYMB; } [ \t\n] { ECHO; } . { fprintf(stderr,"[%c!]",yytext[0] ); return yytext[0]; } %%