%{ #include using namespace std; extern int yylex(); extern int lineno; void yyerror(char*s); %} %token PLUS TIMES INT CR RPAREN LPAREN %% lines : lines line | line ; line : expr CR {cout << "= " << $1 << endl; } ; expr : expr PLUS term {$$ = $1 + $3;} | term {$$ = $1;} ; term : term TIMES factor {$$ = $1 * $3;} | factor {$$ = $1;} ; factor : LPAREN expr RPAREN {$$ = $2;} | INT {$$ = $1;} ; %% int main() { yyparse(); } void yyerror(char *s) { cout << "Syntax error on line " << lineno << endl; }