¿Cómo simplificar una expresión aritmética de estilo C que contiene variables durante la generación de código?
Estoy tratando de optimizar la evaluación de la expresión en un compilador.
Las expresiones aritméticas son todas de estilo C, y pueden contener variables. Espero simplificar las expresiones tanto como sea posible.
Por ejemplo,(3+100*A*B+100)*3+100
puede ser simplificado a409+300*A*B
.
Depende principalmente de la ley distributiva, la ley asociativa y la ley conmutativa.
La principal dificultad que encuentro es cómo combinar estas leyes aritméticas y los algoritmos tradicionales de evaluación de pila-escaneo.
¿Puede alguien compartir experiencias relacionadas con este u otros problemas similares en el contexto de la compilación?