1700474073
this.left=_left;
1700474074
1700474075
this.right=_right;
1700474076
1700474077
}
1700474078
1700474079
}
1700474080
1700474081
这个解析过程还是比较有意思的,每个运算符号都只和自己左右两个数字有关系,但左右两个数字有可能也是一个解析的结果,无论何种类型,都是Expression的实现类,于是在对运算符解析的子类中增加了一个构造函数,传递左右两个表达式。具体的加、减法解析器如代码清单27-4、代码清单27-5所示。
1700474082
1700474083
代码清单27-4 加法解析器
1700474084
1700474085
public class AddExpression extends SymbolExpression{
1700474086
1700474087
public AddExpression(Expression_left,Expression_right){
1700474088
1700474089
super(_left,_right);
1700474090
1700474091
}
1700474092
1700474093
//把左右两个表达式运算的结果加起来
1700474094
1700474095
public int interpreter(HashMap<String,Integer>var){
1700474096
1700474097
return super.left.interpreter(var)+super.right.interpreter(var);
1700474098
1700474099
}
1700474100
1700474101
}
1700474102
1700474103
代码清单27-5 减法解析器
1700474104
1700474105
public class SubExpression extends SymbolExpression{
1700474106
1700474107
public SubExpression(Expression_left,Expression_right){
1700474108
1700474109
super(_left,_right);
1700474110
1700474111
}
1700474112
1700474113
//左右两个表达式相减
1700474114
1700474115
public int interpreter(HashMap<String,Integer>var){
1700474116
1700474117
return super.left.interpreter(var)-super.right.interpreter(var);
1700474118
1700474119
}
1700474120
1700474121
}
1700474122
[
上一页 ]
[ :1.700474073e+09 ]
[
下一页 ]