用Lex(flex)和yacc(bison)写的简单计算器(3) iexpr PLUS iexpr { $$ = $1 + $3;} iexpr MINUS iexpr { $$ = $1 - $3;} iexpr TIMES iexpr { $$ = $1 * $3;} iexpr DIVIDE iexpr { if($3) $$ = $1 / $3; else { $$ = $1; printf (stderr, "%d.%d-%d.%d: division by zero", @3.first_line, @3.first_column, @3.last_line, @3.last_column); } } iexpr MODULE iexpr { $$ = $1 % $3; } iexpr POWER iexpr { $$ = pow($1, $3);} MINUS iexpr %prec UNARYMINUS { $$ = - $2;} LP iexpr RP { $$ = $2;} LP iexpr error { $$ = $2; yyerror("missing ')'"); yyerrok;} PLUS iexpr %prec UNARYMINUS { $$ = $2;} ;