¿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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta