Изменить приоритет операторов

Каким будет лучший способ изменить приоритет оператора для конкретного выражения?

Например, у меня есть класс:

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 недействительно и не должно быть ожидается в качестве входных данных.

7
задан Nutel 19 May 2012 в 15:34
поделиться