Языки программирования Лекция 0

advertisement
Языки программирования
Теория разработки трансляторов и
практическая применимость
технологий генерации компиляторов
Лекционный курс
Тема 1.Введение в теорию трансляции. Задачи и подходы трансляции.
Тема 2.Грамматики Хомского и классификация языков программирования.
Тема 3. Классификация языков программирования
Тема 4. Компиляторы-компиляторов. Схема работы и применимость.
Тема 5. Лексический анализ.
Тема 6. Функции First и Follow и их роль в синтаксическом анализе контекстносвободных языков.
Тема 7. Синтаксический анализ контекстно-свободных языков. Классификация и
схема работы.
Тема 8. Нисходящий синтаксический анализ. Рекурсивный спуск с возвратами и
без возвратов.
Тема 9. Восходящий синтаксический анализ. Грамматики простого
предшествования, LR(k)-грамматики, SLR(k)-грамматики, LALR(k)-грамматики.
Тема 10-11. Универсальные методы синтаксического анализа. Алгоритм Эрли и
алгоритм Кока-Янгера-Касами
Тема 12. Семантический анализ.
Тема 13. Генерация промежуточного представления.
Тема 14. Оптимизация
Тема 15. Основы создания интерпретаторов и генераторов байт-кода.
Тема 16. Основы создания компиляторов и ассемблеров.
Практическое задание
Лабораторная работа №1. Разработка грамматики нового языка программирования в
форме Бэкуса — Наура или в виде грамматики выбранного компилятора
компилятора.
Лабораторная работа №2. Создание лексического анализатора выбранного языка в
соответствии с утвержденной грамматикой и с использованием выбранного
компилятора компилятора.
Лабораторная работа №3. Создание синтаксического анализатора выбранного языка в
соответствии с утвержденной грамматикой и с использованием выбранного
компилятора компилятора.
Лабораторная работа №4. Создание семантического анализатора и модуля контроля
совместимости типов для выбранного языка в соответствии с утвержденной
грамматикой и с использованием выбранного компилятора компилятора.
Лабораторная работа №5. Разработка генератора промежуточного языка исполнения
для разработанного ранее синтаксического анализатора.
Лабораторная работа №6. Разработка интерпретатора выбранного промежуточного
языка или разработка генератора байт-кода внешнего интерпретатора.
Представление полученного транслятора как единого программного комплекса,
включающего результаты лабораторных работ 2-5.
Контрольные сроки сдачи
1 семестр 1 четверть
3 неделя Контр. сессия
17.10.2012
21.10.2012
Лабораторная 1 - Грамматика
5 неделя Контр. сессия
01.10.2012
06.10.2012
Лабораторная 2 – Лексический анализатор
1 семестр 2 четверть
9 неделя Контр. сессия
29.10.2012
03.11.2012
Лабораторная 3 – Синтаксический анализатор
1 семестр 3 четверть
15 неделя Контр. сессия
03.12.2012
08.12.2012
Лабораторная 4 – Генерация промежуточного кода
1 семестр 4 четверть
20 неделя Экз. сессия
14.01.2013
Лабораторная 5 – Итоговая
21 неделя Экз. сессия
21.01.2013
Экзамен
19.01.2013
26.01.2013
Ограничения по заданию
1. Реализуемый язык:
1.
2.
3.
4.
5.
6.
7.
8.
Паскалеподобный
Сиподобный
Сиподобный/С++/C# с поддержкой объектов
Java-подобный
Скриптовый Python/Perl/Ruby
PHP-подобный
Basic/Visual basic
Прочие
- 7
- 6
-2
-5
-7
-3
-3
-5
Ограничения по заданию
2. Вид транслятора
1.
2.
3.
4.
5.
6.
7.
Интерпретатор
Трансляция в другой язык высокого уровня
Трансляция в ассемблер
JIT
IL (MSIL)
JVM
LLVM?
-
10
3
7
3
10
3
2
Ограничения по заданию
3. Компилятор-компилаторов
1.
2.
3.
4.
5.
6.
7.
Coco/R
Lex/flex + Yacc/Bizon
SableCC
ELI
ANTLR
VisualLangLab
Прочее
-
10
10
5
2
2
2
7
Download