* 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. */
* contrib/dot/pp.prg
+ Added CompileNestedBlocks() #ifdef __CLIPPER__, because Clipper's Macro Compiler can *not* compile nested blocks.
/* Clipper macro compiler can't compile literal blocks which contain nested blocks. This is needed by #commands like:
INDEX ON ... TO ...
Now PP will pre-compile such nested blocks. This makes PP fully functional when compiled with Clipper too :-) */
* harbour/source/rdd/dbfcdx1.c
! Moved few declarations above the HB_TRACE() lien, to fix compilation errors.
* contrib/dot/pp.prg
+ Started support for interpreting prg files.
* contrib/dot/rp_dot.ch
+ Added #command for stealing END
/* PP can alreay "Run" simple prgs :-). It actually support most Clipper commands.
It does *not* support LOCAL/STATIC/PRIVATE/PUBLIC, but any refference to a variable will create it as PRIVATE.
It does not (yet) support creation of FUNCTIONs/PROCEDUREs but will execute any built-in, or linked, prodecure/function.
It does not (yet) support WHILE and FOR loops.
It can execute code like this:
//------------------------------//
CLS
Alert( "Testinf PP as Interpreter... " )
USE test
IF ! File( "test" + IndexExt() )
INDEX on FIELD->First TO First
ELSE
SET INDEX TO First
ENDIF
GO TOP
cName := FIELD->First + FIELD->Last
IF cName == FIELD->First + FIELD->Last
? "Ok"
ELSE
? "Err"
ENDIF
DO CASE
CASE cName == First // Not exact!
? "Err"
CASE cName = First // But still equal
? "Ok"
OTHERWISE
? "Err"
ENDCASE
REPLACE First WITH "From PP"
? FIELD->First
//------------------------------//
To have PP execute a PRG use: PP filename -R
*/
* contrib/dot/pp.prg
! Fixed order of production in multi line result, where some of the resulting lines are re-processed
+ Added support for IF, ELSE, ELSEIF, ENDIF, DO CASE, CASE, OTHERWISE, ENDCASE
! Fixed cursor position in Dot prompt to simulate running program cursor position.
* contrib/dot/rp_dot.ch
! Fixed literal coordinates to use MaxRow() and MaxCol()
+ Added #command CLS to only clean the work region.
+ Added #commands to "steal" handling of IF, ELSE, ELSEIF, ENDIF, DO CASE, CASE, OTHERWISE, ENDCASE
* contrib/dot/pp.prg
* Changed all extensions to lower case (.prg, .pp$, .cch ).
* Changed Chr(13) + Chr(10) to CRLF which is #defined as HB_OsNewLine() if __HARBOUR__ is defined.
* Changed literal size of buffer 16384 to PP_BUFFER_SIZE which is #defined as 16384
/* Could Linux users please report results... */
* make_gnu.bat
! Fixed maker to make -r
* Added %HARBOURDIR% and removed trailing slash from HB_BIN_INSTALL, HB_LIB_INSTALL and HB_INC_INSTALL
* contrib/dot/pp.prg
* Minor corrections to stringifys
* utils/hbtest/hbtest.prg
* Commented out RddSetDefault( "DBFCDX" )
* contrib/dot/pp.prg
* Added support for leading and traing WS before/after #.
* Extra logic for [...] within # directives in ProcessFile()
* Fixed logic of // and && terminating at EOF.