कंक्रीट अभिव्यक्ति के लिए ऑपरेटर प्राथमिकता को बदलने का सबसे अच्छा तरीका क्या होगा?ऑपरेटर प्राथमिकता बदलें
उदाहरण के लिए मैं एक वर्ग है:
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
गुणा अधिक पूर्वता +
और -
की तुलना में मैं फार्म की एक एएसटी मिलता है के रूप में
+
/\
a *
/\
- d
/\
b c
सबसे आसान तरीका करने के लिए इसे परिवर्तित करने के लिए किया जाएगा क्या एक पेड़ जहां *
+
और -
से कम प्राथमिकता है। मुझे लगता है कि कोष्ठक को केवल -
और +
समूह करने की अनुमति है, यानी एक अभिव्यक्ति (a * b - c) * d
मान्य नहीं है और इनपुट के रूप में अपेक्षा नहीं की जानी चाहिए।
मैं सावधान हो जाएगा इस्तेमाल कर सकते हैं! –
यह डीएसएल है तो ठीक होना चाहिए – Nutel
आप प्रतीक को पहचानने के बिना 'सही शिफ्ट' का उल्लेख करते हैं जो इसे दर्शाता है। 'सही शिफ्ट' के लिए प्रतीक '*' है? –