Galkov писал(а):
Ну типа: результатом работы LevelXXX является либо КОД (уже записанный в TProgram), либо вычисленная КОНСТАНТА.Идея ясна. Я думал немного иначе: оптимизировать все по максимуму. Подход, который ты предложил, например, не сможет оптимизировать выражение 2*(3+%1+4) в 14+2*%1 (поэтому то я сначала в сторону дерева и думал - там-то можно в процессе обработки дерева смотреть аргументы по левой ветви и по правой, а также переставлять местами операции одного приоритета, чтобы в примере выше компилятор мог упростить 3+%1+4 до 7+%1, ну а потом и далее).
Ну а так, можно и без дерева, да, это можно сделать, не сложно вроде бы.