¿Cuál sería la mejor manera de cambiar la precedencia del operador para una expresión concreta?Cambiar la precedencia del operador
Por ejemplo, tengo una clase:
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
Como la multiplicación tiene mayor precedencia que +
y -
consigo un AST de forma
+
/\
a *
/\
- d
/\
b c
¿Cuál sería la forma más fácil de convertirlo en un árbol donde *
tiene una prioridad menor que +
y -
. Supongo que los paréntesis están permitidos solo para el grupo -
y +
, es decir, una expresión (a * b - c) * d
no es válida y no debe esperarse como entrada.
Yo tendría cuidado: la sobrecarga de operadores * * puede introducir confusión y cambiar la prioridad de los operadores podría introducir aún más! –
es dsl, así que debería estar bien – Nutel
Usted menciona 'cambio a la derecha' sin identificar el símbolo que lo denota. ¿'' 'Es el símbolo del 'cambio a la derecha'? –