Книга: Системное программное обеспечение. Лабораторный практикум

Задание для примера выполнения работы

Задание для примера выполнения работы

В качестве примера возьмем следующие условия для входного языка:

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 должны восприниматься как одна и та же переменная).

Оглавление книги


Генерация: 0.971. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз