Позволяет создавать языки предметной области.
- Синтаксис задаётся грамматикой
- Семантика задаётся автоматным объектом
- Скачать пакеты при помощи pip:
pip install -r requirements.txt
- Установить Graphviz. Инструкция на официальном сайте
- Документация
- Примеры:
- Утилиты
Подробнее о каждой части можно узнать в README их директорий.
Позволяет получить поток лексем. Вызов скрипта с передачей ему пути к текстовому файлу в качестве аргумента выводит поток лексем.
Модуль редактирования потока лексем. Основные задачи:
- разделение лексем (например при наличии ключей
+=
и+
и отсутствии ключа+=+
разумно разделить токен+=+
на+=
и+
) - распознавание ключевых слов или конструкций
- выставление атрибутов лексем
Модуль работы с синтаксисом.
Позволяет считывать описание синтаксиса в виде РБНФ или диаграммы Вирта и получить представление синтаксиса.
Позволяет получить абстрактное синтаксическое дерево программы по программе и описанию синтаксиса.
Задание синтаксиса см. в описании примеров, раздел "Формат JSON-файлов".
Модуль расстановки аттрибутов нетерминалов. Осуществляет обход дерева и расставляет атрибуты для встреченных нетерминалов по атрибутам дочерних элементов.
Правила расстановки атрибутов.