Skip to content

Educational tool for implementing domain specific languages

Notifications You must be signed in to change notification settings

aVorotnikov/dsl_generator

Repository files navigation

Инструмент создания языков предметной области

Позволяет создавать языки предметной области.

  1. Синтаксис задаётся грамматикой
  2. Семантика задаётся автоматным объектом

Настройка рабочего окружения

  1. Скачать пакеты при помощи pip:
pip install -r requirements.txt
  1. Установить Graphviz. Инструкция на официальном сайте

Содержание репозитория

Вспомогательные инструменты

Подробнее о каждой части можно узнать в README их директорий.

Основные инструменты

Позволяет получить поток лексем. Вызов скрипта с передачей ему пути к текстовому файлу в качестве аргумента выводит поток лексем.

Модуль редактирования потока лексем. Основные задачи:

  • разделение лексем (например при наличии ключей += и + и отсутствии ключа +=+ разумно разделить токен +=+ на += и +)
  • распознавание ключевых слов или конструкций
  • выставление атрибутов лексем

Модуль работы с синтаксисом.

Позволяет считывать описание синтаксиса в виде РБНФ или диаграммы Вирта и получить представление синтаксиса.

Позволяет получить абстрактное синтаксическое дерево программы по программе и описанию синтаксиса.

Задание синтаксиса см. в описании примеров, раздел "Формат JSON-файлов".

Модуль расстановки аттрибутов нетерминалов. Осуществляет обход дерева и расставляет атрибуты для встреченных нетерминалов по атрибутам дочерних элементов.

Правила расстановки атрибутов.

About

Educational tool for implementing domain specific languages

Topics

Resources

Stars

Watchers

Forks

Languages