Абстрактное синтаксическое дерево
Абстрактное синтаксическое дерево (АСД) — в информатике это конечное, помеченное, ориентированное дерево, в котором внутренние вершины сопоставлены с (помечены) операторами языка программирования, а листья с соответствующими операндами. Таким образом листья являются пустыми операторами и представляют только переменные и константы. Синтаксические деревья используются в парсерах для промежуточного представления программы между деревом разбора (конкретным синтаксическим деревом) и структурой данных которая затем используется в качестве внутреннего представления компилятора или интерпретатора компьютерной программы для оптимизации и генерации кода. Возможные варианты подобных структур описываются абстрактным синтаксисом. Абстрактное синтаксическое дерево отличается от дерева разбора тем, что в нём отсутствуют узлы и рёбра, для тех синтаксических правил, которые не влияют на семантику программы. Классическим примером такого отсутствия являются группирующие скобки, так как в АСД группировка операндов явно задаётся структурой дерева. Для языка, который описывается контекстно-свободной грамматикой, какими являются почти все языки программирования, создание абстрактного дерева в синтаксическом анализаторе является тривиальной задачей. Большинство правил в грамматике создают новую вершину, а символы в правиле становятся рёбрами. Правила, которые ничего не привносят в АСД такие, например, как группирующие правила, просто заменяются в вершине одним из своих символов. Кроме того, анализатор может создать полное дерево разбора и затем пройти по нему, удаляя узлы и рёбра, которые не используются в абстрактном синтаксисе чтобы получить АСД.
Внешние ссылки
- 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);
- Дипломная работа Михаэля Вурща (англ. Michael Würsch) «Улучшение распознавания изменений в исходых кодах с помощью абстрактных синтаксических деревьев»
- Статья «Мысли о абстрактном синтаксическом дереве в Visual C++» Джейсона Лукаса (англ. Jason Lucas);
- Учебное пособие «Стандарт метамодели абстрактных синтаксических деревьев»;
- Представление CAST;
- Abstract Syntax Tree Unparsing.
Компьютер | Это незавершённая статья о компьютерах. Вы можете помочь проекту, исправив и дополнив её. |
bs:Apstraktno sintaksno stablo de:Abstrakter Syntaxbaum en:Abstract syntax tree es:Árbol de sintaxis abstracta fr:Arbre syntaxique abstrait hr:Apstraktno sintaksno stablo ja:抽象構文木 pl:Drzewo AST pt:Árvore sintática abstrata uk:Абстрактне синтаксичне дерево vi:Cây cú pháp trừu tượng
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....