Книга: Системное программное обеспечение. Лабораторный практикум
Реализация генератора триад
Реализация генератора триад
Все возможные типы триад перечислены в модуле TrdType (листинг П3.8, приложение 3).
Структуры данных, использованные в лабораторной работе № 4, не зависят от входного языка. Поэтому имеет смысл использовать их для генерации триад в курсовой работе. Эти структуры данных описаны в модуле Triads (листинг П3.10, приложение 3).
Генератор триад также реализован на базе модуля, который был использован для генерации триад в лабораторной работе № 4. В данный модуль были внесены изменения в соответствии с изменившимся синтаксисом входного языка, добавлены новые линейные операции (арифметические операции и операции сравнения), а также добавлена реализация схемы СУ-перевода для оператора цикла (которая была представлена на рис. 5.2).
Для проверки заданных семантических ограничений в генератор триад добавлены следующие проверки:
• при определении имени операнда любой линейной операции проверяется, что имя не совпадает с недопустимым именем «Result»;
• при определении имени операнда операции присваивания проверяется, что имя не совпадает с недопустимыми именами «InpVar» и «Result».
Если хотя бы одна из этих проверок не выполняется, выдается сообщение о наличии семантической ошибки в программе (присваивание значения константе в данном входном языке обнаруживается как синтаксическая ошибка).
Текст полученного программного модуля TrdMake приведен в листинге П3.12, приложение 3.
- Реализация генератора списка триад
- 9.4.1. Реализация графа в виде матрицы смежности
- Реализация языка SQL
- 9.2.1. Более строгая реализация стека
- 9.2 Реализация массива ftAID на платформе Windows NT
- Реализация семафоров в Linux
- 16.8. Реализация отношений в Core Data
- 10.16. Реализация с использованием семафоров System V
- Реализация очередей отложенных действий
- Реализация класса бинарных деревьев
- Реализация меню
- 20.7.4 Реализация MIB от разработчиков оборудования