%{ #include int yylex(void); void yyerror(char const *); void printValue(char *val) { fprintf(stderr, "%s", val); } %} %union{ char *stringVal; } %error-verbose %token '(' ')' ',' ';' '.' '=' %token NEW TREENODE_TYPE JTREE_TYPE ADDOBJECT %token STRINGVALUE SYMBOL %% Text : LexUnit | Text LexUnit ; LexUnit : '.' {printValue(".");} | '=' {printValue("=");} | '(' {printValue("(");} | ')' {printValue(")");} | '"' {printValue("\"");} | ',' {printValue(",");} | ';' {printValue(";");} | NEW {printValue(" NEW ");} | TREENODE_TYPE {printValue(" TREENODE_TYPE "); } | JTREE_TYPE {printValue(" JTREE_TYPE "); } | ADDOBJECT {printValue(" ADDOBJECT "); } | SYMBOL {printValue(" SYMBOL:"); printValue($1);} | STRINGVALUE {printValue(" STRINGVALUE:"); printValue($1);} ;