Академия Microsoft: Разработка компиляторов: Информация
Форма обучения:
дистанционная
Стоимость самостоятельного обучения:
бесплатно
Доступ:
свободный
Документ об окончании:
Вам нравится? Нравится 26 студентам
Уровень:
Специалист
Длительность:
21:43:00
Студентов:
2241
Выпускников:
912
Качество курса:
4.28 | 4.17
В данном курсе рассматриваются теоретические основы и практические методы создания компиляторов языков программирования. Изложение ведется на основе языка программирования C# и платформы .NET.
Темы: Программирование
Специальности: Системный архитектор
Теги: .net, lexing, LR, MSIL, YACC, автоматы, алгоритмы, анализ, анализ потока данных, безопасность, компиляторы, контекстно-свободная грамматика, нетерминал, остовное дерево, потоки, приложения, программирование, процедуры, регулярные выражения, терминальный символ, указатели, управление памятью, целевая платформа
План занятий
Занятие
Заголовок <<
Дата изучения
Лекция 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-анализаторы. Неоднозначные грамматики.
Различные типы конфликтов. Разрешение конфликтов.
Оглавление
-
Лекция 9
47 минут
Семантический анализ. Внутреннее представление
Фаза контроля типов. Идентификация. Работа с таблицами. Идентификация.
Работа с типами. Причины использования промежуточных языков в компиляторах.
Различные формы промежуточных языков (ПЯ) в компиляторах:атрибутные деревья разбора;
прямая и обратная польские записи; триады/тетрады; RTL.
Оглавление
-
Лекция 10
1 час 4 минуты
Управление памятью и сборка мусора
Управление памятью с точки зрения разработчика компилятора. Проблемы
управления памятью. Статическое и динамическое размещение памяти. Стековый механизм
управления памятью. Управление кучей. Подсчет ссылок и разметка памяти. Управление
памятью в .NET.
Оглавление
-
Лекция 11
41 минута
Оптимизация
Задачи оптимизации. Виды оптимизирующих преобразований. Представления
программы, используемые в оптимизирующих преобразованиях. Примеры оптимизирующих
преобразований.
Оглавление
-
Лекция 12
42 минуты
Анализ потока управления
Задачи анализа потока управления. Граф потока управления. Доминирование.
Глубинное остовное дерево. Основные виды фрагментов графа потока управления и их
свойства.
Оглавление
-
Лекция 13
36 минут
Анализ потоков данных
Определение анализа потоков данных. Достижимые определения и живые
переменные. Формализация задач анализа потоков данных. Итеративный алгоритм для
решения задач анализа потоков данных.
Оглавление
-
Лекция 14
52 минуты
Генерация MSIL
Основные свойства MSIL. Пример генерации MSIL по программе на Cи-бемоль.
Механизм рефлексии в .NET (на примере). Процесс генерации MSIL.
Оглавление
-
Лекция 15
57 минут
Выбор инструкций при генерации кода
Постановка задачи выбора оптимальных инструкций. Деревянные языки.
Деревянные грамматики. BURS и ее приложения.
Оглавление
-
Дополнительный материал
6 минут
Приложение. Описание языка C
Конструкции и грамматика языка С-бемоль
Оглавление
-