Макропроцессор m4

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Макропроцессор m4, разработанный в 1977 году программистами Брайаном Керниганом и Денисом Ритчи, предназначен для макрогенерации на предварительном проходе в различных языках. Макрогенерация означает копирование входного символьного потока в выходной с подстановкой макросов по мере их появления. Макросы могут быть встроенными или определенными пользователями, и принимать произвольное число аргументов. Имеется множество встроенных функций для включения файлов, запуска внешних команд, выполнения целочисленной арифметики, манипуляции строками. Название «m4» раскрывается как «macro», то есть «m» + ещё 4 буквы.

Препроцессор m4 применяется во многих различных областях:

Программирование
Стандартные препроцессоры большинства языков программирования (если таковые в них вообще есть) обычно значительно слабее чем m4, позволяя производить только простейшие подстановки. m4 даёт возможность писать компактный код, пригодный для повторного использования, там, где это не позволяют средства языка. Например, с его помощью возможна генерация SQL-запросов в момент компиляции (вместо динамически генерируемых при исполнении) и даже элементы аспектного программирования — автоматического порождения блоков кода, обеспечивающих единую функциональность в различных компонентах программной системы (автоматическое порождение триггеров, обработка ошибок, отладочные проверки и т. п.).
Документирование
В использовании, m4 гораздо более понятен и удобен, чем, например, препроцессор от TeX. Его можно использовать для порождения компактной, гибкой документации совместно с практически любой технологией документирования, основанной на обработке «плоских» текстов: TeX, LaTeX, Lout (англ.)русск., SGML.
Администрирование
m4 облегчает написание множества конфигурационных файлов, делая возможность удобно и «прозрачно» работать с «допотопными» форматами, или для гибкого внесения изменений в множество настроек различных сервисов, находящихся в разных файлах. Для этой цели он, в частности, используется в программе autoconf.

Ссылки[править | править исходный текст]