+ | ass_right '+' ass_right {
+ $$ = tree_malloc(ST_OP);
+ $$->pt.op.op = $2;
+ $$->pt.op.left = $1;
+ $$->pt.op.right = $3;
+ }
+ | ass_right '-' ass_right {
+ $$ = tree_malloc(ST_OP);
+ $$->pt.op.op = $2;
+ $$->pt.op.left = $1;
+ $$->pt.op.right = $3;
+ }
+ | ass_right '*' ass_right {
+ $$ = tree_malloc(ST_OP);
+ $$->pt.op.op = $2;
+ $$->pt.op.left = $1;
+ $$->pt.op.right = $3;
+ }
+ | ass_right '/' ass_right {
+ $$ = tree_malloc(ST_OP);
+ $$->pt.op.op = $2;
+ $$->pt.op.left = $1;
+ $$->pt.op.right = $3;
+ }
+ | '-' ass_right %prec NEG {
+ $$ = tree_malloc(ST_OP);
+ $$->pt.op.op = $1;
+ $$->pt.op.left = tree_malloc(ST_LEAF);
+ $$->pt.op.left->pt.leaf.type = L_CONST;
+ $$->pt.op.left->pt.leaf.value = "0";
+ $$->pt.op.left->pt.leaf.n =
+ store_const("0");
+ $$->pt.op.right = $2;
+ }