Каким будет лучший способ изменить приоритет оператора для конкретного выражения?
Например, у меня есть класс:
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
Как умножение h как более высокий приоритет, чем +
и -
Я получаю AST формы
+
/ \
a *
/ \
- d
/ \
b c
. Как проще всего преобразовать его в дерево, где *
имеет более низкий приоритет перед +
и -
. Я предполагаю, что круглые скобки разрешены только для группировки -
и +
, т.е. выражение (a * b - c) * d
недействительно и не должно быть ожидается в качестве входных данных.