* contrib/dot/pp.prg
* contrib/dot/pp.txt
* contrib/dot/pp_harb.ch
* Synched with source of RC-2 of xBaseScript ( http://SourceForge.net/Projects/xBase-Script )
120 lines
4.6 KiB
Plaintext
120 lines
4.6 KiB
Plaintext
Command line switches and syntax.
|
|
|
|
|
|
PP filename[.ext] [-CCH] [-D<id>] [-D:E] [-D:M] [-D:P] [-H] [--help][-I<path>]
|
|
[-P] [-R] [-STRICT] [-U[<ch-file>]]
|
|
|
|
-CCH = Generate a .cch file (compiled command header).
|
|
-D<id> = #define <id>.
|
|
-D:E = Show tracing information into the Expression Scanner.
|
|
-D:M = Show tracing information into the Match Engine.
|
|
-D:P = Show tracing information into the Output Generator.
|
|
-H = Syntax and command line switches description.
|
|
--help = Syntax and command line switches description.
|
|
-I<path> = #include file search path(s) (';' seperated).
|
|
-P = Generate .pp$ pre-processed output file.
|
|
-R = Run filename as a script.
|
|
-STRICT = Strict Clipper compatability (clone Clipper PreProcessor bugs).
|
|
-U = Use command definitions set in <ch-file> (or none).
|
|
|
|
PP has 3 personalities which are tied tightly together.
|
|
|
|
1. What is supposed to be 100% Clipper compatible Pre-Processor
|
|
(with some extensions).
|
|
|
|
Executing PP followed by a source file name and the -P switch, will
|
|
create <filename.pp$> which is the equivalent of the Clipper
|
|
<filename.ppo> file.
|
|
|
|
This syntax is:
|
|
|
|
PP filename[.ext] -P
|
|
|
|
In this mode these are the optional command line switches.
|
|
|
|
-CCH = Generate a .cch file (compiled command header).
|
|
-D<id> = #define <id>.
|
|
-D:E = Show tracing information into the Expression Scanner.
|
|
-D:M = Show tracing information into the Match Engine.
|
|
-D:P = Show tracing information into the Output Generator.
|
|
-I<path> = #include file search path(s) (';' seperated).
|
|
-STRICT = Strict Clipper compatability (clone Clipper PreProcessor bugs).
|
|
-U = Use command definitions set in <ch-file> (or none).
|
|
|
|
2. DOT prompt, which suppose to allow most of Clipper syntax. Please
|
|
report any syntax you expect to work, but is not supported.
|
|
|
|
It does support IF [ELSE] [ELSEIF] ENDIF in DOT environment.
|
|
|
|
Executing PP with no source filename will start the DOT prompt mode.
|
|
|
|
In this mode you can execute a single line at a time, by typing the line
|
|
and pressing the [Enter] key.
|
|
|
|
Additionally you may type:
|
|
|
|
DO filename.prg [Enter]
|
|
|
|
So that DOT will "run" the specified source file. This interpreter
|
|
mode is subject to few limitations:
|
|
|
|
a. It does support LOCAL/STATIC/PRIVATE/PUBLIC, but:
|
|
|
|
- STATICs are actually implemented as publics.
|
|
|
|
- LOCALS have scoping of locals but are implemented as privates
|
|
so you can't have a LOCAL and a PRIVATE with the same name.
|
|
|
|
b. Non declared variable are auto-created on assignment in Harbour
|
|
but NOT in Clipper (yet).
|
|
|
|
c. It does support definition and execution of prg defined
|
|
FUNCTIONs/PROCEDUREs.
|
|
|
|
d. It does support ALL control flow structures *except* BEGIN
|
|
SEQUENCE [BREAK] [RECOVER] END SEQUENCE.
|
|
|
|
e. The executed module is compiled with -n option (for now).
|
|
|
|
This will create rp_dot.pp$ compilation trace file.
|
|
|
|
3. Finally, PP is a limited Clipper/Harbour/xBase Interpreter. Subject
|
|
to those same few limitations it can execute most of Harbour syntax.
|
|
Executing PP followed by a source file name and the -R switch, will
|
|
"RUN" that source (it will also create the rp_run.pp$ compilation
|
|
trace file).
|
|
|
|
This syntax is:
|
|
|
|
PP filename[.ext] -R
|
|
|
|
In this mode these are the optional command line switches.
|
|
|
|
-CCH = Generate a .cch file (compiled command header).
|
|
-D<id> = #define <id>.
|
|
-D:E = Show tracing information into the Expression Scanner.
|
|
-D:M = Show tracing information into the Match Engine.
|
|
-D:P = Show tracing information into the Output Generator.
|
|
-I<path> = #include file search path(s) (';' seperated).
|
|
-P = Generate .pp$ pre-processed output file.
|
|
-STRICT = Strict Clipper compatability (clone Clipper PreProcessor bugs).
|
|
-U = Use command definitions set in <ch-file> (or none).
|
|
|
|
a. It does support LOCAL/STATIC/PRIVATE/PUBLIC, but:
|
|
|
|
- STATICs are actually implemented as publics.
|
|
|
|
- LOCALS have scoping of locals but are implemented as privates
|
|
so you can't have a LOCAL and a PRIVATE with the same name.
|
|
|
|
b. Non declared variable are auto-created on assignment in Harbour
|
|
but NOT in Clipper (yet).
|
|
|
|
c. It does support definition and execution of prg defined
|
|
FUNCTIONs/PROCEDUREs as well as parameter passing and return values.
|
|
|
|
d. It does support ALL control flow structures *except* BEGIN
|
|
SEQUENCE [BREAK] [RECOVER] END SEQUENCE.
|
|
|
|
e. The executed module is compiled with -n option (for now).
|