|
|
1.1 ! root 1: .TH M4 1 "18 January 1983" ! 2: .SH NAME ! 3: m4 \- macro processor ! 4: .SH SYNOPSIS ! 5: .B m4 ! 6: [ files ] ! 7: .SH DESCRIPTION ! 8: .I M4 ! 9: is a macro processor intended as a front end for Ratfor, C, and other languages. ! 10: Each of the argument files is processed in order; ! 11: if there are no arguments, or if an argument is `\-', ! 12: the standard input is read. ! 13: The processed text is written on the standard output. ! 14: .PP ! 15: Macro calls have the form ! 16: .PP ! 17: name(arg1,arg2, . . . , argn) ! 18: .br ! 19: .PP ! 20: The `(' must immediately follow the name of the macro. ! 21: If a defined macro name is not followed by a `(', ! 22: it is deemed to have no arguments. ! 23: Leading unquoted blanks, tabs, and newlines are ignored while collecting ! 24: arguments. Potential macro names consist of alphabetic letters, ! 25: digits, and underscore `\_', where the first character is not a digit. ! 26: .PP ! 27: Left and right single quotes (\`\|\') are used to quote strings. ! 28: The value of a quoted string is the string stripped of the quotes. ! 29: .PP ! 30: When a macro name is recognized, its arguments are collected by searching ! 31: for a matching right parenthesis. ! 32: Macro evaluation proceeds normally during the collection of the arguments, ! 33: and any commas or right parentheses which happen to turn up within the value ! 34: of a nested call are as effective as those in the original input text. ! 35: After argument collection, the value of the macro is pushed back onto the ! 36: input stream and rescanned. ! 37: .PP ! 38: .I M4 ! 39: makes available the following built-in macros. ! 40: They may be redefined, but once this is done the original meaning is lost. ! 41: Their values are null unless otherwise stated. ! 42: .TP 10 ! 43: .B define ! 44: The second argument is installed as the value of the macro ! 45: whose name is the first argument. ! 46: Each occurrence of $\fIn\fR in the replacement text, where ! 47: .I n ! 48: is a digit, is replaced by the ! 49: .IR n -th ! 50: argument. Argument 0 is the name of the macro; ! 51: missing arguments are replaced by the null string. ! 52: .TP ! 53: .B undefine ! 54: removes the definition of the macro named in its argument. ! 55: .TP ! 56: .B ifdef ! 57: If the first argument is defined, the value is the second argument, ! 58: otherwise the third. If there is no third argument, the value is null. ! 59: The word ! 60: .I unix ! 61: is predefined on UNIX versions of ! 62: .IR m4 . ! 63: .TP ! 64: .B changequote ! 65: Change quote characters to the first and second arguments. ! 66: .I Changequote ! 67: without arguments restores the original values (i.e., \`\|\'). ! 68: .TP ! 69: .B divert ! 70: .I M4 ! 71: maintains 10 output streams, numbered 0-9. ! 72: The final output is the concatenation of the streams in numerical order; ! 73: initially stream 0 is the current stream. The ! 74: .I divert ! 75: macro changes the current output stream to its (digit-string) argument. ! 76: Output diverted to a stream other than 0 through 9 is discarded. ! 77: .TP ! 78: .B undivert ! 79: causes immediate output of text from diversions named as ! 80: arguments, or all diversions if no argument. ! 81: Text may be undiverted into another diversion. ! 82: Undiverting discards the diverted text. ! 83: .TP ! 84: .B divnum ! 85: returns the value of the current output stream. ! 86: .TP ! 87: .B dnl ! 88: reads and discards characters up to and including the next newline. ! 89: .TP ! 90: .B ifelse ! 91: has three or more arguments. ! 92: If the first argument is the same string as the second, ! 93: then the value is the third argument. ! 94: If not, and if there are more than four arguments, the process is repeated with arguments 4, 5, 6 and 7. ! 95: Otherwise, the value is either the fourth string, or, if it is not present, ! 96: null. ! 97: .TP ! 98: .B incr ! 99: returns the value of its argument incremented by 1. ! 100: The value of the argument is calculated ! 101: by interpreting an initial digit-string as a decimal number. ! 102: .TP ! 103: .B eval ! 104: evaluates its argument as an arithmetic expression, using 32-bit arithmetic. ! 105: Operators include +, \-, \(**, /, %, ^ (exponentiation); relationals; ! 106: parentheses. ! 107: .TP ! 108: .B len ! 109: returns the number of characters in its argument. ! 110: .TP ! 111: .B index ! 112: returns the position in its first argument where the second argument ! 113: begins (zero origin), or \-1 if the second argument does not occur. ! 114: .TP ! 115: .B substr ! 116: returns a substring of its first argument. ! 117: The second argument is a zero origin number selecting the first character; ! 118: the third argument indicates the length of the substring. ! 119: A missing third argument is taken to be large enough to extend to ! 120: the end of the first string. ! 121: .TP ! 122: .B translit ! 123: transliterates the characters in its first argument ! 124: from the set given by the second argument to the set given by the third. ! 125: No abbreviations are permitted. ! 126: .TP ! 127: .B include ! 128: returns the contents of the file named in the argument. ! 129: .TP ! 130: .B sinclude ! 131: is identical to ! 132: .I include, ! 133: except that it says nothing if the file is inaccessible. ! 134: .TP ! 135: .B syscmd ! 136: executes the UNIX command given in the first argument. ! 137: No value is returned. ! 138: .TP ! 139: .B maketemp ! 140: fills in a string of XXXXX in its argument with the current process id. ! 141: .TP ! 142: .B errprint ! 143: prints its argument on the diagnostic output file. ! 144: .TP ! 145: .B dumpdef ! 146: prints current names and definitions, ! 147: for the named items, or for all if no arguments are given. ! 148: .dt ! 149: .SH "SEE ALSO" ! 150: B. W. Kernighan and D. M. Ritchie, ! 151: .I The M4 Macro Processor
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.