* source/compiler/harbour.sly
! Optimized __GETA() support, and changed it to be implementated identical to Clipper.
/* Clipper passed a bGet Block which refrences the Base Array Variable and not the Variable itself.
Clipper passes NIL instead of bGet block if the Base Array is MACROVAR or MACROTEXT.
Clipper does not optimize "&Macro" to Macro, but Harbour does! */
* source/rtl/tgetint.prg
* __GETA() Changed 1st parameter aVar to bGetArray and logic to get the Base Array if bGetArray is NIL
/* Optimized to not use macro if possible (most cases) even if the GetArray is a macro. */
* tests/testget.prg
+ Added additional test.
* source/compiler/harbour.c
* Exported: hb_compFieldGetPos() and hb_compMemvarGetPos()
* source/compiler/harbour.sly
! Changed __GET() support to be parameter compatible with Clipper
* include/hberrors.h
* source/compiler/hbgenerr.c
+ Added Error: "GET contains complex macro"
* source/pp/pptable.c
- Removed bSetGet from rule of GET, PP output now Clipper compatible.
* source/vm/memvars.c
+ Added HB_FUNC( __ISMV ) // Return .T. if passed string as a Memory Variable.
* source/rtl/tgetint.prg
! Fixed __GET() to be 100% parameter compatible with Clipper.
! When 1st parameter (bSetGet) is NIL the bSetGet will be built internaly,
not using macro in most cases, even if the Get Variable itslef is a macro :-)
/* Ryszard, this will further break Flex support for GET, but makes __GET() 100% Clipper compatible as you suggested.
Please note, that Clipper does *NOT* pass a bSetGet *only* when the Get Var is a *simple* *non* declared Variable.
Declared Variables in this context are: MEMVAR, FIELD, LOCAL, and STATIC. For all of those, bSetGet *is* generated!
Clipper also generates bSetGet for "Complex Variables", i.e. Aliased Variables, Object Data, etc.! */
* source/compiler/harbour.sly
+ Added support for early macro of expansion declared symbol for simple macro expression within CodeBlock (Like Clipper).
* source/rtl/tgetint.prg
! Corrected creation of bSetGet if uVar == NIL, to avoid compile error:
"Code block contains both macro and declared symbol references".
* include/hberrors.h
+ Added: #define HB_COMP_ERR_BLOCK 47
* source/compiler/hbgenerr.c
+ Added Error: "Code block contains both macro and declared symbol references"
* source/compiler/harbour.c
* Made public: hb_compLocalGetPos() and hb_compStaticGetPos()
* source/compiler/harbour.slx
+ Added: char * hb_comp_SLX_LastBlock( BOOL bReset )
* source/compiler/harbour.sly
+ Added logic to support Early Expansions of Macro within CodeBlock unless parenthesized.
+ tests/tstblock.prg
+ New test of Early/Late expansion of Macros within CodeBlocks.
* source/compiler/harbour.sly
+ Added rule to accept Get and GetA as FunCall
* source/compiler/harbour.y
+ Added support for pseudo function _GET_()
* source/compiler/harbour.l
+ Added _GET_(...) => __GET(...)/__GETA(...) logic from harbour.sly
* source/macro/macro.slx
* Corrected YY_DECL #define (Thanks John)
* source/rtl/tget.prg
* include/hbextern.ch
- Removed no longer needed _GET_()
* source/compiler/harbour.sly
+ Added support for extended parameters to __GET() and __GETA()
! Corrected 2nd parameter of __GETA() to reflect only the Base Array Name.
* source/rtl/tget.prg
! Added support for :SubScript in __GETA()
* include/hbextern.ch
- Removed _GET_
+ Added __GETA
* source/compiler/harbour.sly
! Optimized _GET_ support.
+ Added support for GET of ObjectData and ObjectData ArrayIndex.
* source/rtl/tget.prg
+ Added method ParsePict() and logic to support dynamic modification of the picture by altering :Picture as in Clipper.
* tests/testread.prg
+ Added line to demonstrate GET of ObjectData and dynamic modification of a PICTURE clause.
* source/compiler/harbour.slx
+ Added support for pseudo function _GET_(...)
* source/compiler/harbour.sly
+ Added support for pseudo function _GET_(...) to be converted into appropriate __GET(...) or __GETA(...)
* source/rtl/tget.prg
+ Added __GETA() to correctly support early binding of Array Element Index of GET
* tests/testread.prg
+ Added code to test correct (early) binding of Array Element Index of GET
* source/compiler/genc.c
* source/compiler/genhrb.c
* source/compiler/genjava.c
* source/compiler/genobj32.c
* source/compiler/harbour.c
* source/compiler/harbour.l
* source/compiler/harbour.slx
* source/compiler/harbour.sly
* source/compiler/harbour.y
- Removed License Exception from core compiler files that are not part of HVM or HRL
/* Dave, could you please verify this is correct. */
* source/compiler/harbour.l
! Corrected definition of _PROCREQ_()
* tests/testdecl.prg
- Removed 1 line of unspported syntax.
* source/macro/macro.slx
* source/compiler/harbour.slx
% Greatly optimized, much simplified, smaller, and faster.
! Converted all "non conventional" macros to functions.
* source/compiler/simplex.c
% Greatly optimized, now as fast as Flex based lexer.
! Converted all "non conventional" macros to functions.
+ Added support for predefind match pattern, {WS} (White Space), in KEYWORDS and WORDS.
+ source/compiler/harbour.sly
* Same as harbour.y, excluding un-needed support for reserved words used as identifiers.
/* Harbour.slx works with either harbour.y or harbour.sly, but harbour.sly creates smaller harbour.exe. */
* hb_slex.bc
* Modified to use harbour.sly