Generative programming 2013 — различия между версиями
Mikhail (обсуждение | вклад) м |
Mikhail (обсуждение | вклад) (→Домашние задания) |
||
Строка 12: | Строка 12: | ||
<b>1. Парсер упрощенного XML</b>, срок сдачи до 15.09 <br> | <b>1. Парсер упрощенного XML</b>, срок сдачи до 15.09 <br> | ||
Написать на Textmapper (плагин к IntelliJ IDEA) парсер текста вида: | Написать на Textmapper (плагин к IntelliJ IDEA) парсер текста вида: | ||
− | <asdf1> text | + | <br><asdf1> |
− | + | <br> <abc>text 123</abc> | |
+ | <br> <zxcv2> text text</zxcv2> | ||
+ | <br></asdf1> | ||
− | + | *Теги бывают вида <xyz> и </xyz>, но не <xyz/> | |
− | <br>+1 балл - | + | *Внутри каждого тега может быть '''либо''' несколько тегов, '''либо''' один кусок текста. Текст состоит из слов, каждое из которых - набор букв. Имя тега - набор букв (без цифр) |
− | <br>+1 балл - найти максимальное кол-во ошибок в Textmapper | + | *Теги должны образовывать правильную скобочную структуру. Hint: проверку соответствия идентификаторов открывающего и закрывающего тегов проще всего сделать через semantic actions (см. документацию). |
+ | <br>+1 балл - все то же самое, но имя тега может включать цифры и буквы, а текст внутри тега состоит из букв, цифр, точек, запятых и знаков пробелов, другие символы в тексте запрещены (см. lexer states в документации textmapper'а). | ||
+ | <br>+1 балл - найти максимальное кол-во ошибок в Textmapper (5 лучших результатов по состоянию на 15.09) | ||
+ | Максимум за все задание можно получить 6 баллов | ||
+ | |||
+ | Приблизительная разбалловка: | ||
+ | <br> 5 - задание сделано и полностью работает | ||
+ | <br> 4 - небольшие недочеты, в целом все работает | ||
+ | <br> 3 - не работает в некоторых случаях | ||
+ | <br> 1 - задание не сдано | ||
== Список литературы == | == Список литературы == |
Версия 20:59, 4 сентября 2013
Преподаватели - Власьев Михаил Игоревич (mailto:michael.vlassiev@jetbrains.com),
Мухин Михаил Александрович (mailto:Mihail.Muhin@jetbrains.com)
Лекции
04.09.2013:
О чем курс,
Textmapper
Домашние задания
1. Парсер упрощенного XML, срок сдачи до 15.09
Написать на Textmapper (плагин к IntelliJ IDEA) парсер текста вида:
<asdf1>
<abc>text 123</abc>
<zxcv2> text text</zxcv2>
</asdf1>
- Теги бывают вида <xyz> и </xyz>, но не <xyz/>
- Внутри каждого тега может быть либо несколько тегов, либо один кусок текста. Текст состоит из слов, каждое из которых - набор букв. Имя тега - набор букв (без цифр)
- Теги должны образовывать правильную скобочную структуру. Hint: проверку соответствия идентификаторов открывающего и закрывающего тегов проще всего сделать через semantic actions (см. документацию).
+1 балл - все то же самое, но имя тега может включать цифры и буквы, а текст внутри тега состоит из букв, цифр, точек, запятых и знаков пробелов, другие символы в тексте запрещены (см. lexer states в документации textmapper'а).
+1 балл - найти максимальное кол-во ошибок в Textmapper (5 лучших результатов по состоянию на 15.09)
Максимум за все задание можно получить 6 баллов
Приблизительная разбалловка:
5 - задание сделано и полностью работает
4 - небольшие недочеты, в целом все работает
3 - не работает в некоторых случаях
1 - задание не сдано
Список литературы
Generative Programming: Methods, Tools, and Applications
Krysztof Czarnecki, Ulrich Eisenecker
Addison-Wesley Professional; 1 edition (June 16, 2000)
Перевод: Чернецки К., Айзенекер У. Порождающее программирование: методы, инструменты, применение / Пер. с англ. СПб: Питер, 2005.
Domain-Specific Languages
Martin Fowler
Addison-Wesley; 2011
Полезные ссылки
JetBrains MPS: http://www.jetbrains.com/mps
Отчеты об ошибках писать сюда: http://youtrack.jetbrains.com/issues/MPS