АНТЛР Деревья нужны? - PullRequest
2 голосов
/ 14 июля 2010

Какова цель использования AST при сборке компилятора (с ANTLR). Нужно ли иметь его? Что такое так называемый TreeParser и как его использовать? Можно ли построить компилятор без каких-либо деревьев? Если нет, есть ли хорошие уроки, подробно описывающие тему?

1 Ответ

5 голосов
/ 14 июля 2010

AST позволяет вам отделять синтаксический анализ от других задач компилятора (привязка имени, проверка типов, генерация кода) - он представляет структуру программы более удобно, чем простой текст. Когда вы выполняете связывание, проверку типов или создание кода, тогда вы заботитесь о структуре, а не о текстовом макете программы.

Для действительно простого языка можно было бы сделать все возможное в действиях синтаксического анализатора (у ссылки на ANTLR есть пример), но для нетривиальных языков программирования AST - путь.

(Вам необязательно использовать деревья ANTLR и древовидные грамматики, в действиях правил, которые вы можете создавать, и свои собственные структуры данных)

Если вы парень из Java, то этот урок о Java AST в Eclipse может быть интересным: http://www.eclipse.org/articles/article.php?file=Article-JavaCodeManipulation_AST/index.html

...