From 4dfc616250e1097a821f57e4a1819f3e8aa6db78 Mon Sep 17 00:00:00 2001 From: Przemyslaw Czerpak Date: Fri, 1 Dec 2006 18:00:53 +0000 Subject: [PATCH] 2006-12-01 18:55 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/bin/pack_src.sh + added packing *.yy[ch] files * harbour/makefile.bc * harbour/makefile.vc * harbour/include/hbcomp.h * harbour/include/hbcompdf.h * harbour/include/hbexpra.c * harbour/include/hbexprb.c * harbour/include/hbexprc.c * harbour/include/hbexprop.h * harbour/include/hbpp.h * harbour/source/common/expropt1.c * harbour/source/common/expropt2.c * harbour/source/compiler/Makefile * harbour/source/compiler/complex.c * harbour/source/compiler/harbour.c * harbour/source/compiler/harbour.l * harbour/source/compiler/harbour.y * harbour/source/compiler/harbour.yyc * harbour/source/compiler/harbour.yyh * harbour/source/compiler/hbgenerr.c * harbour/source/macro/macro.y * harbour/source/macro/macro.yyc * harbour/source/pp/ppcore.c + added hb_comp prefix to grammar/lexer compiler public functions to reduce possible conflict with 3-rd party code which may use default yy prefix. ! do not use bison destructors for expressions. Internal bison logic cannot properly detect if expression was used or not in some of our grammar rules and it's possible that some expressions will not be freed and some other freed twice. ! added protection against multiple destructors execution for CBSTART and LITERAL tokens * added small garbage collector for deallocating expressions which were not freed (such situation can happen in syntax errors) % some optimizations in used structures to reduce their sizes + added protection against execution PCODE optimizations for functions which were not cleanly compiled. * harbour/source/rtl/idle.c * use const in nanosec() timeout declaration --- harbour/ChangeLog | 44 + harbour/bin/pack_src.sh | 5 +- harbour/include/hbcomp.h | 3 +- harbour/include/hbcompdf.h | 42 +- harbour/include/hbexpra.c | 103 +- harbour/include/hbexprb.c | 48 +- harbour/include/hbexprc.c | 4 +- harbour/include/hbexprop.h | 8 +- harbour/include/hbpp.h | 5 +- harbour/makefile.bc | 8 +- harbour/makefile.vc | 8 +- harbour/source/common/expropt1.c | 31 +- harbour/source/common/expropt2.c | 138 +- harbour/source/compiler/Makefile | 5 +- harbour/source/compiler/complex.c | 18 +- harbour/source/compiler/harbour.c | 53 +- harbour/source/compiler/harbour.l | 7 +- harbour/source/compiler/harbour.y | 39 +- harbour/source/compiler/harbour.yyc | 2844 +++++++++++---------------- harbour/source/compiler/harbour.yyh | 9 +- harbour/source/compiler/hbgenerr.c | 7 +- harbour/source/macro/macro.y | 4 +- harbour/source/macro/macro.yyc | 4 +- harbour/source/pp/ppcore.c | 7 +- harbour/source/rtl/idle.c | 2 +- 25 files changed, 1490 insertions(+), 1956 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 25a8d7c83a..b0c49014e1 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,50 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2006-12-01 18:55 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/bin/pack_src.sh + + added packing *.yy[ch] files + + * harbour/makefile.bc + * harbour/makefile.vc + * harbour/include/hbcomp.h + * harbour/include/hbcompdf.h + * harbour/include/hbexpra.c + * harbour/include/hbexprb.c + * harbour/include/hbexprc.c + * harbour/include/hbexprop.h + * harbour/include/hbpp.h + * harbour/source/common/expropt1.c + * harbour/source/common/expropt2.c + * harbour/source/compiler/Makefile + * harbour/source/compiler/complex.c + * harbour/source/compiler/harbour.c + * harbour/source/compiler/harbour.l + * harbour/source/compiler/harbour.y + * harbour/source/compiler/harbour.yyc + * harbour/source/compiler/harbour.yyh + * harbour/source/compiler/hbgenerr.c + * harbour/source/macro/macro.y + * harbour/source/macro/macro.yyc + * harbour/source/pp/ppcore.c + + added hb_comp prefix to grammar/lexer compiler public functions to + reduce possible conflict with 3-rd party code which may use default + yy prefix. + ! do not use bison destructors for expressions. Internal bison logic + cannot properly detect if expression was used or not in some of our + grammar rules and it's possible that some expressions will not be freed + and some other freed twice. + ! added protection against multiple destructors execution for CBSTART + and LITERAL tokens + * added small garbage collector for deallocating expressions which were + not freed (such situation can happen in syntax errors) + % some optimizations in used structures to reduce their sizes + + added protection against execution PCODE optimizations for functions + which were not cleanly compiled. + + * harbour/source/rtl/idle.c + * use const in nanosec() timeout declaration + 2006-11-30 03:50 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/include/hbcompdf.h * harbour/source/compiler/harbour.l diff --git a/harbour/bin/pack_src.sh b/harbour/bin/pack_src.sh index b9de84964e..4321ba1152 100644 --- a/harbour/bin/pack_src.sh +++ b/harbour/bin/pack_src.sh @@ -76,8 +76,7 @@ $hb_collect source/Makefile # SOURCE\COMPILER $hb_collect source/compiler/Makefile $hb_collect source/compiler/*.[cylh] -$hb_collect source/compiler/*.sl[xy] -$hb_collect source/compiler/*.simple +$hb_collect source/compiler/*.yy[ch] # SOURCE\DEBUG $hb_collect source/debug/Makefile @@ -94,7 +93,7 @@ $hb_collect source/codepage/*.[ch] # SOURCE\MACRO $hb_collect source/macro/Makefile $hb_collect source/macro/*.[cylh] -$hb_collect source/macro/*.slx +$hb_collect source/macro/*.yy[ch] # SOURCE\PP $hb_collect source/pp/Makefile diff --git a/harbour/include/hbcomp.h b/harbour/include/hbcomp.h index bf45f18571..5cd710cc06 100644 --- a/harbour/include/hbcomp.h +++ b/harbour/include/hbcomp.h @@ -86,8 +86,9 @@ extern void hb_compPCodeTrace( PFUNCTION, HB_PCODE_FUNC_PTR *, void * ); extern void hb_compGenLabelTable( PFUNCTION pFunc, PHB_LABEL_INFO label_info ); -/* compiler PP functions and variables */ extern void hb_compInitPP( HB_COMP_DECL, int argc, char * argv[] ); + +extern int hb_compparse( HB_COMP_DECL ); extern void hb_compParserStop( HB_COMP_DECL ); #define VS_NONE 0 diff --git a/harbour/include/hbcompdf.h b/harbour/include/hbcompdf.h index 39c325b20b..561454434c 100644 --- a/harbour/include/hbcompdf.h +++ b/harbour/include/hbcompdf.h @@ -146,6 +146,7 @@ typedef struct __FUNC ULONG iNOOPs; /* NOOPs Counter */ ULONG iJumps; /* Jumps Counter */ BOOL bLateEval; /* TRUE if accessing of declared (compile time) variables is allowed */ + BOOL bError; /* error during function compilation */ struct __FUNC * pOwner; /* pointer to the function/procedure that owns the codeblock */ struct __FUNC * pNext; /* pointer to the next defined function */ HB_ENUMERATOR_PTR pEnum; /* pointer to FOR EACH variables */ @@ -333,21 +334,23 @@ typedef struct HB_EXPR_ BOOL asLogical; /* logical value */ struct { - char *string; /* literal strings */ - BOOL dealloc; /* automatic deallocate on expresion deletion */ + char *string; /* literal strings */ + BOOL dealloc; /* automatic deallocate on expresion deletion */ } asString; struct { - struct HB_EXPR_ *pMacro; /* macro variable */ - char *szName; /* variable name */ - } asRTVar; /* PUBLIC or PRIVATE variable declaration */ + struct HB_EXPR_ *pMacro; /* macro variable */ + char *szName; /* variable name */ + } asRTVar; /* PUBLIC or PRIVATE variable declaration */ struct { - HB_LONG lVal; /* long value */ - double dVal; /* double value */ - unsigned char bWidth; /* unsigned char used intentionally */ - unsigned char bDec; /* unsigned char used intentionally */ - unsigned char NumType; /* used to distinguish LONG and DOUBLE */ + union { + HB_LONG l; /* long value */ + double d; /* double value */ + } val; + unsigned char bWidth; /* unsigned char used intentionally */ + unsigned char bDec; /* unsigned char used intentionally */ + unsigned char NumType; /* used to distinguish LONG and DOUBLE */ } asNum; struct { @@ -359,16 +362,16 @@ typedef struct HB_EXPR_ } asMacro; struct { - struct HB_EXPR_ *pExprList; /* list elements */ - struct HB_EXPR_ *pIndex; /* array index, others */ + struct HB_EXPR_ *pExprList; /* list elements */ + struct HB_EXPR_ *pIndex; /* array index, others */ } asList; struct { - char *string; /* source code of a codeblock */ + char *string; /* source code of a codeblock */ + USHORT length; + USHORT flags; /* HB_BLOCK_MACRO, HB_BLOCK_LATEEVAL */ struct HB_EXPR_ *pExprList; /* list elements */ HB_CBVAR_PTR pLocals; /* list of local variables */ - USHORT isMacro; /* TRUE=codeblock contains macro expression */ - USHORT lateEval; /* TRUE=late evaluation of macro */ } asCodeblock; struct { @@ -520,6 +523,14 @@ typedef struct _HB_COMP_LEX } HB_COMP_LEX, * PHB_COMP_LEX; +typedef struct _HB_EXPRLST +{ + HB_EXPR Expression; + struct _HB_EXPRLST *pPrev; + struct _HB_EXPRLST *pNext; +} +HB_EXPRLST, * PHB_EXPRLST; + typedef struct _HB_COMP { /* common to macro compiler members */ @@ -528,6 +539,7 @@ typedef struct _HB_COMP /* compiler only members */ PHB_COMP_LEX pLex; + PHB_EXPRLST pExprLst; HB_HASH_TABLE_PTR pIdentifiers; FUNCTIONS functions; diff --git a/harbour/include/hbexpra.c b/harbour/include/hbexpra.c index ba39a74253..0cc905b84d 100644 --- a/harbour/include/hbexpra.c +++ b/harbour/include/hbexpra.c @@ -65,8 +65,6 @@ /* memory allocation */ -#define HB_XGRAB( size ) hb_xgrab( (size) ) -#define HB_XFREE( pPtr ) hb_xfree( (void *)(pPtr) ) /* Table with operators precedence * NOTE: @@ -135,6 +133,69 @@ static HB_CBVAR_PTR hb_compExprCBVarNew( char *, BYTE ); /* ************************************************************************ */ +#if !defined( HB_MACRO_SUPPORT ) +static HB_EXPR_PTR hb_compExprAlloc( HB_COMP_DECL ) +{ + PHB_EXPRLST pExpItm = ( PHB_EXPRLST ) hb_xgrab( sizeof( HB_EXPRLST ) ); + + pExpItm->pNext = HB_COMP_PARAM->pExprLst; + HB_COMP_PARAM->pExprLst = pExpItm; + if( pExpItm->pNext ) + { + pExpItm->pPrev = pExpItm->pNext->pPrev; + pExpItm->pNext->pPrev = pExpItm; + pExpItm->pPrev->pNext = pExpItm; + } + else + pExpItm->pPrev = pExpItm->pNext = pExpItm; + + return &pExpItm->Expression; +} + +static void hb_compExprDealloc( HB_EXPR_PTR pExpr, HB_COMP_DECL ) +{ + if( HB_COMP_PARAM->pExprLst ) + { + PHB_EXPRLST pExpItm = ( PHB_EXPRLST ) pExpr; + + pExpItm->pNext->pPrev = pExpItm->pPrev; + pExpItm->pPrev->pNext = pExpItm->pNext; + if( pExpItm == HB_COMP_PARAM->pExprLst ) + { + if( pExpItm->pNext == pExpItm ) + HB_COMP_PARAM->pExprLst = NULL; + else + HB_COMP_PARAM->pExprLst = pExpItm->pNext; + } + hb_xfree( pExpItm ); + } +} + +void hb_compExprLstDealloc( HB_COMP_DECL ) +{ + if( HB_COMP_PARAM->pExprLst ) + { + PHB_EXPRLST pExpItm, pExp; + pExpItm = pExp = HB_COMP_PARAM->pExprLst; + HB_COMP_PARAM->pExprLst = NULL; + do + { + hb_compExprDelete( &pExp->Expression, HB_COMP_PARAM ); + pExp = pExp->pNext; + } + while( pExp != pExpItm ); + do + { + PHB_EXPRLST pFree = pExp; + pExp = pExp->pNext; + hb_xfree( pFree ); + } + while( pExp != pExpItm ); + } +} + +#endif + HB_EXPR_PTR hb_compExprNew( HB_EXPRTYPE iType, HB_COMP_DECL ) { HB_EXPR_PTR pExpr; @@ -144,8 +205,7 @@ HB_EXPR_PTR hb_compExprNew( HB_EXPRTYPE iType, HB_COMP_DECL ) #if defined( HB_MACRO_SUPPORT ) pExpr = hb_macroExprNew( HB_COMP_PARAM ); #else - HB_SYMBOL_UNUSED( HB_COMP_PARAM ); - pExpr = ( HB_EXPR_PTR ) HB_XGRAB( sizeof( HB_EXPR ) ); + pExpr = hb_compExprAlloc( HB_COMP_PARAM ); #endif pExpr->ExprType = iType; pExpr->pNext = NULL; @@ -157,13 +217,14 @@ HB_EXPR_PTR hb_compExprNew( HB_EXPRTYPE iType, HB_COMP_DECL ) /* Delete self - all components will be deleted somewhere else */ -void hb_compExprClear( HB_EXPR_PTR pExpr ) +void hb_compExprClear( HB_EXPR_PTR pExpr, HB_COMP_DECL ) { -#if defined( HB_MACRO_SUPPORT ) - pExpr->ExprType = HB_ET_NONE; -#else if( --pExpr->Counter == 0 ) - HB_XFREE( pExpr ); +#if defined( HB_MACRO_SUPPORT ) + pExpr->ExprType = HB_ET_NONE; + HB_SYMBOL_UNUSED( HB_COMP_PARAM ); +#else + hb_compExprDealloc( pExpr, HB_COMP_PARAM ); #endif } @@ -172,19 +233,15 @@ void hb_compExprClear( HB_EXPR_PTR pExpr ) void hb_compExprDelete( HB_EXPR_PTR pExpr, HB_COMP_DECL ) { HB_TRACE(HB_TR_DEBUG, ("hb_compExprDelete(%p,%p)", pExpr, HB_COMP_PARAM)); -#if defined( HB_MACRO_SUPPORT ) - if( pExpr && pExpr->ExprType != HB_ET_NONE ) - { - HB_EXPR_USE( pExpr, HB_EA_DELETE ); - pExpr->ExprType = HB_ET_NONE; - } -#else if( pExpr && --pExpr->Counter == 0 ) { HB_EXPR_USE( pExpr, HB_EA_DELETE ); - HB_XFREE( pExpr ); - } +#if defined( HB_MACRO_SUPPORT ) + pExpr->ExprType = HB_ET_NONE; +#else + hb_compExprDealloc( pExpr, HB_COMP_PARAM ); #endif + } } /* Delete all components and delete self @@ -198,7 +255,7 @@ void hb_compExprFree( HB_EXPR_PTR pExpr, HB_COMP_DECL ) #if defined( HB_MACRO_SUPPORT ) pExpr->ExprType = HB_ET_NONE; #else - HB_XFREE( pExpr ); + hb_compExprDealloc( pExpr, HB_COMP_PARAM ); #endif } } @@ -434,7 +491,7 @@ HB_EXPR_PTR hb_compExprNewFunCall( HB_EXPR_PTR pName, HB_EXPR_PTR pParms, HB_COM */ pArg->value.asList.pIndex = NULL; pArg->value.asList.pExprList = NULL; - hb_compExprClear( pArg ); + hb_compExprClear( pArg, HB_COMP_PARAM ); /* Create an array with index elements */ pIndex = HB_EXPR_PCODE1( hb_compExprNewArray, hb_compExprNewList( pIndex, HB_COMP_PARAM ) ); @@ -482,7 +539,7 @@ HB_EXPR_PTR hb_compExprNewFunCall( HB_EXPR_PTR pName, HB_EXPR_PTR pParms, HB_COM { pVar = pBase->value.asList.pExprList; pBase->value.asList.pExprList = NULL; - hb_compExprClear( pBase ); + hb_compExprClear( pBase, HB_COMP_PARAM ); pBase = pVar; } } @@ -933,7 +990,7 @@ static HB_CBVAR_PTR hb_compExprCBVarNew( char * szVarName, BYTE bType ) HB_TRACE(HB_TR_DEBUG, ("hb_compExprCBVarNew(%s)", szVarName)); - pVar = ( HB_CBVAR_PTR ) HB_XGRAB( sizeof( HB_CBVAR ) ); + pVar = ( HB_CBVAR_PTR ) hb_xgrab( sizeof( HB_CBVAR ) ); pVar->szName = szVarName; pVar->bType = bType; @@ -953,7 +1010,7 @@ void hb_compExprCBVarDel( HB_CBVAR_PTR pVars ) { pDel = pVars; pVars = pVars->pNext; - HB_XFREE( pDel ); + hb_xfree( pDel ); } } diff --git a/harbour/include/hbexprb.c b/harbour/include/hbexprb.c index 8d4df025cb..ee6fff624a 100644 --- a/harbour/include/hbexprb.c +++ b/harbour/include/hbexprb.c @@ -66,8 +66,6 @@ /* memory allocation */ -#define HB_XGRAB( size ) hb_xgrab( (size) ) -#define HB_XFREE( pPtr ) hb_xfree( (void *)(pPtr) ) /* Forward declarations */ @@ -284,9 +282,9 @@ static HB_EXPR_FUNC( hb_compExprUseNumeric ) break; case HB_EA_PUSH_PCODE: if( pSelf->value.asNum.NumType == HB_ET_DOUBLE ) - HB_EXPR_PCODE3( hb_compGenPushDouble, pSelf->value.asNum.dVal, pSelf->value.asNum.bWidth, pSelf->value.asNum.bDec ); + HB_EXPR_PCODE3( hb_compGenPushDouble, pSelf->value.asNum.val.d, pSelf->value.asNum.bWidth, pSelf->value.asNum.bDec ); else - HB_EXPR_PCODE1( hb_compGenPushLong, pSelf->value.asNum.lVal ); + HB_EXPR_PCODE1( hb_compGenPushLong, pSelf->value.asNum.val.l ); break; case HB_EA_POP_PCODE: break; @@ -317,7 +315,7 @@ static HB_EXPR_FUNC( hb_compExprUseDate ) hb_compErrorLValue( HB_COMP_PARAM, pSelf ); break; case HB_EA_PUSH_PCODE: - HB_EXPR_PCODE1( hb_compGenPushDate, pSelf->value.asNum.lVal ); + HB_EXPR_PCODE1( hb_compGenPushDate, pSelf->value.asNum.val.l ); break; case HB_EA_POP_PCODE: break; @@ -395,7 +393,7 @@ static HB_EXPR_FUNC( hb_compExprUseString ) case HB_EA_DELETE: if( pSelf->value.asString.dealloc ) - HB_XFREE( pSelf->value.asString.string ); + hb_xfree( pSelf->value.asString.string ); break; } return pSelf; @@ -423,11 +421,12 @@ static HB_EXPR_FUNC( hb_compExprUseCodeblock ) #if defined(HB_MACRO_SUPPORT) HB_EXPR_PCODE1( hb_compExprCodeblockPush, pSelf ); #else - if( !pSelf->value.asCodeblock.isMacro || pSelf->value.asCodeblock.lateEval ) - hb_compExprCodeblockPush( pSelf, TRUE, HB_COMP_PARAM ); - else + if( ( pSelf->value.asCodeblock.flags & HB_BLOCK_MACRO ) && + !( pSelf->value.asCodeblock.flags & HB_BLOCK_LATEEVAL ) ) /* early evaluation of a macro */ hb_compExprCodeblockEarly( pSelf, HB_COMP_PARAM ); + else + hb_compExprCodeblockPush( pSelf, TRUE, HB_COMP_PARAM ); #endif break; } @@ -445,7 +444,7 @@ static HB_EXPR_FUNC( hb_compExprUseCodeblock ) hb_compExprCBVarDel( pSelf->value.asCodeblock.pLocals ); if( pSelf->value.asCodeblock.string ) - HB_XFREE( pSelf->value.asCodeblock.string ); + hb_xfree( pSelf->value.asCodeblock.string ); /* Delete all expressions of the block. */ while( pExp ) @@ -579,12 +578,9 @@ static void hb_compExprCodeblockEarly( HB_EXPR_PTR pSelf, HB_COMP_DECL ) * {|| &variable+1} => &( '{|| &variable+1}' ) */ HB_EXPR_PTR pNew; - char *cStr; hb_compExprCodeblockPush( pSelf, FALSE, HB_COMP_PARAM ); - - cStr = pSelf->value.asCodeblock.string; - pNew = hb_compExprNewMacro( hb_compExprNewString( cStr, strlen( cStr ), FALSE, HB_COMP_PARAM ), 0, NULL, HB_COMP_PARAM ); + pNew = hb_compExprNewMacro( hb_compExprNewString( pSelf->value.asCodeblock.string, pSelf->value.asCodeblock.length, FALSE, HB_COMP_PARAM ), 0, NULL, HB_COMP_PARAM ); HB_EXPR_USE( pNew, HB_EA_PUSH_PCODE ); hb_compExprDelete( pNew, HB_COMP_PARAM ); HB_EXPR_PCODE0( hb_compCodeBlockStop ); @@ -1249,9 +1245,9 @@ static HB_EXPR_FUNC( hb_compExprUseArrayAt ) pExpr = pExpr->value.asList.pExprList; /* the first element in the array */ if( pIdx->value.asNum.NumType == HB_ET_LONG ) - lIndex = ( LONG ) pIdx->value.asNum.lVal; + lIndex = ( LONG ) pIdx->value.asNum.val.l; else - lIndex = ( LONG ) pIdx->value.asNum.dVal; + lIndex = ( LONG ) pIdx->value.asNum.val.d; if( lIndex > 0 ) { @@ -1287,9 +1283,9 @@ static HB_EXPR_FUNC( hb_compExprUseArrayAt ) LONG lIndex; if( pIdx->value.asNum.NumType == HB_ET_LONG ) - lIndex = ( LONG ) pIdx->value.asNum.lVal; + lIndex = ( LONG ) pIdx->value.asNum.val.l; else - lIndex = ( LONG ) pIdx->value.asNum.dVal; + lIndex = ( LONG ) pIdx->value.asNum.val.d; if( lIndex > 0 ) HB_EXPR_USE( pExpr, HB_EA_ARRAY_AT ); @@ -1777,7 +1773,7 @@ static HB_EXPR_FUNC( hb_compExprUseAliasVar ) * NOTE: only integer (long) values are allowed */ if( pAlias->value.asNum.NumType == HB_ET_LONG ) - HB_EXPR_PCODE4( hb_compGenPushAliasedVar, pSelf->value.asAlias.pVar->value.asSymbol, TRUE, NULL, pAlias->value.asNum.lVal ); + HB_EXPR_PCODE4( hb_compGenPushAliasedVar, pSelf->value.asAlias.pVar->value.asSymbol, TRUE, NULL, pAlias->value.asNum.val.l ); else hb_compErrorAlias( HB_COMP_PARAM, pAlias ); } @@ -1831,7 +1827,7 @@ static HB_EXPR_FUNC( hb_compExprUseAliasVar ) * NOTE: only integer (long) values are allowed */ if( pAlias->value.asNum.NumType == HB_ET_LONG ) - HB_EXPR_PCODE4( hb_compGenPopAliasedVar, pSelf->value.asAlias.pVar->value.asSymbol, TRUE, NULL, pAlias->value.asNum.lVal ); + HB_EXPR_PCODE4( hb_compGenPopAliasedVar, pSelf->value.asAlias.pVar->value.asSymbol, TRUE, NULL, pAlias->value.asNum.val.l ); else hb_compErrorAlias( HB_COMP_PARAM, pAlias ); } @@ -2911,17 +2907,17 @@ static HB_EXPR_FUNC( hb_compExprUseEqual ) switch( pLeft->value.asNum.NumType & pRight->value.asNum.NumType ) { case HB_ET_LONG: - HB_EXPR_PCODE1( hb_compGenPushLogical, (pLeft->value.asNum.lVal == pRight->value.asNum.lVal) ); + HB_EXPR_PCODE1( hb_compGenPushLogical, (pLeft->value.asNum.val.l == pRight->value.asNum.val.l) ); break; case HB_ET_DOUBLE: - HB_EXPR_PCODE1( hb_compGenPushLogical, (pLeft->value.asNum.dVal == pRight->value.asNum.dVal) ); + HB_EXPR_PCODE1( hb_compGenPushLogical, (pLeft->value.asNum.val.d == pRight->value.asNum.val.d) ); break; default: { if( pLeft->value.asNum.NumType == HB_ET_LONG ) - HB_EXPR_PCODE1( hb_compGenPushLogical, (pLeft->value.asNum.lVal == pRight->value.asNum.dVal) ); + HB_EXPR_PCODE1( hb_compGenPushLogical, (pLeft->value.asNum.val.l == pRight->value.asNum.val.d) ); else - HB_EXPR_PCODE1( hb_compGenPushLogical, (pLeft->value.asNum.dVal == pRight->value.asNum.lVal) ); + HB_EXPR_PCODE1( hb_compGenPushLogical, (pLeft->value.asNum.val.d == pRight->value.asNum.val.l) ); } break; } @@ -3746,9 +3742,9 @@ static HB_EXPR_FUNC( hb_compExprUseNegate ) if( pExpr->ExprType == HB_ET_NUMERIC ) { if( pExpr->value.asNum.NumType == HB_ET_DOUBLE ) - pExpr->value.asNum.dVal = - pExpr->value.asNum.dVal; + pExpr->value.asNum.val.d = - pExpr->value.asNum.val.d; else - pExpr->value.asNum.lVal = - pExpr->value.asNum.lVal; + pExpr->value.asNum.val.l = - pExpr->value.asNum.val.l; pSelf->ExprType = HB_ET_NONE; /* do not delete operator parameter - we are still using it */ HB_EXPR_PCODE1( hb_compExprDelete, pSelf ); pSelf = pExpr; diff --git a/harbour/include/hbexprc.c b/harbour/include/hbexprc.c index 11535700dc..5f55d6c537 100644 --- a/harbour/include/hbexprc.c +++ b/harbour/include/hbexprc.c @@ -241,7 +241,7 @@ void hb_compExprPushOperEq( HB_EXPR_PTR pSelf, BYTE bOpEq, HB_COMP_DECL ) if( iLocal < 256 && hb_compExprIsInteger( pSelf->value.asOperator.pRight ) ) { - short iIncrement = ( short ) pSelf->value.asOperator.pRight->value.asNum.lVal; + short iIncrement = ( short ) pSelf->value.asOperator.pRight->value.asNum.val.l; if( bOpEq != HB_P_MINUS || iIncrement >= -INT16_MAX ) { @@ -404,7 +404,7 @@ void hb_compExprUseOperEq( HB_EXPR_PTR pSelf, BYTE bOpEq, HB_COMP_DECL ) if( iLocal < 256 && hb_compExprIsInteger( pSelf->value.asOperator.pRight ) ) { - short iIncrement = ( short ) pSelf->value.asOperator.pRight->value.asNum.lVal; + short iIncrement = ( short ) pSelf->value.asOperator.pRight->value.asNum.val.l; if( bOpEq != HB_P_MINUS || iIncrement >= -INT16_MAX ) { diff --git a/harbour/include/hbexprop.h b/harbour/include/hbexprop.h index a6c7130cc9..751654ba7a 100644 --- a/harbour/include/hbexprop.h +++ b/harbour/include/hbexprop.h @@ -77,7 +77,9 @@ typedef HB_EXPR_PTR HB_EXPR_ACTION( HB_EXPR_PTR pSelf, int iMessage, HB_COMP_DE #define HB_EXPR_PCODE4( action, p1, p2, p3, p4 ) action( (p1), (p2), (p3), (p4), HB_COMP_PARAM ) #ifdef HB_MACRO_SUPPORT -extern HB_EXPR_PTR hb_macroExprNew( HB_COMP_DECL ); +extern HB_EXPR_PTR hb_macroExprNew( HB_COMP_DECL ); +#else +extern void hb_compExprLstDealloc( HB_COMP_DECL ); #endif extern HB_EXPR_PTR hb_compExprNew( HB_EXPRTYPE, HB_COMP_DECL ); @@ -89,7 +91,7 @@ extern HB_EXPR_PTR hb_compExprNewDate( HB_LONG, HB_COMP_DECL ); extern HB_EXPR_PTR hb_compExprNewString( char *, ULONG, BOOL, HB_COMP_DECL ); extern HB_EXPR_PTR hb_compExprNewLogical( int, HB_COMP_DECL ); extern HB_EXPR_PTR hb_compExprNewSelf( HB_COMP_DECL ); -extern HB_EXPR_PTR hb_compExprNewCodeBlock( char *, BOOL, BOOL, HB_COMP_DECL ); +extern HB_EXPR_PTR hb_compExprNewCodeBlock( char *, int, int, HB_COMP_DECL ); extern HB_EXPR_PTR hb_compExprNewVar( char *, HB_COMP_DECL ); extern HB_EXPR_PTR hb_compExprNewAliasVar( HB_EXPR_PTR, HB_EXPR_PTR, HB_COMP_DECL ); extern HB_EXPR_PTR hb_compExprNewAliasExpr( HB_EXPR_PTR, HB_EXPR_PTR, HB_COMP_DECL ); @@ -150,7 +152,7 @@ extern HB_EXPR_PTR hb_compExprAssignStatic( HB_EXPR_PTR, HB_EXPR_PTR, HB_COMP_DE extern HB_EXPR_PTR hb_compExprClone( HB_EXPR_PTR pSrc ); extern ULONG hb_compExprListLen( HB_EXPR_PTR ); extern ULONG hb_compExprMacroListLen( HB_EXPR_PTR ); -extern void hb_compExprClear( HB_EXPR_PTR ); +extern void hb_compExprClear( HB_EXPR_PTR, HB_COMP_DECL ); extern const char * hb_compExprDescription( HB_EXPR_PTR ); extern int hb_compExprType( HB_EXPR_PTR ); extern int hb_compExprIsInteger( HB_EXPR_PTR ); diff --git a/harbour/include/hbpp.h b/harbour/include/hbpp.h index 8555a1671d..f28d31e85b 100644 --- a/harbour/include/hbpp.h +++ b/harbour/include/hbpp.h @@ -59,6 +59,9 @@ HB_EXTERN_BEGIN +#define HB_BLOCK_MACRO 1 +#define HB_BLOCK_LATEEVAL 2 + /* #pragma {__text,__stream,__cstream}|functionOut|functionEnd|functionStart */ #define HB_PP_STREAM_OFF 0 /* standard preprocessing */ #define HB_PP_STREAM_COMMENT 1 /* multiline comment */ @@ -640,7 +643,7 @@ extern BOOL hb_pp_eof( PHB_PP_STATE pState ); extern void hb_pp_tokenUpper( PHB_PP_TOKEN pToken ); extern void hb_pp_tokenToString( PHB_PP_STATE pState, PHB_PP_TOKEN pToken ); -extern char * hb_pp_tokenBlockString( PHB_PP_STATE pState, PHB_PP_TOKEN pToken, int *piType ); +extern char * hb_pp_tokenBlockString( PHB_PP_STATE pState, PHB_PP_TOKEN pToken, int * piType, int * piLen ); extern PHB_PP_STATE hb_pp_lexNew( char * pString, ULONG ulLen ); extern PHB_PP_TOKEN hb_pp_lexGet( PHB_PP_STATE pState ); extern PHB_PP_TOKEN hb_pp_tokenGet( PHB_PP_STATE pState ); diff --git a/harbour/makefile.bc b/harbour/makefile.bc index e9fd0db2ee..948cbb0f60 100644 --- a/harbour/makefile.bc +++ b/harbour/makefile.bc @@ -636,7 +636,7 @@ $(OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.y bison --no-line -p hb_macro -d $** -o$@ $(OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y - bison --no-line -d $** -o$@ + bison --no-line -p hb_comp -d $** -o$@ !else @@ -656,7 +656,7 @@ $(OBJ_DIR)\macrol.c : $(MACRO_DIR)\macro.l flex -Phb_macro -i -8 -o$@ $** $(OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l - flex -i -8 -o$@ $** + flex -Phb_comp -i -8 -o$@ $** #********************************************************** @@ -680,7 +680,7 @@ $(DLL_OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.y bison --no-line -p hb_macro -d $** -o$@ $(DLL_OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y - bison --no-line -d $** -o$@ + bison --no-line -p hb_comp -d $** -o$@ !else @@ -700,7 +700,7 @@ $(DLL_OBJ_DIR)\macrol.c : $(MACRO_DIR)\macro.l flex -Phb_macro -i -8 -o$@ $** $(DLL_OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l - flex -i -8 -o$@ $** + flex -Phb_comp -i -8 -o$@ $** #********************************************************** diff --git a/harbour/makefile.vc b/harbour/makefile.vc index 85f0b9bfa9..603ff44d08 100644 --- a/harbour/makefile.vc +++ b/harbour/makefile.vc @@ -969,7 +969,7 @@ $(OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.y bison --no-line -p hb_macro -d $** -o$@ $(OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y - bison --no-line -d $** -o$@ + bison --no-line -p hb_comp -d $** -o$@ !else @@ -995,7 +995,7 @@ $(OBJ_DIR)\macrol.obj : $(OBJ_DIR)\macrol.c $(OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l - flex -i -8 -o$@ $** + flex -Phb_comp -i -8 -o$@ $** $(OBJ_DIR)\harboury.obj : $(OBJ_DIR)\harboury.c $(OBJ_DIR)\harbourl.obj : $(OBJ_DIR)\harbourl.c @@ -1020,10 +1020,10 @@ $(DLL_OBJ_DIR)\macrol.obj : $(DLL_OBJ_DIR)\macrol.c #********************************************************** $(DLL_OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y - bison --no-line -d $** -o$@ + bison --no-line -p hb_comp -d $** -o$@ $(DLL_OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l - flex -i -8 -o$@ $** + flex -Phb_comp -i -8 -o$@ $** $(DLL_OBJ_DIR)\harboury.obj : $(DLL_OBJ_DIR)\harboury.c $(DLL_OBJ_DIR)\harbourl.obj : $(DLL_OBJ_DIR)\harbourl.c diff --git a/harbour/source/common/expropt1.c b/harbour/source/common/expropt1.c index b0696fb5af..7b117ec2a7 100644 --- a/harbour/source/common/expropt1.c +++ b/harbour/source/common/expropt1.c @@ -157,7 +157,7 @@ int hb_compExprType( HB_EXPR_PTR pExpr ) int hb_compExprIsInteger( HB_EXPR_PTR pExpr ) { return ( pExpr->ExprType == HB_ET_NUMERIC && pExpr->value.asNum.NumType == HB_ET_LONG && - HB_LIM_INT16( pExpr->value.asNum.lVal ) ); + HB_LIM_INT16( pExpr->value.asNum.val.l ) ); } int hb_compExprIsLong( HB_EXPR_PTR pExpr ) @@ -187,15 +187,15 @@ int hb_compExprAsStringLen( HB_EXPR_PTR pExpr ) int hb_compExprAsInteger( HB_EXPR_PTR pExpr ) { if( pExpr->ExprType == HB_ET_NUMERIC && pExpr->value.asNum.NumType == HB_ET_LONG ) - return ( int ) pExpr->value.asNum.lVal; + return ( int ) pExpr->value.asNum.val.l; else return 0; } -long hb_compExprAsLong( HB_EXPR_PTR pExpr ) +HB_LONG hb_compExprAsLong( HB_EXPR_PTR pExpr ) { if( pExpr->ExprType == HB_ET_NUMERIC && pExpr->value.asNum.NumType == HB_ET_LONG ) - return pExpr->value.asNum.lVal; + return pExpr->value.asNum.val.l; else return 0; } @@ -231,7 +231,7 @@ HB_EXPR_PTR hb_compExprNewDouble( double dValue, BYTE ucWidth, BYTE ucDec, pExpr = hb_compExprNew( HB_ET_NUMERIC, HB_COMP_PARAM ); - pExpr->value.asNum.dVal = dValue; + pExpr->value.asNum.val.d = dValue; pExpr->value.asNum.bWidth = ucWidth; pExpr->value.asNum.bDec = ucDec; pExpr->value.asNum.NumType = HB_ET_DOUBLE; @@ -248,7 +248,7 @@ HB_EXPR_PTR hb_compExprNewLong( HB_LONG lValue, HB_COMP_DECL ) pExpr = hb_compExprNew( HB_ET_NUMERIC, HB_COMP_PARAM ); - pExpr->value.asNum.lVal = lValue; + pExpr->value.asNum.val.l = lValue; pExpr->value.asNum.bDec = 0; pExpr->value.asNum.NumType = HB_ET_LONG; pExpr->ValType = HB_EV_NUMERIC; @@ -264,18 +264,17 @@ HB_EXPR_PTR hb_compExprNewDate( HB_LONG lValue, HB_COMP_DECL ) pExpr = hb_compExprNew( HB_ET_DATE, HB_COMP_PARAM ); - pExpr->value.asNum.lVal = lValue; + pExpr->value.asNum.val.l = lValue; pExpr->ValType = HB_EV_DATE; return pExpr; } -HB_EXPR_PTR hb_compExprNewCodeBlock( char *string, BOOL isMacro, BOOL lateEval, - HB_COMP_DECL ) +HB_EXPR_PTR hb_compExprNewCodeBlock( char *string, int iLen, int iFlags, HB_COMP_DECL ) { HB_EXPR_PTR pExpr; - HB_TRACE(HB_TR_DEBUG, ("hb_compExprNewCodeBlock(%s,%u,%u,%p)",string,isMacro,lateEval,HB_COMP_PARAM)); + HB_TRACE(HB_TR_DEBUG, ("hb_compExprNewCodeBlock(%s,%d,%d,%p)",string, iLen, iFlags, HB_COMP_PARAM)); pExpr = hb_compExprNew( HB_ET_CODEBLOCK, HB_COMP_PARAM ); @@ -283,8 +282,8 @@ HB_EXPR_PTR hb_compExprNewCodeBlock( char *string, BOOL isMacro, BOOL lateEval, pExpr->value.asCodeblock.pLocals = NULL; /* this will hold local variables declarations */ pExpr->ValType = HB_EV_CODEBLOCK; pExpr->value.asCodeblock.string = string; - pExpr->value.asCodeblock.isMacro = isMacro; - pExpr->value.asCodeblock.lateEval = lateEval; + pExpr->value.asCodeblock.length = ( USHORT ) iLen; + pExpr->value.asCodeblock.flags = ( USHORT ) iFlags; return pExpr; } @@ -853,13 +852,13 @@ HB_EXPR_PTR hb_compExprNewNegate( HB_EXPR_PTR pNegExpr, HB_COMP_DECL ) { if( pNegExpr->value.asNum.NumType == HB_ET_DOUBLE ) { - pNegExpr->value.asNum.dVal = - pNegExpr->value.asNum.dVal; - pNegExpr->value.asNum.bWidth = HB_DBL_LENGTH( pNegExpr->value.asNum.dVal ); + pNegExpr->value.asNum.val.d = - pNegExpr->value.asNum.val.d; + pNegExpr->value.asNum.bWidth = HB_DBL_LENGTH( pNegExpr->value.asNum.val.d ); } else { - pNegExpr->value.asNum.lVal = - pNegExpr->value.asNum.lVal; - pNegExpr->value.asNum.bWidth = HB_LONG_LENGTH( pNegExpr->value.asNum.lVal ); + pNegExpr->value.asNum.val.l = - pNegExpr->value.asNum.val.l; + pNegExpr->value.asNum.bWidth = HB_LONG_LENGTH( pNegExpr->value.asNum.val.l ); } pExpr = pNegExpr; } diff --git a/harbour/source/common/expropt2.c b/harbour/source/common/expropt2.c index 0e39cd14da..225af828db 100644 --- a/harbour/source/common/expropt2.c +++ b/harbour/source/common/expropt2.c @@ -81,11 +81,11 @@ HB_EXPR_PTR hb_compExprReduceMod( HB_EXPR_PTR pSelf, HB_COMP_DECL ) { if( pLeft->value.asNum.NumType == HB_ET_LONG && pRight->value.asNum.NumType == HB_ET_LONG ) { - if( pRight->value.asNum.lVal ) + if( pRight->value.asNum.val.l ) { - HB_LONG lVal = pLeft->value.asNum.lVal % pRight->value.asNum.lVal; + HB_LONG lVal = pLeft->value.asNum.val.l % pRight->value.asNum.val.l; - pSelf->value.asNum.lVal = lVal; + pSelf->value.asNum.val.l = lVal; pSelf->value.asNum.bDec = 0; pSelf->value.asNum.NumType = HB_ET_LONG; pSelf->ExprType = HB_ET_NUMERIC; @@ -118,19 +118,19 @@ HB_EXPR_PTR hb_compExprReduceDiv( HB_EXPR_PTR pSelf, HB_COMP_DECL ) { case HB_ET_LONG: - if( pRight->value.asNum.lVal ) + if( pRight->value.asNum.val.l ) { - if( pLeft->value.asNum.lVal % pRight->value.asNum.lVal == 0 ) + if( pLeft->value.asNum.val.l % pRight->value.asNum.val.l == 0 ) { /* Return integer results as long */ - pSelf->value.asNum.lVal = pLeft->value.asNum.lVal / pRight->value.asNum.lVal; + pSelf->value.asNum.val.l = pLeft->value.asNum.val.l / pRight->value.asNum.val.l; pSelf->value.asNum.bDec = 0; pSelf->value.asNum.NumType = HB_ET_LONG; } else { /* Return non-integer results as double */ - pSelf->value.asNum.dVal = ( double ) pLeft->value.asNum.lVal / ( double ) pRight->value.asNum.lVal; + pSelf->value.asNum.val.d = ( double ) pLeft->value.asNum.val.l / ( double ) pRight->value.asNum.val.l; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = HB_DEFAULT_DECIMALS; pSelf->value.asNum.NumType = HB_ET_DOUBLE; @@ -141,9 +141,9 @@ HB_EXPR_PTR hb_compExprReduceDiv( HB_EXPR_PTR pSelf, HB_COMP_DECL ) case HB_ET_DOUBLE: - if( pRight->value.asNum.dVal != 0.0 ) + if( pRight->value.asNum.val.d != 0.0 ) { - pSelf->value.asNum.dVal = pLeft->value.asNum.dVal / pRight->value.asNum.dVal; + pSelf->value.asNum.val.d = pLeft->value.asNum.val.d / pRight->value.asNum.val.d; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = HB_DEFAULT_DECIMALS; pSelf->value.asNum.NumType = HB_ET_DOUBLE; @@ -155,18 +155,18 @@ HB_EXPR_PTR hb_compExprReduceDiv( HB_EXPR_PTR pSelf, HB_COMP_DECL ) if( pLeft->value.asNum.NumType == HB_ET_DOUBLE ) { - if( pRight->value.asNum.lVal ) + if( pRight->value.asNum.val.l ) { - pSelf->value.asNum.dVal = pLeft->value.asNum.dVal / ( double ) pRight->value.asNum.lVal; + pSelf->value.asNum.val.d = pLeft->value.asNum.val.d / ( double ) pRight->value.asNum.val.l; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = HB_DEFAULT_DECIMALS; } } else { - if( pRight->value.asNum.dVal != 0.0 ) + if( pRight->value.asNum.val.d != 0.0 ) { - pSelf->value.asNum.dVal = ( double ) pLeft->value.asNum.lVal / pRight->value.asNum.dVal; + pSelf->value.asNum.val.d = ( double ) pLeft->value.asNum.val.l / pRight->value.asNum.val.d; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = HB_DEFAULT_DECIMALS; } @@ -208,17 +208,17 @@ HB_EXPR_PTR hb_compExprReduceMult( HB_EXPR_PTR pSelf, HB_COMP_DECL ) { case HB_ET_LONG: { - HB_MAXDBL dVal = ( HB_MAXDBL ) pLeft->value.asNum.lVal * ( HB_MAXDBL ) pRight->value.asNum.lVal; + HB_MAXDBL dVal = ( HB_MAXDBL ) pLeft->value.asNum.val.l * ( HB_MAXDBL ) pRight->value.asNum.val.l; if ( HB_DBL_LIM_LONG( dVal ) ) { - pSelf->value.asNum.lVal = ( HB_LONG ) dVal; + pSelf->value.asNum.val.l = ( HB_LONG ) dVal; pSelf->value.asNum.bDec = 0; pSelf->value.asNum.NumType = HB_ET_LONG; } else { - pSelf->value.asNum.dVal = ( double ) dVal; + pSelf->value.asNum.val.d = ( double ) dVal; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = 0; pSelf->value.asNum.NumType = HB_ET_DOUBLE; @@ -229,7 +229,7 @@ HB_EXPR_PTR hb_compExprReduceMult( HB_EXPR_PTR pSelf, HB_COMP_DECL ) case HB_ET_DOUBLE: { - pSelf->value.asNum.dVal = pLeft->value.asNum.dVal * pRight->value.asNum.dVal; + pSelf->value.asNum.val.d = pLeft->value.asNum.val.d * pRight->value.asNum.val.d; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = pLeft->value.asNum.bDec + pRight->value.asNum.bDec; pSelf->value.asNum.NumType = HB_ET_DOUBLE; @@ -241,13 +241,13 @@ HB_EXPR_PTR hb_compExprReduceMult( HB_EXPR_PTR pSelf, HB_COMP_DECL ) { if( pLeft->value.asNum.NumType == HB_ET_DOUBLE ) { - pSelf->value.asNum.dVal = pLeft->value.asNum.dVal * ( double ) pRight->value.asNum.lVal; + pSelf->value.asNum.val.d = pLeft->value.asNum.val.d * ( double ) pRight->value.asNum.val.l; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = pLeft->value.asNum.bDec; } else { - pSelf->value.asNum.dVal = ( double ) pLeft->value.asNum.lVal * pRight->value.asNum.dVal; + pSelf->value.asNum.val.d = ( double ) pLeft->value.asNum.val.l * pRight->value.asNum.val.d; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = pRight->value.asNum.bDec; } @@ -282,17 +282,17 @@ HB_EXPR_PTR hb_compExprReduceMinus( HB_EXPR_PTR pSelf, HB_COMP_DECL ) { case HB_ET_LONG: { - HB_MAXDBL dVal = ( HB_MAXDBL ) pLeft->value.asNum.lVal - ( HB_MAXDBL ) pRight->value.asNum.lVal; + HB_MAXDBL dVal = ( HB_MAXDBL ) pLeft->value.asNum.val.l - ( HB_MAXDBL ) pRight->value.asNum.val.l; if ( HB_DBL_LIM_LONG( dVal ) ) { - pSelf->value.asNum.lVal = ( HB_LONG ) dVal; + pSelf->value.asNum.val.l = ( HB_LONG ) dVal; pSelf->value.asNum.bDec = 0; pSelf->value.asNum.NumType = HB_ET_LONG; } else { - pSelf->value.asNum.dVal = ( double ) dVal; + pSelf->value.asNum.val.d = ( double ) dVal; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = 0; pSelf->value.asNum.NumType = HB_ET_DOUBLE; @@ -303,7 +303,7 @@ HB_EXPR_PTR hb_compExprReduceMinus( HB_EXPR_PTR pSelf, HB_COMP_DECL ) case HB_ET_DOUBLE: { - pSelf->value.asNum.dVal = pLeft->value.asNum.dVal - pRight->value.asNum.dVal; + pSelf->value.asNum.val.d = pLeft->value.asNum.val.d - pRight->value.asNum.val.d; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; if( pLeft->value.asNum.bDec < pRight->value.asNum.bDec ) pSelf->value.asNum.bDec = pRight->value.asNum.bDec; @@ -318,13 +318,13 @@ HB_EXPR_PTR hb_compExprReduceMinus( HB_EXPR_PTR pSelf, HB_COMP_DECL ) { if( pLeft->value.asNum.NumType == HB_ET_DOUBLE ) { - pSelf->value.asNum.dVal = pLeft->value.asNum.dVal - ( double ) pRight->value.asNum.lVal; + pSelf->value.asNum.val.d = pLeft->value.asNum.val.d - ( double ) pRight->value.asNum.val.l; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = pLeft->value.asNum.bDec; } else { - pSelf->value.asNum.dVal = ( double ) pLeft->value.asNum.lVal - pRight->value.asNum.dVal; + pSelf->value.asNum.val.d = ( double ) pLeft->value.asNum.val.l - pRight->value.asNum.val.d; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = pRight->value.asNum.bDec; } @@ -338,7 +338,7 @@ HB_EXPR_PTR hb_compExprReduceMinus( HB_EXPR_PTR pSelf, HB_COMP_DECL ) } else if( pLeft->ExprType == HB_ET_DATE && pRight->ExprType == HB_ET_DATE ) { - pSelf->value.asNum.lVal = pLeft->value.asNum.lVal - pRight->value.asNum.lVal; + pSelf->value.asNum.val.l = pLeft->value.asNum.val.l - pRight->value.asNum.val.l; pSelf->value.asNum.bDec = 0; pSelf->value.asNum.NumType = HB_ET_LONG; pSelf->ExprType = HB_ET_NUMERIC; @@ -350,11 +350,11 @@ HB_EXPR_PTR hb_compExprReduceMinus( HB_EXPR_PTR pSelf, HB_COMP_DECL ) { if( pRight->value.asNum.NumType == HB_ET_LONG ) { - pSelf->value.asNum.lVal = pLeft->value.asNum.lVal - pRight->value.asNum.lVal; + pSelf->value.asNum.val.l = pLeft->value.asNum.val.l - pRight->value.asNum.val.l; } else { - pSelf->value.asNum.lVal = pLeft->value.asNum.lVal - ( HB_LONG ) pRight->value.asNum.dVal; + pSelf->value.asNum.val.l = pLeft->value.asNum.val.l - ( HB_LONG ) pRight->value.asNum.val.d; } pSelf->ExprType = HB_ET_DATE; pSelf->ValType = HB_EV_DATE; @@ -389,17 +389,17 @@ HB_EXPR_PTR hb_compExprReducePlus( HB_EXPR_PTR pSelf, HB_COMP_DECL ) { case HB_ET_LONG: { - HB_MAXDBL dVal = ( HB_MAXDBL ) pLeft->value.asNum.lVal + ( HB_MAXDBL ) pRight->value.asNum.lVal; + HB_MAXDBL dVal = ( HB_MAXDBL ) pLeft->value.asNum.val.l + ( HB_MAXDBL ) pRight->value.asNum.val.l; if ( HB_DBL_LIM_LONG( dVal ) ) { - pSelf->value.asNum.lVal = ( HB_LONG ) dVal; + pSelf->value.asNum.val.l = ( HB_LONG ) dVal; pSelf->value.asNum.bDec = 0; pSelf->value.asNum.NumType = HB_ET_LONG; } else { - pSelf->value.asNum.dVal = ( double ) dVal; + pSelf->value.asNum.val.d = ( double ) dVal; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = 0; pSelf->value.asNum.NumType = HB_ET_DOUBLE; @@ -410,7 +410,7 @@ HB_EXPR_PTR hb_compExprReducePlus( HB_EXPR_PTR pSelf, HB_COMP_DECL ) case HB_ET_DOUBLE: { - pSelf->value.asNum.dVal = pLeft->value.asNum.dVal + pRight->value.asNum.dVal; + pSelf->value.asNum.val.d = pLeft->value.asNum.val.d + pRight->value.asNum.val.d; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; if( pLeft->value.asNum.bDec < pRight->value.asNum.bDec ) pSelf->value.asNum.bDec = pRight->value.asNum.bDec; @@ -425,13 +425,13 @@ HB_EXPR_PTR hb_compExprReducePlus( HB_EXPR_PTR pSelf, HB_COMP_DECL ) { if( pLeft->value.asNum.NumType == HB_ET_DOUBLE ) { - pSelf->value.asNum.dVal = pLeft->value.asNum.dVal + ( double ) pRight->value.asNum.lVal; + pSelf->value.asNum.val.d = pLeft->value.asNum.val.d + ( double ) pRight->value.asNum.val.l; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = pLeft->value.asNum.bDec; } else { - pSelf->value.asNum.dVal = ( double ) pLeft->value.asNum.lVal + pRight->value.asNum.dVal; + pSelf->value.asNum.val.d = ( double ) pLeft->value.asNum.val.l + pRight->value.asNum.val.d; pSelf->value.asNum.bWidth = HB_DEFAULT_WIDTH; pSelf->value.asNum.bDec = pRight->value.asNum.bDec; } @@ -478,11 +478,11 @@ HB_EXPR_PTR hb_compExprReducePlus( HB_EXPR_PTR pSelf, HB_COMP_DECL ) { if( pRight->value.asNum.NumType == HB_ET_LONG ) { - pSelf->value.asNum.lVal = pLeft->value.asNum.lVal + pRight->value.asNum.lVal; + pSelf->value.asNum.val.l = pLeft->value.asNum.val.l + pRight->value.asNum.val.l; } else { - pSelf->value.asNum.lVal = pLeft->value.asNum.lVal + ( HB_LONG ) pRight->value.asNum.dVal; + pSelf->value.asNum.val.l = pLeft->value.asNum.val.l + ( HB_LONG ) pRight->value.asNum.val.d; } pSelf->ExprType = HB_ET_DATE; pSelf->ValType = HB_EV_DATE; @@ -581,17 +581,17 @@ HB_EXPR_PTR hb_compExprReduceNE( HB_EXPR_PTR pSelf, HB_COMP_DECL ) switch( pLeft->value.asNum.NumType & pRight->value.asNum.NumType ) { case HB_ET_LONG: - bResult = ( pLeft->value.asNum.lVal != pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.l != pRight->value.asNum.val.l ); break; case HB_ET_DOUBLE: - bResult = ( pLeft->value.asNum.dVal != pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.d != pRight->value.asNum.val.d ); break; default: { if( pLeft->value.asNum.NumType == HB_ET_LONG ) - bResult = ( pLeft->value.asNum.lVal != pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.l != pRight->value.asNum.val.d ); else - bResult = ( pLeft->value.asNum.dVal != pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.d != pRight->value.asNum.val.l ); } break; } @@ -645,17 +645,17 @@ HB_EXPR_PTR hb_compExprReduceGE( HB_EXPR_PTR pSelf, HB_COMP_DECL ) switch( pLeft->value.asNum.NumType & pRight->value.asNum.NumType ) { case HB_ET_LONG: - bResult = ( pLeft->value.asNum.lVal >= pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.l >= pRight->value.asNum.val.l ); break; case HB_ET_DOUBLE: - bResult = ( pLeft->value.asNum.dVal >= pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.d >= pRight->value.asNum.val.d ); break; default: { if( pLeft->value.asNum.NumType == HB_ET_LONG ) - bResult = ( pLeft->value.asNum.lVal >= pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.l >= pRight->value.asNum.val.d ); else - bResult = ( pLeft->value.asNum.dVal >= pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.d >= pRight->value.asNum.val.l ); } break; } @@ -709,17 +709,17 @@ HB_EXPR_PTR hb_compExprReduceLE( HB_EXPR_PTR pSelf, HB_COMP_DECL ) switch( pLeft->value.asNum.NumType & pRight->value.asNum.NumType ) { case HB_ET_LONG: - bResult = ( pLeft->value.asNum.lVal <= pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.l <= pRight->value.asNum.val.l ); break; case HB_ET_DOUBLE: - bResult = ( pLeft->value.asNum.dVal <= pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.d <= pRight->value.asNum.val.d ); break; default: { if( pLeft->value.asNum.NumType == HB_ET_LONG ) - bResult = ( pLeft->value.asNum.lVal <= pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.l <= pRight->value.asNum.val.d ); else - bResult = ( pLeft->value.asNum.dVal <= pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.d <= pRight->value.asNum.val.l ); } break; } @@ -773,17 +773,17 @@ HB_EXPR_PTR hb_compExprReduceGT( HB_EXPR_PTR pSelf, HB_COMP_DECL ) switch( pLeft->value.asNum.NumType & pRight->value.asNum.NumType ) { case HB_ET_LONG: - bResult = ( pLeft->value.asNum.lVal > pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.l > pRight->value.asNum.val.l ); break; case HB_ET_DOUBLE: - bResult = ( pLeft->value.asNum.dVal > pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.d > pRight->value.asNum.val.d ); break; default: { if( pLeft->value.asNum.NumType == HB_ET_LONG ) - bResult = ( pLeft->value.asNum.lVal > pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.l > pRight->value.asNum.val.d ); else - bResult = ( pLeft->value.asNum.dVal > pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.d > pRight->value.asNum.val.l ); } break; } @@ -837,17 +837,17 @@ HB_EXPR_PTR hb_compExprReduceLT( HB_EXPR_PTR pSelf, HB_COMP_DECL ) switch( pLeft->value.asNum.NumType & pRight->value.asNum.NumType ) { case HB_ET_LONG: - bResult = ( pLeft->value.asNum.lVal < pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.l < pRight->value.asNum.val.l ); break; case HB_ET_DOUBLE: - bResult = ( pLeft->value.asNum.dVal < pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.d < pRight->value.asNum.val.d ); break; default: { if( pLeft->value.asNum.NumType == HB_ET_LONG ) - bResult = ( pLeft->value.asNum.lVal < pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.l < pRight->value.asNum.val.d ); else - bResult = ( pLeft->value.asNum.dVal < pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.d < pRight->value.asNum.val.l ); } break; } @@ -913,17 +913,17 @@ HB_EXPR_PTR hb_compExprReduceEQ( HB_EXPR_PTR pSelf, HB_COMP_DECL ) switch( pLeft->value.asNum.NumType & pRight->value.asNum.NumType ) { case HB_ET_LONG: - bResult = ( pLeft->value.asNum.lVal == pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.l == pRight->value.asNum.val.l ); break; case HB_ET_DOUBLE: - bResult = ( pLeft->value.asNum.dVal == pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.d == pRight->value.asNum.val.d ); break; default: { if( pLeft->value.asNum.NumType == HB_ET_LONG ) - bResult = ( pLeft->value.asNum.lVal == pRight->value.asNum.dVal ); + bResult = ( pLeft->value.asNum.val.l == pRight->value.asNum.val.d ); else - bResult = ( pLeft->value.asNum.dVal == pRight->value.asNum.lVal ); + bResult = ( pLeft->value.asNum.val.d == pRight->value.asNum.val.l ); } break; } @@ -1193,7 +1193,7 @@ BOOL hb_compExprReduceAT( HB_EXPR_PTR pSelf, HB_COMP_DECL ) hb_compExprFree( pSelf->value.asFunCall.pParms, HB_COMP_PARAM ); memcpy( pSelf, pReduced, sizeof( HB_EXPR ) ); - hb_compExprClear( pReduced ); + hb_compExprClear( pReduced, HB_COMP_PARAM ); return TRUE; } else @@ -1219,9 +1219,9 @@ BOOL hb_compExprReduceCHR( HB_EXPR_PTR pSelf, HB_COMP_DECL ) if( pArg->value.asNum.NumType == HB_ET_LONG ) { BYTE bVal; - bVal = ( pArg->value.asNum.lVal % 256 ); + bVal = ( pArg->value.asNum.val.l % 256 ); - if( bVal == 0 && pArg->value.asNum.lVal != 0 ) + if( bVal == 0 && pArg->value.asNum.val.l != 0 ) { pExpr->value.asString.string = ""; pExpr->value.asString.dealloc = FALSE; @@ -1239,7 +1239,7 @@ BOOL hb_compExprReduceCHR( HB_EXPR_PTR pSelf, HB_COMP_DECL ) else { pExpr->value.asString.string = ( char * ) hb_xgrab( 2 ); - pExpr->value.asString.string[ 0 ] = ( ( unsigned int ) pArg->value.asNum.dVal % 256 ); + pExpr->value.asString.string[ 0 ] = ( ( unsigned int ) pArg->value.asNum.val.d % 256 ); pExpr->value.asString.string[ 1 ] = '\0'; pExpr->value.asString.dealloc = TRUE; pExpr->ulLength = 1; @@ -1248,7 +1248,7 @@ BOOL hb_compExprReduceCHR( HB_EXPR_PTR pSelf, HB_COMP_DECL ) hb_compExprFree( pParms, HB_COMP_PARAM ); hb_compExprFree( pSelf->value.asFunCall.pFunName, HB_COMP_PARAM ); memcpy( pSelf, pExpr, sizeof( HB_EXPR ) ); - hb_compExprClear( pExpr ); + hb_compExprClear( pExpr, HB_COMP_PARAM ); return TRUE; } @@ -1267,7 +1267,7 @@ BOOL hb_compExprReduceLEN( HB_EXPR_PTR pSelf, HB_COMP_DECL ) hb_compExprFree( pParms, HB_COMP_PARAM ); hb_compExprFree( pSelf->value.asFunCall.pFunName, HB_COMP_PARAM ); memcpy( pSelf, pExpr, sizeof( HB_EXPR ) ); - hb_compExprClear( pExpr ); + hb_compExprClear( pExpr, HB_COMP_PARAM ); return TRUE; } return FALSE; @@ -1286,7 +1286,7 @@ BOOL hb_compExprReduceASC( HB_EXPR_PTR pSelf, HB_COMP_DECL ) hb_compExprFree( pParms, HB_COMP_PARAM ); hb_compExprFree( pSelf->value.asFunCall.pFunName, HB_COMP_PARAM ); memcpy( pSelf, pExpr, sizeof( HB_EXPR ) ); - hb_compExprClear( pExpr ); + hb_compExprClear( pExpr, HB_COMP_PARAM ); return TRUE; } return FALSE; @@ -1308,7 +1308,7 @@ BOOL hb_compExprReduceSTOD( HB_EXPR_PTR pSelf, USHORT usCount, HB_COMP_DECL ) hb_compExprFree( pParms, HB_COMP_PARAM ); hb_compExprFree( pSelf->value.asFunCall.pFunName, HB_COMP_PARAM ); memcpy( pSelf, pExpr, sizeof( HB_EXPR ) ); - hb_compExprClear( pExpr ); + hb_compExprClear( pExpr, HB_COMP_PARAM ); return TRUE; } } @@ -1319,7 +1319,7 @@ BOOL hb_compExprReduceSTOD( HB_EXPR_PTR pSelf, USHORT usCount, HB_COMP_DECL ) hb_compExprFree( pSelf->value.asFunCall.pParms, HB_COMP_PARAM ); hb_compExprFree( pSelf->value.asFunCall.pFunName, HB_COMP_PARAM ); memcpy( pSelf, pExpr, sizeof( HB_EXPR ) ); - hb_compExprClear( pExpr ); + hb_compExprClear( pExpr, HB_COMP_PARAM ); return TRUE; } diff --git a/harbour/source/compiler/Makefile b/harbour/source/compiler/Makefile index 64a8ff1a92..25cc3b9ed1 100644 --- a/harbour/source/compiler/Makefile +++ b/harbour/source/compiler/Makefile @@ -4,17 +4,18 @@ ROOT = ../../ -#LEX_FLAGS = -Phb_macro -C +#LEX_FLAGS = -Phb_comp -C #LEX_SOURCE=harbour.l #LEX_HEADERS=\ # hbsetup.h \ # hberrors.h \ # hbdefs.h -#YACC_FLAGS = -p hb_comp +YACC_FLAGS = -p hb_comp YACC_SOURCE=harbour.y YACC_HEADERS=\ hbcomp.h \ + hbcompdf.h \ hbsetup.h \ hbpcode.h \ hbdefs.h \ diff --git a/harbour/source/compiler/complex.c b/harbour/source/compiler/complex.c index e55dbe19a2..4f23cc5bd0 100644 --- a/harbour/source/compiler/complex.c +++ b/harbour/source/compiler/complex.c @@ -141,8 +141,7 @@ static const HB_LEX_KEY s_keytable[] = { "PRIVATE", 4, 7, PRIVATE }, { "PROCEDURE", 4, 9, PROCEDURE }, { "PUBLIC", 4, 6, PUBLIC }, - { "QSELF", 4, 5, SELF }, - { "_PROCREQ_", 4, 9, PROCREQ }, + { "QSELF", 5, 5, SELF }, { "RECOVER", 4, 7, RECOVER }, { "RETURN", 4, 6, RETURN }, { "STATIC", 4, 6, STATIC }, @@ -151,6 +150,7 @@ static const HB_LEX_KEY s_keytable[] = { "TO", 2, 2, TO }, { "WHILE", 4, 5, WHILE }, { "WITH", 4, 4, WITH }, + { "_PROCREQ_", 9, 9, PROCREQ }, { "AS", 2, 2, AS_TYPE }, { "_HB_CLASS", 9, 9, DECLARE_CLASS }, { "_HB_MEMBER", 10, 10, DECLARE_MEMBER } @@ -281,8 +281,7 @@ static char * hb_comp_tokenString( YYSTYPE *yylval_ptr, HB_COMP_DECL, PHB_PP_TOK return pToken->value; } -//int hb_complex( YYSTYPE *yylval_ptr, HB_COMP_DECL ) -int yylex( YYSTYPE *yylval_ptr, HB_COMP_DECL ) +int hb_complex( YYSTYPE *yylval_ptr, HB_COMP_DECL ) { PHB_COMP_LEX pLex = ( PHB_COMP_LEX ) HB_COMP_PARAM->pLex; PHB_PP_TOKEN pToken = hb_pp_tokenGet( pLex->pPP ); @@ -385,13 +384,10 @@ int yylex( YYSTYPE *yylval_ptr, HB_COMP_DECL ) if( pToken->pNext && HB_PP_TOKEN_TYPE( pToken->pNext->type ) == HB_PP_TOKEN_PIPE ) { - int iType = 0; - yylval_ptr->asCodeblock.string = - hb_strdup( hb_pp_tokenBlockString( pLex->pPP, pToken, &iType ) ); - yylval_ptr->asCodeblock.length = - strlen( yylval_ptr->asCodeblock.string ); - yylval_ptr->asCodeblock.isMacro = iType > 0; - yylval_ptr->asCodeblock.lateEval = iType > 1; + yylval_ptr->asCodeblock.string = hb_strdup( + hb_pp_tokenBlockString( pLex->pPP, pToken, + &yylval_ptr->asCodeblock.flags, + &yylval_ptr->asCodeblock.length ) ); hb_pp_tokenGet( pLex->pPP ); return CBSTART; } diff --git a/harbour/source/compiler/harbour.c b/harbour/source/compiler/harbour.c index 830e58541d..acb3f3615d 100644 --- a/harbour/source/compiler/harbour.c +++ b/harbour/source/compiler/harbour.c @@ -93,14 +93,13 @@ static int hb_compAutoOpen( HB_COMP_DECL, char * szPrg, BOOL * bSkipGen, BOOL bS /* global variables */ FILE * hb_comp_errFile = NULL; -extern int yyparse( HB_COMP_DECL ); /* main yacc parsing function */ - /* ************************************************************************* */ static void hb_compMainExit( HB_COMP_DECL ) { hb_compCompileEnd( HB_COMP_PARAM ); hb_compParserStop( HB_COMP_PARAM ); + hb_compExprLstDealloc( HB_COMP_PARAM ); hb_compIdentifierClose( HB_COMP_PARAM ); if( HB_COMP_PARAM->pOutPath ) @@ -1762,6 +1761,7 @@ static PFUNCTION hb_compFunctionNew( HB_COMP_DECL, char * szName, HB_SYMBOLSCOPE pFunc->pNOOPs = NULL; pFunc->pJumps = NULL; pFunc->bLateEval = TRUE; + pFunc->bError = FALSE; pFunc->pEnum = NULL; return pFunc; @@ -3369,31 +3369,34 @@ void hb_compFinalizeFunction( HB_COMP_DECL ) /* fixes all last defined function hb_compGenPCode1( HB_P_ENDPROC, HB_COMP_PARAM ); } - if( pFunc->bFlags & FUN_USES_LOCAL_PARAMS ) + if( !pFunc->bError ) { - int PCount = pFunc->wParamCount; + if( pFunc->bFlags & FUN_USES_LOCAL_PARAMS ) + { + int PCount = pFunc->wParamCount; - /* do not adjust if local parameters are used -remove NOOPs only */ - pFunc->wParamCount = 0; - /* There was a PARAMETERS statement used. - * NOTE: This fixes local variables references in a case when - * there is PARAMETERS statement after a LOCAL variable declarations. - * All local variables are numbered from 1 - which means use first - * item from the eval stack. However if PARAMETERS statement is used - * then there are additional items on the eval stack - the - * function arguments. Then first local variable is at the position - * (1 + ). We cannot fix this numbering - * because the PARAMETERS statement can be used even at the end - * of function body when all local variables are already created. - */ + /* do not adjust if local parameters are used -remove NOOPs only */ + pFunc->wParamCount = 0; + /* There was a PARAMETERS statement used. + * NOTE: This fixes local variables references in a case when + * there is PARAMETERS statement after a LOCAL variable declarations. + * All local variables are numbered from 1 - which means use first + * item from the eval stack. However if PARAMETERS statement is used + * then there are additional items on the eval stack - the + * function arguments. Then first local variable is at the position + * (1 + ). We cannot fix this numbering + * because the PARAMETERS statement can be used even at the end + * of function body when all local variables are already created. + */ - hb_compFixFuncPCode( HB_COMP_PARAM, pFunc ); - pFunc->wParamCount = PCount; + hb_compFixFuncPCode( HB_COMP_PARAM, pFunc ); + pFunc->wParamCount = PCount; + } + else + hb_compFixFuncPCode( HB_COMP_PARAM, pFunc ); + + hb_compOptimizeJumps( HB_COMP_PARAM ); } - else - hb_compFixFuncPCode( HB_COMP_PARAM, pFunc ); - - hb_compOptimizeJumps( HB_COMP_PARAM ); if( HB_COMP_PARAM->iWarnings ) { @@ -4481,7 +4484,7 @@ static int hb_compCompile( HB_COMP_DECL, char * szPrg, BOOL bSingleFile ) hb_compFunctionAdd( HB_COMP_PARAM, "", HB_FS_PUBLIC, FUN_PROCEDURE ); } - yyparse( HB_COMP_PARAM ); + hb_compparse( HB_COMP_PARAM ); if( HB_COMP_PARAM->pFilePpo ) { @@ -4834,7 +4837,7 @@ static int hb_compAutoOpen( HB_COMP_DECL, char * szPrg, BOOL * pbSkipGen, BOOL b int i = HB_COMP_PARAM->iExitLevel ; BOOL b = HB_COMP_PARAM->fAnyWarning; - yyparse( HB_COMP_PARAM ); + hb_compparse( HB_COMP_PARAM ); if( HB_COMP_PARAM->pFilePpo ) { diff --git a/harbour/source/compiler/harbour.l b/harbour/source/compiler/harbour.l index 5e760f8080..6215cdf2b2 100644 --- a/harbour/source/compiler/harbour.l +++ b/harbour/source/compiler/harbour.l @@ -1645,8 +1645,7 @@ Separator {SpaceTab} int iCode=1; char cMark='\0'; - yylval_ptr->asCodeblock.isMacro = FALSE; - yylval_ptr->asCodeblock.lateEval = FALSE; + yylval_ptr->asCodeblock.flags = 0; cText = yytext+1; iLen = 1; @@ -1665,12 +1664,12 @@ Separator {SpaceTab} iPos = iLen; else if( *cText == '&' && cMark == '\0' ) { - yylval_ptr->asCodeblock.isMacro = TRUE; + yylval_ptr->asCodeblock.falgs |= HB_BLOCK_MACRO; ++cText; while( *cText == ' ' || *cText == '\t' ) ++cText; if( *cText == '(' ) - yylval_ptr->asCodeblock.lateEval = TRUE; + yylval_ptr->asCodeblock.flags |= HB_BLOCK_LATEEVAL; --cText; } else if( *cText == '{' && cMark == '\0' ) diff --git a/harbour/source/compiler/harbour.y b/harbour/source/compiler/harbour.y index 0ce2a8678f..6ab7df754f 100644 --- a/harbour/source/compiler/harbour.y +++ b/harbour/source/compiler/harbour.y @@ -105,6 +105,8 @@ static void hb_compDebugStart( void ) { }; int iNumber; /* to hold a temporary integer number */ HB_LONG lNumber; /* to hold a temporary long number */ BOOL bTrue; + HB_EXPR_PTR asExpr; + void * pVoid; /* to hold any memory structure we may need */ struct { HB_LONG lNumber; /* to hold a long number returned by lex */ @@ -117,7 +119,6 @@ static void hb_compDebugStart( void ) { }; UCHAR bWidth; /* to hold the width of the value */ UCHAR bDec; /* to hold the number of decimal points in the value */ } valDouble; - HB_EXPR_PTR asExpr; struct { char * string; @@ -128,8 +129,7 @@ static void hb_compDebugStart( void ) { }; { char * string; int length; - BOOL lateEval; /* Flag for early {|| ¯o} (0) or late {|| &(macro)} (1) binding */ - BOOL isMacro; + int flags; /* Flag for early {|| ¯o} (1) or late {|| &(macro)} (2) binding */ } asCodeblock; struct { @@ -140,7 +140,6 @@ static void hb_compDebugStart( void ) { }; HB_EXPR_PTR macro; } value; } asMessage; - void * pVoid; /* to hold any memory structure we may need */ }; %{ @@ -148,7 +147,6 @@ static void hb_compDebugStart( void ) { }; * typedef-ined to YYSTYPE */ extern int yylex( YYSTYPE *, HB_COMP_DECL ); /* main lex token function, called by yyparse() */ -extern int yyparse( HB_COMP_DECL ); /* main yacc parsing function */ extern void yyerror( HB_COMP_DECL, char * ); /* parsing error management function */ %} @@ -245,6 +243,13 @@ extern void yyerror( HB_COMP_DECL, char * ); /* parsing error management fun %type DateValue %type SendId +/* + We cannot use destructors for expressions. The internal bison logic cannot + detect properly if the expression was used or not in our grammar definition + so it's possible that destructors will never be executed or executed for + expressions which we freed ourself. + */ +/* %destructor { hb_compExprDelete( $$, HB_COMP_PARAM ); } @@ -281,8 +286,8 @@ extern void yyerror( HB_COMP_DECL, char * ); /* parsing error management fun FieldAlias FieldVarAlias PostOp ForVar ForList ForExpr - -%destructor { hb_xfree( $$.string ); } CBSTART +*/ +%destructor { if( $$.string ) hb_xfree( $$.string ); } CBSTART %destructor { if( $$.dealloc ) hb_xfree( $$.string ); } LITERAL %% @@ -320,7 +325,7 @@ Line : LINE NUM_LONG LITERAL Crlf ProcReq : PROCREQ CompTimeStr ')' Crlf { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; } ; -CompTimeStr: LITERAL { +CompTimeStr : LITERAL { if( $1.dealloc ) { $1.string = hb_compIdentifierNew( HB_COMP_PARAM, $1.string, HB_IDENT_FREE ); @@ -328,7 +333,7 @@ CompTimeStr: LITERAL { } hb_compAutoOpenAdd( HB_COMP_PARAM, $1.string ); } - | LITERAL '+' LITERAL { + | LITERAL '+' LITERAL { { char szFileName[ _POSIX_PATH_MAX + 1 ]; hb_strncat( hb_strncpy( szFileName, $1.string, _POSIX_PATH_MAX ), $3.string, _POSIX_PATH_MAX ); @@ -339,7 +344,7 @@ CompTimeStr: LITERAL { hb_xfree( $3.string ); } } - ; + ; Function : FunScope FUNCTION IdentName { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, $3, ( HB_SYMBOLSCOPE ) $1, 0 ); } Crlf {} | FunScope PROCEDURE IdentName { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, $3, ( HB_SYMBOLSCOPE ) $1, FUN_PROCEDURE ); } Crlf {} @@ -498,7 +503,7 @@ LineStat : Crlf { $$ = 0; HB_COMP_PARAM->fDontGenLineNum = T | Statement { $$ = 1; } | Declaration { $$ = 1; } | Line { $$ = 1; } - | ControlError { hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_UNCLOSED_STRU, NULL, NULL ); } + | ControlError { $$ = 0; hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_UNCLOSED_STRU, NULL, NULL ); } ; ControlError : FunScopeId FUNCTION IdentName Crlf {} @@ -570,6 +575,7 @@ NilAlias : NilValue ALIASOP { $$ = $1; } */ LiteralValue : LITERAL { $$ = hb_compExprNewString( $1.string, $1.length, $1.dealloc, HB_COMP_PARAM ); + $1.dealloc = FALSE; } ; @@ -1111,9 +1117,9 @@ ElemList : EmptyExpression { $$ = hb_compExprNewList( $1, HB_COMP | ElemList ',' EmptyExpression { $$ = hb_compExprAddListExpr( $1, $3 ); } ; -CodeBlock : CBSTART { $$ = hb_compExprNewCodeBlock( $1.string, $1.isMacro, $1.lateEval, HB_COMP_PARAM ); } BlockNoVar +CodeBlock : CBSTART { $$ = hb_compExprNewCodeBlock( $1.string, $1.length, $1.flags, HB_COMP_PARAM ); $1.string = NULL; } BlockNoVar '|' BlockExpList '}' { $$ = $2; } - | CBSTART { $$ = hb_compExprNewCodeBlock( $1.string, $1.isMacro, $1.lateEval, HB_COMP_PARAM ); } BlockVarList + | CBSTART { $$ = hb_compExprNewCodeBlock( $1.string, $1.length, $1.flags, HB_COMP_PARAM ); } BlockVarList '|' BlockExpList '}' { $$ = $2; } ; @@ -1598,7 +1604,7 @@ DoWhile : WhileBegin Expression Crlf { hb_compExprDelete( hb_compExprGenPush( $2, HB_COMP_PARAM ), HB_COMP_PARAM ); $$ = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); - } + } EmptyStats { hb_compLoopHere( HB_COMP_PARAM ); @@ -1663,11 +1669,11 @@ ForNext : FOR LValue ForAssign Expression /* 1 2 3 4 */ } else if( $8 ) { - hb_compExprClear( hb_compExprGenStatement( hb_compExprSetOperand( hb_compExprNewPlusEq( $2, HB_COMP_PARAM ), $8, HB_COMP_PARAM ), HB_COMP_PARAM ) ); + hb_compExprClear( hb_compExprGenStatement( hb_compExprSetOperand( hb_compExprNewPlusEq( $2, HB_COMP_PARAM ), $8, HB_COMP_PARAM ), HB_COMP_PARAM ), HB_COMP_PARAM ); } else { - hb_compExprClear( hb_compExprGenStatement( hb_compExprNewPreInc( $2, HB_COMP_PARAM ), HB_COMP_PARAM ) ); + hb_compExprClear( hb_compExprGenStatement( hb_compExprNewPreInc( $2, HB_COMP_PARAM ), HB_COMP_PARAM ), HB_COMP_PARAM ); } hb_compGenJumpHere( $9, HB_COMP_PARAM ); @@ -1780,7 +1786,6 @@ DoSwitch : SwitchBegin { hb_compGenPCode1( HB_P_POP, HB_COMP_PARAM ); } - ; EndSwitch : END diff --git a/harbour/source/compiler/harbour.yyc b/harbour/source/compiler/harbour.yyc index 0e80e9d5e7..f88f9192ec 100644 --- a/harbour/source/compiler/harbour.yyc +++ b/harbour/source/compiler/harbour.yyc @@ -58,6 +58,14 @@ /* Using locations. */ #define YYLSP_NEEDED 0 +/* Substitute the variable and function names. */ +#define yyparse hb_compparse +#define yylex hb_complex +#define yyerror hb_comperror +#define yylval hb_complval +#define yychar hb_compchar +#define yydebug hb_compdebug +#define yynerrs hb_compnerrs /* Tokens. */ @@ -401,6 +409,8 @@ typedef union YYSTYPE int iNumber; /* to hold a temporary integer number */ HB_LONG lNumber; /* to hold a temporary long number */ BOOL bTrue; + HB_EXPR_PTR asExpr; + void * pVoid; /* to hold any memory structure we may need */ struct { HB_LONG lNumber; /* to hold a long number returned by lex */ @@ -413,7 +423,6 @@ typedef union YYSTYPE UCHAR bWidth; /* to hold the width of the value */ UCHAR bDec; /* to hold the number of decimal points in the value */ } valDouble; - HB_EXPR_PTR asExpr; struct { char * string; @@ -424,8 +433,7 @@ typedef union YYSTYPE { char * string; int length; - BOOL lateEval; /* Flag for early {|| ¯o} (0) or late {|| &(macro)} (1) binding */ - BOOL isMacro; + int flags; /* Flag for early {|| ¯o} (1) or late {|| &(macro)} (2) binding */ } asCodeblock; struct { @@ -436,10 +444,9 @@ typedef union YYSTYPE HB_EXPR_PTR macro; } value; } asMessage; - void * pVoid; /* to hold any memory structure we may need */ } /* Line 193 of yacc.c. */ -#line 443 "harboury.c" +#line 450 "harboury.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -449,18 +456,17 @@ typedef union YYSTYPE /* Copy the second part of user declarations. */ -#line 146 "harbour.y" +#line 145 "harbour.y" /* This must be placed after the above union - the union is * typedef-ined to YYSTYPE */ extern int yylex( YYSTYPE *, HB_COMP_DECL ); /* main lex token function, called by yyparse() */ -extern int yyparse( HB_COMP_DECL ); /* main yacc parsing function */ extern void yyerror( HB_COMP_DECL, char * ); /* parsing error management function */ /* Line 216 of yacc.c. */ -#line 464 "harboury.c" +#line 470 "harboury.c" #ifdef short # undef short @@ -1069,83 +1075,83 @@ static const yytype_int16 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 290, 290, 290, 291, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 316, 317, 320, 323, 331, - 344, 344, 345, 345, 346, 346, 347, 347, 350, 351, - 352, 353, 356, 357, 358, 359, 362, 363, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 388, 389, 397, 397, - 398, 399, 400, 401, 402, 403, 409, 415, 416, 417, - 418, 419, 420, 421, 422, 424, 424, 428, 442, 442, - 462, 464, 462, 468, 470, 468, 475, 475, 476, 476, - 477, 478, 478, 494, 494, 497, 498, 499, 500, 501, - 504, 505, 506, 507, 510, 511, 512, 513, 516, 517, - 520, 521, 524, 525, 526, 527, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 545, - 546, 549, 557, 558, 563, 566, 571, 576, 581, 586, - 587, 590, 595, 598, 603, 603, 606, 611, 614, 619, - 622, 627, 628, 631, 636, 639, 646, 647, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 667, 668, 669, 672, 673, 674, 675, 676, 677, - 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, - 688, 689, 690, 699, 700, 701, 702, 703, 704, 709, - 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, - 720, 721, 722, 723, 726, 731, 731, 734, 735, 735, - 736, 736, 739, 740, 743, 749, 750, 751, 754, 755, - 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, - 766, 767, 768, 769, 770, 771, 772, 773, 774, 780, - 785, 785, 788, 797, 798, 799, 800, 801, 802, 803, - 804, 804, 805, 806, 807, 808, 809, 810, 811, 812, - 812, 813, 814, 815, 815, 816, 817, 817, 818, 819, - 820, 821, 822, 823, 824, 825, 826, 829, 830, 831, - 832, 832, 833, 833, 834, 835, 836, 837, 838, 841, - 842, 845, 846, 847, 848, 849, 850, 851, 857, 858, - 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, - 875, 876, 877, 878, 879, 880, 881, 882, 883, 886, - 887, 890, 891, 892, 899, 900, 901, 902, 903, 904, - 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, - 915, 916, 917, 920, 921, 922, 923, 924, 925, 926, - 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, - 937, 938, 939, 942, 943, 944, 945, 946, 947, 948, - 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, - 959, 960, 963, 964, 965, 966, 967, 968, 969, 970, - 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, - 981, 984, 985, 986, 987, 988, 989, 990, 991, 992, - 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, - 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1026, - 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, - 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1047, 1048, - 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, - 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1068, 1069, 1070, - 1071, 1072, 1073, 1076, 1077, 1078, 1079, 1080, 1081, 1084, - 1085, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, - 1099, 1105, 1106, 1107, 1110, 1111, 1114, 1114, 1116, 1116, - 1122, 1123, 1129, 1132, 1133, 1143, 1146, 1149, 1152, 1155, - 1156, 1157, 1158, 1161, 1164, 1167, 1170, 1173, 1174, 1177, - 1179, 1178, 1184, 1187, 1187, 1188, 1188, 1189, 1189, 1196, - 1197, 1200, 1201, 1209, 1210, 1212, 1216, 1223, 1232, 1232, - 1246, 1249, 1246, 1274, 1275, 1281, 1284, 1285, 1286, 1290, - 1290, 1293, 1294, 1295, 1298, 1298, 1301, 1302, 1305, 1305, - 1328, 1328, 1329, 1330, 1331, 1331, 1334, 1335, 1338, 1339, - 1340, 1341, 1344, 1344, 1366, 1366, 1422, 1423, 1424, 1425, - 1428, 1429, 1432, 1438, 1439, 1440, 1441, 1442, 1443, 1446, - 1447, 1448, 1449, 1450, 1451, 1454, 1455, 1456, 1457, 1458, - 1459, 1460, 1463, 1464, 1465, 1466, 1469, 1470, 1473, 1474, - 1477, 1477, 1477, 1481, 1481, 1481, 1485, 1485, 1485, 1489, - 1489, 1489, 1493, 1493, 1493, 1498, 1498, 1502, 1504, 1502, - 1512, 1514, 1512, 1523, 1524, 1527, 1531, 1535, 1538, 1544, - 1548, 1554, 1554, 1557, 1558, 1566, 1567, 1566, 1578, 1579, - 1578, 1591, 1591, 1591, 1593, 1593, 1598, 1603, 1597, 1615, - 1618, 1619, 1623, 1634, 1639, 1622, 1699, 1700, 1703, 1704, - 1707, 1708, 1709, 1710, 1713, 1714, 1717, 1718, 1721, 1722, - 1726, 1732, 1741, 1725, 1761, 1762, 1766, 1765, 1778, 1786, - 1794, 1793, 1803, 1804, 1812, 1812, 1815, 1815, 1818, 1820, - 1823, 1823, 1823, 1827, 1829, 1837, 1827, 1858, 1859, 1859, - 1860, 1860, 1863, 1873, 1890, 1891, 1892, 1895, 1897, 1899, - 1904, 1911, 1912, 1913, 1914, 1915, 1918, 1919, 1920, 1921, - 1922, 1923, 1924, 1928, 1927, 1939, 1942, 1943 + 0, 295, 295, 295, 296, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 321, 322, 325, 328, 336, + 349, 349, 350, 350, 351, 351, 352, 352, 355, 356, + 357, 358, 361, 362, 363, 364, 367, 368, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 393, 394, 402, 402, + 403, 404, 405, 406, 407, 408, 414, 420, 421, 422, + 423, 424, 425, 426, 427, 429, 429, 433, 447, 447, + 467, 469, 467, 473, 475, 473, 480, 480, 481, 481, + 482, 483, 483, 499, 499, 502, 503, 504, 505, 506, + 509, 510, 511, 512, 515, 516, 517, 518, 521, 522, + 525, 526, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 542, 543, 544, 545, 550, + 551, 554, 562, 563, 568, 571, 576, 582, 587, 592, + 593, 596, 601, 604, 609, 609, 612, 617, 620, 625, + 628, 633, 634, 637, 642, 645, 652, 653, 658, 659, + 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 673, 674, 675, 678, 679, 680, 681, 682, 683, + 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, + 694, 695, 696, 705, 706, 707, 708, 709, 710, 715, + 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, + 726, 727, 728, 729, 732, 737, 737, 740, 741, 741, + 742, 742, 745, 746, 749, 755, 756, 757, 760, 761, + 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, + 772, 773, 774, 775, 776, 777, 778, 779, 780, 786, + 791, 791, 794, 803, 804, 805, 806, 807, 808, 809, + 810, 810, 811, 812, 813, 814, 815, 816, 817, 818, + 818, 819, 820, 821, 821, 822, 823, 823, 824, 825, + 826, 827, 828, 829, 830, 831, 832, 835, 836, 837, + 838, 838, 839, 839, 840, 841, 842, 843, 844, 847, + 848, 851, 852, 853, 854, 855, 856, 857, 863, 864, + 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, + 881, 882, 883, 884, 885, 886, 887, 888, 889, 892, + 893, 896, 897, 898, 905, 906, 907, 908, 909, 910, + 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, + 921, 922, 923, 926, 927, 928, 929, 930, 931, 932, + 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, + 943, 944, 945, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, + 965, 966, 969, 970, 971, 972, 973, 974, 975, 976, + 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, + 987, 990, 991, 992, 993, 994, 995, 996, 997, 998, + 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, + 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, + 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1032, + 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, + 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1053, 1054, + 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, + 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1074, 1075, 1076, + 1077, 1078, 1079, 1082, 1083, 1084, 1085, 1086, 1087, 1090, + 1091, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1105, 1111, 1112, 1113, 1116, 1117, 1120, 1120, 1122, 1122, + 1128, 1129, 1135, 1138, 1139, 1149, 1152, 1155, 1158, 1161, + 1162, 1163, 1164, 1167, 1170, 1173, 1176, 1179, 1180, 1183, + 1185, 1184, 1190, 1193, 1193, 1194, 1194, 1195, 1195, 1202, + 1203, 1206, 1207, 1215, 1216, 1218, 1222, 1229, 1238, 1238, + 1252, 1255, 1252, 1280, 1281, 1287, 1290, 1291, 1292, 1296, + 1296, 1299, 1300, 1301, 1304, 1304, 1307, 1308, 1311, 1311, + 1334, 1334, 1335, 1336, 1337, 1337, 1340, 1341, 1344, 1345, + 1346, 1347, 1350, 1350, 1372, 1372, 1428, 1429, 1430, 1431, + 1434, 1435, 1438, 1444, 1445, 1446, 1447, 1448, 1449, 1452, + 1453, 1454, 1455, 1456, 1457, 1460, 1461, 1462, 1463, 1464, + 1465, 1466, 1469, 1470, 1471, 1472, 1475, 1476, 1479, 1480, + 1483, 1483, 1483, 1487, 1487, 1487, 1491, 1491, 1491, 1495, + 1495, 1495, 1499, 1499, 1499, 1504, 1504, 1508, 1510, 1508, + 1518, 1520, 1518, 1529, 1530, 1533, 1537, 1541, 1544, 1550, + 1554, 1560, 1560, 1563, 1564, 1572, 1573, 1572, 1584, 1585, + 1584, 1597, 1597, 1597, 1599, 1599, 1604, 1609, 1603, 1621, + 1624, 1625, 1629, 1640, 1645, 1628, 1705, 1706, 1709, 1710, + 1713, 1714, 1715, 1716, 1719, 1720, 1723, 1724, 1727, 1728, + 1732, 1738, 1747, 1731, 1767, 1768, 1772, 1771, 1784, 1791, + 1799, 1798, 1808, 1809, 1817, 1817, 1820, 1820, 1823, 1825, + 1828, 1828, 1828, 1832, 1834, 1842, 1832, 1863, 1864, 1864, + 1865, 1865, 1868, 1878, 1895, 1896, 1897, 1900, 1902, 1904, + 1909, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, + 1927, 1928, 1929, 1933, 1932, 1944, 1947, 1948 }; #endif @@ -3851,609 +3857,14 @@ yydestruct (yymsg, yytype, yyvaluep, pComp) switch (yytype) { case 19: /* "LITERAL" */ -#line 286 "harbour.y" +#line 291 "harbour.y" { if( (yyvaluep->valChar).dealloc ) hb_xfree( (yyvaluep->valChar).string ); }; -#line 3857 "harboury.c" +#line 3863 "harboury.c" break; case 93: /* "CBSTART" */ -#line 285 "harbour.y" - { hb_xfree( (yyvaluep->asCodeblock).string ); }; -#line 3862 "harboury.c" - break; - case 163: /* "NumValue" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3869 "harboury.c" - break; - case 164: /* "DateValue" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3876 "harboury.c" - break; - case 165: /* "NumAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3883 "harboury.c" - break; - case 166: /* "NilValue" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3890 "harboury.c" - break; - case 167: /* "NilAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3897 "harboury.c" - break; - case 168: /* "LiteralValue" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3904 "harboury.c" - break; - case 169: /* "LiteralAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3911 "harboury.c" - break; - case 170: /* "CodeBlockAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3918 "harboury.c" - break; - case 171: /* "Logical" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3925 "harboury.c" - break; - case 172: /* "LogicalAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3932 "harboury.c" - break; - case 173: /* "SelfValue" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3939 "harboury.c" - break; - case 174: /* "SelfAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3946 "harboury.c" - break; - case 175: /* "Array" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3953 "harboury.c" - break; - case 177: /* "ArrayAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3960 "harboury.c" - break; - case 178: /* "ArrayAt" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3967 "harboury.c" - break; - case 179: /* "ArrayAtAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3974 "harboury.c" - break; - case 180: /* "Variable" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3981 "harboury.c" - break; - case 181: /* "VarAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3988 "harboury.c" - break; - case 182: /* "MacroVar" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 3995 "harboury.c" - break; - case 183: /* "MacroVarAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4002 "harboury.c" - break; - case 184: /* "MacroExpr" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4009 "harboury.c" - break; - case 185: /* "MacroExprAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4016 "harboury.c" - break; - case 186: /* "FieldAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4023 "harboury.c" - break; - case 187: /* "FieldVarAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4030 "harboury.c" - break; - case 188: /* "AliasId" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4037 "harboury.c" - break; - case 189: /* "AliasVar" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4044 "harboury.c" - break; - case 190: /* "AliasExpr" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4051 "harboury.c" - break; - case 191: /* "VariableAt" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4058 "harboury.c" - break; - case 192: /* "VariableAtAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4065 "harboury.c" - break; - case 193: /* "FunIdentCall" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4072 "harboury.c" - break; - case 195: /* "FunCall" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4079 "harboury.c" - break; - case 198: /* "ArgList" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4086 "harboury.c" - break; - case 199: /* "FunCallAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4093 "harboury.c" - break; - case 201: /* "ObjectData" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4100 "harboury.c" - break; - case 202: /* "ObjectDataAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4107 "harboury.c" - break; - case 203: /* "ObjectMethod" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4114 "harboury.c" - break; - case 205: /* "ObjectMethodAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4121 "harboury.c" - break; - case 206: /* "SimpleExpression" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4128 "harboury.c" - break; - case 211: /* "Expression" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4135 "harboury.c" - break; - case 214: /* "EmptyExpression" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4142 "harboury.c" - break; - case 215: /* "LValue" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4149 "harboury.c" - break; - case 216: /* "PostOp" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4156 "harboury.c" - break; - case 217: /* "ExprPostOp" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4163 "harboury.c" - break; - case 218: /* "ExprPreOp" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4170 "harboury.c" - break; - case 219: /* "ExprUnary" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4177 "harboury.c" - break; - case 220: /* "ExprAssign" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4184 "harboury.c" - break; - case 221: /* "ExprEqual" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4191 "harboury.c" - break; - case 222: /* "ExprPlusEq" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4198 "harboury.c" - break; - case 223: /* "ExprMinusEq" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4205 "harboury.c" - break; - case 224: /* "ExprMultEq" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4212 "harboury.c" - break; - case 225: /* "ExprDivEq" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4219 "harboury.c" - break; - case 226: /* "ExprModEq" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4226 "harboury.c" - break; - case 227: /* "ExprExpEq" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4233 "harboury.c" - break; - case 228: /* "ExprOperEq" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4240 "harboury.c" - break; - case 229: /* "ExprMath" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4247 "harboury.c" - break; - case 230: /* "ExprBool" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4254 "harboury.c" - break; - case 231: /* "ExprRelation" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4261 "harboury.c" - break; - case 232: /* "ArrayIndex" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4268 "harboury.c" - break; - case 233: /* "IndexList" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4275 "harboury.c" - break; - case 234: /* "ElemList" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4282 "harboury.c" - break; - case 235: /* "CodeBlock" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4289 "harboury.c" - break; - case 238: /* "BlockExpList" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4296 "harboury.c" - break; - case 239: /* "BlockNoVar" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4303 "harboury.c" - break; - case 240: /* "BlockVarList" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4310 "harboury.c" - break; - case 241: /* "PareExpList1" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4317 "harboury.c" - break; - case 242: /* "PareExpList2" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4324 "harboury.c" - break; - case 243: /* "PareExpList3" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4331 "harboury.c" - break; - case 244: /* "PareExpListN" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4338 "harboury.c" - break; - case 245: /* "PareExpList" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4345 "harboury.c" - break; - case 246: /* "PareExpListAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4352 "harboury.c" - break; - case 247: /* "ExpList1" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4359 "harboury.c" - break; - case 248: /* "ExpList2" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4366 "harboury.c" - break; - case 249: /* "ExpList3" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4373 "harboury.c" - break; - case 250: /* "ExpList" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4380 "harboury.c" - break; - case 251: /* "IfInline" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4387 "harboury.c" - break; - case 253: /* "IfInlineAlias" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4394 "harboury.c" - break; - case 265: /* "DimList" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4401 "harboury.c" - break; - case 266: /* "DimIndex" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4408 "harboury.c" - break; - case 337: /* "ForVar" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4415 "harboury.c" - break; - case 338: /* "ForList" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4422 "harboury.c" - break; - case 339: /* "ForExpr" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4429 "harboury.c" - break; - case 366: /* "DoName" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4436 "harboury.c" - break; - case 367: /* "DoProc" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4443 "harboury.c" - break; - case 368: /* "DoArgList" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4450 "harboury.c" - break; - case 369: /* "DoArgument" */ -#line 248 "harbour.y" - { - hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); - }; -#line 4457 "harboury.c" +#line 290 "harbour.y" + { if( (yyvaluep->asCodeblock).string ) hb_xfree( (yyvaluep->asCodeblock).string ); }; +#line 3868 "harboury.c" break; default: @@ -4762,32 +4173,32 @@ yyreduce: switch (yyn) { case 2: -#line 290 "harbour.y" +#line 295 "harbour.y" { hb_compLinePush( HB_COMP_PARAM ); ;} break; case 3: -#line 290 "harbour.y" +#line 295 "harbour.y" { ;} break; case 14: -#line 303 "harbour.y" +#line 308 "harbour.y" { yyclearin; yyerrok; ;} break; case 24: -#line 313 "harbour.y" +#line 318 "harbour.y" { yyclearin; yyerrok; ;} break; case 27: -#line 320 "harbour.y" +#line 325 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; case 28: -#line 323 "harbour.y" +#line 328 "harbour.y" { if( (yyvsp[(1) - (1)].valChar).dealloc ) { @@ -4799,7 +4210,7 @@ yyreduce: break; case 29: -#line 331 "harbour.y" +#line 336 "harbour.y" { { char szFileName[ _POSIX_PATH_MAX + 1 ]; @@ -4814,222 +4225,222 @@ yyreduce: break; case 30: -#line 344 "harbour.y" +#line 349 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), 0 ); ;} break; case 31: -#line 344 "harbour.y" +#line 349 "harbour.y" {;} break; case 32: -#line 345 "harbour.y" +#line 350 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), FUN_PROCEDURE ); ;} break; case 33: -#line 345 "harbour.y" +#line 350 "harbour.y" {;} break; case 34: -#line 346 "harbour.y" +#line 351 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), 0 ); HB_COMP_PARAM->iVarScope = VS_PARAMETER; ;} break; case 35: -#line 346 "harbour.y" +#line 351 "harbour.y" {;} break; case 36: -#line 347 "harbour.y" +#line 352 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), FUN_PROCEDURE ); HB_COMP_PARAM->iVarScope = VS_PARAMETER;;} break; case 37: -#line 347 "harbour.y" +#line 352 "harbour.y" {;} break; case 38: -#line 350 "harbour.y" +#line 355 "harbour.y" { (yyval.iNumber) = HB_FS_PUBLIC; ;} break; case 39: -#line 351 "harbour.y" +#line 356 "harbour.y" { (yyval.iNumber) = HB_FS_STATIC; ;} break; case 40: -#line 352 "harbour.y" +#line 357 "harbour.y" { (yyval.iNumber) = HB_FS_INIT; ;} break; case 41: -#line 353 "harbour.y" +#line 358 "harbour.y" { (yyval.iNumber) = HB_FS_EXIT; ;} break; case 42: -#line 356 "harbour.y" +#line 361 "harbour.y" { (yyval.iNumber) = 0; ;} break; case 43: -#line 357 "harbour.y" +#line 362 "harbour.y" { HB_COMP_PARAM->functions.pLast->pCode[0] = HB_P_VFRAME; (yyval.iNumber) = 0; ;} break; case 44: -#line 358 "harbour.y" +#line 363 "harbour.y" { (yyval.iNumber) = (yyvsp[(1) - (1)].iNumber); ;} break; case 45: -#line 359 "harbour.y" +#line 364 "harbour.y" { HB_COMP_PARAM->functions.pLast->pCode[0] = HB_P_VFRAME; (yyval.iNumber) = (yyvsp[(1) - (3)].iNumber); ;} break; case 46: -#line 362 "harbour.y" +#line 367 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; case 48: -#line 366 "harbour.y" +#line 371 "harbour.y" { HB_COMP_PARAM->cVarType = 'N'; ;} break; case 49: -#line 367 "harbour.y" +#line 372 "harbour.y" { HB_COMP_PARAM->cVarType = 'C'; ;} break; case 50: -#line 368 "harbour.y" +#line 373 "harbour.y" { HB_COMP_PARAM->cVarType = 'D'; ;} break; case 51: -#line 369 "harbour.y" +#line 374 "harbour.y" { HB_COMP_PARAM->cVarType = 'L'; ;} break; case 52: -#line 370 "harbour.y" +#line 375 "harbour.y" { HB_COMP_PARAM->cVarType = 'B'; ;} break; case 53: -#line 371 "harbour.y" +#line 376 "harbour.y" { HB_COMP_PARAM->cVarType = 'O'; ;} break; case 54: -#line 372 "harbour.y" +#line 377 "harbour.y" { HB_COMP_PARAM->cVarType = 'S'; HB_COMP_PARAM->szFromClass = (yyvsp[(2) - (2)].string); ;} break; case 55: -#line 373 "harbour.y" +#line 378 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; case 57: -#line 377 "harbour.y" +#line 382 "harbour.y" { HB_COMP_PARAM->cVarType = 'A'; ;} break; case 58: -#line 378 "harbour.y" +#line 383 "harbour.y" { HB_COMP_PARAM->cVarType = 'n'; ;} break; case 59: -#line 379 "harbour.y" +#line 384 "harbour.y" { HB_COMP_PARAM->cVarType = 'c'; ;} break; case 60: -#line 380 "harbour.y" +#line 385 "harbour.y" { HB_COMP_PARAM->cVarType = 'd'; ;} break; case 61: -#line 381 "harbour.y" +#line 386 "harbour.y" { HB_COMP_PARAM->cVarType = 'l'; ;} break; case 62: -#line 382 "harbour.y" +#line 387 "harbour.y" { HB_COMP_PARAM->cVarType = 'a'; ;} break; case 63: -#line 383 "harbour.y" +#line 388 "harbour.y" { HB_COMP_PARAM->cVarType = 'b'; ;} break; case 64: -#line 384 "harbour.y" +#line 389 "harbour.y" { HB_COMP_PARAM->cVarType = 'o'; ;} break; case 65: -#line 385 "harbour.y" +#line 390 "harbour.y" { HB_COMP_PARAM->cVarType = 's'; HB_COMP_PARAM->szFromClass = (yyvsp[(2) - (2)].string); ;} break; case 66: -#line 388 "harbour.y" +#line 393 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); (yyval.iNumber) = 1; ;} break; case 67: -#line 389 "harbour.y" +#line 394 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); (yyval.iNumber)++; ;} break; case 68: -#line 397 "harbour.y" +#line 402 "harbour.y" { HB_COMP_PARAM->fDontGenLineNum = TRUE; ;} break; case 69: -#line 397 "harbour.y" +#line 402 "harbour.y" { ;} break; case 70: -#line 398 "harbour.y" +#line 403 "harbour.y" { ;} break; case 71: -#line 399 "harbour.y" +#line 404 "harbour.y" { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; case 72: -#line 400 "harbour.y" +#line 405 "harbour.y" { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; case 73: -#line 401 "harbour.y" +#line 406 "harbour.y" { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; case 74: -#line 402 "harbour.y" +#line 407 "harbour.y" { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; case 75: -#line 403 "harbour.y" +#line 408 "harbour.y" { if( HB_COMP_ISSUPPORTED( HB_COMPFLAG_XBASE ) ) hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); else @@ -5039,7 +4450,7 @@ yyreduce: break; case 76: -#line 409 "harbour.y" +#line 414 "harbour.y" { if( HB_COMP_ISSUPPORTED( HB_COMPFLAG_XBASE ) ) hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); else @@ -5049,53 +4460,53 @@ yyreduce: break; case 77: -#line 415 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 78: -#line 416 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 79: -#line 417 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 80: -#line 418 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 81: -#line 419 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 82: #line 420 "harbour.y" { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; - case 83: + case 78: #line 421 "harbour.y" { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; - case 84: + case 79: #line 422 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 80: +#line 423 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 81: +#line 424 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 82: +#line 425 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 83: +#line 426 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 84: +#line 427 "harbour.y" { hb_compGenBreak( HB_COMP_PARAM ); hb_compGenPCode2( HB_P_DOSHORT, 0, HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; ;} break; case 85: -#line 424 "harbour.y" +#line 429 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); ;} break; case 86: -#line 424 "harbour.y" +#line 429 "harbour.y" { hb_compGenBreak( HB_COMP_PARAM ); hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); hb_compGenPCode2( HB_P_DOSHORT, 1, HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; @@ -5103,7 +4514,7 @@ yyreduce: break; case 87: -#line 428 "harbour.y" +#line 433 "harbour.y" { if( HB_COMP_PARAM->wSeqCounter ) { @@ -5121,12 +4532,12 @@ yyreduce: break; case 88: -#line 442 "harbour.y" +#line 447 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); HB_COMP_PARAM->cVarType = ' '; ;} break; case 89: -#line 444 "harbour.y" +#line 449 "harbour.y" { HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' '; @@ -5148,12 +4559,12 @@ yyreduce: break; case 90: -#line 462 "harbour.y" +#line 467 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); HB_COMP_PARAM->iVarScope = VS_PUBLIC; ;} break; case 91: -#line 464 "harbour.y" +#line 469 "harbour.y" { hb_compRTVariableGen( HB_COMP_PARAM, "__MVPUBLIC" ); HB_COMP_PARAM->cVarType = ' '; HB_COMP_PARAM->iVarScope = VS_NONE; HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; @@ -5161,12 +4572,12 @@ yyreduce: break; case 93: -#line 468 "harbour.y" +#line 473 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); HB_COMP_PARAM->iVarScope = VS_PRIVATE; ;} break; case 94: -#line 470 "harbour.y" +#line 475 "harbour.y" { hb_compRTVariableGen( HB_COMP_PARAM, "__MVPRIVATE" ); HB_COMP_PARAM->cVarType = ' '; HB_COMP_PARAM->iVarScope = VS_NONE; HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; @@ -5174,27 +4585,27 @@ yyreduce: break; case 96: -#line 475 "harbour.y" +#line 480 "harbour.y" { HB_COMP_PARAM->fDontGenLineNum = !HB_COMP_PARAM->fDebugInfo; ;} break; case 97: -#line 475 "harbour.y" +#line 480 "harbour.y" { hb_compLoopExit( HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; ;} break; case 98: -#line 476 "harbour.y" +#line 481 "harbour.y" { HB_COMP_PARAM->fDontGenLineNum = !HB_COMP_PARAM->fDebugInfo; ;} break; case 99: -#line 476 "harbour.y" +#line 481 "harbour.y" { hb_compLoopLoop( HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; ;} break; case 101: -#line 478 "harbour.y" +#line 483 "harbour.y" { if( HB_COMP_PARAM->szAnnounce == NULL ) { @@ -5212,172 +4623,172 @@ yyreduce: break; case 103: -#line 494 "harbour.y" +#line 499 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); ;} break; case 105: -#line 497 "harbour.y" +#line 502 "harbour.y" { (yyval.lNumber) = 0; HB_COMP_PARAM->fDontGenLineNum = TRUE; ;} break; case 106: -#line 498 "harbour.y" +#line 503 "harbour.y" { (yyval.lNumber) = 1; ;} break; case 107: -#line 499 "harbour.y" +#line 504 "harbour.y" { (yyval.lNumber) = 1; ;} break; case 108: -#line 500 "harbour.y" +#line 505 "harbour.y" { (yyval.lNumber) = 1; ;} break; case 109: -#line 501 "harbour.y" - { hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_UNCLOSED_STRU, NULL, NULL ); ;} +#line 506 "harbour.y" + { (yyval.lNumber) = 0; hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_UNCLOSED_STRU, NULL, NULL ); ;} break; case 110: -#line 504 "harbour.y" +#line 509 "harbour.y" {;} break; case 111: -#line 505 "harbour.y" +#line 510 "harbour.y" {;} break; case 112: -#line 506 "harbour.y" +#line 511 "harbour.y" {;} break; case 113: -#line 507 "harbour.y" +#line 512 "harbour.y" {;} break; case 118: -#line 516 "harbour.y" +#line 521 "harbour.y" { (yyval.lNumber) = (yyvsp[(1) - (1)].lNumber); ;} break; case 119: -#line 517 "harbour.y" +#line 522 "harbour.y" { (yyval.lNumber) += (yyvsp[(2) - (2)].lNumber); ;} break; case 120: -#line 520 "harbour.y" +#line 525 "harbour.y" { hb_compExternAdd( HB_COMP_PARAM, (yyvsp[(1) - (1)].string) ); ;} break; case 121: -#line 521 "harbour.y" +#line 526 "harbour.y" { hb_compExternAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string) ); ;} break; case 122: -#line 524 "harbour.y" +#line 529 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; case 123: -#line 525 "harbour.y" +#line 530 "harbour.y" { (yyval.string) = "STEP"; ;} break; case 124: -#line 526 "harbour.y" +#line 531 "harbour.y" { (yyval.string) = "TO"; ;} break; case 125: -#line 527 "harbour.y" +#line 532 "harbour.y" { (yyval.string) = "LOOP"; ;} break; case 126: -#line 528 "harbour.y" +#line 533 "harbour.y" { (yyval.string) = "EXIT"; ;} break; case 127: -#line 529 "harbour.y" +#line 534 "harbour.y" { (yyval.string) = "IN"; ;} break; case 128: -#line 530 "harbour.y" - { (yyval.string) = (yyvsp[(1) - (1)].string); ;} - break; - - case 129: -#line 531 "harbour.y" - { (yyval.string) = (yyvsp[(1) - (1)].string); ;} - break; - - case 130: -#line 532 "harbour.y" - { (yyval.string) = (yyvsp[(1) - (1)].string); ;} - break; - - case 131: -#line 533 "harbour.y" - { (yyval.string) = (yyvsp[(1) - (1)].string); ;} - break; - - case 132: -#line 534 "harbour.y" - { (yyval.string) = (yyvsp[(1) - (1)].string); ;} - break; - - case 133: #line 535 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 134: + case 129: #line 536 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 135: + case 130: #line 537 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 136: + case 131: #line 538 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 137: + case 132: #line 539 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 138: + case 133: #line 540 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 139: + case 134: +#line 541 "harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 135: +#line 542 "harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 136: +#line 543 "harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 137: +#line 544 "harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 138: #line 545 "harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 139: +#line 550 "harbour.y" { (yyval.asExpr) = hb_compExprNewDouble( (yyvsp[(1) - (1)].valDouble).dNumber, (yyvsp[(1) - (1)].valDouble).bWidth, (yyvsp[(1) - (1)].valDouble).bDec, HB_COMP_PARAM ); ;} break; case 140: -#line 546 "harbour.y" +#line 551 "harbour.y" { (yyval.asExpr) = hb_compExprNewLong( (yyvsp[(1) - (1)].valLong).lNumber, HB_COMP_PARAM ); ;} break; case 141: -#line 549 "harbour.y" +#line 554 "harbour.y" { (yyval.asExpr) = hb_compExprNewDate( (yyvsp[(1) - (1)].valLong).lNumber, HB_COMP_PARAM ); if( (yyvsp[(1) - (1)].valLong).lNumber == 0 ) { @@ -5387,589 +4798,590 @@ yyreduce: break; case 142: -#line 557 "harbour.y" +#line 562 "harbour.y" { (yyval.asExpr) = hb_compExprNewLong( (yyvsp[(1) - (2)].valLong).lNumber, HB_COMP_PARAM ); ;} break; case 143: -#line 558 "harbour.y" +#line 563 "harbour.y" { (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, hb_compExprNewDouble( (yyvsp[(1) - (2)].valDouble).dNumber, (yyvsp[(1) - (2)].valDouble).bWidth, (yyvsp[(1) - (2)].valDouble).bDec, HB_COMP_PARAM ) ); ;} break; case 144: -#line 563 "harbour.y" +#line 568 "harbour.y" { (yyval.asExpr) = hb_compExprNewNil( HB_COMP_PARAM ); ;} break; case 145: -#line 566 "harbour.y" +#line 571 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 146: -#line 571 "harbour.y" +#line 576 "harbour.y" { (yyval.asExpr) = hb_compExprNewString( (yyvsp[(1) - (1)].valChar).string, (yyvsp[(1) - (1)].valChar).length, (yyvsp[(1) - (1)].valChar).dealloc, HB_COMP_PARAM ); + (yyvsp[(1) - (1)].valChar).dealloc = FALSE; ;} break; case 147: -#line 576 "harbour.y" +#line 582 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 148: -#line 581 "harbour.y" +#line 587 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 149: -#line 586 "harbour.y" +#line 592 "harbour.y" { (yyval.asExpr) = hb_compExprNewLogical( TRUE, HB_COMP_PARAM ); ;} break; case 150: -#line 587 "harbour.y" +#line 593 "harbour.y" { (yyval.asExpr) = hb_compExprNewLogical( FALSE, HB_COMP_PARAM ); ;} break; case 151: -#line 590 "harbour.y" +#line 596 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 152: -#line 595 "harbour.y" +#line 601 "harbour.y" { (yyval.asExpr) = hb_compExprNewSelf( HB_COMP_PARAM ); ;} break; case 153: -#line 598 "harbour.y" +#line 604 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 154: -#line 603 "harbour.y" +#line 609 "harbour.y" {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_ARRAY;;} break; case 155: -#line 603 "harbour.y" +#line 609 "harbour.y" { (yyval.asExpr) = hb_compExprNewArray( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef=(yyvsp[(2) - (4)].bTrue); ;} break; case 156: -#line 606 "harbour.y" +#line 612 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 157: -#line 611 "harbour.y" +#line 617 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; case 158: -#line 614 "harbour.y" +#line 620 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 159: -#line 619 "harbour.y" +#line 625 "harbour.y" { (yyval.asExpr) = hb_compExprNewVar( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; case 160: -#line 622 "harbour.y" +#line 628 "harbour.y" { (yyval.asExpr) = hb_compExprNewAlias( (yyvsp[(1) - (2)].string), HB_COMP_PARAM ); ;} break; case 161: -#line 627 "harbour.y" +#line 633 "harbour.y" { (yyval.asExpr) = hb_compExprNewMacro( NULL, '&', (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; case 162: -#line 628 "harbour.y" +#line 634 "harbour.y" { (yyval.asExpr) = hb_compExprNewMacro( NULL, 0, (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; case 163: -#line 631 "harbour.y" +#line 637 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 164: -#line 636 "harbour.y" +#line 642 "harbour.y" { (yyval.asExpr) = hb_compExprNewMacro( (yyvsp[(2) - (2)].asExpr), 0, NULL, HB_COMP_PARAM ); ;} break; case 165: -#line 639 "harbour.y" +#line 645 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 166: -#line 646 "harbour.y" +#line 652 "harbour.y" { (yyval.asExpr) = hb_compExprNewAlias( "FIELD", HB_COMP_PARAM ); ;} break; case 167: -#line 647 "harbour.y" +#line 653 "harbour.y" { (yyval.asExpr) = (yyvsp[(3) - (3)].asExpr); ;} break; case 168: -#line 652 "harbour.y" +#line 658 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; case 169: -#line 653 "harbour.y" +#line 659 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; case 170: -#line 654 "harbour.y" +#line 660 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; case 171: -#line 655 "harbour.y" +#line 661 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; case 172: -#line 656 "harbour.y" +#line 662 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; case 173: -#line 657 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} - break; - - case 174: -#line 658 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} - break; - - case 175: -#line 659 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} - break; - - case 176: -#line 660 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} - break; - - case 177: -#line 661 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} - break; - - case 178: -#line 662 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} - break; - - case 179: #line 663 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} break; - case 180: + case 174: #line 664 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} break; - case 181: + case 175: +#line 665 "harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 176: +#line 666 "harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 177: #line 667 "harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 178: +#line 668 "harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 179: +#line 669 "harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 180: +#line 670 "harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 181: +#line 673 "harbour.y" { (yyval.asExpr) = hb_compExprNewVar( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; case 182: -#line 668 "harbour.y" +#line 674 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 183: -#line 669 "harbour.y" +#line 675 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 184: -#line 672 "harbour.y" +#line 678 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 185: -#line 673 "harbour.y" +#line 679 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 186: -#line 674 "harbour.y" +#line 680 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 187: -#line 675 "harbour.y" +#line 681 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 188: -#line 676 "harbour.y" - { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} - break; - - case 189: -#line 677 "harbour.y" - { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} - break; - - case 190: -#line 678 "harbour.y" - { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} - break; - - case 191: -#line 679 "harbour.y" - { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} - break; - - case 192: -#line 680 "harbour.y" - { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} - break; - - case 193: -#line 681 "harbour.y" - { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} - break; - - case 194: #line 682 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 195: + case 189: #line 683 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 196: + case 190: #line 684 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 197: + case 191: #line 685 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 198: + case 192: #line 686 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 199: + case 193: #line 687 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 200: + case 194: #line 688 "harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 195: +#line 689 "harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 196: +#line 690 "harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 197: +#line 691 "harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 198: +#line 692 "harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 199: +#line 693 "harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 200: +#line 694 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 201: -#line 689 "harbour.y" +#line 695 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 202: -#line 690 "harbour.y" +#line 696 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 203: -#line 699 "harbour.y" +#line 705 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 204: -#line 700 "harbour.y" +#line 706 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 205: -#line 701 "harbour.y" +#line 707 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 206: -#line 702 "harbour.y" +#line 708 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 207: -#line 703 "harbour.y" +#line 709 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 208: -#line 704 "harbour.y" +#line 710 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} break; case 209: -#line 709 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 210: -#line 710 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 211: -#line 711 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 212: -#line 712 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 213: -#line 713 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 214: -#line 714 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 215: #line 715 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 216: + case 210: #line 716 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 217: + case 211: #line 717 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 218: + case 212: #line 718 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 219: + case 213: #line 719 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 220: + case 214: #line 720 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 221: + case 215: #line 721 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 222: + case 216: #line 722 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 223: + case 217: #line 723 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 224: + case 218: +#line 724 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 219: +#line 725 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 220: #line 726 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 221: +#line 727 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 222: +#line 728 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 223: +#line 729 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 224: +#line 732 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 225: -#line 731 "harbour.y" +#line 737 "harbour.y" {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} break; case 226: -#line 731 "harbour.y" +#line 737 "harbour.y" { (yyval.asExpr) = hb_compExprNewFunCall( hb_compExprNewFunName( (yyvsp[(1) - (5)].string), HB_COMP_PARAM ), (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef=(yyvsp[(3) - (5)].bTrue); ;} break; case 227: -#line 734 "harbour.y" +#line 740 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 228: -#line 735 "harbour.y" +#line 741 "harbour.y" {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} break; case 229: -#line 735 "harbour.y" +#line 741 "harbour.y" { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(1) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef=(yyvsp[(3) - (5)].bTrue); ;} break; case 230: -#line 736 "harbour.y" +#line 742 "harbour.y" {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} break; case 231: -#line 736 "harbour.y" +#line 742 "harbour.y" { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(1) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef=(yyvsp[(3) - (5)].bTrue); ;} break; case 232: -#line 739 "harbour.y" +#line 745 "harbour.y" { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; case 233: -#line 740 "harbour.y" +#line 746 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; case 234: -#line 743 "harbour.y" +#line 749 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 235: -#line 749 "harbour.y" +#line 755 "harbour.y" { (yyval.asMessage).value.string = (yyvsp[(1) - (1)].string); (yyval.asMessage).bMacro=FALSE; ;} break; case 236: -#line 750 "harbour.y" +#line 756 "harbour.y" { (yyval.asMessage).value.macro = (yyvsp[(1) - (1)].asExpr); (yyval.asMessage).bMacro=TRUE; ;} break; case 237: -#line 751 "harbour.y" +#line 757 "harbour.y" { (yyval.asMessage).value.macro = (yyvsp[(1) - (1)].asExpr); (yyval.asMessage).bMacro=TRUE; ;} break; case 238: -#line 754 "harbour.y" - { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} - break; - - case 239: -#line 755 "harbour.y" - { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} - break; - - case 240: -#line 756 "harbour.y" - { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} - break; - - case 241: -#line 757 "harbour.y" - { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} - break; - - case 242: -#line 758 "harbour.y" - { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} - break; - - case 243: -#line 759 "harbour.y" - { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} - break; - - case 244: #line 760 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 245: + case 239: #line 761 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 246: + case 240: #line 762 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 247: + case 241: #line 763 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 248: + case 242: #line 764 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 249: + case 243: #line 765 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 250: + case 244: #line 766 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 251: + case 245: #line 767 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 252: + case 246: #line 768 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 253: + case 247: #line 769 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 254: + case 248: #line 770 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 255: + case 249: #line 771 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 256: + case 250: #line 772 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 257: + case 251: #line 773 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 258: + case 252: #line 774 "harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 253: +#line 775 "harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 254: +#line 776 "harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 255: +#line 777 "harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 256: +#line 778 "harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 257: +#line 779 "harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 258: +#line 780 "harbour.y" { if( HB_COMP_PARAM->wWithObjectCnt == 0 ) hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_WITHOBJECT, NULL, NULL ); (yyval.asExpr) = ((yyvsp[(2) - (2)].asMessage).bMacro ? hb_compExprNewSend( NULL, NULL, (yyvsp[(2) - (2)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( NULL, (yyvsp[(2) - (2)].asMessage).value.string, NULL, HB_COMP_PARAM )); @@ -5977,1462 +5389,1462 @@ yyreduce: break; case 259: -#line 780 "harbour.y" +#line 786 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 260: -#line 785 "harbour.y" +#line 791 "harbour.y" {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} break; case 261: -#line 785 "harbour.y" +#line 791 "harbour.y" { (yyval.asExpr) = hb_compExprNewMethodCall( (yyvsp[(1) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr) ); HB_COMP_PARAM->iPassByRef=(yyvsp[(3) - (5)].bTrue); ;} break; case 262: -#line 788 "harbour.y" +#line 794 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 264: -#line 798 "harbour.y" +#line 804 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 265: -#line 799 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} - break; - - case 266: -#line 800 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} - break; - - case 267: -#line 801 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} - break; - - case 268: -#line 802 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} - break; - - case 269: -#line 803 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} - break; - - case 270: -#line 804 "harbour.y" - {HB_COMP_PARAM->cVarType = ' ';;} - break; - - case 271: -#line 804 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} - break; - - case 272: #line 805 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 273: + case 266: #line 806 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 274: + case 267: #line 807 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 275: + case 268: #line 808 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 276: + case 269: #line 809 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 277: + case 270: #line 810 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + {HB_COMP_PARAM->cVarType = ' ';;} break; - case 278: + case 271: +#line 810 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 272: #line 811 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 279: + case 273: #line 812 "harbour.y" - {HB_COMP_PARAM->cVarType = ' ';;} + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 280: -#line 812 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} - break; - - case 281: + case 274: #line 813 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 282: + case 275: #line 814 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 283: + case 276: #line 815 "harbour.y" - {HB_COMP_PARAM->cVarType = ' ';;} + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 284: -#line 815 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} - break; - - case 285: + case 277: #line 816 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 286: + case 278: #line 817 "harbour.y" - {HB_COMP_PARAM->cVarType = ' ';;} - break; - - case 287: -#line 817 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} - break; - - case 288: -#line 818 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 289: + case 279: +#line 818 "harbour.y" + {HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 280: +#line 818 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 281: #line 819 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 290: + case 282: #line 820 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 291: + case 283: #line 821 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + {HB_COMP_PARAM->cVarType = ' ';;} break; - case 292: + case 284: +#line 821 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 285: #line 822 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 293: + case 286: #line 823 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + {HB_COMP_PARAM->cVarType = ' ';;} break; - case 294: + case 287: +#line 823 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 288: #line 824 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 295: + case 289: #line 825 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 296: + case 290: #line 826 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 297: + case 291: +#line 827 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 292: +#line 828 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 293: #line 829 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 298: + case 294: #line 830 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 299: + case 295: #line 831 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 300: + case 296: #line 832 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 297: +#line 835 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 298: +#line 836 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 299: +#line 837 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 300: +#line 838 "harbour.y" { HB_COMP_PARAM->cVarType = ' ';;} break; case 301: -#line 832 "harbour.y" +#line 838 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} break; case 302: -#line 833 "harbour.y" +#line 839 "harbour.y" { HB_COMP_PARAM->cVarType = ' ';;} break; case 303: -#line 833 "harbour.y" +#line 839 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} break; case 304: -#line 834 "harbour.y" +#line 840 "harbour.y" { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewVarRef( (yyvsp[(2) - (2)].string), HB_COMP_PARAM ) ); ;} break; case 305: -#line 835 "harbour.y" +#line 841 "harbour.y" { int bPassByRef=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;(yyval.string) = hb_compExprAsSymbol( (yyvsp[(2) - (2)].asExpr) ); hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewFunRef( (yyval.string), HB_COMP_PARAM ) ); HB_COMP_PARAM->iPassByRef=bPassByRef; ;} break; case 306: -#line 836 "harbour.y" +#line 842 "harbour.y" { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ) ); ;} break; case 307: -#line 837 "harbour.y" +#line 843 "harbour.y" { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ) ); ;} break; case 308: -#line 838 "harbour.y" +#line 844 "harbour.y" { (yyval.asExpr) = hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 309: -#line 841 "harbour.y" +#line 847 "harbour.y" { (yyval.asExpr) = hb_compExprNewEmpty( HB_COMP_PARAM ); ;} break; case 311: -#line 845 "harbour.y" +#line 851 "harbour.y" { (yyval.asExpr) = hb_compExprNewVar( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; case 317: -#line 851 "harbour.y" +#line 857 "harbour.y" { (yyval.asExpr) = hb_compExprListStrip( (yyvsp[(1) - (1)].asExpr), NULL ); ;} break; case 318: -#line 857 "harbour.y" +#line 863 "harbour.y" { (yyval.asExpr) = hb_compExprNewPostInc( (yyvsp[(0) - (1)].asExpr), HB_COMP_PARAM ); ;} break; case 319: -#line 858 "harbour.y" +#line 864 "harbour.y" { (yyval.asExpr) = hb_compExprNewPostDec( (yyvsp[(0) - (1)].asExpr), HB_COMP_PARAM ); ;} break; case 320: -#line 865 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 321: -#line 866 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 322: -#line 867 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 323: -#line 868 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 324: -#line 869 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 325: -#line 870 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 326: #line 871 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 327: + case 321: #line 872 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 328: + case 322: #line 873 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 329: + case 323: #line 874 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 330: + case 324: #line 875 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 331: + case 325: #line 876 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 332: + case 326: #line 877 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 333: + case 327: #line 878 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 334: + case 328: #line 879 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 335: + case 329: #line 880 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 336: + case 330: #line 881 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 337: + case 331: #line 882 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 338: + case 332: #line 883 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 339: + case 333: +#line 884 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 334: +#line 885 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 335: #line 886 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 336: +#line 887 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 337: +#line 888 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 338: +#line 889 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 339: +#line 892 "harbour.y" { (yyval.asExpr) = hb_compExprNewPreInc( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 340: -#line 887 "harbour.y" +#line 893 "harbour.y" { (yyval.asExpr) = hb_compExprNewPreDec( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 341: -#line 890 "harbour.y" +#line 896 "harbour.y" { (yyval.asExpr) = hb_compExprNewNot( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 342: -#line 891 "harbour.y" +#line 897 "harbour.y" { (yyval.asExpr) = hb_compExprNewNegate( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 343: -#line 892 "harbour.y" +#line 898 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; case 344: -#line 899 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 345: -#line 900 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 346: -#line 901 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 347: -#line 902 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 348: -#line 903 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 349: -#line 904 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 350: #line 905 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 351: + case 345: #line 906 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 352: + case 346: #line 907 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 353: + case 347: #line 908 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 354: + case 348: #line 909 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 355: + case 349: #line 910 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 356: + case 350: #line 911 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 357: + case 351: #line 912 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} - break; - - case 358: -#line 913 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 359: + case 352: +#line 913 "harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 353: #line 914 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 360: + case 354: #line 915 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 361: + case 355: #line 916 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 362: + case 356: #line 917 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 363: + case 357: +#line 918 "harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 358: +#line 919 "harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 359: #line 920 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 364: + case 360: #line 921 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 365: + case 361: #line 922 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} break; - case 366: + case 362: #line 923 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 367: -#line 924 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 368: -#line 925 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 369: + case 363: #line 926 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 370: + case 364: #line 927 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 371: + case 365: #line 928 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 372: + case 366: #line 929 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 373: + case 367: #line 930 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 374: + case 368: #line 931 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 375: + case 369: #line 932 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 376: + case 370: #line 933 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 377: + case 371: #line 934 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 378: + case 372: #line 935 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 379: + case 373: #line 936 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 380: + case 374: #line 937 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 381: + case 375: #line 938 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 382: + case 376: #line 939 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 383: + case 377: +#line 940 "harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 378: +#line 941 "harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 379: #line 942 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 384: + case 380: #line 943 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 385: + case 381: #line 944 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 386: + case 382: #line 945 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 387: -#line 946 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 388: -#line 947 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 389: + case 383: #line 948 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 390: + case 384: #line 949 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 391: + case 385: #line 950 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 392: + case 386: #line 951 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 393: + case 387: #line 952 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 394: + case 388: #line 953 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 395: + case 389: #line 954 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 396: + case 390: #line 955 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 397: + case 391: #line 956 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 398: + case 392: #line 957 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 399: + case 393: #line 958 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 400: + case 394: #line 959 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 401: + case 395: #line 960 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 402: + case 396: +#line 961 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 397: +#line 962 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 398: #line 963 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 403: + case 399: #line 964 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 404: + case 400: #line 965 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 405: + case 401: #line 966 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 406: -#line 967 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 407: -#line 968 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 408: + case 402: #line 969 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 409: + case 403: #line 970 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 410: + case 404: #line 971 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 411: + case 405: #line 972 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 412: + case 406: #line 973 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 413: + case 407: #line 974 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 414: + case 408: #line 975 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 415: + case 409: #line 976 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 416: + case 410: #line 977 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 417: + case 411: #line 978 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 418: + case 412: #line 979 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 419: + case 413: #line 980 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 420: + case 414: #line 981 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 421: + case 415: +#line 982 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 416: +#line 983 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 417: #line 984 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 422: + case 418: #line 985 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 423: + case 419: #line 986 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 424: + case 420: #line 987 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 425: -#line 988 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 426: -#line 989 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 427: + case 421: #line 990 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 428: + case 422: #line 991 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 429: + case 423: #line 992 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 430: + case 424: #line 993 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 431: + case 425: #line 994 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 432: + case 426: #line 995 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 433: + case 427: #line 996 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 434: + case 428: #line 997 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 435: + case 429: #line 998 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 436: + case 430: #line 999 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 437: + case 431: #line 1000 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 438: + case 432: #line 1001 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 439: + case 433: #line 1002 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 440: + case 434: +#line 1003 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 435: +#line 1004 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 436: #line 1005 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 441: + case 437: #line 1006 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 442: + case 438: #line 1007 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 443: + case 439: #line 1008 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 444: -#line 1009 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 445: -#line 1010 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 446: + case 440: #line 1011 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 447: + case 441: #line 1012 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 448: + case 442: #line 1013 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 449: + case 443: #line 1014 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 450: + case 444: #line 1015 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 451: + case 445: #line 1016 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 452: + case 446: #line 1017 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 453: + case 447: #line 1018 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 454: + case 448: #line 1019 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 455: + case 449: #line 1020 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 456: + case 450: #line 1021 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 457: + case 451: #line 1022 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 458: + case 452: #line 1023 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 459: + case 453: +#line 1024 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 454: +#line 1025 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 455: #line 1026 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 460: + case 456: #line 1027 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 461: + case 457: #line 1028 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 462: + case 458: #line 1029 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 463: -#line 1030 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 464: -#line 1031 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 465: + case 459: #line 1032 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 466: + case 460: #line 1033 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 467: + case 461: #line 1034 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 468: + case 462: #line 1035 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 469: + case 463: #line 1036 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 470: + case 464: #line 1037 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 471: + case 465: #line 1038 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 472: + case 466: #line 1039 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 473: + case 467: #line 1040 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 474: + case 468: #line 1041 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 475: + case 469: #line 1042 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 476: + case 470: #line 1043 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 477: + case 471: #line 1044 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 478: + case 472: +#line 1045 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 473: +#line 1046 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 474: #line 1047 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 479: + case 475: #line 1048 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 480: + case 476: #line 1049 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 481: + case 477: #line 1050 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 482: -#line 1051 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 483: -#line 1052 "harbour.y" - { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 484: + case 478: #line 1053 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 485: + case 479: #line 1054 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 486: + case 480: #line 1055 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 487: + case 481: #line 1056 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 488: + case 482: #line 1057 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 489: + case 483: #line 1058 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 490: + case 484: #line 1059 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 491: + case 485: #line 1060 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 492: + case 486: #line 1061 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 493: + case 487: #line 1062 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 494: + case 488: #line 1063 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 495: + case 489: #line 1064 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 496: + case 490: #line 1065 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 497: + case 491: +#line 1066 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 492: +#line 1067 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 493: #line 1068 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 494: +#line 1069 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 495: +#line 1070 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 496: +#line 1071 "harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 497: +#line 1074 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 498: -#line 1069 "harbour.y" +#line 1075 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 499: -#line 1070 "harbour.y" +#line 1076 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 500: -#line 1071 "harbour.y" +#line 1077 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 501: -#line 1072 "harbour.y" +#line 1078 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 502: -#line 1073 "harbour.y" +#line 1079 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 503: -#line 1076 "harbour.y" +#line 1082 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlus( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 504: -#line 1077 "harbour.y" +#line 1083 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinus( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 505: -#line 1078 "harbour.y" +#line 1084 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMult( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 506: -#line 1079 "harbour.y" +#line 1085 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDiv( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 507: -#line 1080 "harbour.y" +#line 1086 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMod( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 508: -#line 1081 "harbour.y" +#line 1087 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPower( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 509: -#line 1084 "harbour.y" +#line 1090 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewAnd( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 510: -#line 1085 "harbour.y" +#line 1091 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewOr( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 511: -#line 1088 "harbour.y" +#line 1094 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewEQ( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 512: -#line 1089 "harbour.y" +#line 1095 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewLT( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 513: -#line 1090 "harbour.y" +#line 1096 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewGT( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 514: -#line 1091 "harbour.y" +#line 1097 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewLE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 515: -#line 1092 "harbour.y" +#line 1098 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewGE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 516: -#line 1093 "harbour.y" +#line 1099 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewNE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 517: -#line 1094 "harbour.y" +#line 1100 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewNE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 518: -#line 1095 "harbour.y" +#line 1101 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewIN( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 519: -#line 1096 "harbour.y" +#line 1102 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewEqual( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 520: -#line 1099 "harbour.y" +#line 1105 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 521: -#line 1105 "harbour.y" +#line 1111 "harbour.y" { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(0) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 522: -#line 1106 "harbour.y" +#line 1112 "harbour.y" { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 523: -#line 1107 "harbour.y" +#line 1113 "harbour.y" { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(1) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ); ;} break; case 524: -#line 1110 "harbour.y" +#line 1116 "harbour.y" { (yyval.asExpr) = hb_compExprNewList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; case 525: -#line 1111 "harbour.y" +#line 1117 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; case 526: -#line 1114 "harbour.y" - { (yyval.asExpr) = hb_compExprNewCodeBlock( (yyvsp[(1) - (1)].asCodeblock).string, (yyvsp[(1) - (1)].asCodeblock).isMacro, (yyvsp[(1) - (1)].asCodeblock).lateEval, HB_COMP_PARAM ); ;} +#line 1120 "harbour.y" + { (yyval.asExpr) = hb_compExprNewCodeBlock( (yyvsp[(1) - (1)].asCodeblock).string, (yyvsp[(1) - (1)].asCodeblock).length, (yyvsp[(1) - (1)].asCodeblock).flags, HB_COMP_PARAM ); (yyvsp[(1) - (1)].asCodeblock).string = NULL; ;} break; case 527: -#line 1115 "harbour.y" +#line 1121 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (6)].asExpr); ;} break; case 528: -#line 1116 "harbour.y" - { (yyval.asExpr) = hb_compExprNewCodeBlock( (yyvsp[(1) - (1)].asCodeblock).string, (yyvsp[(1) - (1)].asCodeblock).isMacro, (yyvsp[(1) - (1)].asCodeblock).lateEval, HB_COMP_PARAM ); ;} +#line 1122 "harbour.y" + { (yyval.asExpr) = hb_compExprNewCodeBlock( (yyvsp[(1) - (1)].asCodeblock).string, (yyvsp[(1) - (1)].asCodeblock).length, (yyvsp[(1) - (1)].asCodeblock).flags, HB_COMP_PARAM ); ;} break; case 529: -#line 1117 "harbour.y" +#line 1123 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (6)].asExpr); ;} break; case 530: -#line 1122 "harbour.y" +#line 1128 "harbour.y" { (yyval.asExpr) = hb_compExprAddCodeblockExpr( (yyvsp[(-2) - (1)].asExpr), (yyvsp[(1) - (1)].asExpr) ); ;} break; case 531: -#line 1123 "harbour.y" +#line 1129 "harbour.y" { (yyval.asExpr) = hb_compExprAddCodeblockExpr( (yyvsp[(-2) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; case 532: -#line 1129 "harbour.y" +#line 1135 "harbour.y" { (yyval.asExpr) = NULL; ;} break; case 533: -#line 1132 "harbour.y" +#line 1138 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_LOCAL; (yyval.asExpr) = hb_compExprCBVarAdd( (yyvsp[(0) - (2)].asExpr), (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType, HB_COMP_PARAM ); HB_COMP_PARAM->cVarType = ' '; ;} break; case 534: -#line 1133 "harbour.y" +#line 1139 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_LOCAL; (yyval.asExpr) = hb_compExprCBVarAdd( (yyvsp[(0) - (4)].asExpr), (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType, HB_COMP_PARAM ); HB_COMP_PARAM->cVarType = ' '; ;} break; case 535: -#line 1143 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} - break; - - case 536: -#line 1146 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} - break; - - case 537: #line 1149 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; - case 538: + case 536: #line 1152 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; - case 539: + case 537: #line 1155 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 538: +#line 1158 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 539: +#line 1161 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 540: -#line 1156 "harbour.y" +#line 1162 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 541: -#line 1157 "harbour.y" +#line 1163 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 542: -#line 1158 "harbour.y" +#line 1164 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 543: -#line 1161 "harbour.y" +#line 1167 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 544: -#line 1164 "harbour.y" +#line 1170 "harbour.y" { (yyval.asExpr) = hb_compExprNewList( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 545: -#line 1167 "harbour.y" - { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} - break; - - case 546: -#line 1170 "harbour.y" - { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} - break; - - case 547: #line 1173 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; + case 546: +#line 1176 "harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 547: +#line 1179 "harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + case 548: -#line 1174 "harbour.y" +#line 1180 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; case 549: -#line 1177 "harbour.y" +#line 1183 "harbour.y" { (yyval.asExpr) = hb_compExprNewIIF( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 550: -#line 1179 "harbour.y" +#line 1185 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(2) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr) ); ;} break; case 551: -#line 1181 "harbour.y" +#line 1187 "harbour.y" { (yyval.asExpr) = hb_compExprNewIIF( hb_compExprAddListExpr( (yyvsp[(6) - (8)].asExpr), (yyvsp[(7) - (8)].asExpr) ), HB_COMP_PARAM ); ;} break; case 552: -#line 1184 "harbour.y" +#line 1190 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 553: -#line 1187 "harbour.y" +#line 1193 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_LOCAL; hb_compLinePush( HB_COMP_PARAM ); ;} break; case 554: -#line 1187 "harbour.y" +#line 1193 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; case 555: -#line 1188 "harbour.y" +#line 1194 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_STATIC; hb_compLinePush( HB_COMP_PARAM ); ;} break; case 556: -#line 1188 "harbour.y" +#line 1194 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; case 557: -#line 1189 "harbour.y" +#line 1195 "harbour.y" { if( HB_COMP_PARAM->functions.pLast->bFlags & FUN_USES_LOCAL_PARAMS ) hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_PARAMETERS_NOT_ALLOWED, NULL, NULL ); else @@ -7440,44 +6852,44 @@ yyreduce: break; case 558: -#line 1193 "harbour.y" +#line 1199 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_NONE; ;} break; case 559: -#line 1196 "harbour.y" +#line 1202 "harbour.y" { (yyval.iNumber) = 1; ;} break; case 560: -#line 1197 "harbour.y" +#line 1203 "harbour.y" { (yyval.iNumber)++; ;} break; case 561: -#line 1200 "harbour.y" +#line 1206 "harbour.y" { (yyval.iNumber) = 1; ;} break; case 562: -#line 1201 "harbour.y" +#line 1207 "harbour.y" { (yyval.iNumber)++; ;} break; case 564: -#line 1211 "harbour.y" +#line 1217 "harbour.y" { hb_compRTVariableAdd( HB_COMP_PARAM, hb_compExprNewRTVar( NULL, (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), FALSE ); ;} break; case 565: -#line 1213 "harbour.y" +#line 1219 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); hb_compRTVariableAdd( HB_COMP_PARAM, hb_compExprNewRTVar( NULL, (yyvsp[(1) - (4)].asExpr), HB_COMP_PARAM ), TRUE ); ;} break; case 566: -#line 1217 "harbour.y" +#line 1223 "harbour.y" { USHORT uCount = (USHORT) hb_compExprListLen( (yyvsp[(2) - (2)].asExpr) ); hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); @@ -7487,7 +6899,7 @@ yyreduce: break; case 567: -#line 1224 "harbour.y" +#line 1230 "harbour.y" { USHORT uCount = (USHORT) hb_compExprListLen( (yyvsp[(2) - (3)].asExpr) ); hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); @@ -7497,12 +6909,12 @@ yyreduce: break; case 568: -#line 1232 "harbour.y" +#line 1238 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} break; case 569: -#line 1233 "harbour.y" +#line 1239 "harbour.y" { if( HB_COMP_PARAM->iVarScope == VS_STATIC ) { @@ -7518,19 +6930,19 @@ yyreduce: break; case 570: -#line 1246 "harbour.y" +#line 1252 "harbour.y" { (yyval.iNumber) = HB_COMP_PARAM->iVarScope; hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} break; case 571: -#line 1249 "harbour.y" +#line 1255 "harbour.y" {HB_COMP_PARAM->cVarType = ' ';;} break; case 572: -#line 1250 "harbour.y" +#line 1256 "harbour.y" { HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' '; @@ -7557,87 +6969,87 @@ yyreduce: break; case 573: -#line 1274 "harbour.y" +#line 1280 "harbour.y" { hb_compVariableDim( (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 574: -#line 1275 "harbour.y" +#line 1281 "harbour.y" { hb_compVariableDim( (yyvsp[(1) - (3)].string), (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ); ;} break; case 575: -#line 1281 "harbour.y" +#line 1287 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} break; case 576: -#line 1284 "harbour.y" +#line 1290 "harbour.y" { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 577: -#line 1285 "harbour.y" +#line 1291 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; case 578: -#line 1286 "harbour.y" +#line 1292 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr) ); ;} break; case 579: -#line 1290 "harbour.y" +#line 1296 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_FIELD; ;} break; case 580: -#line 1290 "harbour.y" +#line 1296 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; case 581: -#line 1293 "harbour.y" +#line 1299 "harbour.y" { (yyval.iNumber)=hb_compFieldsCount( HB_COMP_PARAM ); hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} break; case 582: -#line 1294 "harbour.y" +#line 1300 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); ;} break; case 583: -#line 1295 "harbour.y" +#line 1301 "harbour.y" { hb_compFieldSetAlias( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), (yyvsp[(1) - (3)].iNumber) ); ;} break; case 584: -#line 1298 "harbour.y" +#line 1304 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_MEMVAR; ;} break; case 585: -#line 1298 "harbour.y" +#line 1304 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; case 586: -#line 1301 "harbour.y" +#line 1307 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} break; case 587: -#line 1302 "harbour.y" +#line 1308 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); ;} break; case 588: -#line 1305 "harbour.y" +#line 1311 "harbour.y" { hb_compDeclaredAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string) ); HB_COMP_PARAM->szDeclaredFun = (yyvsp[(2) - (3)].string); ;} break; case 589: -#line 1306 "harbour.y" +#line 1312 "harbour.y" { if( HB_COMP_PARAM->pLastDeclared ) { @@ -7663,42 +7075,42 @@ yyreduce: break; case 590: -#line 1328 "harbour.y" +#line 1334 "harbour.y" { HB_COMP_PARAM->pLastClass = hb_compClassAdd( HB_COMP_PARAM, (yyvsp[(2) - (2)].string) ); ;} break; case 591: -#line 1328 "harbour.y" +#line 1334 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_NONE; ;} break; case 592: -#line 1329 "harbour.y" +#line 1335 "harbour.y" { HB_COMP_PARAM->pLastClass = hb_compClassAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string) ); HB_COMP_PARAM->iVarScope = VS_NONE; ;} break; case 593: -#line 1330 "harbour.y" +#line 1336 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_NONE; ;} break; case 594: -#line 1331 "harbour.y" +#line 1337 "harbour.y" { HB_COMP_PARAM->cDataListType = HB_COMP_PARAM->cVarType; ;} break; case 595: -#line 1331 "harbour.y" +#line 1337 "harbour.y" { HB_COMP_PARAM->cDataListType = 0; HB_COMP_PARAM->iVarScope = VS_NONE; ;} break; case 602: -#line 1344 "harbour.y" +#line 1350 "harbour.y" { HB_COMP_PARAM->pLastMethod = hb_compMethodAdd( HB_COMP_PARAM, HB_COMP_PARAM->pLastClass, (yyvsp[(1) - (2)].string) ); ;} break; case 603: -#line 1345 "harbour.y" +#line 1351 "harbour.y" { if( HB_COMP_PARAM->pLastMethod ) { @@ -7721,12 +7133,12 @@ yyreduce: break; case 604: -#line 1366 "harbour.y" +#line 1372 "harbour.y" { HB_COMP_PARAM->pLastMethod = hb_compMethodAdd( HB_COMP_PARAM, HB_COMP_PARAM->pLastClass, (yyvsp[(1) - (1)].string) ); ;} break; case 605: -#line 1367 "harbour.y" +#line 1373 "harbour.y" { if( HB_COMP_PARAM->pLastMethod ) { @@ -7783,289 +7195,289 @@ yyreduce: break; case 606: -#line 1422 "harbour.y" - {;} - break; - - case 610: #line 1428 "harbour.y" {;} break; + case 610: +#line 1434 "harbour.y" + {;} + break; + case 611: -#line 1429 "harbour.y" +#line 1435 "harbour.y" {;} break; case 612: -#line 1432 "harbour.y" +#line 1438 "harbour.y" {;} break; case 613: -#line 1438 "harbour.y" +#line 1444 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} break; case 614: -#line 1439 "harbour.y" +#line 1445 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_BYREF ); ;} break; case 615: -#line 1440 "harbour.y" +#line 1446 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(2) - (5)].string), 'F' ); hb_compExprDelete( (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM );;} break; case 616: -#line 1441 "harbour.y" +#line 1447 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); ;} break; case 617: -#line 1442 "harbour.y" +#line 1448 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(4) - (5)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_BYREF ); ;} break; case 618: -#line 1443 "harbour.y" +#line 1449 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(4) - (7)].string), 'F' ); hb_compExprDelete( (yyvsp[(6) - (7)].asExpr), HB_COMP_PARAM ); ;} break; case 619: -#line 1446 "harbour.y" +#line 1452 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL ); ;} break; case 620: -#line 1447 "harbour.y" +#line 1453 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} break; case 621: -#line 1448 "harbour.y" +#line 1454 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(3) - (6)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} break; case 622: -#line 1449 "harbour.y" +#line 1455 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(4) - (5)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL ); ;} break; case 623: -#line 1450 "harbour.y" +#line 1456 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(5) - (6)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} break; case 624: -#line 1451 "harbour.y" +#line 1457 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(5) - (8)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} break; case 632: -#line 1463 "harbour.y" +#line 1469 "harbour.y" { hb_compGenJumpHere( (yyvsp[(1) - (2)].iNumber), HB_COMP_PARAM ); ;} break; case 633: -#line 1464 "harbour.y" +#line 1470 "harbour.y" { hb_compGenJumpHere( (yyvsp[(1) - (3)].iNumber), HB_COMP_PARAM ); ;} break; case 634: -#line 1465 "harbour.y" +#line 1471 "harbour.y" { hb_compGenJumpHere( (yyvsp[(1) - (3)].iNumber), HB_COMP_PARAM ); hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (3)].pVoid) ); ;} break; case 635: -#line 1466 "harbour.y" +#line 1472 "harbour.y" { hb_compGenJumpHere( (yyvsp[(1) - (4)].iNumber), HB_COMP_PARAM ); hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (4)].pVoid) ); ;} break; case 636: -#line 1469 "harbour.y" +#line 1475 "harbour.y" { (yyval.lNumber) = (yyvsp[(1) - (1)].lNumber); ;} break; case 637: -#line 1470 "harbour.y" +#line 1476 "harbour.y" { (yyval.lNumber) += (yyvsp[(2) - (2)].lNumber); ;} break; case 638: -#line 1473 "harbour.y" +#line 1479 "harbour.y" { (yyval.lNumber) = 0; ;} break; case 639: -#line 1474 "harbour.y" +#line 1480 "harbour.y" { (yyval.lNumber) = (yyvsp[(1) - (1)].lNumber); ;} break; case 640: -#line 1477 "harbour.y" +#line 1483 "harbour.y" { ++HB_COMP_PARAM->wIfCounter; hb_compLinePush( HB_COMP_PARAM ); ;} break; case 641: -#line 1477 "harbour.y" +#line 1483 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; case 642: -#line 1479 "harbour.y" +#line 1485 "harbour.y" { (yyval.iNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} break; case 643: -#line 1481 "harbour.y" +#line 1487 "harbour.y" { ++HB_COMP_PARAM->wIfCounter; hb_compLinePush( HB_COMP_PARAM ); ;} break; case 644: -#line 1481 "harbour.y" +#line 1487 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; case 645: -#line 1483 "harbour.y" +#line 1489 "harbour.y" { (yyval.iNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} break; case 646: -#line 1485 "harbour.y" +#line 1491 "harbour.y" { ++HB_COMP_PARAM->wIfCounter; hb_compLinePush( HB_COMP_PARAM ); ;} break; case 647: -#line 1485 "harbour.y" +#line 1491 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; case 648: -#line 1487 "harbour.y" +#line 1493 "harbour.y" { (yyval.iNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} break; case 649: -#line 1489 "harbour.y" +#line 1495 "harbour.y" { ++HB_COMP_PARAM->wIfCounter; hb_compLinePush( HB_COMP_PARAM ); ;} break; case 650: -#line 1489 "harbour.y" +#line 1495 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; case 651: -#line 1491 "harbour.y" +#line 1497 "harbour.y" { (yyval.iNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} break; case 652: -#line 1493 "harbour.y" +#line 1499 "harbour.y" { ++HB_COMP_PARAM->wIfCounter; hb_compLinePush( HB_COMP_PARAM ); ;} break; case 653: -#line 1493 "harbour.y" +#line 1499 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; case 654: -#line 1495 "harbour.y" +#line 1501 "harbour.y" { (yyval.iNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} break; case 655: -#line 1498 "harbour.y" +#line 1504 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} break; case 657: -#line 1502 "harbour.y" +#line 1508 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; hb_compLinePush( HB_COMP_PARAM ); ;} break; case 658: -#line 1504 "harbour.y" +#line 1510 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; case 659: -#line 1508 "harbour.y" +#line 1514 "harbour.y" { (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, NULL, hb_compGenJump( 0, HB_COMP_PARAM ) ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} break; case 660: -#line 1512 "harbour.y" +#line 1518 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; hb_compLinePush( HB_COMP_PARAM ); ;} break; case 661: -#line 1514 "harbour.y" +#line 1520 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; case 662: -#line 1518 "harbour.y" +#line 1524 "harbour.y" { (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, (yyvsp[(1) - (7)].pVoid), hb_compGenJump( 0, HB_COMP_PARAM ) ); hb_compGenJumpHere( (yyvsp[(6) - (7)].iNumber), HB_COMP_PARAM ); ;} break; case 663: -#line 1523 "harbour.y" +#line 1529 "harbour.y" { --HB_COMP_PARAM->wIfCounter; HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( /*FUN_WITH_RETURN |*/ FUN_BREAK_CODE ); ;} break; case 664: -#line 1524 "harbour.y" +#line 1530 "harbour.y" { --HB_COMP_PARAM->wIfCounter; HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( /*FUN_WITH_RETURN |*/ FUN_BREAK_CODE ); ;} break; case 665: -#line 1529 "harbour.y" +#line 1535 "harbour.y" { hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (3)].pVoid) ); ;} break; case 668: -#line 1541 "harbour.y" +#line 1547 "harbour.y" { hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (4)].pVoid) ); ;} break; case 669: -#line 1545 "harbour.y" +#line 1551 "harbour.y" { --HB_COMP_PARAM->wCaseCounter; HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( FUN_WITH_RETURN | FUN_BREAK_CODE ); ;} break; case 670: -#line 1549 "harbour.y" +#line 1555 "harbour.y" { --HB_COMP_PARAM->wCaseCounter; HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( FUN_WITH_RETURN | FUN_BREAK_CODE ); ;} break; case 671: -#line 1554 "harbour.y" +#line 1560 "harbour.y" { ++HB_COMP_PARAM->wCaseCounter; hb_compLinePushIfDebugger( HB_COMP_PARAM );;} break; case 673: -#line 1557 "harbour.y" +#line 1563 "harbour.y" { ;} break; case 674: -#line 1558 "harbour.y" +#line 1564 "harbour.y" { if( (yyvsp[(2) - (2)].lNumber) > 0 ) { @@ -8075,12 +7487,12 @@ yyreduce: break; case 675: -#line 1566 "harbour.y" +#line 1572 "harbour.y" { hb_compLinePush( HB_COMP_PARAM ); ;} break; case 676: -#line 1567 "harbour.y" +#line 1573 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); @@ -8088,7 +7500,7 @@ yyreduce: break; case 677: -#line 1572 "harbour.y" +#line 1578 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, NULL, hb_compGenJump( 0, HB_COMP_PARAM ) ); @@ -8097,12 +7509,12 @@ yyreduce: break; case 678: -#line 1578 "harbour.y" +#line 1584 "harbour.y" { hb_compLinePush( HB_COMP_PARAM ); ;} break; case 679: -#line 1579 "harbour.y" +#line 1585 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); @@ -8110,7 +7522,7 @@ yyreduce: break; case 680: -#line 1584 "harbour.y" +#line 1590 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, (yyvsp[(1) - (7)].pVoid), hb_compGenJump( 0, HB_COMP_PARAM ) ); @@ -8119,30 +7531,30 @@ yyreduce: break; case 681: -#line 1591 "harbour.y" +#line 1597 "harbour.y" {hb_compLinePushIfDebugger( HB_COMP_PARAM ); ;} break; case 682: -#line 1591 "harbour.y" +#line 1597 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} break; case 684: -#line 1593 "harbour.y" +#line 1599 "harbour.y" { hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_MAYHEM_IN_CASE, NULL, NULL ); ;} break; case 686: -#line 1598 "harbour.y" +#line 1604 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.lNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); - ;} + ;} break; case 687: -#line 1603 "harbour.y" +#line 1609 "harbour.y" { hb_compLoopHere( HB_COMP_PARAM ); hb_compGenJump( (yyvsp[(1) - (5)].lNumber) - HB_COMP_PARAM->functions.pLast->lPCodePos, HB_COMP_PARAM ); @@ -8150,7 +7562,7 @@ yyreduce: break; case 688: -#line 1608 "harbour.y" +#line 1614 "harbour.y" { hb_compGenJumpHere( (yyvsp[(4) - (7)].lNumber), HB_COMP_PARAM ); --HB_COMP_PARAM->wWhileCounter; hb_compLoopEnd( HB_COMP_PARAM ); @@ -8159,22 +7571,22 @@ yyreduce: break; case 689: -#line 1615 "harbour.y" +#line 1621 "harbour.y" { (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; hb_compLinePushIfInside( HB_COMP_PARAM ); ++HB_COMP_PARAM->wWhileCounter; hb_compLoopStart( HB_COMP_PARAM ); ;} break; case 690: -#line 1618 "harbour.y" +#line 1624 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} break; case 691: -#line 1619 "harbour.y" +#line 1625 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} break; case 692: -#line 1623 "harbour.y" +#line 1629 "harbour.y" { hb_compLinePush( HB_COMP_PARAM ); hb_compDebugStart(); @@ -8188,7 +7600,7 @@ yyreduce: break; case 693: -#line 1634 "harbour.y" +#line 1640 "harbour.y" { hb_compLoopStart( HB_COMP_PARAM ); (yyval.lNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); /* 9 */ @@ -8196,14 +7608,14 @@ yyreduce: break; case 694: -#line 1639 "harbour.y" +#line 1645 "harbour.y" { (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; /* 11 */ ;} break; case 695: -#line 1643 "harbour.y" +#line 1649 "harbour.y" { short iStep, iLocal; @@ -8227,11 +7639,11 @@ yyreduce: } else if( (yyvsp[(8) - (12)].asExpr) ) { - hb_compExprClear( hb_compExprGenStatement( hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(2) - (12)].asExpr), HB_COMP_PARAM ), (yyvsp[(8) - (12)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ) ); + hb_compExprClear( hb_compExprGenStatement( hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(2) - (12)].asExpr), HB_COMP_PARAM ), (yyvsp[(8) - (12)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ), HB_COMP_PARAM ); } else { - hb_compExprClear( hb_compExprGenStatement( hb_compExprNewPreInc( (yyvsp[(2) - (12)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ) ); + hb_compExprClear( hb_compExprGenStatement( hb_compExprNewPreInc( (yyvsp[(2) - (12)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ), HB_COMP_PARAM ); } hb_compGenJumpHere( (yyvsp[(9) - (12)].lNumber), HB_COMP_PARAM ); @@ -8261,67 +7673,67 @@ yyreduce: break; case 698: -#line 1703 "harbour.y" +#line 1709 "harbour.y" { (yyval.asExpr) = NULL; ;} break; case 699: -#line 1704 "harbour.y" +#line 1710 "harbour.y" { (yyval.asExpr) = hb_compExprReduce( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 700: -#line 1707 "harbour.y" +#line 1713 "harbour.y" { hb_compLinePush( HB_COMP_PARAM ); --HB_COMP_PARAM->wForCounter; ;} break; case 701: -#line 1708 "harbour.y" +#line 1714 "harbour.y" { hb_compLinePush( HB_COMP_PARAM ); --HB_COMP_PARAM->wForCounter; ;} break; case 702: -#line 1709 "harbour.y" +#line 1715 "harbour.y" { hb_compLinePush( HB_COMP_PARAM ); --HB_COMP_PARAM->wForCounter; ;} break; case 703: -#line 1710 "harbour.y" +#line 1716 "harbour.y" { hb_compLinePush( HB_COMP_PARAM ); --HB_COMP_PARAM->wForCounter; ;} break; case 704: -#line 1713 "harbour.y" +#line 1719 "harbour.y" { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; case 705: -#line 1714 "harbour.y" +#line 1720 "harbour.y" { (yyval.asExpr) = hb_compExprNewRef( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; case 706: -#line 1717 "harbour.y" +#line 1723 "harbour.y" { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; case 707: -#line 1718 "harbour.y" +#line 1724 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; case 708: -#line 1721 "harbour.y" +#line 1727 "harbour.y" { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; case 709: -#line 1722 "harbour.y" +#line 1728 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; case 710: -#line 1726 "harbour.y" +#line 1732 "harbour.y" { ++HB_COMP_PARAM->wForCounter; /* 5 */ hb_compLinePush( HB_COMP_PARAM ); @@ -8330,7 +7742,7 @@ yyreduce: break; case 711: -#line 1732 "harbour.y" +#line 1738 "harbour.y" { /* 7 */ @@ -8342,7 +7754,7 @@ yyreduce: break; case 712: -#line 1741 "harbour.y" +#line 1747 "harbour.y" { /* 9 */ @@ -8351,7 +7763,7 @@ yyreduce: break; case 713: -#line 1747 "harbour.y" +#line 1753 "harbour.y" { hb_compLoopHere( HB_COMP_PARAM ); hb_compEnumNext( HB_COMP_PARAM, (yyvsp[(2) - (10)].asExpr), (yyvsp[(6) - (10)].iNumber) ); @@ -8367,17 +7779,17 @@ yyreduce: break; case 714: -#line 1761 "harbour.y" +#line 1767 "harbour.y" { (yyval.iNumber) = 1; ;} break; case 715: -#line 1762 "harbour.y" +#line 1768 "harbour.y" { (yyval.iNumber) = -1; ;} break; case 716: -#line 1766 "harbour.y" +#line 1772 "harbour.y" { hb_compLoopStart( HB_COMP_PARAM ); hb_compSwitchStart( HB_COMP_PARAM ); @@ -8386,7 +7798,7 @@ yyreduce: break; case 717: -#line 1773 "harbour.y" +#line 1779 "harbour.y" { hb_compSwitchEnd( HB_COMP_PARAM ); hb_compLoopEnd( HB_COMP_PARAM ); @@ -8394,14 +7806,14 @@ yyreduce: break; case 718: -#line 1780 "harbour.y" +#line 1786 "harbour.y" { hb_compGenPCode1( HB_P_POP, HB_COMP_PARAM ); ;} break; case 719: -#line 1787 "harbour.y" +#line 1792 "harbour.y" { --HB_COMP_PARAM->wSwitchCounter; HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( FUN_WITH_RETURN | FUN_BREAK_CODE ); @@ -8409,26 +7821,26 @@ yyreduce: break; case 720: -#line 1794 "harbour.y" +#line 1799 "harbour.y" { ++HB_COMP_PARAM->wSwitchCounter; hb_compLinePush( HB_COMP_PARAM ); ;} break; case 721: -#line 1798 "harbour.y" +#line 1803 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); ;} break; case 722: -#line 1803 "harbour.y" +#line 1808 "harbour.y" { ;} break; case 723: -#line 1804 "harbour.y" +#line 1809 "harbour.y" { if( (yyvsp[(2) - (2)].lNumber) > 0 ) { @@ -8438,32 +7850,32 @@ yyreduce: break; case 724: -#line 1812 "harbour.y" +#line 1817 "harbour.y" { hb_compSwitchAdd( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); hb_compLinePush( HB_COMP_PARAM ); ;} break; case 726: -#line 1815 "harbour.y" +#line 1820 "harbour.y" { hb_compSwitchAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].asExpr) ); hb_compLinePush( HB_COMP_PARAM ); ;} break; case 730: -#line 1823 "harbour.y" +#line 1828 "harbour.y" { hb_compSwitchAdd( HB_COMP_PARAM, NULL ); hb_compLinePush( HB_COMP_PARAM ); ;} break; case 731: -#line 1823 "harbour.y" +#line 1828 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} break; case 733: -#line 1827 "harbour.y" +#line 1832 "harbour.y" { ++HB_COMP_PARAM->wSeqCounter; (yyval.lNumber) = hb_compSequenceBegin( HB_COMP_PARAM ); ;} break; case 734: -#line 1829 "harbour.y" +#line 1834 "harbour.y" { /* Set jump address for HB_P_SEQBEGIN opcode - this address * will be used in BREAK code if there is no RECOVER clause @@ -8474,7 +7886,7 @@ yyreduce: break; case 735: -#line 1837 "harbour.y" +#line 1842 "harbour.y" { /* Replace END address with RECOVER address in * HB_P_SEQBEGIN opcode if there is RECOVER clause @@ -8485,7 +7897,7 @@ yyreduce: break; case 736: -#line 1845 "harbour.y" +#line 1850 "harbour.y" { /* Fix END address * There is no line number after HB_P_SEQEND in case no @@ -8500,22 +7912,22 @@ yyreduce: break; case 737: -#line 1858 "harbour.y" +#line 1863 "harbour.y" { (yyval.lNumber) = 0; ;} break; case 738: -#line 1859 "harbour.y" +#line 1864 "harbour.y" { (yyval.lNumber) = (yyvsp[(1) - (2)].lNumber); ;} break; case 740: -#line 1860 "harbour.y" +#line 1865 "harbour.y" { (yyval.lNumber) = (yyvsp[(1) - (2)].lNumber); ;} break; case 742: -#line 1864 "harbour.y" +#line 1869 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; @@ -8526,7 +7938,7 @@ yyreduce: break; case 743: -#line 1874 "harbour.y" +#line 1879 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; @@ -8538,32 +7950,32 @@ yyreduce: break; case 744: -#line 1890 "harbour.y" +#line 1895 "harbour.y" { (yyval.asExpr) = hb_compExprNewFunName( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); hb_compAutoOpenAdd( HB_COMP_PARAM, (yyvsp[(1) - (1)].string) ); ;} break; case 745: -#line 1891 "harbour.y" +#line 1896 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 746: -#line 1892 "harbour.y" +#line 1897 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 747: -#line 1896 "harbour.y" +#line 1901 "harbour.y" { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(2) - (2)].asExpr), NULL, HB_COMP_PARAM ); ;} break; case 748: -#line 1898 "harbour.y" +#line 1903 "harbour.y" { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(2) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ); ;} break; case 749: -#line 1900 "harbour.y" +#line 1905 "harbour.y" { /* DOIDENT is the only one identifier which can be returned in lower letters */ hb_compAutoOpenAdd( HB_COMP_PARAM, (yyvsp[(1) - (1)].string) ); (yyval.asExpr) = hb_compExprNewFunCall( hb_compExprNewFunName( hb_compIdentifierNew( HB_COMP_PARAM, hb_strupr( hb_strdup( (yyvsp[(1) - (1)].string) ) ), HB_IDENT_FREE ), HB_COMP_PARAM ), NULL, HB_COMP_PARAM ); @@ -8571,7 +7983,7 @@ yyreduce: break; case 750: -#line 1905 "harbour.y" +#line 1910 "harbour.y" { /* DOIDENT is the only one identifier which can be returned in lower letters */ hb_compAutoOpenAdd( HB_COMP_PARAM, (yyvsp[(1) - (3)].string) ); (yyval.asExpr) = hb_compExprNewFunCall( hb_compExprNewFunName( hb_compIdentifierNew( HB_COMP_PARAM, hb_strupr( hb_strdup( (yyvsp[(1) - (3)].string) ) ), HB_IDENT_FREE ), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); @@ -8579,67 +7991,67 @@ yyreduce: break; case 751: -#line 1911 "harbour.y" +#line 1916 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( hb_compExprNewArgList( hb_compExprNewNil( HB_COMP_PARAM ), HB_COMP_PARAM ), hb_compExprNewNil( HB_COMP_PARAM ) ); ;} break; case 752: -#line 1912 "harbour.y" +#line 1917 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( hb_compExprNewArgList( hb_compExprNewNil( HB_COMP_PARAM ), HB_COMP_PARAM ), (yyvsp[(2) - (2)].asExpr) ); ;} break; case 753: -#line 1913 "harbour.y" +#line 1918 "harbour.y" { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; case 754: -#line 1914 "harbour.y" +#line 1919 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (2)].asExpr), hb_compExprNewNil( HB_COMP_PARAM ) ); ;} break; case 755: -#line 1915 "harbour.y" +#line 1920 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; case 756: -#line 1918 "harbour.y" +#line 1923 "harbour.y" { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; case 757: -#line 1919 "harbour.y" +#line 1924 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; case 758: -#line 1920 "harbour.y" +#line 1925 "harbour.y" { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(2) - (2)].string), HB_COMP_PARAM ); ;} break; case 759: -#line 1921 "harbour.y" +#line 1926 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 760: -#line 1922 "harbour.y" +#line 1927 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; case 761: -#line 1923 "harbour.y" +#line 1928 "harbour.y" { (yyval.asExpr) = hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 762: -#line 1924 "harbour.y" +#line 1929 "harbour.y" { (yyval.asExpr) = hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; case 763: -#line 1928 "harbour.y" +#line 1933 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); hb_compGenPCode1( HB_P_WITHOBJECTSTART, HB_COMP_PARAM ); @@ -8648,7 +8060,7 @@ yyreduce: break; case 764: -#line 1935 "harbour.y" +#line 1940 "harbour.y" { --HB_COMP_PARAM->wWithObjectCnt; hb_compGenPCode1( HB_P_WITHOBJECTEND, HB_COMP_PARAM ); @@ -8656,23 +8068,23 @@ yyreduce: break; case 765: -#line 1939 "harbour.y" +#line 1944 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ); ;} break; case 766: -#line 1942 "harbour.y" +#line 1947 "harbour.y" { HB_COMP_PARAM->fError = FALSE; ;} break; case 767: -#line 1943 "harbour.y" +#line 1948 "harbour.y" { HB_COMP_PARAM->fDontGenLineNum = TRUE; ;} break; /* Line 1267 of yacc.c. */ -#line 8676 "harboury.c" +#line 8088 "harboury.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -8886,7 +8298,7 @@ yyreturn: } -#line 1946 "harbour.y" +#line 1951 "harbour.y" /* diff --git a/harbour/source/compiler/harbour.yyh b/harbour/source/compiler/harbour.yyh index d655f817be..3e1ec3acda 100644 --- a/harbour/source/compiler/harbour.yyh +++ b/harbour/source/compiler/harbour.yyh @@ -256,6 +256,8 @@ typedef union YYSTYPE int iNumber; /* to hold a temporary integer number */ HB_LONG lNumber; /* to hold a temporary long number */ BOOL bTrue; + HB_EXPR_PTR asExpr; + void * pVoid; /* to hold any memory structure we may need */ struct { HB_LONG lNumber; /* to hold a long number returned by lex */ @@ -268,7 +270,6 @@ typedef union YYSTYPE UCHAR bWidth; /* to hold the width of the value */ UCHAR bDec; /* to hold the number of decimal points in the value */ } valDouble; - HB_EXPR_PTR asExpr; struct { char * string; @@ -279,8 +280,7 @@ typedef union YYSTYPE { char * string; int length; - BOOL lateEval; /* Flag for early {|| ¯o} (0) or late {|| &(macro)} (1) binding */ - BOOL isMacro; + int flags; /* Flag for early {|| ¯o} (1) or late {|| &(macro)} (2) binding */ } asCodeblock; struct { @@ -291,10 +291,9 @@ typedef union YYSTYPE HB_EXPR_PTR macro; } value; } asMessage; - void * pVoid; /* to hold any memory structure we may need */ } /* Line 1529 of yacc.c. */ -#line 298 "harboury.h" +#line 297 "harboury.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/harbour/source/compiler/hbgenerr.c b/harbour/source/compiler/hbgenerr.c index c7328aca33..fb06d2d973 100644 --- a/harbour/source/compiler/hbgenerr.c +++ b/harbour/source/compiler/hbgenerr.c @@ -138,6 +138,7 @@ void hb_compGenError( HB_COMP_DECL, char * szErrors[], char cPrefix, int iError, { if( !HB_COMP_PARAM->fExit && ( cPrefix == 'F' || !HB_COMP_PARAM->fError ) ) { + PFUNCTION pFunc = HB_COMP_PARAM->functions.pLast; char * szFile = hb_pp_fileName( HB_COMP_PARAM->pLex->pPP ); int iLine = hb_pp_line( HB_COMP_PARAM->pLex->pPP ); @@ -150,7 +151,11 @@ void hb_compGenError( HB_COMP_DECL, char * szErrors[], char cPrefix, int iError, HB_COMP_PARAM->iErrorCount++; HB_COMP_PARAM->fError = TRUE; - + while( pFunc ) + { + pFunc->bError = TRUE; + pFunc = pFunc->pOwner; + } /* fatal error - exit immediately */ if( cPrefix == 'F' ) HB_COMP_PARAM->fExit = TRUE; diff --git a/harbour/source/macro/macro.y b/harbour/source/macro/macro.y index 3f8fd55d5e..46094e80c4 100644 --- a/harbour/source/macro/macro.y +++ b/harbour/source/macro/macro.y @@ -752,11 +752,11 @@ ElemList : EmptyExpression { $$ = hb_compExprNewList( $1, HB_C ; CodeBlock : '{' '|' - { $$ = hb_compExprNewCodeBlock( NULL, FALSE, FALSE, HB_COMP_PARAM ); } BlockNoVar + { $$ = hb_compExprNewCodeBlock( NULL, 0, 0, HB_COMP_PARAM ); } BlockNoVar '|' BlockExpList '}' { $$ = $3; } | '{' '|' - { $$ = hb_compExprNewCodeBlock( NULL, FALSE, FALSE, HB_COMP_PARAM ); } + { $$ = hb_compExprNewCodeBlock( NULL, 0, 0, HB_COMP_PARAM ); } BlockVarList '|' BlockExpList '}' { $$ = $3; } diff --git a/harbour/source/macro/macro.yyc b/harbour/source/macro/macro.yyc index dfdea79cc4..ce2c73871b 100644 --- a/harbour/source/macro/macro.yyc +++ b/harbour/source/macro/macro.yyc @@ -3813,7 +3813,7 @@ yyreduce: case 313: #line 755 "macro.y" - { (yyval.asExpr) = hb_compExprNewCodeBlock( NULL, FALSE, FALSE, HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprNewCodeBlock( NULL, 0, 0, HB_COMP_PARAM ); ;} break; case 314: @@ -3823,7 +3823,7 @@ yyreduce: case 315: #line 759 "macro.y" - { (yyval.asExpr) = hb_compExprNewCodeBlock( NULL, FALSE, FALSE, HB_COMP_PARAM ); ;} + { (yyval.asExpr) = hb_compExprNewCodeBlock( NULL, 0, 0, HB_COMP_PARAM ); ;} break; case 316: diff --git a/harbour/source/pp/ppcore.c b/harbour/source/pp/ppcore.c index 9975781f09..9a6f796642 100644 --- a/harbour/source/pp/ppcore.c +++ b/harbour/source/pp/ppcore.c @@ -5043,7 +5043,7 @@ void hb_pp_tokenToString( PHB_PP_STATE pState, PHB_PP_TOKEN pToken ) } char * hb_pp_tokenBlockString( PHB_PP_STATE pState, PHB_PP_TOKEN pToken, - int * piType ) + int * piType, int * piLen ) { * piType = 0; hb_membufFlush( pState->pBuffer ); @@ -5057,11 +5057,11 @@ char * hb_pp_tokenBlockString( PHB_PP_STATE pState, PHB_PP_TOKEN pToken, { if( pToken->pNext && HB_PP_TOKEN_TYPE( pToken->type ) == HB_PP_TOKEN_LEFT_PB ) - * piType |= 2; + * piType |= HB_BLOCK_LATEEVAL; } else if( HB_PP_TOKEN_TYPE( pToken->type ) == HB_PP_TOKEN_MACROVAR || HB_PP_TOKEN_TYPE( pToken->type ) == HB_PP_TOKEN_MACROTEXT ) - * piType |= 1; + * piType |= HB_BLOCK_LATEEVAL | HB_BLOCK_MACRO; else if( HB_PP_TOKEN_TYPE( pToken->type ) == HB_PP_TOKEN_RIGHT_CB ) --iBraces; else if( HB_PP_TOKEN_TYPE( pToken->type ) == HB_PP_TOKEN_LEFT_CB ) @@ -5070,6 +5070,7 @@ char * hb_pp_tokenBlockString( PHB_PP_STATE pState, PHB_PP_TOKEN pToken, } while( iBraces && !HB_PP_TOKEN_ISEOC( pToken ) ); } + * piLen = ( int ) hb_membufLen( pState->pBuffer ); hb_membufAddCh( pState->pBuffer, '\0' ); return hb_membufPtr( pState->pBuffer ); } diff --git a/harbour/source/rtl/idle.c b/harbour/source/rtl/idle.c index bd78187dc7..57cd0a62ba 100644 --- a/harbour/source/rtl/idle.c +++ b/harbour/source/rtl/idle.c @@ -143,7 +143,7 @@ void hb_releaseCPU( void ) } #else { - static struct timespec nanosecs = { 0, 1000 }; + static const struct timespec nanosecs = { 0, 1000 }; /* NOTE: it will sleep at least 10 miliseconds (forced by kernel) */ nanosleep( &nanosecs, NULL ); }