Форма обучения:
дистанционная
Стоимость самостоятельного обучения:
бесплатно
Доступ:
свободный
Документ об окончании:
 
Уровень:
Специалист
Длительность:
21:43:00
Студентов:
2213
Выпускников:
889
Качество курса:
4.28 | 4.17
В данном курсе рассматриваются теоретические основы и практические методы создания компиляторов языков программирования. Изложение ведется на основе языка программирования C# и платформы .NET.
Специальности: Системный архитектор
 

План занятий

Занятие
Заголовок <<
Дата изучения
Лекция 1
49 минут
Введение и обзор платформы .NET
В введении рассматриваются цели и задачи данного курса, его структура и рамки, а также говорится об необходимых предварительных знаниях, которые потребуются для полноценного понимания курса. В первой лекции обсуждаются следующие вопросы: общая идея архитектуры .NET; достоинства и недостатки .NET; схема трансляции программ в .NET; основные черты промежуточного представления, используемого в .NET (MSIL); безопасность в .NET; объектная модель .NET; понятие сборки, манифест сборки; модель безопасности в .NET; единая система типов данных.
Оглавление
    -
    Лекция 2
    59 минут
    Обзор языка C#
    Основные идеи создания C#. Базовые конструкции языка. Препроцессор C#. Системные и пользовательские атрибуты. Опасный код в C#. Описание языка C-бемоль, являющегося подмножеством C#.
    Оглавление
      -
      Лекция 3
      49 минут
      Основы компиляторов
      Основные понятия. Компиляторы и интерпретаторы. Входной язык, целевой язык, язык реализации. T-диаграммы. Прямой компилятор. Раскрутка. Кросс-трансляторы. Виртуальные машины. Компиляция "на лету".
      Оглавление
        -
        Лекция 4
        1 час 16 минут
        Теория языков
        Различные способы задания языков в компиляции: грамматики; конечные и магазинные автоматы. Соотношения между различными способами задания языков. Приложения в компиляции.
        Оглавление
          -
          Лекция 5
          45 минут
          Лексический анализ
          Основные задачи лексического анализа. Регулярные выражения. Использование конечных автоматов для лексического анализа. Утилита Lex. Использование механизма регулярных выражений .NET
          Оглавление
            -
            Лекция 6
            43 минуты
            Синтаксические анализаторы. Нисходящие анализаторы
            Синтаксический анализ. Контекстно-свободные грамматики. Нисходящие анализаторы. Метод рекурсивного спуска.
            Оглавление
              -
              Лекция 7
              53 минуты
              Восходящие анализаторы
              Восходящие анализаторы. LR (k)-анализаторы. Построение LR (0)-анализатора. LR (1)-анализатор. LALR-анализаторы. Неоднозначные грамматики. Различные типы конфликтов. Разрешение конфликтов.
              Оглавление
                -
                Лекция 8
                44 минуты
                Грамматики и YACC
                Генератор анализаторов YACC
                Оглавление
                  -
                  Лекция 9
                  47 минут
                  Семантический анализ. Внутреннее представление
                  Фаза контроля типов. Идентификация. Работа с таблицами. Идентификация. Работа с типами. Причины использования промежуточных языков в компиляторах. Различные формы промежуточных языков (ПЯ) в компиляторах:атрибутные деревья разбора; прямая и обратная польские записи; триады/тетрады; RTL.
                  Оглавление
                    -
                    Лекция 10
                    1 час 4 минуты
                    Управление памятью и сборка мусора
                    Управление памятью с точки зрения разработчика компилятора. Проблемы управления памятью. Статическое и динамическое размещение памяти. Стековый механизм управления памятью. Управление кучей. Подсчет ссылок и разметка памяти. Управление памятью в .NET.
                    Оглавление
                      -
                      Лекция 11
                      41 минута
                      Оптимизация
                      Задачи оптимизации. Виды оптимизирующих преобразований. Представления программы, используемые в оптимизирующих преобразованиях. Примеры оптимизирующих преобразований.
                      Оглавление
                        -
                        Лекция 12
                        42 минуты
                        Анализ потока управления
                        Задачи анализа потока управления. Граф потока управления. Доминирование. Глубинное остовное дерево. Основные виды фрагментов графа потока управления и их свойства.
                        Оглавление
                          -
                          Лекция 13
                          36 минут
                          Анализ потоков данных
                          Определение анализа потоков данных. Достижимые определения и живые переменные. Формализация задач анализа потоков данных. Итеративный алгоритм для решения задач анализа потоков данных.
                          Оглавление
                            -
                            Лекция 14
                            52 минуты
                            Генерация MSIL
                            Основные свойства MSIL. Пример генерации MSIL по программе на Cи-бемоль. Механизм рефлексии в .NET (на примере). Процесс генерации MSIL.
                            Оглавление
                              -
                              Лекция 15
                              57 минут
                              Выбор инструкций при генерации кода
                              Постановка задачи выбора оптимальных инструкций. Деревянные языки. Деревянные грамматики. BURS и ее приложения.
                              Оглавление
                                -
                                Приложение. Описание языка C
                                Конструкции и грамматика языка С-бемоль
                                Оглавление
                                  -
                                  1 час 40 минут
                                  -