* contrib/dot/pp.prg
! Added logic to support multi-word stoppers needed by multi-word restricted list, like
[ <lClick: ON CLICK, ON LEFT CLICK> <uLClick> ]
/* Only 1 known error remains in processing of fwh/samples/fwbrow.prg */
* include/hbclass.ch
* Temprarily removed \ preceding < of not existing match markers, in nested # directive in result.
/* Need to be readded once PP is fixed. */
Tested to correctly pre-process FiveWin code, sample used: FWBrow.prg
which uses many of the FiveWin classes.
Reports of errors/incorrect pre-processing will be appreciated.
* contrib/dot/pp.prg
! More corrections and refinments in pre-processing
* Improved handling of command line parameters (no longer requires -P, -CCH doesn't require -U)
! Corrected handling of file extension.
* include/hbclass.ch
* Corrected <MethodName> to \<MethodName> when result marker not a match marker.
* Corrected <params,...> to <param> (result marker used match marker format).
* contrib/dot/pp.prg
! Fixed few more associations within NextExp()
+ Added logic to auto create vars refernced in command line.
/* Now the DOT prompt is much more functional, in both Clipper and Harbour. */
* contrib/dot
! contrib/dot/pp.prg
! Fixed bug with processing of #include within #ifdef
! Fixed handling of unterminated strings crossing file read buffer boundaries.
! Fixed association of := and -> within NextExp()
/* I'm now able to PP my largest prg without any difference from Clipper (other then minor spacing
differences). */
environment, written in the Clipper language.
The pre-processor is speced to be 100% Clipper/Harbour compatible, though
further testing is needed. It supports all of the Clipper PP Directives, Match
Markers, and Result Markers. It utilizes a much more aggresive compilation of the
PP rules, and thus uses a much simpler "interpreter" and output algoritems.
This file also offers a "DOT" prompt environment which can execute most of
the Clipper/Harbour syntax and supports all of the pre-processor directives
thus supporting any user defined commands.
Current exceptions are statements like:
LOCAL, STATIC, PRIVATE PUBLIC, FUNCTION PROCEDURE etc.
as well as flow control constructs like IF,ELSE,END,WHILE,CASE,FOR,NEXT etc.
This is a very early stage of the "DOT" environment, but it does demonstrate
the architecture, and already provides the core functionality.
The "DOT" mode, automatically loades rp_dot.ch to implement additional commands
on top of the built in rules (burned-in Clipper std.ch compatible).
Usage:
PP [PrgName] [-P][-U][-CCH][-DE|M|P]
PrgName - Source file (PRG) to compile
-P - Will produce a PP$ file, which is the exact equivalent of the PPO file.
-U - Will excluse the burned-in standard rules
-D - Will produe debug trace information when folowed by E, M, or P
E - Will trace the Expression parser
M - Will trace the rule Matching system.
P - Will trace the outPut system.
-CCH - Will produce a .CCH file which is a compiled version of any rules
compiled. This flag *should* be used with the -U flag.
If no parameters are provided, the program will enter the "DOT" mode.
I hope this file can provide thise intersted with a better understanding of the
Clipper Pre-Processor structure and logic.