@Ttimofeyka

Можно ли создать компилятор без AST?

Здравствуйте.
Я интересуюсь темой компиляторов, и хотел бы узнать, возможно ли создать более-менее качественный компилятор без AST(и как такое может быть реализовано).
Заранее спасибо за ответы.
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Трансляторы
Седой и строгий
Качественный нельзя.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vapaamies
@Vapaamies
В творческом кризисе
В однопроходном компиляторе этапы синтаксического и семантического анализа могут быть объединены. AST становится виртуальной, существующей в памяти разборщика в момент его работы в виде стека контекстов и другой служебной информации, в явном виде (как в ANTLR) не создается . Предположительно именно так были реализованы классические компиляторы Turbo Pascal и Delphi.

Результатом работы такого разборщика становится промежуточное представление, уже не являющееся AST — семантический граф, промежуточный (трехадресный) код со служебной информацией, либо же какой-то свой тип. В своем проекте, скажем, я буду генерить обратимый код, поддерживающий отекстовку в сильно вариативный синтаксис.

Короче, причиной выбора подобной архитектуры компилятора должен быть особый случай, обусловленный особенностями проекта и описанный в его концепциях. Если вопрос был в том, можно ли написать разбор входного языка вручную, без использования генераторов синтаксических деревьев, — ответ «да», так пишут. Это хороший опыт.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы