13.1 The Pascal preprocessor
`gpcpp' is based on the C preprocessor, so it does everything
`cpp' does (see section `cpp' in The cpp manual) and some more.
In particular:
- Comments like `cpp' does, but within `{ ... }'
and `(* ... *)', also after `//' if
`delphi-comments' is active, never within `/* ... */'.
Also mixed comments (`{ ... *)', `(* ... }') if
enabled (`mixed-comments') and nested comments (e.g.
`{ ... { ... } ... }') if enabled
(`nested-comments')
- Macros and conditionals like `cpp' does, but both case
sensitive and insensitive ones; `no-macros' to turn macro
expansion off (e.g., for BP compatibility)
- `ifopt' for short and long options
- Include files like `cpp' does, but also with
`{$I ...}' (BP style), which allows the file name
extension to be omitted
- Recognize Pascal strings (to avoid looking for comments and
directives within strings) enclosed in single (like Standard Pascal)
or double quotes (like C).
- Option handling, sharing tables in `gpc-options.h' with
the compiler:
- Default option settings
- Options can imply other options (e.g.,
`borland-pascal' -> `no-macros' etc.)
- Short compiler directives
- Short directive `W' (warnings) is disabled in
`borland-pascal' and `delphi' because it has another
meaning there
- Compiler directives (`{$...}' or
`(*$...*)'):
- pass them through, so the compiler can handle them
- keep track of them for `ifopt'
- handle those that affect the preprocessor (e.g., about
comments)
- allow comments within compiler directives if nested comments
are enabled
- local directives
- case insensitive
- Slightly Pascal-like syntax for conditional compilation
(`not' -> `!', `and' -> `&&',
`or' -> `||', `xor' -> `!=',
`shl' -> `<<', `shr' -> `>>',
`False' -> `0', `True' -> `1',
`<>' -> `!=', `=' -> `==')
- Line directives like `cpp' does, but recognize BP style
(`#42' or `#$f0') character constants and don't confuse
them with line directives (the latter seem to always have a space
after the `#')
This document was generated
by Frank Heckenbach on May, 10 2002
using texi2html