- } else if (t->st == ST_OP) {
- int left, right;
- left = evaluate(t->pt.op.left, -1, where);
- right = evaluate(t->pt.op.right, -1, where);
- switch (t->pt.op.op) {
- case '.':
- return new_3par_instr(OPC_CAT, left,
- right, pref_var, where);
- break;
- default:
- die("evaluate: got to default");
- }
- } else
- die("evaluate: I can evaluate only expressions but I got %d",
- t->st);
+ }
+ int left, right;
+ left = evaluate(t->pt.op.left, -1, where);
+ right = evaluate(t->pt.op.right, -1, where);
+ switch (t->pt.op.op) {
+ case '.':
+ return new_3par_instr(OPC_CAT, left,
+ right, pref_var, where);
+ break;
+ case '+':
+ return new_3par_instr(OPC_PLUS, left,
+ right, pref_var, where);
+ break;
+ case '-':
+ return new_3par_instr(OPC_MINUS, left,
+ right, pref_var, where);
+ break;
+ case '*':
+ return new_3par_instr(OPC_MUL, left,
+ right, pref_var, where);
+ break;
+ case '/':
+ return new_3par_instr(OPC_DIV, left,
+ right, pref_var, where);
+ break;
+ }
+ die("evaluate: Never can get here :)");