Разработка интерпретатора и браузерного редактора для заданного 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