B.1 Архитектура

Предыдущая  Содержание  Следующая V*D*V

ooc реализован как скрипт оболочки для загрузки и выполнения программы awk. Этот скрипт оболочки упрощает передачу командных аргументов ooc программе awk и позволяет хранить различные модули в централизованно.

Программа awk собирает базу данных информации о классах и методах из файлов описаний классов, и создаёт код C из базы данных для файлов интерфейсов и представлений, а также для заголовков методов, селекторов, импорта параметра и инициализации в файлах реализации. Программа awk основывается на двух концепциях: модуляризация и генерация отчёта.

Модуль содержит много функций и блок BEGIN, определяющий глобальные данные, с которыми работают функции. awk не поддерживает сокрытие информации, но модули хранятся в отдельных файлах, чтобы упростить обслуживание. Командный скрипт ooc может использовать AWKPATH, чтобы централизованно определять местоположение файлов.

Вся работа выполняется под управлением блока BEGIN, который awk выполняет в порядке появления. Следовательно, main.awk должен быть загружен последним, потому что он обрабатывает командную строку ooc.

Блоки шаблонов не используются. Они в любом случае не могут использоваться для всех файлов, потому что ooc учитывает для каждого описания класса все файлы описаний классов до него. Алгоритм для чтения строк, удаления комментариев и склейки нескольких строки реализован в единственной функции get() в io.awk. Если бы использовались блоки шаблонов, тот же алгоритм должен был бы быть растиражирован в блоках шаблонов.

База данных может быть проверена при загрузке определённых модулей отладки в виде частей программы awk. Эти модули отладки используют для управления блоки шаблонов, то есть отладка запускается после завершения обработки командной строки ooc. Отладочные операторы вводятся из потока стандартного ввода и выполняются блоками шаблонов.

Обычный вывод создаётся только путём интерпретации отчётов. Цель проекта состоит в том, чтобы программа awk содержала как можно меньше информации о генерируемом коде. Генерация кода должна управлять только посредством изменения файлов отчёта. Так как командный скрипт ooc разрешает замену файлов отчёта, прикладной программист может изменить весь вывод, по крайней мере теоретически, без необходимости изменения программы awk.

 

Предыдущая  Содержание  Следующая