* contrib/dot/pp.prg
+ Added PP_PreProText( cText [, acLines ] ) returns the pre-process text and optional file asLines with pre=processed lines.
+ Added PP_RunText( cText, [bPreProcess], [aParmas] ) returns the return value of executed code. bPreProcess defaults to .T.
* Enhanced PP_Run( cFile [, aParams] ) to accept optioanl Array with Paramaters.
! Minor correction in NextExp().
* contrib/dot/prgscrpt.prg
* Rewrote sample to demonstarte new simpler wrapper functions:
* contrib/dot/pp.prg
* Renamed PP_ProcessLine() to PP_PreProLine() and PP_ProcessFile() to PP_PreProFile() to allow 10 chars uniqueness.
* Changed STATIC ExecuteMethod() to PP_ExecMethod() and STATIC ExecuteProcedure() to PP_ExecProcedure()
to allow call from external modules, while preserving name space, and 10 chars uniqeness.
* Removed STATIC from RP_*_Err() to allow calls from external modules.
* Changed PP_CompileLine() to accept array of compiled procedures, instead of using a static.
This allows thread safety, and support calls from external modules.
* Changed RP_Run_Err() to accept 2nd parameter the Compiled Procedures Array, and 3rd parameter Module Name.
This allows thread safety, and support calls from external modules.
+ Added PP_RunInit() to support initialization for Interpreter mode from external modules.
+ Added #ifdef __HARBOUR_ #include "pp_harb.ch" to allow Clipper to compile pp.prg.
* contrib/dot/rp_run.ch
* Changed ExecuteMethod() calls to PP_ExecMethod()
+ contrib/dot/pp_harb.ch
+ Added external file holding Harbour specific code that Clipper could not compile.
+ contrib/dot/prgscrpt.prg
+ Added sample to demonstrate PP interpreter embeded in a small prg to run prg driven scripts.
* contrib/dot/pp.prg
* Renamed Main() to PP_Main(), ProcessFile() to PP_ProcessFile() and ProcessLine() to PP_ProcessLine()
* Qualified all "private" functions/procedures with STATIC.
* contrib/dot/pp.prg
* Few minor corrections to NextExp()
! Fixed generation of compiled rules results to always have marker place holders, even if no results exist.
+ Added TraceLog() message about repeatble results for non optional markers.
* Updated burned-in rules for FiveWin.ch with newly generated rules.
+ Added few #ifdef FW to better support compilation with \fwh\samples\buildh.bat
+ Added #include "fwextern.ch" (#ifdef FW) to force link most FW modules.
/* PP, if built like this:
BUILDH pp -dFW
(note -dFW) will produce PP.exe which will run most \fwh\samples\*.prg
Test like this:
PP Tutor01 -R
etc... :-)
*/
* contrib/dot/pp.prg
! Fixed support for '$' in NextToken() and NextExp()
+ Added nAtSkipStr() to exclude content of strings when searching for ';'
! Fixed Multi Line logic to use nAtSkipStr() instead of At()
+ Added infile C versions for NextToken() and NextIdentifier()
+ Added precompiled rules for FiveWin.ch (Harbour)
+ Added precompiled rules for RP_Run.ch.
* source/compiler/genc.c
+ Added few #include files to generation of inline C.
* contrib/dot/pp.prg
* Few corrections to NextToken() and CompileRule() to match Clipper behaviour regrding decimal point, and decimal numbers.
* source/pp/ppcore.c
- Removed unused variable as per compiler warning.
* source/vm/hvm.c
! Fixed HB_P_POPFIELD and HB_P_POPVARIABLE to NOT pop top stack element pre-maturely.
Item is now pop only after assignment took place. This fixes problem where the FieldPut rutine had to use the stack,
thus overriding the assigned item.
* include/hbclass.ch
! Corrected few minor typos.
* source/compiler/harbour.slx
* source/macro/macro.slx
- Commented few unused lines.
* contrib/dot/pp.prg
% Rewrote NextToken() and NextExp().
+ Added NextIdentifier()
! Found that Clipper PP is not processing tokens read by NextToken() and NextExp() so removed recursive support,
and changed logic in ProcessLine() to linear process:
#defines against all valid Identifiers - Expansion forces a resacn from top.
#[x]translates against all tokens - Expansion forces a resacn from top of #defines.
#[x]command agains the first token - Expansion forces a resacn from top of #defines.
! Corrected and refined many aspects of Interpreter mode.
+ Added ExecuteMethod() and support for OO syntax.
+ Added support for -I<includepaths...> command line switch.
* contrib/dot/rp_run.ch
+ Added support for OO syntax.
* contrib/dot/pp.txt
* Updated documentation.
* include/hbclass.ch
% Removed many redundant rules (recently added for OO integrity checks).
/* Found the PP problem that stopped me from implementing this optimized form before.
It seems the PP has a problem with "[" follwing a an identifier without a space prefix like:
#command TEST[([<param,...>])]
It seems to work OK like this:
#command TEST [([<param,...>])]
*/
* include/hbclass.ch
! Fixed declaration support for OnError() METHODS
! Fixed support for Methods having space prefixing the "( ... )" in the method implementation.
+ Refined #error messages to report the Class Name .
* source/pp/ppcore.c
* Removed recently added but not required support of #define expansion in #error directive.