Разработка интерпретатора и браузерного редактора для заданного Domain Specific Language — различия между версиями
Материал из Wiki - Факультет компьютерных наук
(Новая страница: «{{Карточка_проекта |name=Разработка интерпретатора и браузерного редактора для заданного D…») |
|||
Строка 8: | Строка 8: | ||
|categorize=yes | |categorize=yes | ||
}} | }} | ||
+ | |||
+ | ===Что это за проект?=== | ||
+ | Существует некоторый язык описания биомаркеров(строгих описаний состояния, в котором находится пациент). Существует его реализация в виде 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 |
Версия 13:12, 16 октября 2018
Ментор | Лев Хотов |
Учебный семестр | Осень 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