sys.p2crc.1
上传用户:upcnvip
上传日期:2007-01-06
资源大小:474k
文件大小:49k
源码类别:

编译器/解释器

开发平台:

C/C++

  1. # Standard configuration file for "p2c" 1.14, the Pascal to C translator
  2. #  Copyright (C) 1989 David Gillespie.
  3. #  Author's address: daveg@csvax.caltech.edu; 256-80 Caltech/Pasadena CA 91125.
  4. # This program is free software; you can redistribute it and/or modify
  5. # it under the terms of the GNU General Public License as published by
  6. # the Free Software Foundation (any version).
  7. # This program is distributed in the hope that it will be useful,
  8. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  10. # GNU General Public License for more details.
  11. # You should have received a copy of the GNU General Public License
  12. # along with this program; see the file COPYING.  If not, write to
  13. # the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  14. # Note that all options except "Naming Conventions" and certain library
  15. # functions may be left blank or omitted entirely; the defaults are intended
  16. # to encompass a wide variety of "reasonable" implementations of C.
  17. # Option names are case-insensitive.
  18. # The single-valued options can all be overridden by a later line in
  19. # this file, or in your own "p2crc" or ".p2crc" file, or in comments
  20. # in the input file.  To override an explicit value with the original
  21. # default, use the word "def".
  22. # Some options define printf-like format strings.  These support all the
  23. # usual formatting codes, with additional features for string formatting.
  24. # The following extra "flag" characters are defined for %s:
  25. #    _     Convert to lower case
  26. #    ^     Convert to upper case
  27. #    _^    Convert to lower except capitalize first char and after non-letters
  28. #    ~     Insert '_' between lower case and following upper case letters
  29. #    !     Remove '_' and other non-alphanumeric characters
  30. #    ?     Negates _ and ^ flags if name contains mixed case
  31. #    R     Remove file name suffix (e.g., "foo.pas" => "foo")
  32. #    /     Remove path name (prefix ending in /, , ], or :)
  33. # Also, where a format includes several "%" arguments, they may
  34. # appear in either order in the string.  When two string args are
  35. # involved, "%s" will refer to one and "%S" to the other.  The
  36. # notation %H expands to the p2c home directory name, as in "%H/p2crc".
  37. # Many options simply refine defaults controlled by the Language, 
  38. # AnsiC, and Target options.
  39. Debug                           # Level of debugging output
  40. TokenTrace                      # Additional debugging output
  41. Include # Additional p2crc files to be included
  42. Include                         # %s=program name
  43. CopySource                      # 1=copy Pascal source code into output
  44.                                 # file, #ifdef'd out.
  45. # INPUT LANGUAGE
  46. Language                        # Known languages:
  47.                                 #  HP (default; Pascal Workstation version)
  48.                                 #  MODCAL (HP's advanced Pascal)
  49.                                 #  HP-UX (almost same as HP)
  50.                                 #  TURBO (vers 5.0 for IBM PC)
  51. #  OREGON (Oregon Software Pascal-2 V2.1)
  52. #  VAX (VAX/VMS Pascal)
  53. #  MODULA (Modula-2)
  54.                                 #  UCSD (almost same as TURBO)
  55.                                 #  MPW (MPW Pascal 2.0 for the Mac)
  56. #  BERK (SUN Berkeley Pascal)
  57. Modula2 # 1=Use modula-2 block structure (IF-END)
  58. # 0=Use Pascal block structure (IF-BEGIN-END)
  59. # default=1 if Language=MODULA, 0 for others
  60. Integer16                       # 1=assume Pascal integers are 16 bits
  61.                                 # 0=assume Pascal integers are 32 bits
  62. # 2=use native C "int" for Pascal "integer"
  63.                                 # default=0 for HP/Oregon/VAX, 1 for Turbo/MPW
  64. DoubleReals                     # 1=convert Pascal real to C double
  65.                                 # 0=convert Pascal real to C float
  66.                                 # default=1 for Turbo and HP-UX, 0 for HP
  67. UnsignedChar                    # 1=Pascal char must be unsigned
  68.                                 # 0=Pascal char must be signed
  69.                                 # 2=doesn't matter; use native C "char"
  70.                                 # default=unsigned, but use native "char"
  71. NeedSignedByte                  # 1=use "signed char" even if not available
  72.                                 # 0 or default=use "short" if not sure
  73. PascalEnumSize                  # Size in BITS of a Pascal enum type.
  74.                                 # Default=according to Language.
  75. NestedComments                  # 1=Pascal comments may be nested
  76.                                 # 2=comments don't nest, but { must match }
  77.                                 # 0=comments are unnested, unmatched
  78.                                 # default=0 in HP/MODCAL, 2 in Turbo
  79. ExternWords       external # Words analogous to "forward" for declaring
  80. ExternWords   extern # procedures or functions external.
  81. ExternWords   fortran
  82. CExternWords   nonpascal     # Words like ExternWords but for which any
  83. CExternWords # leading and/or trailing "_" is removed
  84. CExternWords                    # from the Pascal function/variable names.
  85. ImportAll                       # 1=read all of each imported file, in case
  86.                                 #   file contains several modules/units
  87.                                 # 0=read only interface text of first module
  88.                                 # default=1 in HP/MODCAL, 0 in others
  89. ImplModules # 1=MODULE starts a block like PROGRAM.
  90. # 0=MODULEs have export/implement sections.
  91. PascalSignif                    # Number of significant characters in Pascal
  92.                                 # identifiers; default=unlimited
  93. PascalCaseSens                  # 1=Pascal idents are case-sensitive,
  94. #   keywords and predef words are u.c. or l.c.
  95. # 2=case-sens, keywords and predef words u.c.
  96. # 3=case-sens, keywords and predef words l.c.
  97.                                 # 0=not case-sensitive
  98. # default=2 in Modula-2, otherwise 0
  99. DollarIdents # 1='$' is legal in Pascal and C identifiers
  100. # 2=convert '$' (and '%') in idents into C '_'
  101. # 0='$' is for HP directives/Turbo hex consts
  102. # default=1 for Oregon & VAX Pascal only
  103. IgnoreNonAlpha # 1=ignore _, $, % in Pascal identifiers
  104. # 0=retain them (subject to DollarIdents)
  105. # default=1 for UCSD, 0 otherwise
  106. InputTabSize                    # Number of characters per tab stop in input
  107.                                 # file, for reading Pascal indentation.
  108.                                 # Default=8.
  109. # TARGET LANGUAGE
  110. AnsiC                           # 1=use all Ansi C features and definitions
  111.                                 # 2=use GNU C language extensions
  112.                                 # 0=use only original K&R features
  113.                                 # default=use "modern" Unix-like C
  114. C++                             # 1=use C++ extensions,
  115.                                 # 0=use straight C,
  116.                                 # default=generate code that works on either
  117. Void*                           # 1=use "void *" for anyptr's
  118.                                 # 0=use "char *" for anyptr's
  119.                                 # default=1 if AnsiC=1 or C++=1
  120. HasSignedChar                   # 1="signed char" and "signed int" are legal
  121.                                 # 0="signed ..." is not supported
  122.                                 # default=1 if AnsiC=1
  123. CastNull                        # 1=must type-cast NULL into specific types
  124.                                 # 0 or default=don't cast NULL
  125. CopyStructs                     # 0=no implicit copying of structs allowed
  126.                                 # 1=can assign but not pass to/from funcs
  127.                                 # 2=struct assignment and parameters only
  128.                                 # 3=can assign, pass, and return structs
  129.                                 # default=3 unless AnsiC=0
  130. VariableArrays                  # 1=allows variable-length arrays
  131.                                 # 0=array sizes must be constant
  132.                                 # default=1 for Gnu C, 0 otherwise
  133. ReUseFieldNames                 # 1=can use same field name in many structs
  134.                                 # 0=field names must be globally unique
  135.                                 # default=1
  136. UseVExtern                      # 1 or default=assume strict ANSI linkage
  137.                                 # 0=UNIX-like "common" variable linkage
  138. UseAnyptrMacros                 # 1=use Anyptr, Signed, Static, etc. macros
  139.                                 # 0=use true C constructs as specified above
  140. # 2=use Static, Local, Char only
  141. # default=2 if AnsiC=1, else 1
  142. UsePPMacros                     # 1=use PP and PV macros for prototypes
  143.                                 # 0=do not use these macros for prototypes
  144.                                 # 2=use them only for external/forward
  145. # default=0 if AnsiC=1, else 2
  146. # TARGET MACHINE
  147. Target                          # machine name, if any.  Specify this or answer
  148.                                 # the following questions to tailor the output
  149.                                 # program to a particular architecture.
  150.                                 # Machines known:
  151.                                 #   HPUX-300, SUN-68K, BSD-VAX, BSD, SYSV
  152. SignedChar                      # 1=char is signed, 0=char is unsigned,
  153.                                 # default=don't know
  154. SignedField                     # 1="int" bit-fields in structs are signed,
  155.                                 # 0="int" bit-fields are unsigned,
  156.                                 # default=don't know but probably signed
  157.                                 # 2=don't know, be paranoid
  158. SignedShift                     # 1=">>" does arithmetic (signed) shift,
  159.                                 # 0=">>" does logical shift even for ints,
  160.                                 # default=don't know but probably signed
  161.                                 # 2=don't know, be paranoid
  162. CharSize                        # size in bits of a char, default at least 8
  163. ShortSize                       # size in bits of a short, default at least 16
  164. IntSize                         # size in bits of an int, default at least 16
  165. LongSize                        # size in bits of a long, default at least 32
  166. PtrSize                         # size in bits of a pointer.  If not all
  167.                                 # pointers have same size, must leave blank.
  168. FloatSize                       # size in bits of a float
  169. DoubleSize                      # size in bits of a double
  170. EnumSize                        # size in bits of an enum
  171. Size_T_Long                     # 1=Ansi "size_t" type is long
  172.                                 # 0=Ansi "size_t" type is int
  173.                                 # default=don't know, probably long
  174. # BRACES AND PLACEMENT OF STATEMENTS
  175. NullStmtLine                    # 1=put null statements on their own lines,
  176.                                 # 0 or default=write "while (x) ;"
  177. BracesAlways                    # 1=use {braces} always,
  178.                                 # 0=never unless needed,
  179.                                 # default=use nice braces
  180. BraceLine                       # 1=always put open braces on a new line,
  181.                                 # 0=never put open brace on new line if poss,
  182.                                 # default=0 for sub-stmts, 1 for func bodies
  183. BraceCombine                    # 1=don't put newline after '{' if possible
  184.                                 # 0 or default=open brace always ends a line
  185. BraceElse                       # 1=put { } on both "then" and "else" if would
  186.                                 #   put them on either, default=independent
  187. BraceElseLine                   # 0 or default=write "} else {"
  188.                                 # 1=write "}nelse {", 2=write "} elsen{"
  189.                                 # 3=write "}nelsen{"
  190. ElseIf                          # 1=always write "else if" on same line
  191.                                 # 0=always write "elsenif"
  192.                                 # default=use "else if" only when input used it
  193. NewLineFuncs                    # 1=write "static intnfoo()" in function defs
  194.                                 # 0 or default=write "static int foo()"
  195. # INDENTATION
  196. PhysTabSize                     # Spacing of tab-character tabs; default=8.
  197.                                 # 0=do not use tabs in output file.
  198. Indent                          # Basic indentation delta; default=+2.
  199.                                 # Indentation deltas specify an amount by which
  200.                                 # to change indentation; +n or -n specifies a
  201.                                 # relative adjustment, n specifies an absolute
  202.                                 # amount of indentation where 0=far left.
  203. BlockIndent                     # Indentation delta for statements enclosed
  204.                                 # in braces; applied after Indent.  Default=+0.
  205. SwitchIndent                    # Indentation delta for switch statement body;
  206.                                 # applied after Indent.  Default=+0.
  207. CaseIndent                      # Indentation delta for case labels; applied
  208.                                 # after Indent and SwitchIndent.  Default=-2.
  209. LabelIndent                     # Indentation delta for statement labels.
  210.                                 # Default is 0 (absolute).
  211. OpenBraceIndent                 # Indentation delta for the open brace that
  212.                                 # begins a block.  Used only if the brace is
  213.                                 # on its own line.  Default=+0.
  214. CloseBraceIndent                # Indentation delta for the close brace that
  215.                                 # ends a block.  Default=+0.
  216. FuncArgIndent                   # Indentation delta for function arguments.
  217.                                 # Default is 0.
  218. BodyIndent                      # Indentation delta for the body of a function;
  219.                                 # applied after Indent.  Default=+0.
  220. FuncOpenIndent                  # Indentation delta for the open brace that
  221.                                 # begins a function body.  Default=+0.
  222. FuncCloseIndent                 # Indentation delta for the close brace that
  223.                                 # ends a function body.  Default=+0.
  224. StructIndent                    # Indentation delta for "struct" declarations;
  225.                                 # applied after Indent.  Default=+0.
  226. StructInitIndent                # Indentation delta for struct and array
  227.                                 # initializers; applied after Indent.
  228.                                 # Default=+0.
  229. ExtraInitIndent                 # Indentation delta for nested struct/array
  230.                                 # initializers; not combined with Indent.
  231.                                 # Default=+2.
  232. ExtraIndent                     # Extra indentation for broken lines if
  233.                                 # indenting by nesting order is too much;
  234.                                 # default=+2:
  235.                                 #    long_function_name(arguments,
  236.                                 #        more_arguments);
  237.                                 #    1234
  238. BumpIndent                      # Extra indentation for subexpressions which
  239.                                 # coincide with next statement's indentation
  240.                                 # in a visually confusing way:
  241.                                 #     if (foo &&
  242.                                 #         bar)     <- this gets BumpIndent
  243.                                 #         spam();
  244.                                 # May be pos, neg or zero.  Default=+1.
  245. ConstIndent                     # Target column for #defines; default=24.
  246.                                 # A positive relative value (e.g., +3) means
  247.                                 # to use that many spaces always rather than
  248.                                 # tabbing to a fixed column.  A value of the
  249.                                 # form, e.g., *5 means to tab to the next
  250.                                 # multiple-of-5 column.
  251. CommentIndent                   # Target column (as in ConstIndent) for
  252.                                 # comments trailing statements.  Another
  253.                                 # syntax is, e.g., "-80" which means to
  254.                                 # right-justify comments on an 80-column line.
  255.                                 # Default=+3.
  256. BraceCommentIndent              # Indentation for trailing comments on
  257.                                 # braces.  Default=+2.
  258. DeclCommentIndent               # Target column for comments trailing
  259.                                 # declarations.  Default=CommentIndent.
  260. CommentOverIndent               # If line is too long to indent nicely by
  261.                                 # CommentIndent or BraceCommentIndent, start
  262.                                 # a new line and indent according to this
  263.                                 # indentation, either n, +n, or -n.  Zero means
  264.                                 # never to start a new line.  Default=+4.
  265. MinSpacing                      # Minimum spacing allowed for things like
  266.                                 # absolute ConstIndent spacing.  Default=2,
  267.                                 # i.e., ConstIndent will always insert at
  268.                                 # least two spaces, even on long lines.
  269. MinSpacingThresh                # If specified, threshhold below which
  270.                                 # MinSpacing is used.  (Default=MinSpacing.)
  271.                                 # For example, if MinSpacingThresh=1:
  272.                                 #    foo  /*comment*/   (CommentIndent=5 used)
  273.                                 #    spam /*comment*/   (CommentIndent=5 used)
  274.                                 #    thing  /*comment*/ (MinSpacing=2 used)
  275. # LINE BREAKING
  276. LineWidth                       # Target max output line width; default=78.
  277. MaxLineWidth                    # Absolute max output line width; default=90.
  278. OverWidePenalty                 # Penalty for line lengths > LineWidth.
  279.                                 # Default=25.  (Penalties are real numbers.)
  280. OverWideExtraPenalty            # Additional penalty multiplied by
  281.                                 # number-of-chars-too-long squared.
  282.                                 # Default=1.  Total over-wide penalty is
  283.                                 #   OW = max(OWP + N^2*OWEP, 0).
  284. EarlyBreakPenalty               # Penalty for breaking at early break-points
  285.                                 # among those at a given nesting level.
  286.                                 # Default=1.  If N=number of possible break
  287.                                 # points before this one in this nesting,
  288.                                 #   EB = -N*EBP.
  289. CommaBreakPenalty               # Penalty for breaking lines after a comma.
  290.                                 # Default=10.
  291. CommaBreakExtraPenalty          # Additional penalty multiplied by nesting
  292.                                 # level of (number of parens enclosing) comma.
  293.                                 # Default=5.  Total comma-break penalty is
  294.                                 #   B = max(P + CBP + N*CBEP, 1.0)
  295.                                 # where
  296.                                 #   P = OW + EB + SIP + IP  (defined elsewhere)
  297. SpecialArgBreakPenalty          # Penalty for breaking lines after a comma
  298.                                 # which follows a "special" argument, such
  299.                                 # as the format string of a printf.  Default=5.
  300. OpBreakPenalty                  # Penalty for breaking at an operator (like +).
  301.                                 # Analogous to CommaBreakPenalty; default=25.
  302. OpBreakExtraPenalty             # Additional penalty multiplied by nesting
  303.                                 # level of the operator.  Default=20.
  304. ExHyphenPenalty                 # Additional penalty for breaking a line just
  305.                                 # after a minus sign.  Default=10.  :-)
  306. AssignBreakPenalty              # Penalty for breaking at an assignment
  307.                                 # operator.  Default=50.
  308. AssignBreakExtraPenalty         # Additional penalty multiplied by nesting
  309.                                 # level of the assignment.  Default=30.
  310. QMarkBreakPenalty               # Penalty for breaking lines at the "?" of
  311.                                 # a "?:" operator.  Default=50.  (Colons
  312.                                 # get the regular OpBreakPenalty.)
  313. QMarkBreakExtraPenalty          # Additional penalty multiplied by nesting
  314.                                 # level of the "?:" operator.  Default=30.
  315. ParenBreakPenalty               # Penalty for breaking after an open paren
  316.                                 # in a function call:
  317.                                 #   long_function_name(
  318.                                 #       very_long_argument);
  319.                                 # Default=25.
  320. ParenBreakExtraPenalty          # Additional penalty multiplied by nesting
  321.                                 # level of the parentheses.  Default=10.
  322. MoreBreakPenalty                # Adjustment to CommaBreakPenalty, etc.,
  323.                                 # if it is the second or later break in the
  324.                                 # same nesting.  (E.g., if two or more commas
  325.                                 # of a function call are broken.)  Default=-5.
  326. MoreBreakExtraPenalty           # Adjustment to CommaBreakExtraPenalty, etc.,
  327.                                 # as in MoreBreakPenalty.  Default=-3.
  328. WrongSidePenalty                # Extra penalty for breaking on the less
  329.                                 # preferred side of an operator (see BreakArith
  330.                                 # et al below).  Default=10.
  331. ExtraIndentPenalty              # Penalty for indenting by ExtraIndent instead
  332.                                 # of according to nesting order.  If negative,
  333.                                 # -EIP is penalty for *not* using ExtraIndent.
  334.                                 # Default=30.
  335. BumpIndentPenalty               # Penalty for using BumpIndent for identation.
  336.                                 # Default=10.
  337. NoBumpIndentPenalty             # Penalty for not using BumpIndent when it
  338.                                 # ought to have been used.  Default=25.
  339. IndentAmountPenalty             # Penalty for indentation; for a line indented
  340.                                 # N spaces (beyond the indentation of the
  341.                                 # statement as a whole),
  342.                                 #   IP = N*IAP.
  343.                                 # Default=0.5.
  344. SameIndentPenalty               # Penalty for indenting two successive lines
  345.                                 # the same even though they belong to different
  346.                                 # nesting levels:
  347.                                 #   foo = x +
  348.                                 #         y *
  349.                                 #         z
  350.                                 # Default=5.
  351. MaxLineBreakTries               # Limit to the number of line breaking
  352.                                 # alternatives to be tried.  Default=5000.
  353. AllOrNoneBreak                  # List of functions for which arguments must
  354. AllOrNoneBreak                  # be written all on one line or all on separate
  355. AllOrNoneBreak                  # lines.  (A given function may have only one
  356. AllOrNoneBreak                  # of this and the following break properties.)
  357. OneSpecialArg   printf          # List of functions like printf for which the
  358. OneSpecialArg                   # first argument is "special", remaining args
  359. OneSpecialArg                   # are uniform.
  360. TwoSpecialArgs  sprintf         # List of functions like fprintf for which the
  361. TwoSpecialArgs  fprintf         # first two arguments are "special".
  362. ThreeSpecialArgs                # List of functions for which the first three
  363. ThreeSpecialArgs                # arguments are "special".
  364. BreakArith                      # Options string for how to break lines at
  365.                                 # arithmetic operators.  One or more of:
  366.                                 #   L  Break on left side of operator.
  367.                                 #   R  Break on right side of operator.
  368.                                 #   H  Same as L, but use "hanging" indent.
  369.                                 #   N  No breaking.
  370.                                 #  L>R Break either way, L preferred (or R<L).
  371.                                 #  R>L Break either way, R preferred (or L<R).
  372.                                 #  L=R Break either way equally (or LR).
  373.                                 #   A  (with above) Use all-or-none breaking.
  374.                                 # Default is R.
  375. BreakRel                        # Same for relational ops (==, <, etc.)
  376. BreakLog                        # Same for logical operators && and ||
  377. BreakDot                        # Same for dot operators . and ->
  378. BreakAssign                     # Same for assignments.
  379. For_AllOrNone                   # 1 or default=all-or-none breaking of the
  380.                                 # three clauses of a "for" statement.  0=plain.
  381. # COMMENTS AND BLANK LINES
  382. EatComments                     # 1=don't copy any comments into C code
  383.                                 # 2=don't copy comments inside procedures
  384.                                 # 0 or default=keep all comments
  385. SpitComments                    # 1=spit out all comments between procedures
  386.                                 # 0 or default=try to attach comments to code
  387. SpitOrphanComments              # 1=spit out comments whose orig stmts are lost
  388.                                 # 0 or default=attach orphans to nearby code
  389. CommentAfter                    # 1=assume comments follow statements
  390.                                 # 0 or default=assume comments precede stmts
  391.                                 # (in case statements are rearranged.)
  392. BlankAfter                      # 1 or default=assume blank lines follow stmts
  393.                                 # 0=assume blanks precede statements
  394. MajorSpacing                    # Minimum number of blank lines between major
  395.                                 # sections of code, default=2.
  396. MinorSpacing                    # Minimum number of blank lines between minor
  397.                                 # sections, default=1.
  398. FuncSpacing                     # Minimum number of blank lines between global
  399.                                 # functions, default=2.
  400. MinFuncSpacing                  # Minimum number of blank lines separating
  401.                                 # sub-procedures, default=1.
  402. EatNotes # Suppress any notes whose text contains these
  403. EatNotes # words.  Example: "EatNotes Spam [216]"
  404. EatNotes # suppresses notes with "Spam" or "[216]".
  405. # SPECIAL COMMENTS
  406. FixedComment      FIXED # Comment for fixed upper limit of FOR loops:
  407. #   for i:=1 to N do {FIXED}
  408. # will suppress use of a FORLIM for N.
  409. # Case-sensitive; no spaces allowed.
  410. PermanentComment  PERMANENT # Comment for permanently imported modules,
  411. # such as "system".
  412. InterfaceComment  INTF-ONLY # Comment for include files which are to be
  413. # treated as unit interface text, i.e., are
  414. # to be read without generating C code.
  415. EmbedComment      EMBED # Comment for embedded C code in Pascal:
  416. #   {EMBED
  417.                                 #   printf("stuffn");
  418.                                 #   }
  419. # Use [ ] for curly braces within embedded
  420. # code.  May appear in any context where
  421. # comments are used.
  422. SkipComment       SKIP # Comment for code to skip in p2c only:
  423. #   {SKIP} writeln('Not in p2c'); {NOSKIP}
  424. NoSkipComment     NOSKIP        # Comment for code to skip except in p2c:
  425.                                 #   {NOSKIP writeln('Only in p2c'); }
  426. # Can be used in if-then-else fashion:
  427. #   {SKIP} foo; {NOSKIP bar; }
  428. SignedComment     SIGNED        # Type annotation: var c : {SIGNED} char;
  429. UnsignedComment   UNSIGNED      # Type annotation: type uc = {UNSIGNED} char;
  430. # STYLISTIC OPTIONS
  431. ExtraParens                     # 1=use many parentheses for readability,
  432.                                 # 2=use even more parentheses,
  433.                                 # 0=use minimal parens,
  434.                                 # default=use nice parens
  435. BreakAddParens                  # 1=always add parens for operators broken
  436.                                 # across lines.  0=never, default=nice parens
  437. ReturnParens                    # 1=write "return (x)"
  438.                                 # 0=write "return x"
  439.                                 # default=omit parens for trivial expressions
  440. SpaceExprs                      # 1=use many spaces in expressions,
  441.                                 # 0=use minimal spaces in expressions,
  442.                                 # default=use nice spacing
  443. ImplicitZero                    # 1=generate "if (x)" rather than "if (x!=0)"
  444.                                 # 0=always generate explicit comparisons
  445.                                 # default=only with strcmp and other idioms
  446. StarIndex                       # 1=always use "*a"
  447.                                 # 0=always use "a[0]"
  448.                                 # default=use "*a" only in common idioms
  449. AddIndex                        # 1=always use "a + n"
  450.                                 # 0=always use "&a[n]"
  451.                                 # default=use "a+n" only in common idioms
  452. StarArrays # 1 or default=write "f(int *a)" for array a
  453. # 0=write "f(int a[10])"
  454. # 2=write "f(int a[])"
  455. StarFunctions                   # 1=write "(*fp)(x,y)" to call thru func ptr
  456.                                 # 0=write "fp(x,y)"
  457.                                 # default=1 unless AnsiC=1
  458. PostIncrement                   # 1 or default=write i++ preferentially
  459.                                 # 0=write ++i preferentially
  460. CaseSpacing                     # Number of blank lines between CASE sections,
  461.                                 # default=0.
  462. CaseTabs                        # 0 or default=put each CASE on its own line.
  463.                                 # Else this is an amount by which to space
  464.                                 # cases on same line, either +n or *n in the
  465.                                 # style of ConstIndent.
  466. CaseLimit                       # Maximum number of options in a CASE subrange
  467.                                 # that will be expanded out in-line; more than
  468.                                 # this moves to an "if" in the default clause.
  469.                                 # Default=9.
  470. UseCommas                       # 1=use comma operator when convenient
  471.                                 # 0=do not use comma operator
  472.                                 # default=use comma operator when necessary
  473. UseReturns                      # 1 or default=introduce "return" statements
  474.                                 # 0=do not rearrange to use "return"
  475. ReturnLimit                     # Need at least this many statements in an
  476.                                 # "if" block before "return" rearrangement;
  477.                                 # default=3
  478. UseBreaks                       # 1 or default=introduce "break"/"continue"
  479.                                 # 0=do not use "break" and "continue"
  480. BreakLimit                      # Need at least this many statements in an
  481.                                 # "if" block before "break" rearrangement;
  482.                                 # default=2
  483. ContinueLimit                   # Need at least this many statements in an
  484.                                 # "if" block before "continue" rearrangement;
  485.                                 # default=5
  486. InfLoopStyle                    # 0 or default=follow the source file
  487.                                 # 1=use "for (;;) ..." for all infinite loops
  488.                                 # 2=use "while (1) ..."
  489.                                 # 3=use "do ... while (1)"
  490. NullChar                        # 1 or default=write '' for null character
  491.                                 # 0=write 0 for null character constant
  492. HighCharInt                     # 1 or default=write '200' as 128 and above
  493.                                 # 0=write all char consts as characters
  494. MixVars                         # 1=mix all vars of same base type: int a,b;
  495.                                 # 0=never mix variables: int a; int b;
  496.                                 # default=mix only adjacent variables
  497. MixTypes                        # 1=mix all var types: int a,*b,c[5];
  498.                                 # 0=never mix variables with different types
  499.                                 # default=pointers only: int a,*b; int c[5];
  500. MixFields                       # 1=mix bit-fields just like other vars
  501.                                 # 0=only one bit-field per declaration
  502.                                 # default=1
  503. MixInits                        # 1=always mix variables with initializers
  504.                                 # 0=never mix variables with initializers
  505.                                 # default=mix with-inits with other with-inits
  506. MainLocals                      # 1 or default=make globals local to main if poss
  507.                                 # 0=globals are always made global
  508. # CODING OPTIONS
  509. InitialCalls # Initial function calls (or other brief C
  510. InitialCalls # statements) to put at front of main program.
  511. InitialCalls # E.g.: InitialCalls setup_buffer()
  512. ExpandIncludes                  # 1 or default=expand include files into output
  513.                                 # 0=convert Pascal include to #include
  514. CollectNest # 1 or default=collect sub-procs, emit at end.
  515. # 0=emit sub-procedures one by one; this will
  516. #   produce bad code but is useful with
  517. #   ExpandIncludes=0.
  518. ShortCircuit                    # 1=use &&, 0=use & for boolean AND, also OR.
  519.                                 # default=1 for Turbo/HP-UX, 0 for HP Pascal
  520. #   may be overridden by {$B} / $partial_eval$
  521. ShortOpt                        # 1 or default=optimize a&b to a&&b if equiv
  522.                                 # 0=always use a&b, depending on ShortCircuit
  523. ElimDeadCode                    # 1 or default=eliminate unreachable code
  524.                                 # 0=leave unreachable code in place
  525. FoldConstants                   # 1=instantiate non-structure const's in-line
  526.                                 #   (applies to int, char, boolean, enum, real)
  527.                                 # 0 or default=use #define's for constants
  528.                                 # 0 causes constant to be completely symbolic;
  529.                                 # default sometimes instantiates if convenient.
  530.                                 # A constant is folded if FoldConstants=1
  531.                                 # either when the const was defined, or when
  532.                                 # it was referenced.
  533. FoldStrConstants                # 1=instantiate string const's in-line, as above
  534.                                 # 0 or default=use #define's for string const's
  535. UseConsts                       # 1=use "const" keyword in C
  536. # 2=use "Const" form even if UseAnyptrMacros=0
  537.                                 # 0=do not use "const" declarations
  538.                                 # default=1 if AnsiC=1 or C++=1
  539. UseUndef # 1=use "#undef" when #defines go out of scope
  540. # 0=do not use "#undef", default=1.
  541. StoreFileNames                  # 1=store file names associated with file vars
  542.                                 # 0=let the system record the name
  543.                                 # default=1 in Turbo Pascal, 0 otherwise.
  544. SqueezeSubr                     # 1 or default=squeeze subranges into char, etc.
  545.                                 # 0=use only short's and int's (or long's).
  546. UseEnum                         # 1=use C "enum" types
  547.                                 # 0=use integers for enumerations
  548.                                 # default=1 unless AnsiC=0
  549. SqueezeEnum # 1=use bytes for small enums, when UseEnum=0
  550. # 0=use shorts always
  551. # default=0 for HP Pascal, 1 otherwise.
  552. CompEnums                       # 1=okay to compare enums directly
  553.                                 # 0=cast enums to ints for comparisons
  554.                                 # default=0 unless AnsiC=1.
  555. Packing                         # 1 or default=fully packed records and arrays
  556.                                 # 0=ignore "packed" keyword
  557.                                 # 2=pack to bytes, but not bits
  558. PackSigned                      # 1=implement packed arrays of signed values
  559.                                 # 0=only pack unsigned arrays
  560.                                 # default=1
  561. SkipIndices                     # Number of vacant array indices allowable,
  562.                                 # default 0.  If 1, then array [1..10] is
  563.                                 # converted to array [11], but array [2..10]
  564.                                 # would be converted as array [9] with offsets.
  565. OffsetForLoops                  # 1=adjust loops where index is always used
  566.                                 #   as, e.g., i-1 by offsetting the index.
  567.                                 # 0=leave them alone.  Default=1.
  568. ForEvalOrder                    # 1=in for x:=y to z, force eval of y before z.
  569.                                 # 0 or default=evaluation order unimportant.
  570. StringLeaders                   # Number of leading '>' placeholder characters
  571.                                 # that can be prepended to a string literal.
  572.                                 # Default is 3.
  573. StringCeiling                   # Maximum size for strings.  Default is 255.
  574.                                 # If > 255, allows some "slop" in strings.
  575.                                 # If < 255, shortens large strings.
  576. StringDefault                   # Size of string declared without [ ] brackets.
  577.                                 # Default is 255.
  578. StringTruncLimit                # Minimum size of strings for which a warning
  579.                                 # is generated when assigned possibly longer
  580.                                 # strings.  These are assignments to check if
  581.                                 # Turbo-like truncation is necessary.
  582.                                 # Default is 80 for Turbo, 0 otherwise.
  583. LongStringSize                  # Smallest string which can be considered
  584.                                 # "arbitrarily long"; default=StringCeiling.
  585. KeepNulls                       # 1=try to preserve null (#0) chars in strings
  586.                                 # 0 or default=ignore them (but warn)
  587. HighCharBits                    # 1=convert "ch >= 128" to "(ch & ~127) != 0"
  588.                                 # 2=convert "ch >= 127" to "(ch & 128) != 0"
  589.                                 # 0=do not use bit ops for high characters
  590.                                 # default=1 only if ch's signed-ness is unknown
  591. StaticFunctions                 # 1 or default=use "static" for private funcs
  592.                                 # 0=don't create static functions
  593. StaticVariables                 # 1 or default=use "static" for private vars
  594.                                 # 0=don't create static global vars
  595. NeedStatic                      # Names of functions or variables which
  596.                                 # need to be declared static despite
  597.                                 # StaticFunctions=0 or StaticVariables=0.
  598. AlwaysCopyValues                # 1=always make a local copy of a parameter
  599.                                 # 0 or default=only if it appears to be changed
  600. VoidArgs                        # 1=write "f(void)" for funcs with no args
  601.                                 # 0=write "f()" for funcs with no args
  602.                                 # default=depends on AnsiC and C++
  603. Prototypes                      # 1=write "f(int a, int b)"
  604.                                 # 2=write "f(int, int)" when possible
  605.                                 # 0=write "f(a, b) n int a, b;"
  606.                                 # default=depends of AnsiC and C++
  607. FullPrototyping                 # 1 or default=use prototypes everywhere
  608.                                 # 0=use prototypes only for forward/extern
  609. ProcPtrPrototypes               # 1 or default=use prototypes for C func ptrs
  610.                                 # 0=always write, e.g., int (*fp)();
  611. CastArgs                        # 1=include argument casts if needed: (double)i
  612.                                 # 0=do not include argument casts (dangerous!)
  613.                                 # default=do not cast if func has a prototype
  614. CastLongArgs                    # 1=include int/long argument casts if needed
  615.                                 # 0=do not cast between int and long
  616.                                 # default=follow CastArgs
  617. PromoteArgs                     # 1=promote e.g. short to int in prototypes
  618.                                 # 0=do not promote in prototypes
  619.                                 # default=only when prototyping forwards only
  620. PromoteEnums # 1=promote enum to int when promoting args
  621. # 0=leave enums alone in prototypes
  622. # default=only when UseEnum=0
  623. StaticLinks                     # 1=use _PROCEDURE (ProcTypeName) for proc ptrs
  624.                                 # 2=use _PROCEDURE but assume only global procs
  625.                                 # 0=use C function pointers, no static links
  626.                                 # default=1 in HP, 0 in Turbo Pascal
  627. VarStrings                      # 1=full support for "var s:string" params
  628. #   and HP Pascal's strmax function
  629.                                 # 0=assume all var s:string's are string[255]
  630.                                 # default=0 always; may need 1 for some
  631.                                 #   HP Pascal programs
  632. VarFiles                        # 1 or default="var f : file" params use &
  633.                                 # 0=pass FILE *'s by value; must not open or
  634.                                 #   close the file within the procedure
  635. AddrStdFiles                    # 1=okay to write "&stdout", etc.
  636.                                 # 0 or default=not okay
  637. CopyStructFuncs                 # 1=write "temp = f(); temp.field"
  638.                                 # 0=write "f().field"
  639.                                 # default=1 unless AnsiC=1
  640. Atan2                           # 1=convert arctan(a/b) to atan2(a,b)
  641.                                 # 0 or default=convert it to atan(a/b)
  642. BitwiseMod                      # 1 or default=convert x mod 16 to x&15
  643.                                 # 0=convert x mod 16 to x%16
  644. BitwiseDiv                      # 1=convert x div 16 to x>>4
  645.                                 # 0 or default=convert x div 16 to x/16
  646. AssumeBits                      # 1=assume args of funcs like na_po2 are
  647.                                 #   within reasonable range; write 1<<x.
  648.                                 # 0 or default=no assumptions; write na_po2
  649. AssumeSigns                     # 1 or default=for e.g. na_lsl, assume
  650.                                 #   "x" is positive, "-x" is negative.
  651.                                 # 0=no assumptions (except for constants!)
  652. AllocZeroNil                    # 1=na_new(p,0) must set p to nil
  653.                                 # 0 or default=not necessary
  654.                                 # 2=not necessary, but print a warning
  655. PrintfOnly                      # 1=don't use puts, putc, etc., in WRITE
  656.                                 # 0=use puts, etc., as well as printf
  657.                                 # default=a pleasing compromise
  658. MixWritelns                     # 1 or default=writeln;writeln=>printf("nn")
  659.                                 # 0=don't mix consecutive writeln stmts
  660. IntegerWidth                    # Default field width for writing integers.
  661.                                 # Default is 1 for Turbo, 12 for HP.
  662. RealWidth                       # Default field width for writing reals.
  663.                                 # Default is 12.
  664. FormatStrings                   # 1=full support for write(string:width)
  665.                                 # 0 or default=':width' only stretches
  666. WhileFgets                      # 1 or default=while (fgets(...)) { ... }
  667.                                 # 0=while (!eof(...)) { fgets(...); ... }
  668. UseGets                         # 1 or default=use gets to read string[255]
  669.                                 # 0=always use fgets (with length checking)
  670. NewLineSpace                    # 1=convert n to ' ' in read(ch)
  671.                                 # 0=leave newlines alone reading characters
  672.                                 # default=0 in Turbo Pascal, 1 otherwise
  673. BuildReads                      # 1=combine x:=f^;get(f) into read(f,x)
  674.                                 # 2=only for text files and files of char
  675.                                 # 0=leave it alone; default=1
  676. BuildWrites                     # 1=combine f^:=x;put(f) into write(f,x)
  677.                                 # 2=only for text files and files of char
  678.                                 # 0=leave it alone; default=1
  679. BinaryMode                      # 1 or default=fopen binary files as, say, "rb"
  680.                                 # 0=fopen binary files as "r"
  681.                                 # 2=fopen binary files as "r" with a warning
  682. ReadWriteOpen # 1=RESET/REWRITE open binary files read/write
  683. # 0=RESET opens read-only, REWRITE write-only
  684. # 2=Open all files (text and binary) read/write
  685. # default=1 in Turbo, 0 otherwise.
  686. OpenMode                        # fopen mode string to use for Pascal open
  687.                                 # statement.  Use a+ if that mode allows
  688.                                 # seeking.  Default=build out of ANSI modes
  689. FileNameFilter # Name of a function to call which converts
  690.                                 # a file name into a form usable by fopen;
  691.                                 # if name must be changed this should return
  692. # a pointer to a static buffer.
  693.                                 # Not used for constant names.  "0"=no filter.
  694. # default=P_trimname for Oregon/Berk, else 0
  695. LiteralFiles # 0=nameless rewrite(f) generates a temp file
  696. # 1=nameless rewrite(f) uses "f" as file name
  697. # 2=like 1 only if f appeared in "program" stmt
  698. # default=2 for Berkeley, else 0.
  699. LiteralFile # A file variable which should be treated as
  700. LiteralFile # if LiteralFiles=1.  If LiteralFiles=2, files
  701. LiteralFile # in program header are added to this list.
  702. FullStrWrite                    # 1=full implementation of strwrite(s,i,j,...)
  703.                                 # 0=ignore "j" variable and other issues
  704.                                 # default=assign "j", assume not mid-string
  705.                                 # 2=like default, but issue a warning
  706. FullStrRead                     # 1 or default=full impl of strread using "%n"
  707.                                 # 0=fake the value of "j"
  708.                                 # 2=like default, but issue a warning
  709. SetBits                         # Number of bits to use in each "long" of a set
  710.                                 # default=LongSize if defined, else 32
  711. DefaultSetSize                  # Default size of un-typed set constants;
  712.                                 # default default=256 for VAX, else 8192
  713. SmallSetConst                   # 0=write small-set literals like "1<<2|1<<4"
  714.                                 # 1=write them like "0x14"
  715.                                 # 2=write them like "20"
  716.                                 # -1=do not use small-sets at all
  717.                                 # default=-1 if SetBitsName defined, else 1
  718. BigSetConst                     # (analogous to SmallSetConst for big sets)
  719. LeLeRange                       # 1=write "j in [1..10]" as "1<=j && j<=10"
  720.                                 # 0 or default=write ... as "j>=1 && j<=10"
  721. UnsignedTrick                   # 1 or default=write "(unsigned)i <= 10"
  722.                                 # 0=leave "i >= 0 && i <= 10" alone
  723. UseIsAlpha                      # 1 or default=use "isalpha", "isdigit", etc.
  724.                                 # 0=use plain comparisons
  725. UseIsSpace                      # 1=convert "c==' '" to "isspace(c)"
  726.                                 # 0 or default=leave it alone
  727. UseStrncmp # 1=use strncmp to compare packed array of char
  728. # 0=use memcmp, same as for all other arrays
  729. # default=1
  730. # NAMING CONVENTIONS
  731. CodeFileName      %Rs.c         # Name of .c output file for a program,
  732.                                 # %s=input file name.
  733. ModuleFileName    %_S.c         # Name of .c output file for a module,
  734.                                 # %s=input file name, %S=module name.
  735. HeaderFileName    %_S.h         # Name of .h output file for a module,
  736.                                 # %s=input file name, %S=module name.
  737. HeaderFileName2                 # If defined, different format to use when
  738.                                 # generating #include's, otherwise same.
  739.                                 # May be quoted as in IncludeFrom.
  740. LogFileName       %RS.log       # Name of log file name for -V mode.
  741.                                 # %s=input file name, %S=output file name.
  742. IncludeFileName                 # Format for translating Pascal include-file
  743. # names.
  744. SymCase                         # 1 or default=preserve case of Pascal idents,
  745.                                 # 0=convert all Pascal idents to lower case
  746. SymbolFormat                    # Format for C identifiers derived from
  747.                                 # Pascal ones; default=%s.  The following
  748.                                 # specific formats override this one.
  749.                                 # %s=original Pascal identifier,