Иллюстрированный самоучитель по практике программирования

Программы, которые пишут программы

Имея такой фрагмент на входе, несложная программа сможет произвести следующий набор деклараций для сообщений об ошибках:

Иллюстрированный самоучитель по практике программирования › Нотация › Программы, которые пишут программы

У такого подхода есть несколько достоинств.

Во-первых, соотношение между значениями enum и строками, которые они представляют, получается самодокументированным, и его нетрудно сделать независимым от родного языка пользователя. Во-вторых, информация хранится только в одном месте, в одном "истинном месте", из которого генерируется весь остальной код, так что и все обновление информации выполняется лишь в одном месте. В случае, когда таких мест несколько, после ряда обновлений они неизбежно начнут друг другу противоречить. И наконец, нетрудно сделать так, чтобы файлы программ на С создавались заново и перекомпилировались при каждом изменении заголовочного файла. Когда потребуется изменить сообщение об ошибке, все, что надо будет сделать, – это изменить заголовочный файл и компилировать таким способом операционную систему, и тогда сообщения автоматически обновятся.

Программа-генератор может быть написана на любом языке. Особенно просто это сделать на языке, специально предназначенном для обработки строк, таком как Perl:

Иллюстрированный самоучитель по практике программирования › Нотация › Программы, которые пишут программы

Иллюстрированный самоучитель по практике программирования › Нотация › Программы, которые пишут программы

Опять в дело пошли регулярные выражения. Выбираются строки, у которых первое поле выглядит как идентификатор, после которого стоит запятая. Первая замена удаляет все символы до первого непустого символа строки комментария, а вторая – символы конца комментария и все предшествующие им пробелы.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.