Nut*_*tel 7 algorithm abstract-syntax-tree operator-precedence
更改具体表达式的运算符优先级的最佳方法是什么?
例如,我有一个班级:
class A(){
def multiply(a) {
...
}
def plus(a) {
...
}
def minus(b) {
...
}
}
a = new A()
b = new A()
c = new A()
d = a + (b - c) * d
Run Code Online (Sandbox Code Playgroud)
因为乘法具有更高的优先级+而且-我获得了形式的AST
+
/ \
a *
/ \
- d
/ \
b c
Run Code Online (Sandbox Code Playgroud)
什么是将其转换为一棵树,其中最简单的方法*具有的优先级低于+和-.我假定括号只允许到组-和+,即,表达(a * b - c) * d不是有效的并且应当不预期作为输入.