%{ #include %} %token EOL NUMBER %% line : expr EOL { printf("%d\n", $1); } ; expr : expr '+' term { $$ = $1 + $3; } | term ; term : term '*' factor { $$ = $1 * $3; } | factor ; factor : '(' expr ')' { $$ = $2; } | NUMBER ; %% yyerror(char* errmsg) { fprintf(stderr, "%s\n", errmsg); } main(int argc, char** argv) { yyparse(); return 0; }