Skip to content
EntityQ127380· pop 23· linked from 189 articles

Абстрактное синтаксическое дерево

Sign in to save

Also 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
Sources (2)

via Wikidata · CC0

Article · Русский

Абстрактное синтаксическое дерево (АСД, англ. abstract syntax tree, AST) — конечное помеченное ориентированное дерево, в котором внутренние вершины сопоставлены (помечены) с операторами языка программирования, а листья — с соответствующими операндами. Таким образом, листья являются пустыми операторами и представляют только переменные и константы. Синтаксические деревья используются в синтаксических анализаторах для программы между (деревом с конкретным синтаксисом) и структурой данных, которая затем используется в качестве внутреннего представления в компиляторе или интерпретаторе программы для оптимизации и генерации кода. Возможные варианты подобных структур описываются абстрактным синтаксисом. Абстрактное синтаксическое дерево отличается от дерева разбора тем, что в нём отсутствуют узлы и рёбра для тех синтаксических правил, которые не влияют на семантику программы. Классическим примером такого отсутствия являются группирующие скобки, так как в абстрактном синтаксическом дереве группировка операндов явно задаётся структурой дерева. Для языка, который описывается контекстно-свободной грамматикой (таковыми являются почти все языки программирования) создание дерева в синтаксическом анализаторе является тривиальной задачей. Большинство правил в грамматике создают новую вершину, а символы в правиле становятся рёбрами. Правила, которые ничего не привносят в дерево (например, группирующие правила), просто заменяются в вершине одним из своих символов. Кроме того, анализатор может создать полное дерево разбора и затем пройти по нему, удаляя узлы и рёбра, которые не используются в абстрактном синтаксисе, для получения абстрактного синтаксического дерева.

Abstract from DBpedia / Wikipedia · CC BY-SA