}
new->ops[0] = *proot;
new->ops[1] = parser (*pstr, pstr, new->prio);
+ if ((new->ops[1] == NULL) || ((new->ops[1] != ERROR_OP) && (new->ops[1]->prio == 9))) {
+ delelement (new->ops[1]);
+ new->ops[1] = ERROR_OP;
+ }
if (new->ops[1] == ERROR_OP) {
delelement (new);
*proot = NULL;
do {
found = 0;
new = parser (str + 1, &str, 0);
- if (new == ERROR_OP) {
+ if ((new == NULL) || ((new != ERROR_OP) && (new->prio == 9))) {
+ delelement (new);
+ new = ERROR_OP;
+ }
+ if ((new == NULL) || (new == ERROR_OP)) {
delelement (root);
return ERROR_OP;
}
return ERROR_OP;
}
new = parser (str + 1, &str, 0);
- if ((new == ERROR_OP) || (*str == ',')) {
+ if ((new == NULL) || ((new != ERROR_OP) && (new->prio == 9))) {
+ delelement (new);
+ new = ERROR_OP;
+ }
+ if ((new == NULL) || (new == ERROR_OP) || (*str == ',')) {
delelement (new);
delelement (root);
return ERROR_OP;
}
root->ops[0] = new;
}
+ if (*str != ')') {
+ delelement (root);
+ return ERROR_OP;
+ }
str++;
VERBOSE (DEBUG, fprintf (stdout, "stop processing bracket\n"));
continue;