Разработка интерпретатора и браузерного редактора для заданного Domain Specific Language — различия между версиями
Материал из Wiki - Факультет компьютерных наук
Seosky (обсуждение | вклад) |
Mednik (обсуждение | вклад) м (Откат правок Seosky (обсуждение) к версии Aapoludnitsin) |
||
Строка 1: | Строка 1: | ||
− | + | {{Карточка_проекта | |
− | + | |name=Разработка интерпретатора и браузерного редактора для заданного Domain Specific Language | |
− | + | |mentor=Лев Хотов | |
− | + | |mentor_login={{URLENCODE:lhotov|WIKI}} | |
− | + | |semester=Осень 2018 | |
− | + | |course=3-4 | |
− | + | |number_of_students=2-3 | |
− | + | |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:35, 26 августа 2022
Ментор | Лев Хотов |
Учебный семестр | Осень 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