• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
2024/2025

Языки программирования и компиляторы

ID 833628

Статус: Маго-лего
Когда читается: 3, 4 модуль
Охват аудитории: для своего кампуса
Язык: русский
Кредиты: 6

Программа дисциплины

Аннотация

Курс даёт информацию об общем устройстве компиляторов. Он дает начальное введение в область языков программирования, компиляторов и других языковых инструментов. Будут сформулированы некоторые основные понятия и подходы в данной области, такие, как операционная семантика языков программирования, промежуточное представление программ, интерпретация, преобразования программ и т.д. Студенты познакомятся с базовыми идеями и методами, используемыми при создании современных компиляторов, а также получат практические навыки написания простых компиляторов. Предполагается, что слушатели в процессе выполнения заданий к концу курса реализуют полноценный компилятор в машинный код для простого, но вполне функционального языка императивного программирования.
Цель освоения дисциплины

Цель освоения дисциплины

  • освоение формальных моделей и алгоритмов, а также практических приемов и методов, которые лежат в основе современных подходов к разработке компиляторов формальных языков;
  • начальный опыт применения этих концепций и техник при разработке своего собственного компилятора.
Планируемые результаты обучения

Планируемые результаты обучения

  • знать основные этапы разработки компилятора;
  • уметь при компиляции обрабатывать ветвления, циклы, функции;
  • владеть алгоритмами работы сборщика мусора при разработке компилятора.
  • Знание утилит лексического анализа языка flex и синтаксического анализа BIZON
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Формальные языки. Грамматики. КА
  • Теория конечных автоматов-распознавателей
  • Регулярные множества и регулярные выражения
  • BDD: Binary Decision Diagrams
  • Трансляция автоматных языков
  • Порождающие грамматики Хомского
  • Атрибутные трансляции и двусмысленные КС-грамматики
  • Атрибутная семантика
  • Трансляция арифметических выражений
  • Конечные автоматы
  • Синтаксический анализ. s-грамматики. Санация КС-грамматик
  • Грамматики рекурсивного спуска
  • Программные утилиты flex и BIZON
Элементы контроля

Элементы контроля

  • неблокирующий Практические занятия
    Задание по созданию собственного синтаксического анализатора
  • неблокирующий Экзамен
    Вопросы по теоретической части курса
Промежуточная аттестация

Промежуточная аттестация

  • 2024/2025 4th module
    0.4 * Экзамен + 0.6 * Практические занятия
Список литературы

Список литературы

Рекомендуемая основная литература

  • Sharan, K. (2017). Beginning Java 9 Fundamentals : Arrays, Objects, Modules, JShell, and Regular Expressions (Vol. Second edition). [Berkeley, CA]: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1632186
  • Введение в теорию автоматов - Князьков В.С., Волченская Т.В. - Национальный Открытый Университет "ИНТУИТ" - - - 2016 - русский - https://e.lanbook.com/book/100715 - ЛАНЬ - 100715
  • Математическая теория формальных языков, Пентус, А. Е., 2006
  • Теория синтаксического анализа, перевода и компиляции. Т. 2: Компиляция, Ахо, А., 1978
  • Теория формальных языков. Анализ и трансляция : учебное пособие, Сердобольский, В. И., 2008

Рекомендуемая дополнительная литература

  • Автоматы и алгоритмы - Драгилева И. П., Митин А. С. - МИРЭА - Российский технологический университет - - - 2022 - русский - https://e.lanbook.com/book/265646 - ЛАНЬ - 265646
  • Алгоритмы - Эриксон Дж. - Издательство "ДМК Пресс" - 978-5-97060-981-1 - 2023 - русский - https://e.lanbook.com/book/348125 - ЛАНЬ - 348125

Авторы

  • Салибекян Сергей Михайлович