• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Теория и средства трансляции и компиляции

2019/2020
Учебный год
RUS
Обучение ведется на русском языке
4
Кредиты

Преподаватель

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

Аннотация

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

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

  • Дать специалисту основные знания о том, как устроен компилятор
  • Дать специалисту знания о разных частях компилятора и как их можно реализовать и применять
Результаты освоения дисциплины

Результаты освоения дисциплины

  • Составление регулярного выражения для описания шаблона токена
  • Преобразование регулярного выражения в НКА
  • Преобразование НКА в ДКА и использование ДКА для проверки реализации шаблона
  • Знать что такое компилятор, как он устроен, какая часть отвечает за что
  • Что такое грамматики и как их строить
  • Устранение неоднозначности, устранение левой рекурсии и левая факторизация грамматики
  • Проводить нисходящий синтаксический анализ
  • Проводить восходящий синтаксический анализ
  • Использовать LR анализ, построение LR(0)-автомата и его применение
  • Что такое трёхадресный код, трансляция выражений
Содержание учебной дисциплины

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

  • Введение в компиляцию и структура компилятора
    Что такое компилятор и из каких основных частей он состоит
  • Лексический анализ
    Роль лексического анализатора, что такое токены, шаблоны, лексемы. Как распознавать токены: диаграммы переходов, конечные автоматы (НКА, ДКА). Регулярные выражения -> ДКА -> НКА
  • Синтаксический анализ
    Роль синтаксического анализатора, образца грамматик. Контекстно-свободные грамматики. Разработка грамматики: устранение необнозначности, устранение левой рекурсии, левая факторизация. Нисходящий СА: методом рекурсивного спуска, FIRST\FOLLOW. Восходящий СА: свертки, основы. Введение в LR анализ: пункты, LR(0)-автомат, алгоритм LR-анализа
  • Генерация промежуточного кода
    Трехадресный код, типы и объявления, трансляция выражений
Элементы контроля

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

  • неблокирующий Контрольная работа 1
    Преобразование РВ в НКА и в ДКА
  • неблокирующий Контрольная работа 2
    Нисходящий СА
  • неблокирующий Практическая работа 1 и 2
    Алгоритм преобразования РВ -> НКА -> ДКА
  • неблокирующий Практическая работа 3
    Нисходящий СА
  • неблокирующий Практическая работа 4
    LR(0)-анализ
  • неблокирующий Устный ответ на вопросы из билетов
Промежуточная аттестация

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

  • Промежуточная аттестация (2 модуль)
    0.2 * Контрольная работа 1 + 0.2 * Контрольная работа 2 + 0.3 * Практическая работа 1 и 2 + 0.15 * Практическая работа 3 + 0.15 * Практическая работа 4
Список литературы

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

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

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

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

  • - Вирт Н. — Построение компиляторов - Издательство "ДМК Пресс" - 2010 - ISBN: 978-5-94074-585-3 - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/1262