Если вы используете стратегию немедленно производить перевод для каждого производства, становится невозможным, чтобы изменить порядок положения. Это серьезное ограничение.
Для решения проблемы существует ряд хаков. Один из них заключается в том, чтобы обеспечить механизм, при котором вывод для производства можно сохранить во временном буфере, чтобы он мог фактически выводиться позже.
Тем не менее, решение для очистки должно создать AST (абстрактное синтаксическое дерево) во время сеанса синтаксического анализа, а затем пройти AST, когда закон будет закончен. Поскольку в этот момент доступно все дерево синтаксического анализа, вы можете легко перемещать дочерние узлы произведения в произвольном порядке.
Стратегия AST более четко отделяет синтаксический анализ от генерации кода, что упрощает реализацию других этапов обработки (красивая печать, листинг и т. Д. И т. Д.). Он также избегает проблемы создания частичного вывода в случае обнаружения ошибки и преждевременного прекращения разбора.
Я, наконец, решил использовать временный буфер. БЛАГОДАРЯ –