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
1700474123
解析器的开发工作已经完成了,但是需求还没有完全实现。我们还需要对解析器进行封装,封装类Calculator如代码清单27-6所示。
1700474124
1700474125
代码清单27-6 解析器封装类
1700474126
1700474127
public class Calculator{
1700474128
1700474129
//定义表达式
1700474130
1700474131
private Expression expression;
1700474132
1700474133
//构造函数传参,并解析
1700474134
1700474135
public Calculator(String expStr){
1700474136
1700474137
//定义一个栈,安排运算的先后顺序
1700474138
1700474139
Stack<Expression>stack=new Stack<Expression>();
1700474140
1700474141
//表达式拆分为字符数组
1700474142
1700474143
char[]charArray=expStr.toCharArray();
[
上一页 ]
[ :1.700474094e+09 ]
[
下一页 ]