Generative programming 2013 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
м
(Домашние задания)
Строка 12: Строка 12:
 
<b>1. Парсер упрощенного XML</b>, срок сдачи до 15.09 <br>
 
<b>1. Парсер упрощенного XML</b>, срок сдачи до 15.09 <br>
 
Написать на Textmapper (плагин к IntelliJ IDEA) парсер текста вида:
 
Написать на Textmapper (плагин к IntelliJ IDEA) парсер текста вида:
  <asdf1> text text text <zxcv2> text text
+
  <br><asdf1>
    </zxcv2> </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