mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

      M4(1)                                                     M4(1)

      НАЗВАНИЕ
              m4 - макропроцессор

      СИНТАКСИС
       m4  [-e] [-s] [-Bцелое] [-Hцелое] [-Sцелое] [-Tцелое] [-Dимя[=значение]
	   [-Uимя] [файл ...]

      ОПИСАНИЕ
              Макропроцессор  m4  предназначен  для макрогенерации на
              предварительном проходе в языках RATFOR,  C  и  других.
              Все  файлы-аргументы  обрабатываются  по  очереди. Если
              файлы не указаны, или в качестве имени файла  задан  -,
              то  читается стандартный ввод. Обработанный текст запи-
              сывается на стандартный вывод.

              Допустимы следующие опции:

              -e   Работать интерактивно. Прерывания  игнорируются  и
                   вывод не буферизуется.

              -s   Разрешить вывод операторов #line для  C-препроцес-
                   сора.

              -Bцелое
                   Сменить размеры буфера повторного  сканирования  и
                   буфера,  в  котором  накапливаются  аргументы.  По
                   умолчанию размер равен 4096.

              -Hцелое
                   Сменить размер хэш-таблицы имен с 199  по  умолча-
                   нию. Размер должен быть простым числом.

              -Sцелое
                   Сменить размер стека вызовов со 100  элементов  по
                   умолчанию. Макрос занимает 3 ячейки в стеке  вызо-
                   вов; аргумент занимает одну ячейку.

              -Tцелое
                   Изменить размер буфера лексем с 512 байт по  умол-
                   чанию.

              Чтобы эти опции действовали, они  должны  располагаться
              перед всеми именами файлов и перед опциями -D и -U:

              -Dимя[=значение]
                   Эта опция определяет имя равным значению или  пус-
                   той цепочке, если значение отсутствует.

              -Uимя
                   Делает имя неопределенным.

              Макровызовы имеют следующий вид:

                   имя(арг1,арг2, ...аргn)

              Левая скобка должна следовать непосредственно за именем
              макроса. Если за именем определенного макроса не следу-
              ет (, то полагается, что макрос вызван без  аргументов.
              Имя  макроса  может  состоять  из букв, цифр и символов
              подчеркивания, причем первым  символом  не  может  быть
              цифра.

              В процессе сбора аргументов m4 игнорирует не  заключен-
              ные в кавычки начальные пробелы,  табуляции  и  символы
              перевода строки. Для того, чтобы запретить  интерпрета-
              цию цепочки символов, их заключают между правой и левой
              одинарными кавычками:

                   `эта цепочка не интерпретируется'

              Значение цепочки символов, заключенной в кавычки, равно
              самой этой цепочке без внешних кавычек.

              Когда имя макроса распознано, его аргументы  собираются
              путем поиска парной правой скобки. Если аргументов ока-
              залось меньше, чем используется в определении  макроса,
              то последним аргументам будут даны пустые  значения.  В
              процессе сбора аргументов продолжается макрообработка и
              все не взятые в кавычки запятые и правые скобки,  кото-
              рые образовались в результате  вложенных  макровызовов,
              действуют так же, как будто они встретились в  исходном
              тексте. После сбора аргументов значение макроса  скани-
              руется повторно, так как если бы оно  было  в  исходном
              тексте.

              M4 предоставляет следующие встроенные макросы,  которые
              могут быть переопределены, но в этом случае их первона-
              чальный смысл теряется. Значения  встроенных  макросов,
              если не оговорено противное, равны пустой цепочке.

              define
                   Второй аргумент  становится  значением  макроса  с
                   именем, равным первому аргументу. Если в  значение
                   макроса входят пары символов $n, где n - цифра, то
                   при вызове этого макроса они  заменяются  на  n-ый
                   аргумент. Нулевым аргументом является имя макроса;
                   пропущенные аргументы заменяются на пустые  цепоч-
                   ки; $# заменяется количеством аргументов; $* заме-
                   няется на список всех аргументов, разделенных  за-
                   пятыми; $@ заменяется тоже на  список  аргументов,
                   но каждый аргумент заключен в кавычки,  являющиеся
                   текущими.

              undefine
                   Удаляет определения макросов, имена которых заданы
                   в качестве аргументов.

              defn Возвращает заключенные в кавычки определения своих
                   аргументов. Это полезно для переименования  макро-
                   сов, особенно встроенных.

              pushdef
                   Действует аналогично define, но сохраняет все пре-
                   дыдущие определения.

              popdef
                   Удаляет текущие  определения  своих  аргументов  и
                   восстанавливает предыдущие, если они есть.

              ifdef Если первый аргумент определен, то значение будет
                    равно  второму  аргументу,  в  противном   случае
                    третьему.  Если третьего аргумента нет, то значе-
                    ние будет пустым. Слово unix заранее определено в
                    версиях m4 для системы UNIX.

              shift Возвращает все свои аргументы кроме первого, зак-
                    лючив их в кавычки и отделив друг от друга  запя-
                    тыми.

              changequote
                   Первый и второй аргументы становятся новыми симво-
                   лами-кавычками вместо ` и '. Эти  аргументы  могут
                   содержать  до 5 символов. Changequote без аргумен-
                   тов возвращает первоначальные  значения  (то  есть
                   `').

              changecom
                   Изменяет левый и правый маркеры комментария, кото-
                   рые первоначально равны # и символу перевода стро-
                   ки. Если нет аргументов, то механизм  комментариев
                   полностью подавляется. Если задан  один  аргумент,
                   то он становится левым  маркером  комментариев,  а
                   правым маркером становится  перевод  строки.  Если
                   заданы два аргумента, то они  становятся  левым  и
                   правым маркерами. Маркеры комментариев  могут  со-
                   держать до 5 символов.

              divert
                   M4 поддерживает 10 выходных потоков, под  номерами
                   0-9. Окончательный результат получается конкатена-
                   цией всех этих потоков в порядке возрастания номе-
                   ров; первоначально текущим потоком является  нуле-
                   вой. Макрос divert меняет выходной поток на  поток
                   с номером, заданным аргументом (в виде цепочки де-
                   сятичных цифр). Вывод, направленный во все  потоки
                   кроме 0-9, теряется.

              undivert
                   Вызывает немедленный вывод текста из потоков,  но-
                   мера которых указаны как аргументы,  или  из  всех
                   потоков, если аргументы не указаны. Выведенные по-
                   токи очищаются. Текст может быть выведен  в  любой
                   поток.

              divnum
                   Возвращает номер текущего выходного потока.

              dnl  Читает и удаляет символы до следующего символа пе-
                   ревода строки включительно.

              ifelse
                   Имеет 3 или более аргументов. Если первый аргумент
                   совпадает как цепочка символов со вторым,  то  ре-
                   зультатом будет третий аргумент. Если нет, то, ес-
                   ли аргументов более чем 4, то процесс  повторяется
                   с аргументами под номером 4, 5, 6 и 7 (4-ый и 5-ый
                   аргументы сравниваются и т.д.) Если же  аргументов
                   не более 4, то результатом будет 4-ый аргумент или
                   пустая цепочка при его отсутствии.

              incr Возвращает значение своего аргумента,  увеличенное
                   на 1. Аргумент, который должен быть цепочкой цифр,
                   интерпретируется как десятичное число.

              decr Возвращает значение своего аргумента,  уменьшенное
                   на 1.

              eval Вычисляет свой аргумент как арифметическое выраже-
                   ние,  используя  32-битную  арифметику. Допустимые
                   операции включают +, -, *, /, %; побитные операции
                   &, |, ^, и ~; операции отношения; скобки.  Восьме-
                   ричные и шестнадцатеричные числа могут быть заданы
                   как  в  языке C. Второй аргумент указывает систему
                   счисления для результата; по  умолчанию  результат
                   десятичный.  Если задан третий аргумент, то он оп-
                   ределяет минимальное число цифр в результате.

              len  Возвращает количество символов в своем аргументе.

              index Возвращает  позицию в первом аргументе, с которой
                    начинается второй аргумент. Позиции нумеруются  с
                    0. В случае неудачи поиска возвращается -1.

              substr
                   Возвращает подцепочку  первого  аргумента.  Второй
                   аргумент задает номер начального символа подцепоч-
                   ки (считая от 0), третий аргумент указывает длину.
                   Если третий аргумент опущен, то подцепочка продол-
                   жается  до  конца первого аргумента. Если вторым и
                   третьим  аргументами  задана подцепочка, выходящая
                   за пределы данной цепочки, то результатом будет их
                   пересечение.

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

              include
                   Возвращает содержимое файла с именем, заданным ар-
                   гументом.

              sinclude
                   То же самое, что и include, за  исключением  того,
                   что не будет никакой реакции, если  файл  недосту-
                   пен.

              syscmd
                   Выполняет команду системы  UNIX,  заданную  первым
                   аргументом. Никакого значения не возвращается.

              sysval
                   Код завершения последнего вызова syscmd.

              maketemp
                   В подцепочку аргумента, имеющую вид XXXXX,  вписы-
                   вается идентификатор текущего процесса.

              m4exit
                   Вызывает немедленный выход из m4. Первый аргумент,
                   если он есть, будет кодом завершения; подразумева-
                   ется 0.

              m4wrap
                   Помещает свой первый аргумент в конец исходного
                   текста, например:
                      m4wrap(`cleanup()')
                   Эффективен только один вызов m4wrap, из нескольких
                   вызовов действие окажет только последний.

              errprint
                   Выдает свой аргумент в стандартный протокол.

              dumpdef
                   Выдает текущие имена и определения  для  указанных
                   макросов, или для всех макросов, если нет аргумен-
                   тов.

              traceon
                   Если аргументы  не  заданы,  включает  трассировку
                   всех макросов (в том числе  и  встроенных);  иначе
                   включает трассировку только указанных макросов.

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

      СМ. ТАКЖЕ
                cc(1), cpp(1).



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк