Понимание абстрактного синтаксического дерева, генерируемого на этапе переднего этапа компиляции g ++ - PullRequest
4 голосов
/ 26 февраля 2011

Я хочу посмотреть на синтаксическое дерево, которое генерируется g ++ во время компиляции.На самом деле я хочу понять, как высокоуровневые операторы C ++ (особенно операторы инициализации классов и объектов структуры) анализируются компилятором g ++ и как компилятор выполняет семантический анализ этих конструкций.Моя цель специфична только для g ++, и любая общая информация, касающаяся синтаксического анализа и семантического анализа, не будет для меня полезной.

Глядя на код g ++, я могу выяснить структуру данных, используемую внутри, и другой типузлы, которые он создает в файлах tree.def и т. д. Мне интересно, есть ли где-нибудь хорошая документация, объясняющая эту проблему.Любая помощь будет оценена.

1 Ответ

1 голос
/ 17 марта 2011

В дополнение к упомянутому выше внутреннему документу GCC существует проект Mozilla Treehydra , который представляет собой плагин gcc, который фактически позволяет вам играть с GIMPLE AST с использованием Javascript.ИМО, это отличный способ узнать о реализации GCC.

...