We use cookies in order to improve the quality and usability of the HSE website. More information about the use of cookies is available here, and the regulations on processing personal data can be found here. By continuing to use the site, you hereby confirm that you have been informed of the use of cookies by the HSE website and agree with our rules for processing personal data. You may disable cookies in your browser settings.

  • A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Compilers

2020/2021
Academic Year
RUS
Instruction in Russian
4
ECTS credits
Delivered at:
Department of Informatics
Course type:
Compulsory course
When:
2 year, 1, 2 module

Instructors


Березун Даниил Андреевич


Булычев Дмитрий Юрьевич

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

Аннотация

Является дисциплиной по выбору. Основные задача данного курса — познакомить студентов с базовыми идеями и методами, используемыми при создании современных компиляторов, а также дать практические навыки написания простых компиляторов В результате освоения дисциплины студент должен:  знать основные этапы разработки компилятора;  уметь при компиляции обрабатывать ветвления, циклы, функции;  владеть алгоритмами работы сборщика мусора при разработке компилятора.
Цель освоения дисциплины

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

  • Целями освоения дисциплины «Компиляторы» являются формирование у студентов теоретических знаний и практических навыков по основам создания компиляторов для произвольных языков программирования. Данный курс посвящен принципам разработки компиляторов. Основная задача данного курса - познакомить студентов с базовыми идеями и методами, используемыми при создании современных компиляторов, а также дать практические навыки написания простых компиляторов.
Планируемые результаты обучения

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

  • Знает основные принципы устройства компиляторов. Умеет организовывать и проводить научную дискуссию по вопросам из профессиональной сферы. Владеет навыками обсуждения выбора оптимального компилятора для решения практических задач.
  • Знает основные алгоритмы синтаксического анализа кода. Реализует данные алгоритмы. Владеет навыками реализации стековой машины компилятора.
  • Знает основные этапы разработки компилятора. Реализует все компоненты компилятора. Владеет методами генерации лексеров и парсеров при разработке компилятора.
  • Знает основные принципы устройства динамических структур данных. Знает дисциплины управления динамической памятью.
Содержание учебной дисциплины

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

  • Введение. Языки программирования и машинные архитектуры. Компилятор, интерпретатор
  • Синтаксический анализ. Стековая машина
  • Система команд x86. Генератор кода, конструкции управления, процедуры и функции.
  • Динамические структуры данных и символические выражения
Элементы контроля

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

  • неблокирующий Домашнее задание 1
  • неблокирующий Домашнее задание 2
  • блокирующий Устный экзамен
  • неблокирующий Домашнее задание 1
  • неблокирующий Домашнее задание 2
  • блокирующий Устный экзамен
Промежуточная аттестация

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

  • Промежуточная аттестация (2 модуль)
    0.25 * Домашнее задание 1 + 0.25 * Домашнее задание 2 + 0.5 * Устный экзамен
Список литературы

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

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

  • Малявко А. А. - ФОРМАЛЬНЫЕ ЯЗЫКИ И КОМПИЛЯТОРЫ. Учебное пособие для вузов - М.:Издательство Юрайт - 2019 - 429с. - ISBN: 978-5-534-04288-7 - Текст электронный // ЭБС ЮРАЙТ - URL: https://urait.ru/book/formalnye-yazyki-i-kompilyatory-438060

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

  • Grune, D., & Jacobs, C. J. H. (2008). Parsing Techniques : A Practical Guide (Vol. 2nd ed). New York: Springer. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=254768