Annotation of researchv10dc/man/adm/man1/m4.1, revision 1.1

1.1     ! root        1: .TH M4 1
        !             2: .CT 1 prog_c
        !             3: .SH NAME
        !             4: m4 \(mi macro processor
        !             5: .SH SYNOPSIS
        !             6: .B m4
        !             7: [
        !             8: .I option ...
        !             9: ]
        !            10: [
        !            11: .I file ...
        !            12: ]
        !            13: .SH DESCRIPTION
        !            14: .I M4\^
        !            15: is a macro processor
        !            16: intended as a front end for C and other languages.
        !            17: Each of the argument files is processed in order;
        !            18: if there are no files, or if a file name is
        !            19: .BR - ,
        !            20: the standard input is read.
        !            21: The processed text is written on the standard output.
        !            22: .PP
        !            23: The options and their effects are as follows:
        !            24: .TP
        !            25: .B -e
        !            26: Operate interactively.
        !            27: Interrupts are ignored and the output is unbuffered.
        !            28: Using this mode requires a special state of mind.
        !            29: .TP
        !            30: .B -s
        !            31: Enable line sync output for the C preprocessor,
        !            32: .RB ( #line " .\|.\|.\|)"
        !            33: .TP
        !            34: .BI -B int\^
        !            35: Change the size of the push-back and argument collection
        !            36: buffers from the default of 4,096.
        !            37: .TP
        !            38: .BI -H int\^
        !            39: Change the size of the symbol table hash array from the
        !            40: default of 199.
        !            41: The size should be prime.
        !            42: .TP
        !            43: .BI -S int\^
        !            44: Change the size of the call stack from the default of 100 slots.
        !            45: Macros take three slots, and non-macro arguments take one.
        !            46: .TP
        !            47: .BI -T int\^
        !            48: Change the size of the token buffer from the default of 512 bytes.
        !            49: .PP
        !            50: The preceding options must appear before any
        !            51: file names or
        !            52: .B -D
        !            53: or
        !            54: .B -U
        !            55: options.
        !            56: .TP
        !            57: \f5-D\fP\f2name\^\fP[\f5=\fP\f2val\^\fP]
        !            58: Defines
        !            59: .I name\^
        !            60: to
        !            61: .I val\^
        !            62: or to null if
        !            63: .I val
        !            64: is missing.
        !            65: .TP
        !            66: .BI -U name\^
        !            67: undefines
        !            68: .IR name .
        !            69: .PP
        !            70: Macro calls
        !            71: have the form:
        !            72: .IP
        !            73: .L name(arg1,arg2, .\|.\|., argn)
        !            74: .PP
        !            75: The
        !            76: .B (
        !            77: must immediately follow the name of the macro.
        !            78: If a defined macro name is not followed by a
        !            79: .BR ( ,
        !            80: it is deemed to have no arguments.
        !            81: Leading unquoted blanks, tabs, and new-lines are ignored while collecting arguments.
        !            82: Potential macro names consist of alphabetic letters,
        !            83: digits, and underscore
        !            84: .BR _ ,
        !            85: where the first character is not a digit.
        !            86: .PP
        !            87: Left and right single quotes are used to quote strings.
        !            88: The value of a quoted string is the string stripped of the quotes.
        !            89: .PP
        !            90: When a macro name is recognized,
        !            91: its arguments are collected by searching for a matching right
        !            92: parenthesis.
        !            93: Macro evaluation proceeds normally during the collection of the arguments,
        !            94: and any commas or right parentheses
        !            95: which happen to turn up within the value of a nested
        !            96: call are as effective as those in the original input text.
        !            97: After argument collection,
        !            98: the value of the macro is pushed back onto the input stream
        !            99: and rescanned.
        !           100: .PP
        !           101: The value of a macro is obtained by replacing
        !           102: each occurrence of
        !           103: .BI $ n\^
        !           104: in the replacement text,
        !           105: where
        !           106: .I n\^
        !           107: is a digit,
        !           108: with the
        !           109: .IR n -th
        !           110: argument.
        !           111: Argument 0 is the name of the macro;
        !           112: missing arguments are replaced by the null string;
        !           113: .B $#
        !           114: is replaced by the number of arguments;
        !           115: .B $*
        !           116: is replaced by a list of all the arguments separated by commas;
        !           117: .B $@
        !           118: is like
        !           119: .BR $* ,
        !           120: but each argument is quoted (with the current quotes).
        !           121: .PP
        !           122: .I M4\^
        !           123: makes available the following built-in macros.
        !           124: They may be redefined, but once this is done the original meaning is lost.
        !           125: Their values are null unless otherwise stated.
        !           126: .TP 12
        !           127: .B define
        !           128: the second argument is installed as the replacement text of the macro
        !           129: whose name is the first argument.
        !           130: .TP
        !           131: .B undefine
        !           132: Remove the definition of the macro named in the argument.
        !           133: .TP
        !           134: .B defn
        !           135: Return the quoted definition of the argument(s);
        !           136: useful for renaming macros, especially built-ins.
        !           137: .TP
        !           138: .B pushdef
        !           139: Like
        !           140: .IR define ,
        !           141: but save any previous definition.
        !           142: .TP
        !           143: .B popdef
        !           144: Remove current definition of the argument(s),
        !           145: exposing the previous one if any.
        !           146: .TP
        !           147: .B ifdef
        !           148: If the first argument is defined, the value is the second argument, otherwise the third.
        !           149: If there is no third argument, the value is null.
        !           150: The word
        !           151: .L unix\^
        !           152: is predefined on
        !           153: .SM UNIX
        !           154: versions of
        !           155: .IR m4 .
        !           156: .TP
        !           157: .B shift
        !           158: Return all but the first argument.
        !           159: The other arguments pushed back with
        !           160: commas in between and quoted to
        !           161: nullify the effect of the extra scan.
        !           162: .TP
        !           163: .B changequote
        !           164: Change quote symbols to the first and second arguments.
        !           165: The symbols may be up to five characters long.
        !           166: .B Changequote\^
        !           167: without arguments restores the original values
        !           168: (i.e., 
        !           169: .LR `\|' ).
        !           170: .TP
        !           171: .B changecom
        !           172: Change left and right comment markers from the default
        !           173: .B #
        !           174: and new-line.
        !           175: With no arguments, the comment mechanism is effectively
        !           176: disabled.
        !           177: With one argument, the left marker becomes the argument and
        !           178: the right marker becomes new-line.
        !           179: With two arguments, both markers are affected.
        !           180: Comment markers may be up to five characters long.
        !           181: .TP
        !           182: .B divert
        !           183: .I m4\^
        !           184: Switch output to one of 10 streams,
        !           185: numbered 0-9 designated by the argument.
        !           186: The final output is the concatenation of the streams
        !           187: in numerical order;
        !           188: stream 0 is the current initially.
        !           189: Output to a stream other than 0 through 9
        !           190: is discarded.
        !           191: .TP
        !           192: .B undivert
        !           193: Cause immediate output of text from diversions named as
        !           194: arguments, or all diversions if no argument.
        !           195: Text may be undiverted into another diversion.
        !           196: Once undiverted, the diverted text is no longer contained in that diversion.
        !           197: .TP
        !           198: .B divnum
        !           199: Return the name of the current output stream.
        !           200: .TP
        !           201: .B dnl
        !           202: reads and discards characters up to and including the next new-line.
        !           203: .TP
        !           204: .B ifelse
        !           205: If the first argument is the same string as the second,
        !           206: then the value is the third argument.
        !           207: If not, and if there are more than four arguments, the process is repeated with arguments 4, 5, 6 and 7.
        !           208: Otherwise, the value is either the fourth string, or, if that is not present,
        !           209: null.
        !           210: .TP
        !           211: .B incr
        !           212: Return the value of the argument incremented by 1.
        !           213: The value of the argument is calculated
        !           214: by interpreting an initial digit-string as a decimal number.
        !           215: .TP
        !           216: .B decr
        !           217: Return the value of the argument decremented by 1.
        !           218: .TP
        !           219: .B eval
        !           220: Evaluate the argument as an arithmetic expression, using 32-bit arithmetic.
        !           221: C-like operators include
        !           222: .BR +-*/% ,
        !           223: bitwise
        !           224: .BR &|^~ ;
        !           225: relationals; parentheses.
        !           226: Octal and hex numbers may be specified as in C.
        !           227: The second argument specifies the radix for the result;
        !           228: the default is 10.
        !           229: The third argument may be used to specify the minimum number
        !           230: of digits in the result.
        !           231: .TP
        !           232: .B len
        !           233: Returns the number of characters in the argument.
        !           234: .TP
        !           235: .B index
        !           236: Return the position in the first argument where the second argument begins (zero origin),
        !           237: or \-1 if the second argument does not occur.
        !           238: .TP
        !           239: .B substr
        !           240: Return a substring of the first argument.
        !           241: The second argument is a zero origin
        !           242: number selecting the first character;
        !           243: the third argument indicates the length of the substring.
        !           244: A missing third argument is taken to be large enough to extend to
        !           245: the end of the first string.
        !           246: .TP
        !           247: .B translit
        !           248: Transliterate the characters in the first argument
        !           249: from the set given by the second argument to the set given by the third,
        !           250: deleting characters that lack a correspondent in the third set.
        !           251: There is no character-range notation.
        !           252: .TP
        !           253: .B include
        !           254: Return the contents of the file named in the argument.
        !           255: .TP
        !           256: .B sinclude
        !           257: Same, but give no diagnostic if the file is inaccessible.
        !           258: .TP
        !           259: .B syscmd
        !           260: Execute the
        !           261: .SM UNIX
        !           262: command given in the first argument.
        !           263: No value is returned.
        !           264: .TP
        !           265: .B sysval
        !           266: The return code from the last call to
        !           267: .IR syscmd .
        !           268: .TP
        !           269: .B maketemp
        !           270: Rill in a string of
        !           271: .LR X
        !           272: characters in the argument with the current process id.
        !           273: .TP
        !           274: .B m4exit
        !           275: Exit immediately from
        !           276: .IR m4 .
        !           277: Argument 1, if given, is the exit code;
        !           278: the default is 0.
        !           279: .TP
        !           280: .B m4wrap
        !           281: Push the argument back at the end of the input.
        !           282: Example:
        !           283: .L m4wrap(`cleanup()')
        !           284: .TP
        !           285: .B errprint
        !           286: Prints the argument
        !           287: on the standard error file.
        !           288: .TP
        !           289: .B dumpdef
        !           290: Print current names and definitions,
        !           291: for the named items, or for all if no arguments are given.
        !           292: .TP
        !           293: .B traceon
        !           294: If there are no arguments, turn on tracing for all macros
        !           295: (including built-ins).
        !           296: Otherwise, turn on tracing for named macros.
        !           297: .TP
        !           298: .B traceoff
        !           299: Turn off trace globally and for any macros specified.
        !           300: Macros specifically traced by
        !           301: .B traceon\^
        !           302: can be untraced only by specific calls to
        !           303: .BR traceoff .
        !           304: .SH EXAMPLES
        !           305: .EX
        !           306: define(fib,`ifelse(define(`n',eval($1))n,0,1,n,1,1,dnl()
        !           307: `eval(fib(n-1)+fib($1-2))')')dnl()
        !           308: fib(2*3)
        !           309: .EE
        !           310: .ns
        !           311: .IP
        !           312: Recursively evaluate a Fibonacci number.
        !           313: The inner
        !           314: .B define
        !           315: avoids some reevaluations.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.