Литература
1. Ахо А., Сети Р., Ульман Дж. Компиляторы: принципы, технологии и инструменты: Пер. с англ. - М.: Издательский дом "Вильямс", 2003. - 768 с.
2. Молчанов А.Ю. Системное программное обеспечение: Учебник для вузов. - СПб.: Питер, 2003. - 396 с.
3. Молчанов А.Ю. Системное программное обеспечение. Лабораторный практикум. - СПб.: Питер, 2005. - 284 с.
4. Хохлов Д.Г. Системное программное обеспечение: Учебное пособие.- Казань: КГТУ (КАИ), Кафедра АСОИУ, 2006. - 136 с.
5. Хохлов Д.Г., Захарова З.Х. Введение в системное программирование: Учебное пособие.- Казань: Изд-во Казан. техн. ун-та, 2005. - 163 с.
6. Хохлов Д.Г. Программирование на языке высокого уровня. Часть 2: Методы программирования: Учебник. - Казань: Мастер Лайн, 2006. - 266 с.
7. Хохлов Д.Г. Основы технологии модульного программирования: Учебное пособие.- Казань: КГТУ (КАИ), Кафедра АСОИУ, 2005. - 63 с.
8. Хохлов Д.Г. Структуры данных и комбинаторные алгоритмы: Учебное пособие.- Казань: Изд-во Казан. техн. ун-та, 2006. - 100 с.
9. Хохлов Д.Г., Захарова З.Х. Практикум по структурам данных и комбинаторным алгоритмам: Учебное пособие. - Казань: Изд-во Казан. техн. ун-та, 2005. - 48 с.
10. Хохлов Д.Г., Захарова З.Х. Операционные системы: Учебное пособие. - Казань: КГТУ (КАИ), Кафедра АСОИУ, 2005. - 154 с.
11. Зубков С.В. Assembler для DOS, Windows и UNIX. М.: ДМК Пресс, 2000. - 608 с.
12. Хохлов Д.Г. Лабораторный практикум по методам трансляции: Методические указания.- Казань: КГТУ (КАИ), Кафедра АСОИУ, 1995. - 34 с.
13. Шень А. Программирование: теоремы и задачи. – М.: МЦНМО, 2004. – 296 с.
Задание на курсовую работу
Разработать, отладить и документировать транслятор для заданного входного языка в соответствии с вариантом задания.
Дополнительный тип данных (с минимальным набором операций):
с – char;
u – unsigned;
i32 – int 4-байтовый вместо 2-байтового;
L – long int (4 байта);
f – float ;
b – локальные переменные блока - составного оператора;
p - указатель;
a – массив (многомерный);
ag – глобальный одномерный массив;
al – локальный одномерный массив;
str – строка (не более 255 символов), как в языке Pascal (длина в нулевом элементе);
set – множество до 256 элементов (например, как в языке Pascal).
Дополнительный тип констант:
2 – двоичная;
8 – восьмеричная;
16 – шестнадцатеричная;
с – символьная;
f – вещественная с фиксированной точкой, например 3.14;
e – вещественная экспоненциальная (с плавающей точкой), например 31.4Е-1;
str – строковая, например ‘КАИ’, операция + - сцепление строк;
set – множество, как в языке Pascal, например [‘A’..’Z’, ‘0’..’9’] , операция + - объединение, - - вычитание, in - принадлежность.
Дополнительные операции:
++ - инкремент (увеличение переменной на 1);
-- - декремент (уменьшение переменной на 1);
& - битовая И;
| - битовая ИЛИ;
~ - битовое отрицание;
^ - битовое исключающее ИЛИ;
&& - логическая И;
|| - логическая ИЛИ;
! - логическое отрицание;
>> << - сдвиг вправо и влево арифметический или логический (по выбору);
& - определение адреса;
? : - условная операция;
+= -= *= /= %= <<= >>= &= ^= |= - присваивание с операцией.
Дополнительные операторы:
1 – цикл с постусловием do оператор while (выражение);
2 – цикл for (выражение; выражение; выражение) оператор
3 - цикл с параметром как в языке Pascal
for переменная := выражение {to | downto} выражение do оператор
4 – условный оператор if (выражение) оператор else [оператор]
5 – переключатель как в языке С
switch (выражение)
{ [case константа: [оператор]…] …
[default: [оператор]…]
}
и оператор выхода из переключателя break;
6 – new и delete.
Тип комментария:
1 – комментарий от двойной косой черты до конца строки: // … ;
2 - комментарий в “скобках” из косой черты и звездочки: /* … */;
3 - комментарий в круглых скобках со звездочкой: (* … *);
4 - комментарий в фигурных скобках: { … }. Операторные скобки -
begin … end.