if (*str == '(') {
VERBOSE (DEBUG, fprintf (stdout, "start processing bracket\n"));
if (root) {
+ if (root->func == Val) {
+ delelement (root);
+ return ERROR_OP;
+ }
do {
found = 0;
new = parser (str + 1, &str, 0);
}
} while (*str == ',');
} else {
- root = newelement (Val, 1, 5);
+ root = newelement (Id, 1, 5);
new = parser (str + 1, &str, 0);
if ((new == NULL) || ((new != ERROR_OP) && (new->prio == 9))) {
delelement (new);
switch (root->func) {
case Val: func = "Value"; break;
+ case Id: func = "Ident"; break;
case Sig: func = "Sign"; break;
case Add: func = "Addition"; break;
case Sub: func = "Subtraction"; break;
return 0;
}
/* fallthrough */
+ case Id:
case Sqr:
case Cos:
case Sin:
switch (root->func) {
case Val: return op0;
+ case Id: return op0;
case Sig: return -op0;
case Add: return ((mask & MASK_SUB) == 0) ? op0 + op1 : op0 - op1;
case Sub: return ((mask & MASK_SUB) == 0) ? op0 - op1 : op0 + op1;