您好我一直在尝试创建一个简单的后缀计算器。
以下是片段:
%token NUM
%left '-' '+'
%left '*' '/'
%left NEG /* negation--unary minus */
%right '^' /* exponentiation */
%% /* Grammar rules and actions follow. */
input:
/* empty */
| input line
;
line:
'\n'
| exp '\n' { printf ("%.10g\n", $1); }
;
exp:
NUM { $$ = $1; }
| '-' exp %prec NEG { $$ = -$2; }
| exp exp '+' { $$ = $1 + $2; }
| exp exp '-' { $$ = $1 - $2; }
| exp exp '*' { $$ = $1 * $2; }
| exp exp '/' { $$ = $1 / $2; }
| exp exp '^' { $$ = pow ($1, $2); } /* Exponentiation */
| exp 'n' { $$ = -$1; } /* Unary minus */
;
%%
1 2 + 3 - => 0 \n
1 -2 - => 3 \n
2 3e+2 + 3 - => 299 \n
1 2 3 + - => -4 \n
只有,1 +2 - =>:语法错误!!为什么会这样?我应该怎么办 ?我什至尝试创建一个一元 + 运算符,但它没有意义。