Как компилятор строит синтаксическое дерево?

В какой момент компилятор строит синтаксическое дерево? Как он формирует дерево и переводит дерево при построении исполняемого файла?


person Ananth    schedule 04.04.2011    source источник


Ответы (1)


Компилятор, который строит синтаксическое дерево, делает это на этапе синтаксического анализа. Обычно это происходит путем создания узла дерева для каждого правила грамматики, соответствующего входному потоку.

Генерация кода требует значительного анализа дерева, чтобы понять типы, операции, возможности для оптимизации и т. Д. Часто это трудно сделать напрямую с деревом, поэтому используются другие промежуточные представления (тройки, статическое одиночное присваивание, ...). Часто даже промежуточные этапы не подходят для генерации машинного кода, поэтому может быть построено какое-то представление машинных вмешательств (RTL), ...

Дело в том, что деревья - не единственное представление, которое компилятор использует для генерации кода.

Прочтите вводный учебник по компиляторам (Ахо и Уллман, «Компиляторы»), чтобы получить более подробную информацию, стоит ваших усилий.

person Ira Baxter    schedule 04.04.2011