%{ #define YYERROR_VERBOSE void yyerror(char *); %} %verbose %token '(' ')' ID ILLEGAL_CHAR %nonassoc '<' '>' EQ LE GE NE %left '+' '-' %left '*' '/' %right UMINUS %% e: e '*' e | e '/' e | e '+' e | e '-' e | e '<' e | e '>' e | e EQ e | e LE e | e GE e | e NE e | '(' e ')' | '-' e %prec UMINUS | ID ; %% void yyerror(char *msg) { printf("\n%s\n", msg); } int main() { return yyparse(); }