Розробка компіляторів для предметно-орієнтованих мов (кн дввс)
Тип: На вибір студента
Кафедра: інформаційних систем
Навчальний план
| Семестр | Кредити | Звітність |
| 5 | 3 | Залік |
Лекції
| Семестр | К-сть годин | Лектор | Група(и) |
| 5 | 32 | професор, ст. наук. співробітник Жолткевич Г. М. | ПМі-34, ПМі-35, ПМі-31, ПМі-32, ПМі-33 |
Лабораторні
| Семестр | К-сть годин | Група | Викладач(і) |
| 5 | 32 | ПМі-34 | професор, ст. наук. співробітник Жолткевич Г. М. |
| ПМі-35 | професор, ст. наук. співробітник Жолткевич Г. М. |
Опис курсу
Навчальна дисципліна присвячена комплексному вивченню теоретичних засад та практичних методів створення сучасних мовних процесорів, з особливим акцентом на розробку предметно-орієнтованих мов (DSL). Програма курсу структурована таким чином, щоб провести здобувача через усі етапи проектування компілятора: від базових алгоритмів обробки рядків до генерації цільового коду та візуалізації моделей. Початковий етап навчання охоплює фундаментальні алгоритми пошуку, що є критично важливими для лексичного аналізу. Сюди входить вивчення наївного пошуку підрядків, а також високоефективних методів, таких як алгоритм Кнута-Морісона-Прата та багатошаблонний алгоритм Ахо-Корасик. Ці знання закладають підґрунтя для переходу до більш складних структур даних та методів обробки текстової інформації.
Центральна частина курсу присвячена теорії формальних мов і граматик. Студенти опановують роботу з регулярними виразами та генеративними граматиками, вчаться розрізняти контекстно-вільні граматики та будувати синтаксичні дерева. Особлива увага приділяється методу лівого рекурсивного спуску та граматикам виразів розбору (PEG), які є основою для сучасних інструментів синтаксичного аналізу. Практична реалізація цих концепцій здійснюється за допомогою інструменту textX, що дозволяє створювати метамоделі мов та описувати їхню структуру на високому рівні абстракції.
Програма також детально розглядає питання семантичного аналізу та трансляції. Курс передбачає вивчення технік навігації за моделями, реалізацію семантичних обмежень та використання об’єктних процесорів. Важливою складовою є вивчення шаблону проектування Visitor, який застосовується для обробки абстрактних синтаксичних дерев, що дозволяє виконувати задачі інтерпретації, візуалізації та безпосередньої трансляції моделей.
Логічним завершенням курсу є розробка та захист індивідуального міні-проєкту, де студенти демонструють навички проектування повноцінного компілятора. Це включає специфікацію власної мови, реалізацію її семантики та механізмів трансляції. Загальний обсяг дисципліни становить 120 годин, розподілених на 16 лекційних годин, 32 години лабораторних занять та 72 години самостійної роботи протягом 16 навчальних тижнів. Даний курс забезпечує підготовку фахівців, здатних створювати спеціалізовані мовні інструменти для автоматизації розробки програмного забезпечення.
Рекомендована література
Основна література:
- A. Aho, M. Lam, R. Sethi, J.Ullman. Compilers: Principles, Techniques, and Tools, 2nd ed. 2007.
- F. Tomassetti. The complete guide to (external) Domain Specific Languages. 2017.
- I. Dejanović et al. textX. https://github.com/textX/
- Thomas H. Cormen et al. Introduction to Algorithms.
Додаткова література:
- S. Kelly, Juha-Pekka Tolvanen. Domain-specific modeling: enabling full code generation. 2008.
- K. Cooper, L. Torczon. Engineering a Compiler 2nd ed. 2012.