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

Абстрактное синтаксическое дерево
Абстрактное синтаксическое дерево для Алгоритма Евклида приведённого ниже:
while b ≠ 0
if a > b
a := a − b
else
b := b − a
return a

Абстрактное синтаксическое дерево (АСД) — в информатике это конечное, помеченное, ориентированное дерево, в котором внутренние вершины сопоставлены с (помечены) операторами языка программирования, а листья — с соответствующими операндами. Таким образом листья являются пустыми операторами и представляют только переменные и константы. Синтаксические деревья используются в парсерах для промежуточного представления программы между деревом разбора (конкретным синтаксическим деревом) и структурой данных, которая затем используется в качестве внутреннего представления компилятора или интерпретатора компьютерной программы для оптимизации и генерации кода. Возможные варианты подобных структур описываются абстрактным синтаксисом.

Абстрактное синтаксическое дерево отличается от дерева разбора тем, что в нём отсутствуют узлы и рёбра для тех синтаксических правил, которые не влияют на семантику программы. Классическим примером такого отсутствия являются группирующие скобки, так как в АСД группировка операндов явно задаётся структурой дерева. Для языка, который описывается контекстно-свободной грамматикой, какими являются почти все языки программирования, создание абстрактного дерева в синтаксическом анализаторе является тривиальной задачей. Большинство правил в грамматике создают новую вершину, а символы в правиле становятся рёбрами. Правила, которые ничего не привносят в АСД такие, например, как группирующие правила, просто заменяются в вершине одним из своих символов. Кроме того, анализатор может создать полное дерево разбора и затем пройти по нему, удаляя узлы и рёбра, которые не используются в абстрактном синтаксисе чтобы получить АСД.

Смотри также

Внешние ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Абстрактное синтаксическое дерево" в других словарях:

  • Кодогенерация — Кодогенерация  часть процесса компиляции, когда специальная часть компилятора, кодогенератор, конвертирует синтаксически корректную программу в последовательность инструкций, которые могут выполняться на машине. При этом могут применяться… …   Википедия

  • GNU Compiler Collection — GNU Compiler Collection …   Википедия

  • АСД — АСД  многозначная аббревиатура. Значения: АСД Абстрактное синтаксическое дерево АСД  адвентисты седьмого дня АСД  антисептический стимулятор Дорогова А. С. Д.  журнал «Архитектура. Строительство. Дизайн» АСД  автомат для… …   Википедия

  • Абстрактный семантический граф — В информатике абстрактным семантическим графом (АСГ) называется структура данных, используемая для представления или извлечения семантики выражения на формальном языке (например, на языке программирования). Абстрактный семантический граф … …   Википедия

  • Game Maker Language — Класс языка: объектно ориентированный, событийно ориентированный, скриптовый Появился в: 1999 Автор(ы): Марк Овермас Расширение файлов: .gml, .gmk, .gm6, .gmd, .gm8, .gm81 Сайт …   Википедия

  • АСД — адвентисты седьмого дня http://www.adventist.org/​ АСД автоматизированная система диагностирования АСД автоматизированная система диспетчеризации АСД …   Словарь сокращений и аббревиатур


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»