* include/hbapi.h
+ Added #define HB_MAX_MACRO_ARGS 16
* source/vm/hvm.c
* source/vm/macro.c
+ Added support for nested HB_P_MACROPUSHARG
* contrib/dot/pp.prg
- Removed bSplit in PP_PreProLine(). Instead added logic to split the line unless line is a directive.
* utils/hbpp/hbpp.c
* Commented an exit() call in hb_compGenError() to continue processing after an error just like Harbour does.
* include/hbapi.h
+ Added 2nd parameter BOOL bArg to hb_macroGetValue()
* include/hbexpra.c
+ Added global BOOL hb_exp_bArgList = FALSE;
* include/hbexprb.c
+ Added logic to generate HB_P_MACROPUSHARG rather than HB_MACROPUSH when pushed macro is a function call argument.
* include/hbpcode.h
* source/compiler/genc.c
* source/compiler/hbfix.c
* source/compiler/hbpcode.c
+ Added new HB_P_MACROPUSHARG
* source/macro/macro.y
+ Added logic to generate an error if macro expression is list, unless servicing an HB_MACROPUSHARG.
* source/vm/hvm.c
+ Added support for new HB_P_MACROPUSHARG calling hb_macroGetValue() with TRUE for bArg.
* source/vm/macro.c
+ Added 2nd parameter BOOL bArg to hb_macroGetValue() to signify servicing of HB_P_MACROPUSHARG.
* contrib/dot/pp.prg
+ Added bSplit 4th paramater to PP_PreProLine() defaulting to .T.. - Calls from PP_PreProFile() set it to .F..
* contrib/dot/pp.prg
* Changed PP_Main() to STATIC Main() to have a Main procedure for build that require a MAIN yet avoid conflict if linked with a prg including a MAIN.
* contrib/dot/pp_harb.ch
* Wrapped a Windows specific code within #ifdef WIN.
/* Thanks to input from Toma Zupan. */
* source/pp/ppcore.c
! Added a BOOL 2nd parameter to isExpres() to flag a LIST MP. This fixes problem with matching a list exp with an empty component.
* contrib/dot/pp.prg
* Added support fort '|' as a continuation token (as in Clipper).
* include/hbclass.ch
- Commented out 3 rules used for VO OO compatibility that are TOO generic, and match unexpected input.
* source/pp/ppcore.c
- Recommented out test for continuation token at the end of an Expression in isExpres() (after correcting cause for prior reinstatment).
* contrib/dot/pp.prg
+ Added #ifdef WIN to support using Windows MessageBox() instead of Alert(), use BLD pp -dWIN to activate.
* contrib/dot/pp_harb.ch
+ Minor revision in TInnterpreter() class.
+ Added wrapper for MessageBox()
* contrib/dot/rp_run.ch
+ Added #ifdef #command to translate
* contrib/dot/pp.prg
+ PP_RunArray( asLines, aParams )
+ PP_Exec( aProcedures, aInitExit, nProcId, aParams )
* Modified all PP_RunXXXX() to use PP_Exec()
* RP_Comp_Err() now repports source line and line number with the sysntax error.
* contrib/dot/pp_harb.ch
+ Added Tinterpreter() class
METHOD New()
METHOD AddLine( cLine )
METHOD SetScript( cText )
METHOD Compile()
METHOD Run()
METHOD RunFile( cFile, aParams, cPPOExt, bBlanks ) INLINE PP_Run( cFile, aParams, cPPOExt, bBlanks )
METHOD ClearRules()
METHOD InitStdRules()
METHOD LoadClass()
METHOD LoadFiveWin()
* contrib/dot/prgscrpt.prg
* Modified to demonstrate TInterpreter() syntax.
* include/hbapi.h
* source/vm/arrays.c
* Fixed bug, in hb_stackArrayFromParams() and modified to accept a frame base parameter.
* source/vm/arrayshb.c
+ Added HB_APARAMS() PRG wrapper to hb_stackArrayFromParams() returning array with passed parameter of the function calling HB_APARAMS()
* source/rtl/do.c
* Added required frams base parameter in calls to hb_stackArrayFromParams(). This fix population of oErr:Args if error occurs.
* 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.
* 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.
* contrib/dot/pp.prg
* contrib/dot/rp_run.ch
! Few corrections to Pre Processor, and Interpreter.
* include/hbclass.ch
+ Added support for METHOD implementations without requiring the CLASS Clause.
+ Added support for METHOD implementations without requiring the "()" if no parameters needed.
* contrib/dot/rp_run.ch
* contrib/dot/pp.prg
% Optimozed and improved handling of IF [ELSEIF] [ELSE] ENDIF in Interpreter mode.
% Optimozed and improved handling of DO CASE [CASE] [OTHERWISE] END[CASE] in Interpreter mode.
+ Added support for FOR [LOOP] [EXIT] NEXT to Interpreter mode.
+ Added support for [DO] WHILE [LOOP] [EXIT] END[DO] to Interpreter mode.
+ Added support for file statics to Interpreter mode.
+ Added supprt for Command-Line Parameters to Interpreter mode.
/* PP "FileName Param1 ParamN" -r */
* tests/stripem.prg
! Resolved missing Default() and ToChar()
* contrib/dot/pp.prg
* contrib/dot/rp_run.ch
+ Added support for initializers for PRVATE, PUBLIC, LOCAL, STATIC
+ Added support for Declared Parameters and PARAMETRS.
+ Added support for STATIC Procedures & Functions (will not be seen by modules called by DO <filename>.prg and vice-versa.
+ Added support for INIT and EXIT procedures.
* contrib/dot/pp.prg
* Completed management of Variable Scoping.
* Modified rest of Error Handlers to check type of :Args (Harbour bug).
* contrib/dot/test.prg
+ Added test of private value after function call
* contrib/dot/pp.prg
* Improved managment of variable scoping.
/* Appears to work correctly when compiled with Clipper, but is incorrect under Harbour, because
__MXRelease() is not releasing memvars as it should. */