Автогенерация кода или улетные шаблоны в Си

Давным-давно в далекой-далекой галактике попались мне исходники не помню чего, у которых в шапке стояла пометка:
// Generated Automaticaly by xxx, Do not edit

И так мне эта идея понравилась, что начал копать на тему автогенераторов кода.
Ведь как было бы хорошо, если бы вместо убогого препроцессора были возможности нормального языка, исполняемого на этапе компиляции.

Но что-то все попавшиеся под руку средства были какие-то слишком заумные, так что отпустило довольно быстро.
И вот недавно, в процессе какого-то обсуждения, один хороший товарищ dxp подкинул наводку на очень интересный инструмент.

Cog — это инструмент для генерации исходных текстов программ. Он позволяет вам использовать небольшие фрагменты программ на языке Python в качестве генераторов в вашем исходном коде. Такие генераторы могут создавать любой код, который вам нужен.

Идея состоит в том, что прямо в тексте программы вставляется небольшой python-овский скрипт, заключенный в специальные теги. Затем файл обрабатывается другим (внешним) скриптом, после чего в результате работы внутреннего скрипта в исходном (или новом) файле появляется сгенерированный код. При этом можно использовать всю мощь питона, включая дополнительные библиотеки и модули.

В целом мне понравилось, но времени (да и особой надобности) не было, чтобы попробовать.
До вчерашнего дня.


Читать дальше