|
|||||||
|
|
Авторы: Н.Н. Вояковская, А.Е. Москаль, Д.Ю. Булычев, А.А. Терехов
Microsoft Dreamspark
Бесплатные лицензионные версии программ для студентов и преподавателей.
Специальное предложение для студентов Интуит.ру. подробнее »
Информация о курсе
В данном курсе рассматриваются теоретические основы и практические методы создания компиляторов языков программирования. Изложение ведется на основе языка программирования C# и платформы .NET.
Предварительные курсы
Записаться на обучение
1.
В введении рассматриваются цели и задачи данного курса, его структура и рамки,
а также говорится об необходимых предварительных знаниях, которые потребуются для
полноценного понимания курса. В первой лекции обсуждаются следующие вопросы: общая
идея архитектуры .NET; достоинства и недостатки .NET; схема трансляции программ в .NET;
основные черты промежуточного представления, используемого в .NET (MSIL); безопасность в .NET;
объектная модель .NET; понятие сборки, манифест сборки; модель безопасности в .NET;
единая система типов данных.
2.
Основные идеи создания C#. Базовые конструкции языка. Препроцессор C#.
Системные и пользовательские атрибуты. Опасный код в C#. Описание языка C-бемоль,
являющегося подмножеством C#.
3.
Основные понятия. Компиляторы и интерпретаторы. Входной язык, целевой
язык, язык реализации. T-диаграммы. Прямой компилятор. Раскрутка. Кросс-трансляторы.
Виртуальные машины. Компиляция "на лету".
4.
Различные способы задания языков в компиляции: грамматики; конечные и
магазинные автоматы. Соотношения между различными способами задания языков.
Приложения в компиляции.
5.
Основные задачи лексического анализа. Регулярные выражения.
Использование конечных автоматов для лексического анализа. Утилита Lex.
Использование механизма регулярных выражений .NET
6.
Синтаксический анализ. Контекстно-свободные грамматики.
Нисходящие анализаторы. Метод рекурсивного спуска.
7.
Восходящие анализаторы. LR (k)-анализаторы. Построение
LR (0)-анализатора. LR (1)-анализатор. LALR-анализаторы. Неоднозначные грамматики.
Различные типы конфликтов. Разрешение конфликтов.
9.
Фаза контроля типов. Идентификация. Работа с таблицами. Идентификация.
Работа с типами. Причины использования промежуточных языков в компиляторах.
Различные формы промежуточных языков (ПЯ) в компиляторах:атрибутные деревья разбора;
прямая и обратная польские записи; триады/тетрады; RTL.
10.
Управление памятью с точки зрения разработчика компилятора. Проблемы
управления памятью. Статическое и динамическое размещение памяти. Стековый механизм
управления памятью. Управление кучей. Подсчет ссылок и разметка памяти. Управление
памятью в .NET.
11.
Задачи оптимизации. Виды оптимизирующих преобразований. Представления
программы, используемые в оптимизирующих преобразованиях. Примеры оптимизирующих
преобразований.
12.
Задачи анализа потока управления. Граф потока управления. Доминирование.
Глубинное остовное дерево. Основные виды фрагментов графа потока управления и их
свойства.
13.
Определение анализа потоков данных. Достижимые определения и живые
переменные. Формализация задач анализа потоков данных. Итеративный алгоритм для
решения задач анализа потоков данных.
14.
Основные свойства MSIL. Пример генерации MSIL по программе на Cи-бемоль.
Механизм рефлексии в .NET (на примере). Процесс генерации MSIL.
15.
Постановка задачи выбора оптимальных инструкций. Деревянные языки.
Деревянные грамматики. BURS и ее приложения.
Дополнительные материалы
Конструкции и грамматика языка С
|
![]() |
|
|||||||||||||||||||||||||||||||||||||||||
|
|||
|
|||
|
Курсы |
Учебные программы |
Учебники |
Вопросы и Ответы |
Форум |
Новости |
Помощь
Телефон: +7 (499) 253-9312, 253-9313, факс: +7 (499) 253-9310, email: info@intuit.ru © INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование, 2003-2011 |
|
Проект Издательства "Открытые Системы". Партнеры: РМ Телеком, KRAFTWAY COMPUTERS. |
|