Java Expression Tree Evaluation

Java Expression Evaluation
Tuesday, September 04, 2012
10:17 AM
Evaluate the given Java expression given the State Vector
(a,k) = (3,2) by using its Expression Tree
a*3+7/k
State Vector
(a,k) = (3,2)
Java Expr Tree Eval Page 1
Expression Tree
Tuesday, September 04, 2012
10:17 AM
The Java expression:
has the tree shown below:
a*3+7/k
+
/
*
a
3
7
k
Java Expr Tree Eval Page 2
Add Value Boxes
Tuesday, September 04, 2012
10:17 AM
To this tree we add ONE value box next to each operator
node
+
/
*
a
3
7
k
Value Boxes
Java Expr Tree Eval Page 3
Analyze State Vector
Tuesday, September 04, 2012
10:17 AM
Then we Analyze the State Vector
(a,k) = (3,2)
Means:
+
a=3
and
k=2
/
*
a
3
3
7
And place the values for each
variable just below (any) copies of
the variable in the tree
Java Expr Tree Eval Page 4
k
2
Bottom Up Evaluation
Tuesday, September 04, 2012
10:17 AM
State Vector
(a,k) = (3,2)
a*3+7/k
+
9
/
*
a
3
*
3
7
k
2
Begin with nodes at the BOTTOM.
Only work a node whose LEGS have ALREADY
been evaluated.
Java Expr Tree Eval Page 5
2nd Step Evaluation
Tuesday, September 04, 2012
10:17 AM
State Vector
(a,k) = (3,2)
a*3+7/k
+
3
9
/
*
a
3
3
7
/
k
2
Java Expr Tree Eval Page 6
OOPS !
SEE NEXT PAGE
OOPS 7/2
Tuesday, September 04, 2012
3:57 PM
The previous page seems to have made a mistake
After all, 7/2 should be 3.5 RIGHT ?
NOT IN JAVA
In JAVA, 7/2 is just 3
This is called INTEGER DIVISION.
It is division without the decimal point.
As another example, 15/4 is just 3
and NOT 3.75
The .75 is JUST THROWN AWAY (NO ROUNDING)
Java Expr Tree Eval Page 7
Completed Tree
Tuesday, September 04, 2012
10:17 AM
State Vector
(a,k) = (3,2)
a*3+7/k
12
+
+
9
3
/
*
a
3
3
7
Last Step of Evaluation
Java Expr Tree Eval Page 8
k
2
Nodes Labeled
Tuesday, September 04, 2012
4:10 PM
State Vector
(a,k) = (3,2)
a*3+5/k
12
#1
+
9
*
a
3
3
#2
3
/ #3
7
k
2
Label Nodes #1, #2, #3
BE CAREFUL to use the # sign
DO NOT CONFUSE the numbers in boxes
with the node label numbers.
Java Expr Tree Eval Page 9
Mentor Table
Tuesday, September 04, 2012
4:10 PM
State Vector
(a,k) = (3,2)
a*3+5/k
12
#1
+
9
*
a
3
3
#2
3
/ #3
7
k
2
Place Tree information into a
Table as expected by Mentor
Java Expr Tree Eval Page 10
Label
#1
#2
#3
Value
12
9
3
Oper
+
*
/
Kids
#2 #3
a 3
7 k