B.3 Распознавание — parse.awk

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

parse.awk извлекает базу данных из файлов описаний классов. Высокоуровневая функции load(desc) обрабатывает файл описания класса desc.d. Каждый такой файл читается только один раз. Описание класса анализирует внутренняя функция classDeclaration(); о каждой строке в представлении класса заботится structDeclarator(); каждую декларацию метода обрабатывает methodDeclaration(); а declarator() вызывается, чтобы обработать каждый оператор декларации.

Все эти функции довольно прямолинейны. Они используют sub() и gsub() для замен во входных строках для распознавания и split(), чтобы разбить их. Этого недостаточно для анализа универсального оператора объявления C; поэтому мы ограничиваем себя простыми операторами объявления, где тип предшествует имени.

Модуль отладки parse.dbg понимает аргументы classes и descriptions, чтобы вывести информацию обо всех классах и файлах описания, или all для всех сразу. Для такого аргумента, как desc.d, он загрузит файл описания класса. Другие аргументы должны быть именами классов, описаний или методов, чтобы вывести отдельные записи из базе данных.

 

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