%{ #include #include int yylex(); int yyerror(char *); %} %token ADD SUB MUL DIV NUM %left ADD SUB MUL DIV %% R: E { printf("result: %d", $$); return 0; } E: E ADD T { $$ = $1 + $3; } | E SUB T { $$ = $1 - $3; } | T ; T: T MUL NUM { $$ = $1 * $3; } | T DIV NUM { $$ = $1 / $3; } | NUM { $$ = $1; } ; %% int main() { yyparse(); } int yyerror(char *s) { printf("error: %s", s); exit(0); }