打字猴:1.700474047e+09
1700474047 }
1700474048
1700474049 //从map中取之
1700474050
1700474051 public int interpreter(HashMap<String,Integer>var){
1700474052
1700474053 return var.get(this.key);
1700474054
1700474055 }
1700474056
1700474057 }
1700474058
1700474059 抽象运算符号解析器如代码清单27-3所示。
1700474060
1700474061 代码清单27-3 抽象运算符号解析器
1700474062
1700474063 public abstract class SymbolExpression extends Expression{
1700474064
1700474065 protected Expression left;
1700474066
1700474067 protected Expression right;
1700474068
1700474069 //所有的解析公式都应只关心自己左右两个表达式的结果
1700474070
1700474071 public SymbolExpression(Expression_left,Expression_right){
1700474072
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
[ 上一页 ]  [ :1.700474047e+09 ]  [ 下一页 ]