mirror of
https://github.com/open-simh/simtools.git
synced 2026-05-05 15:33:31 +00:00
Introduce a function to create a binary expression node.
This commit is contained in:
48
extree.c
48
extree.c
@@ -446,10 +446,7 @@ EX_TREE *evaluate(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Anything else returns verbatim */
|
/* Anything else returns verbatim */
|
||||||
res = new_ex_tree();
|
res = new_ex_bin(EX_ADD, left, right);
|
||||||
res->type = EX_ADD;
|
|
||||||
res->data.child.left = left;
|
|
||||||
res->data.child.right = right;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -525,10 +522,7 @@ EX_TREE *evaluate(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Anything else returns verbatim */
|
/* Anything else returns verbatim */
|
||||||
res = new_ex_tree();
|
res = new_ex_bin(EX_SUB, left, right);
|
||||||
res->type = EX_SUB;
|
|
||||||
res->data.child.left = left;
|
|
||||||
res->data.child.right = right;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -590,10 +584,7 @@ EX_TREE *evaluate(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Anything else returns verbatim */
|
/* Anything else returns verbatim */
|
||||||
res = new_ex_tree();
|
res = new_ex_bin(EX_MUL, left, right);
|
||||||
res->type = EX_MUL;
|
|
||||||
res->data.child.left = left;
|
|
||||||
res->data.child.right = right;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -621,10 +612,7 @@ EX_TREE *evaluate(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Anything else returns verbatim */
|
/* Anything else returns verbatim */
|
||||||
res = new_ex_tree();
|
res = new_ex_bin(EX_DIV, left, right);
|
||||||
res->type = EX_DIV;
|
|
||||||
res->data.child.left = left;
|
|
||||||
res->data.child.right = right;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -669,10 +657,7 @@ EX_TREE *evaluate(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Anything else returns verbatim */
|
/* Anything else returns verbatim */
|
||||||
res = new_ex_tree();
|
res = new_ex_bin(EX_AND, left, right);
|
||||||
res->type = EX_AND;
|
|
||||||
res->data.child.left = left;
|
|
||||||
res->data.child.right = right;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -717,10 +702,7 @@ EX_TREE *evaluate(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Anything else returns verbatim */
|
/* Anything else returns verbatim */
|
||||||
res = new_ex_tree();
|
res = new_ex_bin(EX_OR, left, right);
|
||||||
res->type = EX_OR;
|
|
||||||
res->data.child.left = left;
|
|
||||||
res->data.child.right = right;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -773,3 +755,21 @@ EX_TREE *new_ex_lit(
|
|||||||
|
|
||||||
return tp;
|
return tp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Create an EX_TREE representing a binary expression */
|
||||||
|
|
||||||
|
EX_TREE *new_ex_bin(
|
||||||
|
int type,
|
||||||
|
EX_TREE *left,
|
||||||
|
EX_TREE *right)
|
||||||
|
{
|
||||||
|
EX_TREE *tp;
|
||||||
|
|
||||||
|
tp = new_ex_tree();
|
||||||
|
tp->type = type;
|
||||||
|
tp->data.child.left = left;
|
||||||
|
tp->data.child.right = right;
|
||||||
|
|
||||||
|
return tp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
4
extree.h
4
extree.h
@@ -57,6 +57,10 @@ EX_TREE *new_ex_lit(
|
|||||||
EX_TREE *ex_err(
|
EX_TREE *ex_err(
|
||||||
EX_TREE *tp,
|
EX_TREE *tp,
|
||||||
char *cp);
|
char *cp);
|
||||||
|
EX_TREE *new_ex_bin(
|
||||||
|
int type,
|
||||||
|
EX_TREE *left,
|
||||||
|
EX_TREE *right);
|
||||||
|
|
||||||
EX_TREE *evaluate(
|
EX_TREE *evaluate(
|
||||||
EX_TREE *tp,
|
EX_TREE *tp,
|
||||||
|
|||||||
30
parse.c
30
parse.c
@@ -434,10 +434,7 @@ EX_TREE *parse_binary(
|
|||||||
return leftp;
|
return leftp;
|
||||||
|
|
||||||
rightp = parse_binary(cp + 1, term, ADD_PREC);
|
rightp = parse_binary(cp + 1, term, ADD_PREC);
|
||||||
tp = new_ex_tree();
|
tp = new_ex_bin(EX_ADD, leftp, rightp);
|
||||||
tp->type = EX_ADD;
|
|
||||||
tp->data.child.left = leftp;
|
|
||||||
tp->data.child.right = rightp;
|
|
||||||
tp->cp = rightp->cp;
|
tp->cp = rightp->cp;
|
||||||
leftp = tp;
|
leftp = tp;
|
||||||
break;
|
break;
|
||||||
@@ -447,10 +444,7 @@ EX_TREE *parse_binary(
|
|||||||
return leftp;
|
return leftp;
|
||||||
|
|
||||||
rightp = parse_binary(cp + 1, term, ADD_PREC);
|
rightp = parse_binary(cp + 1, term, ADD_PREC);
|
||||||
tp = new_ex_tree();
|
tp = new_ex_bin(EX_SUB, leftp, rightp);
|
||||||
tp->type = EX_SUB;
|
|
||||||
tp->data.child.left = leftp;
|
|
||||||
tp->data.child.right = rightp;
|
|
||||||
tp->cp = rightp->cp;
|
tp->cp = rightp->cp;
|
||||||
leftp = tp;
|
leftp = tp;
|
||||||
break;
|
break;
|
||||||
@@ -460,10 +454,7 @@ EX_TREE *parse_binary(
|
|||||||
return leftp;
|
return leftp;
|
||||||
|
|
||||||
rightp = parse_binary(cp + 1, term, MUL_PREC);
|
rightp = parse_binary(cp + 1, term, MUL_PREC);
|
||||||
tp = new_ex_tree();
|
tp = new_ex_bin(EX_MUL, leftp, rightp);
|
||||||
tp->type = EX_MUL;
|
|
||||||
tp->data.child.left = leftp;
|
|
||||||
tp->data.child.right = rightp;
|
|
||||||
tp->cp = rightp->cp;
|
tp->cp = rightp->cp;
|
||||||
leftp = tp;
|
leftp = tp;
|
||||||
break;
|
break;
|
||||||
@@ -473,10 +464,7 @@ EX_TREE *parse_binary(
|
|||||||
return leftp;
|
return leftp;
|
||||||
|
|
||||||
rightp = parse_binary(cp + 1, term, MUL_PREC);
|
rightp = parse_binary(cp + 1, term, MUL_PREC);
|
||||||
tp = new_ex_tree();
|
tp = new_ex_bin(EX_DIV, leftp, rightp);
|
||||||
tp->type = EX_DIV;
|
|
||||||
tp->data.child.left = leftp;
|
|
||||||
tp->data.child.right = rightp;
|
|
||||||
tp->cp = rightp->cp;
|
tp->cp = rightp->cp;
|
||||||
leftp = tp;
|
leftp = tp;
|
||||||
break;
|
break;
|
||||||
@@ -486,10 +474,7 @@ EX_TREE *parse_binary(
|
|||||||
return leftp;
|
return leftp;
|
||||||
|
|
||||||
rightp = parse_binary(cp + 1, term, OR_PREC);
|
rightp = parse_binary(cp + 1, term, OR_PREC);
|
||||||
tp = new_ex_tree();
|
tp = new_ex_bin(EX_OR, leftp, rightp);
|
||||||
tp->type = EX_OR;
|
|
||||||
tp->data.child.left = leftp;
|
|
||||||
tp->data.child.right = rightp;
|
|
||||||
tp->cp = rightp->cp;
|
tp->cp = rightp->cp;
|
||||||
leftp = tp;
|
leftp = tp;
|
||||||
break;
|
break;
|
||||||
@@ -499,10 +484,7 @@ EX_TREE *parse_binary(
|
|||||||
return leftp;
|
return leftp;
|
||||||
|
|
||||||
rightp = parse_binary(cp + 1, term, AND_PREC);
|
rightp = parse_binary(cp + 1, term, AND_PREC);
|
||||||
tp = new_ex_tree();
|
tp = new_ex_bin(EX_AND, leftp, rightp);
|
||||||
tp->type = EX_AND;
|
|
||||||
tp->data.child.left = leftp;
|
|
||||||
tp->data.child.right = rightp;
|
|
||||||
tp->cp = rightp->cp;
|
tp->cp = rightp->cp;
|
||||||
leftp = tp;
|
leftp = tp;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user