Как упростить арифметическое выражение в стиле C, содержащее переменные во время генерации кода?
Я пытаюсь оптимизировать оценку выражения в компиляторе.
Все арифметические выражения выполнены в стиле C и могут содержать переменные. Я надеюсь максимально упростить выражения.
Например,(3+100*A*B+100)*3+100
может быть упрощено до.409+300*A*B
Это в основном зависит от распределительного права, ассоциативного права и коммутативного права.
Основная сложность, с которой я сталкиваюсь, заключается в том, как объединить эти арифметические законы и традиционные алгоритмы оценки стекового сканирования.
Кто-нибудь может поделиться опытом, связанным с этой или подобными проблемами в контексте компиляции?