Книга: Системное программное обеспечение. Лабораторный практикум
Задание для примера выполнения работы
Задание для примера выполнения работы
В качестве примера возьмем следующие условия для входного языка:
1. Тип допустимых констант: десятичные.
2. Дополнительная операция: унарный арифметический минус (-).
3. Оператор цикла: while (<выражение>) do <оператор>.
4. Оптимизация: оба метода (1 и 2).
5. Тип данных: Long integer (longint, 32 бит).
6. Тип комментария: фигурные скобки ({… }).
Кроме того, модифицируем синтаксис условного оператора (два типа):
• if (<выражение>) <оператор> else <оператор>;
• if (<выражение>) <оператор>;
и дополним перечень операций сравнения операцией «не равно» (<>).
Получим входной язык, сочетающий в себе элементы синтаксиса языков C++ (элементы оператора цикла и условный оператор) и Object Pascal (оператор цикла, составной оператор begin… end, оператор присваивания и комментарии).
В качестве результирующего (выходного) языка компилятора будем использовать язык ассемблера процессоров типа Intel 80386 и более поздних модификаций в модификации для системы программирования Delphi 5 [9, 23, 28, 41, 44]. Чтобы исключить неоднозначности при работе с этой системой программирования, изменим семантические ограничения входного языка:
• сделаем допустимым использование имени переменной CompileTest в любых операторах входного языка (а не только в операторах присваивания);
• запретим использование переменных с именем Result, так как такое имя переменной является предопределенным в целевой вычислительной системе.
Кроме того, в именах переменных во входном языке не должны различаться строчные и прописные буквы (например, переменные с именами i и I должны восприниматься как одна и та же переменная).
- Задание для примера выполнения работы
- Грамматика входного языка
- Описание выбранного способа организации таблицы идентификаторов
- Описание лексического анализатора
- Описание синтаксического анализатора
- Внутреннее представление программы и генерация кода
- Описание используемого метода оптимизации
- Текст программы компилятора
- Выводы по проделанной работе