Попробовал переписать код метода (Delphi), следуя парадигме: "Нет break-ам, нет return-ам из середины" и разбив код на подфункции, оставив основную часть в виде простого цикла while.
Было:http://files.heroes35.net/html/ExprManager_OLD.html
Стало:http://files.heroes35.net/html/ExprManager_NEW.html

Смысл метода: выполнение операторов подвыражения с последующим удалением аргументов из списка и заменой оператора возвращённым значением. Пример подвыражения: a + b * 3 - 777/2. Подвыражение поступает в виде объекта-списка с распарсенными элементами. Для вышеуказанного примера:

0: TExprIdent a
1: TExprOper +
2: TExprIdent b
3: TExprOper *
4: TExprValue 3
5: TExprOper -
6: TExprValue 777
7: TExprOper /
8: TExprValue 2

После выполнения должно остаться одно значение в списке.

Определённая избыточность появляется в коде в рамках 15-20%. Но возрастает стабильность, повышается структурированность. Легче изменять отдельные части, не трогая другие. Переменные разнесены по локальным подфункциям. Код выполняется последовательно.

С уважением.