M4.9
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:9k
源码类别:

操作系统开发

开发平台:

C/C++

  1. Command:   m4 - macro processor
  2. Syntax:    m4 [-D name = value] [-U name]
  3. Flags:     -D  Define a symbol
  4.            -U  Undefine a symbol
  5. Example:   m4 <m4test               # Run M4
  6.      M4 is a macro processor intended as a front end for Ratfor, Pascal,
  7. and  other  languages  that  do  not  have  a  built-in macro processing
  8. capability.  M4 reads standard input, the processed text is  written  on
  9. the standard output.
  10.      The options and their effects are as follows:
  11.       -D name[=val]  Defines name to val, or to null in val's absence.
  12.       -U name        Undefines name.
  13.      Macro calls have the form: name(arg1,arg2, ..., argn)
  14. The '(' must immediately follow the name of the macro. If the name of  a
  15. defined  macro  is  not followed by a ( it is taken to be a call of that
  16. macro with no arguments, i.e. name().  Potential macro names consist  of
  17. alphabetic letters and digits.
  18.      Leading unquoted  blanks,  tabs  and  newlines  are  ignored  while
  19. collecting  arguments.   Left  and right single quotes are used to quote
  20. strings.  The value of a quoted string is the  string  stripped  of  the
  21. quotes.
  22.      When a macro name is recognized, its  arguments  are  collected  by
  23. searching for a matching ).  If fewer arguments are supplied than are in
  24. the macro definition, the trailing  arguments  are  taken  to  be  null.
  25. Macro   evaluation  proceeds  normally  during  the  collection  of  the
  26. arguments, and any commas or right parentheses which happen to  turn  up
  27. within  the  value  of  a  nested  call are as effective as those in the
  28. original input text.  (This is typically referred as   inside-out  macro
  29. expansion.)  After argument collection, the value of the macro is pushed
  30. back onto the input stream and rescanned.
  31.      M4 makes available the following  built-in  macros.   They  may  be
  32. redefined,  but  once  this is done the original meaning is lost.  Their
  33. values are null unless otherwise stated.
  34.      define "(name [, val])" the second argument  is  installed  as  the
  35. value  of  the  macro  whose name is the first argument.  If there is no
  36. second argument, the value is null.  Each  occurrence  of  $  n  in  the
  37. replacement text, where n is a digit, is replaced by the n -th argument.
  38. Argument 0 is the name of the macro; missing arguments are  replaced  by
  39. the null string.
  40.                                                                         
  41.                                                                         
  42.      defn "(name [, name ...])" returns the  quoted  definition  of  its
  43. argument(s). Useful in renaming macros.
  44.      undefine "(name [,  name  ...])"  removes  the  definition  of  the
  45. macro(s)  named.  If  there  is  more  than one definition for the named
  46. macro, (due to previous use of pushdef) all definitions are removed.
  47.      pushdef "(name [,  val])"  like  define,  but  saves  any  previous
  48. definition by stacking the current definition.
  49.      popdef "(name [, name ...])"  removes  current  definition  of  its
  50. argument(s), exposing the previous one if any.
  51.      ifdef "(name, if-def [,  ifnot-def])"  if  the  first  argument  is
  52. defined,  the  value  is  the  second argument, otherwise the third.  If
  53. there is no third argument, the value is null.  A  word  indicating  the
  54. current operating system is predefined.  (e.g. unix or vms).
  55.      shift "(arg, arg, arg, ...)" returns all but  its  first  argument.
  56. The  other  arguments are quoted and pushed back with commas in between.
  57. The  quoting  nullifies  the  effect  of  the  extra  scan   that   will
  58. subsequently be performed.
  59.      changequote "(lqchar, rqchar)" change quote symbols  to  the  first
  60. and  second  arguments.  With no arguments, the quotes are reset back to
  61. the default characters. (i.e., `').
  62.      changecom "(lcchar, rcchar)" change left and right comment  markers
  63. from  the  default  #  and  newline.   With  no  arguments,  the comment
  64. mechanism is reset back to the default characters.  With  one  argument,
  65. the  left  marker  becomes  the  argument  and  the right marker becomes
  66. newline.  With two arguments, both markers are affected.
  67.      divert  "(divnum)"  maintains  10  output  streams,  numbered  0-9.
  68. Initially  stream  0 is the current stream. The divert macro changes the
  69. current output stream to its (digit-string) argument.   Output  diverted
  70. to a stream other than 0 through 9 is lost.
  71.      undivert "([divnum [, divnum ...]])"  causes  immediate  output  of
  72. text  from  diversions  named  as  argument(s),  or all diversions if no
  73. argument.  Text may be undiverted into another  diversion.   Undiverting
  74. discards the diverted text. At the end of input processing, M4 forces an
  75. automatic undivert unless is defined.
  76.      divnum "()" returns the value of the current output stream.
  77.      dnl "()" reads and discards characters up to and including the next
  78. newline.
  79.                                                                         
  80.                                                                         
  81.      ifelse "(arg, arg, if-same [, ifnot-same  |  arg,  arg  ...])"  has
  82. three  or  more  arguments.  If the first argument is the same string as
  83. the second, then the value is the third argument.  If not, and if  there
  84. are  more than four arguments, the process is repeated with arguments 4,
  85. 5, 6 and 7.  Otherwise, the value is either the fourth string, or, if it
  86. is not present, null.
  87.      incr "(num)" returns the value of its argument  incremented  by  1.
  88. The  value  of  the  argument  is  calculated by interpreting an initial
  89. digit-string as a decimal number.
  90.      decr "(num)" returns the value of its argument decremented by 1.
  91.      eval  "(expression)"  evaluates  its   argument   as   a   constant
  92. expression,  using integer arithmetic.  The evaluation mechanism is very
  93. similar to that of cpp (#if expression).   The  expression  can  involve
  94. only  integer  constants  and character constants, possibly connected by
  95. the binary operators
  96.       *    /    %    +    -    >>   <<    <    >   <=   >=   ==   !=   &
  97.       ^    |     &&   ||
  98. or the unary operators - ! or tilde or by the ternary  operator  ?  :  .
  99. Parentheses  may be used for grouping. Octal numbers may be specified as
  100. in C.
  101.      len "(string)" returns the number of characters in its argument.
  102.      index "(search-string, string)" returns the position in  its  first
  103. argument  where  the  second  argument begins (zero origin), or 1 if the
  104. second argument does not occur.
  105.      substr "(string, index [, length])"  returns  a  substring  of  its
  106. first  argument.  The  second argument is a zero origin number selecting
  107. the first character (internally treated as  an  expression);  the  third
  108. argument  indicates  the  length  of  the  substring.   A  missing third
  109. argument is taken to be large enough to extend to the end of  the  first
  110. string.
  111.      translit  "(source, from [, to])" transliterates the characters  in
  112. its  first argument from the set given by the second argument to the set
  113. given by the third.  If the third argument is shorter than  the  second,
  114. all  extra  characters in the second argument are deleted from the first
  115. argument. If the third argument is missing altogether, all characters in
  116. the second argument are deleted from the first argument.
  117.      include "(filename)" returns the contents of the file that is named
  118. in the argument.
  119.                                                                         
  120.                                                                         
  121.      sinclude "(filename)"is identical to include, except that  it  says
  122. nothing if the file is inaccessable.
  123.      paste "(filename)" returns the contents of the file  named  in  the
  124. argument without any processing, unlike include.
  125.      spaste "(filename)" is identical to  paste,  except  that  it  says
  126. nothing if the file is inaccessibl[De.
  127.      syscmd "(command)" executes the UNIX command  given  in  the  first
  128. argument. No value is returned.
  129.      sysval "()" is the return code from the last call to syscmd.
  130.  .PP maketemp '(string)" fills in a string of  XXXXXX  in  its  argument
  131. with the current process ID.
  132.      m4exit "([exitcode])" causes immediate exit from M4.   Argument  1,
  133. if given, is the exit code; the default is 0.
  134.      m4wrap "(m4-macro-or-built-n)" argument 1 will be  pushed  back  at
  135. final EOF; example: m4wrap(`dumptable()').
  136.      errprint "(str [,  str,  str,  ...])"  prints  its  argument(s)  on
  137. stderr.  If  there is more than one argument, each argument is separated
  138. by a space during the output.  An arbitrary number of arguments  may  be
  139. supplied.
  140.      dumpdef "([name, name, ...])" prints current names and definitions,
  141. for the named items, or for all if no arguments are given.
  142. Author
  143.      M4 was written by Ozan S. Yigif.
  144.