翻译成
S = replace(replace(A, '+', replace(replace(B,'',(replace(B,'-',C.fun())))),'/',2),'+',D)
在replace函数中我们调用对象相应的运算符函数...}else {
throw op + '运算符无法识别'
}
}
replace实现非常简单,不做过多解释,重要的部分是如何实现代码的编译。...这里需要注意‘(’元素前是否为函数调用或replace,如果是函数调用或replace,则需要继续向前弹出数据,闭合replace函数的闭合。...如果是一般元素,则查看前一个元素是否replace,如果是,则需要拼接‘)’使得replace函数闭合,否则直接将元素压入栈。
3、将2步骤中得到的栈顺序组合就得到编译后的表达式。...,接下来就是如何使编写的代码被我们的翻译机翻译,也就是需要一个容器,两种方法:一种就是类构造器重新定义方法属性,另一种就是将代码作为参数传入我们自定义的方法。