更改具體表達式的運算符優先級的最佳方法是什麼?更改運算符優先級
比如我有一個類:
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
乘法的優先級高於+
和-
我得到形式的AST
+
/\
a *
/\
- d
/\
b c
什麼將其轉換爲最簡單的方法*
的優先級低於+
和-
。我假設圓括號僅允許將-
和+
組合在一起,即表達式(a * b - c) * d
無效並且不應該作爲輸入。
我會小心:操作符重載* *可以引入混亂和改變運算符優先級甚至更多的介紹! – 2011-06-07 08:47:10
它是dsl所以應該沒問題 – Nutel 2011-06-08 02:25:32
你提到'右移'沒有標識表示它的符號。 '*'是'右移'的符號嗎? – 2012-05-13 21:10:59