こんにちは、単純な後置電卓を作成しようとしています。
以下はスニペットです:
%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 - => :SYNTAX ERROR!! これはなぜですか?私は何をすべきか ?単項 + 演算子を作成しようとしましたが、意味がありません。