Абстрактное синтаксическое дерево
Sign in to saveAlso known as syntax tree, AST
конечное помеченное ориентированное дерево
Wikidata facts
- Instance of
- tree
- Subclass of
- parse tree
- Image
- Abstract syntax tree for Euclidean algorithm.svg
Show 3 more facts
- Commons category
- Abstract syntax trees
- manifestation of
- abstract syntax
- Stack Exchange tag
- proofassistants.stackexchange.com/tags/abstract-syntax-tree
Sources (2)
via Wikidata · CC0
Article · Русский
Абстрактное синтаксическое дерево (АСД, англ. abstract syntax tree, AST) — конечное помеченное ориентированное дерево, в котором внутренние вершины сопоставлены (помечены) с операторами языка программирования, а листья — с соответствующими операндами. Таким образом, листья являются пустыми операторами и представляют только переменные и константы. Синтаксические деревья используются в синтаксических анализаторах для программы между (деревом с конкретным синтаксисом) и структурой данных, которая затем используется в качестве внутреннего представления в компиляторе или интерпретаторе программы для оптимизации и генерации кода. Возможные варианты подобных структур описываются абстрактным синтаксисом. Абстрактное синтаксическое дерево отличается от дерева разбора тем, что в нём отсутствуют узлы и рёбра для тех синтаксических правил, которые не влияют на семантику программы. Классическим примером такого отсутствия являются группирующие скобки, так как в абстрактном синтаксическом дереве группировка операндов явно задаётся структурой дерева. Для языка, который описывается контекстно-свободной грамматикой (таковыми являются почти все языки программирования) создание дерева в синтаксическом анализаторе является тривиальной задачей. Большинство правил в грамматике создают новую вершину, а символы в правиле становятся рёбрами. Правила, которые ничего не привносят в дерево (например, группирующие правила), просто заменяются в вершине одним из своих символов. Кроме того, анализатор может создать полное дерево разбора и затем пройти по нему, удаляя узлы и рёбра, которые не используются в абстрактном синтаксисе, для получения абстрактного синтаксического дерева.
Abstract from DBpedia / Wikipedia · CC BY-SA