Абстрактное синтаксическое дерево реализация, абстрактное синтаксическое дерево и дерево разбора

31-01-2024

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

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

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

Смотри также

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

  • AST View, плагин для Eclipse показывает абстрактное синтаксическое дерево программ на языке Java;
  • Полезная информация о представлении абстрактных синтаксических деревьев в Eclipse и манипулировании исходным кодом Java;
  • Статья «Идиомы реализации абстрактных синтаксических деревьев» Джоэла Джонса (англ. Joel Jones) (обзор реализаций абстрактных синтаксических деревьев в различных семействах языков)
  • Статья «Дизайн абстрактного синтаксического дерева» Николя Ховарта (англ. Nicola Howarth) (обратите внимание, что здесь просто описан дизайн АСД одного конкретного проекта и статья не содержит общего взгляда)
  • Статья «Исследование эволюции кода с использованием сравнения абстрактных синтаксических деревьев» Юлиана Немтью (англ. Iulian Neamtiu), Джеффри Фостера (англ. Jeffrey S. Foster) и Михаэля Хикса (англ. Michael Hicks);
  • Статья «Извлечение изменений: Поиск различий в деревьях для высокоточного определения изменений в исходном коде» Бита Флури (англ. Beat Fluri), Михаэля Вурщ (англ. Michael Würsch), Мартина Пинцгера (англ. Martin Pinzger) и Гаральда Галла (англ. Harald C. Gall);
  • Дипломная работа Михаэля Вурща (Улучшение распознавания изменений в исходых кодах с помощью абстрактных синтаксических деревьев»
  • Статья «Мысли о абстрактном синтаксическом дереве в Visual C++» Джейсона Лукаса (англ. Jason Lucas);
  • Учебное пособие «Стандарт метамодели абстрактных синтаксических деревьев»;
  • Представление CAST;
  • Abstract Syntax Tree Unparsing.

Абстрактное синтаксическое дерево реализация, абстрактное синтаксическое дерево и дерево разбора.

Эль-Джуфра (муниципалитет), Найнтахинское сельское муниципальное образование, Фредерик фон Саксен, Категория:Похороненные в Марьиной Горке.

© 2011–2023 stamp-i-k.ru, Россия, Барнаул, ул. Анатолия 32, +7 (3852) 15-49-47