ДеревоDL
Язык описания деревьев (TreeDL) — компьютерный язык для описания строго типизированных древовидных структур данных и операций над ними. Основное применение TreeDL — при разработке языково-ориентированных инструментов ( компиляторов , трансляторов и т. д.) для описания структуры абстрактных синтаксических деревьев .
Описание дерева можно использовать как
- документация интерфейса между парсером и другими подсистемами;
- источник для генерации типов данных, представляющих дерево на целевых языках программирования;
- источник для генерации различного вспомогательного кода: посетителей , ходоков, фабрик и т.д.
TreeDL можно использовать с любым генератором парсера , который позволяет настраивать действия во время синтаксического анализа (например, ANTLR , JavaCC ).
Обзор языка
[ редактировать ]В описании дерева перечислены типы узлов, разрешенные в дереве. Типы узлов поддерживают одиночное наследование . Типы узлов имеют дочерние элементы и атрибуты. Дочерние элементы должны иметь определенный тип узла. Атрибуты могут иметь примитивный тип (числовой, строковый, логический), тип перечисления или тип узла. Атрибуты используются для хранения литералов во время построения дерева и дополнительной информации, собранной во время анализа дерева (например, связей между ссылкой и определением для представления абстрактного синтаксиса более высокого порядка ).
Операции над деревом определяются как мультиметоды . Преимущества этого подхода описаны в статье Treecc: аспектно-ориентированный подход к написанию компиляторов.
Древовидные описания поддерживают наследование, что обеспечивает модульность и повторное использование описаний деревьев базового языка для языковых расширений.
См. также
[ редактировать ]- ANTLR — генератор синтаксического анализатора, предлагающий другой подход к обработке деревьев: грамматики деревьев.
- SableCC — генератор парсера, генерирующий строго типизированные абстрактные синтаксические деревья .
Ссылки
[ редактировать ]Внешние ссылки
[ редактировать ]- Дом TreeDL в Wayback Machine (архивировано 3 октября 2016 г.)
- старый дом TreeDL
- Treecc в Wayback Machine (архивировано 3 июля 2007 г.)