Русская Википедия:Абстрактное синтаксическое дерево
- while b ≠ 0
- if a > b
- a := a − b
- else
- b := b − a
- if a > b
- return a
Абстрактное синтаксическое дерево (АСД, Шаблон:Lang-en) — конечное помеченное ориентированное дерево, в котором внутренние вершины сопоставлены (помечены) с операторами языка программирования, а листья — с соответствующими операндами. Таким образом, листья являются пустыми операторами и представляют только переменные и константы.
Синтаксические деревья используются в синтаксических анализаторах для промежуточного представления программы между Шаблон:Нп5 (деревом с конкретным синтаксисом) и структурой данных, которая затем используется в качестве внутреннего представления в компиляторе или интерпретаторе программы для оптимизации и генерации кода. Возможные варианты подобных структур описываются абстрактным синтаксисом.
Абстрактное синтаксическое дерево отличается от дерева разбора тем, что в нём отсутствуют узлы и рёбра для тех синтаксических правил, которые не влияют на семантику программы. Классическим примером такого отсутствия являются группирующие скобки, так как в абстрактном синтаксическом дереве группировка операндов явно задаётся структурой дерева.
Для языка, который описывается контекстно-свободной грамматикой (таковыми являются почти все языки программирования) создание дерева в синтаксическом анализаторе является тривиальной задачей. Большинство правил в грамматике создают новую вершину, а символы в правиле становятся рёбрами. Правила, которые ничего не привносят в дерево (например, группирующие правила), просто заменяются в вершине одним из своих символов. Кроме того, анализатор может создать полное дерево разбора и затем пройти по нему, удаляя узлы и рёбра, которые не используются в абстрактном синтаксисе, для получения абстрактного синтаксического дерева.
Литература
Ссылки
- AST View — плагин для Eclipse показывает абстрактное синтаксическое дерево программ на языке Java
- Полезная информация о представлении абстрактного синтаксического дерева в Eclipse и манипулировании исходным кодом Java
- Представление CAST
- Abstract Syntax Tree Unparsing Шаблон:Недоступная ссылка
- Страницы с игнорируемыми отображаемыми названиями
- Русская Википедия
- Страницы с неработающими файловыми ссылками
- Деревья (графы)
- Формальные языки
- Синтаксический анализ
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Википедия
- Статья из Википедии
- Статья из Русской Википедии