Jak uprościć wyrażenie arytmetyczne w stylu C zawierające zmienne podczas generowania kodu?

Próbuję zoptymalizować ocenę wyrażenia w kompilatorze.

Wyrażenia arytmetyczne są w stylu C i mogą zawierać zmienne. Mam nadzieję uprościć wyrażenia w jak największym stopniu.

Na przykład,(3+100*A*B+100)*3+100 może zostać uproszczony do409+300*A*B.

Zależy to głównie od prawa dystrybucyjnego, prawa asocjacyjnego i prawa przemiennego.

Główną trudnością, jaką napotykam, jest połączenie tych praw arytmetycznych i tradycyjnych algorytmów oceny stosu.

Czy każdy może podzielić się doświadczeniami związanymi z tym lub podobnymi problemami w kontekście budowania kompilatora?

questionAnswers(2)

yourAnswerToTheQuestion