Разработка интерпретатора и браузерного редактора для заданного Domain Specific Language
Материал из Wiki - Факультет компьютерных наук
Ментор | Лев Хотов |
Учебный семестр | Осень 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