用Lex(flex)和yacc(bison)写的简单计算器(4) rexpr :REAL { $$ = $1; } rexpr PLUS rexpr { $$ = $1 + $3; } rexpr MINUS rexpr { $$ = $1 - $3; } rexpr TIMES rexpr { $$ = $1 * $3; } rexpr DIVIDE rexpr { 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); } } rexpr POWER rexpr { $$ = pow($1,$3); } LP rexpr RP { $$ = $2; } LP rexpr error { $$ = $2; yyerror("missing ')'"); yyerrok;} MINUS rexpr %prec UNARYMINUS