Разработка интерпретатора и браузерного редактора для заданного Domain Specific Language

Материал из Wiki - Факультет компьютерных наук
Версия от 13:35, 26 августа 2022; Mednik (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Ментор Лев Хотов
Учебный семестр Осень 2018
Учебный курс 3-4-й курс
Максимальное количество студентов, выбравших проект: 2-3



Что это за проект?

Существует некоторый язык описания биомаркеров(строгих описаний состояния, в котором находится пациент). Существует его реализация в виде Internal Groovy DSL. Однако подход internal DSL имеет серьезные конструктивные недостатки:

  • чудовищные проблемы с безопасностью
  • трудности в предоставлении удобного тулинга людям, не являющимся разработчиками(а DSL зачастую разрабатываются для них)

В данной работе предлагается познакомиться с профильным инструментом для разработки DSL с тулингом, и реализовать с его помощью подмножество заданного языка, используя для проверки себя существующую реализацию, а также сделать браузерный редактор получившегося DSL с автодополнением. Подробнее, см:

  • 8-я глава книги Implementing Domain Specific Languages with Xtext and Xtend - Second Edition.pdf (ссылка на книгу: https://goo.gl/4eJdS6)
  • Документация на сайте Xtext: https://goo.gl/iiVPW5

Пример выражения на DSL: mutation.load(gene: “BRAF”, type: MutationType.frameshift) > 0 && cna.deletion(gene: “KIT”)

Начальные требования

  • Уверенное чтение англоязычной технической литературы
  • Уверенное владение каким-либо объектно-ориентированным языком(Java, C#, C++, Python…)
  • Желание изучать Java

Чему вы научитесь

  • Писать на разных языках для JVM
  • Создавать свой собственный язык программирования вместе с тулингом для него

Какие будут использоваться технологии

  • Семейство похожих языков для JVM (Java, Kotlin, Groovy, возможно Xtend)
  • Eclipse Xtext для разработки DSL

Критерии оценивания

  • 4 балла --- реализован интерпретатор DSL, который поддерживает несколько функций, арифметические операторы над четырьмя типами: boolean, logical, enum и collection. При этом разрешается(и приветствуется) переиспользование существующего интерпретатора в любом виде.
  • +2 балла --- реализован веб-сервис, предоставляющий редактор DSL с возможностью создания, сохранения(в любую СУБД, хоть redis) и редактирования существующих выражений с базовым автодополнением.
  • +4 балла --- продвинутое автодополнение, поддерживающее огромные словари, доступ к которым предоставляется через третий сервис(например, словарь генов).

Контакты

Лев Хотов lev.khotov@bostongene.com