diff --git a/harbour/ChangeLog b/harbour/ChangeLog index e52e5d50e6..a0b8e66ace 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,13 @@ +2000-11-14 02:35 UTC+0800 Ron Pinkas + * contrib/dot/pp.prg + ! Corrected few pre-processor bugs. + ! Corrected DOT multi-line support. + * contrib/dot/rp_dot.ch + + Added Clipper and Harbour support for GET + + * source/pp/ppcore.c + ! Removed redundant line in md_strAt() whiched caused bug with tanslating within [] bracket expressions. + 2000-11-13 16:18 UTC+0800 Brian Hays * contrib/rdd_ads/ads1.c + adsOrderInfo: added support for most options diff --git a/harbour/contrib/dot/pp.prg b/harbour/contrib/dot/pp.prg index d54d90d526..a908d60ec0 100644 --- a/harbour/contrib/dot/pp.prg +++ b/harbour/contrib/dot/pp.prg @@ -30,6 +30,124 @@ #ifdef __HARBOUR__ #include "hbextern.ch" +#else + EXTERNAL ARRAY,ASIZE,ATAIL,AINS,ADEL,AFILL,ASCAN,AEVAL,ACOPY,ACLONE,ADIR, ASORT + + EXTERNAL MEMORY + + EXTERNAL ERRORLEVEL + + EXTERNAL __QQPUB,__MCLEAR,__MRELEASE,__MXRELEASE,__MSAVE,__MRESTORE ; + + EXTERNAL PROCNAME,PROCLINE,PROCFILE + + EXTERNAL BIN2W,BIN2I,BIN2L,I2BIN,L2BIN + + EXTERNAL OUTSTD,OUTERR,QQOUT,QOUT,DISPOUT,DISPOUTAT,__EJECT, ; + SETPRC,MAXROW,MAXCOL,DISPBOX,DISPBEGIN,DISPEND,DISPCOUNT,ISCOLOR, ; + NOSNOW,DBGSHADOW,SAVESCREEN,RESTSCREEN,SETCURSOR,SETBLINK,SETMODE,__ACCEPT, ; + __ACCEPTSTR + + EXTERNAL __COPYFILE + + EXTERNAL DESCEND,DIRECTORY + + EXTERNAL VERSION,GETENV,__RUN + + EXTERNAL ERRORNEW,DOSERROR + + EXTERNAL FERASE,FRENAME,FILE,FREADSTR,CURDIR,DISKSPACE + + EXTERNAL __KEYBOARD,NEXTKEY,LASTKEY,FKLABEL,FKMAX + + EXTERNAL ISPRINTER + + EXTERNAL MOD + + EXTERNAL MEMOREAD,MEMOWRIT,MEMOLINE,MLCOUNT,MLPOS,MEMOTRAN + + EXTERNAL NETNAME + + EXTERNAL __BOX,__BOXD,__BOXS + + EXTERNAL AMPM,DAYS,ELAPTIME,LENNUM,SECS,TSTRING + + EXTERNAL SETCANCEL,__SETCENTURY,DEFPATH,__DEFPATH + + EXTERNAL SETCOLOR,COLORSELECT + + EXTERNAL SOUNDEX + + EXTERNAL ISALPHA,ISDIGIT,ISUPPER,ISLOWER,ALLTRIM,PADR,PAD,PADL,PADC, ; + STUFF,STRZERO + + EXTERNAL TONE + + EXTERNAL TRANSFORM + + EXTERNAL __XHELP + + EXTERNAL ACHOICE + + EXTERNAL __NONOALERT + + EXTERNAL TBROWSEDB,DBEDIT + + EXTERNAL DEVOUTPICT + + EXTERNAL __DIR + + EXTERNAL DBSETRELATION,DBCLEARREL,MEMOEDIT,MLCTOPOS,MPOSTOLC,__DBAPP,__DBCOPY, ; + __DBDELIM,__DBJOIN,__DBLIST,__DBSDF,__DBSORT,__DBTOTAL,__DBUPDATE,__DBARRANGE,__DBFLIST, ; + __DBOPENSDF,__DBTRANS,__DBTRANSREC + + EXTERNAL FIELDBLOCK,FIELDWBLOCK + + EXTERNAL __INPUT + + EXTERNAL MEMVARBLOCK + + EXTERNAL __ATPROMPT,__MENUTO + + EXTERNAL READKEY + + EXTERNAL SETKEY + + EXTERNAL SETTYPEAHEAD + + EXTERNAL TBCOLUMNNEW,TBROWSENEW + + EXTERNAL __TEXTSAVE,__TEXTRESTORE + + EXTERNAL __GET,__GETA + + EXTERNAL __LABELFORM, __REPORTFORM + + EXTERNAL __TYPEFILE + + EXTERNAL __WAIT + + EXTERNAL __XSAVESCREEN,__XRESTSCREEN + + /* + EXTERNAL RDDSYS,AFIELDS,DBEVAL,DBCLEARFILTER,DBCLOSEALL, ; + DBCOMMIT,__DBCONTINUE,DBCREATE,DBDELETE,DBFILTER,DBGOBOTTOM,DBGOTO, ; + DBGOTOP,__DBLOCATE,__DBSETLOCATE,__DBPACK,DBRECALL,DBRLOCK,DBRLOCKLIST,DBRUNLOCK,DBSEEK, ; + DBSELECTAREA,__DBSETFOUND,DBSKIP,DBSETFILTER,DBSTRUCT,DBTABLEEXT,DBUNLOCK,DBUNLOCKALL,DBUSEAREA, ; + __DBZAP,DELETED,EOF,FCOUNT,FIELDGET,FIELDNAME,FIELDPOS,FIELDPUT,FLOCK,FOUND,HEADER,INDEXORD, ; + LASTREC,LOCK,LUPDATE,NETERR,ORDBAGEXT,ORDBAGNAME,ORDCONDSET,ORDCREATE,ORDDESTROY,ORDFOR,ORDKEY, ; + ORDLISTADD,ORDLISTCLEAR,ORDLISTREBUILD,ORDNAME,ORDNUMBER,ORDSETFOCUS,RDDLIST,RDDNAME,RDDREGISTER, ; + RECCOUNT,RECNO,RECSIZE,RLOCK,SELECT,USED,RDDSETDEFAULT,RDDSETDEFAULT,DBSETDRIVER + */ + + EXTERNAL __DBPACK,__DBZAP,DBCLOSEALL,DBGOBOTTOM,DBGOTO,DBGOTOP + + EXTERNAL DBREINDEX,DBCREATEINDEX,DBCLEARINDEX,DBSETINDEX,DBSETORDER + + EXTERNAL __DBCOPYSTRUCT,__DBCOPYXSTRUCT,__DBCREATE,__FLEDIT + + EXTERNAL INDEXEXT,INDEXKEY + #endif STATIC aDefRules := {}, aDefResults := {} @@ -81,7 +199,9 @@ PROCEDURE Main( sSource, sSwitch ) ENDIF ENDIF - //ProcessLine( "#DEFINE __HARBOUR__ 1", {}, {}, {}, 0, '' ) + #ifdef __HARBOUR__ + ProcessLine( "#DEFINE __HARBOUR__ 1", {}, {}, {}, 0, '' ) + #endif IF bLoadRules InitRules() @@ -101,7 +221,7 @@ RETURN PROCEDURE RP_Dot() LOCAL sLine := Space(256), bBlock, GetList := {}, sPPed, nNext, sBlock, sTemp - LOCAL sTemp2, nLen, sLeft, sSymbol + LOCAL sTemp2, nLen, sLeft, sSymbol, nNextAssign bCount := .F. @@ -139,9 +259,9 @@ PROCEDURE RP_Dot() DropTrailingWS( @sBlock ) sTemp2 := sBlock - WHILE ( nNext := At( ":=", sTemp2 ) ) > 0 - sLeft := Left( sTemp2, nNext - 1 ) - sTemp2 := SubStr( sTemp2, nNext + 2 ) + WHILE ( nNextAssign := At( ":=", sTemp2 ) ) > 0 + sLeft := Left( sTemp2, nNextAssign - 1 ) + sTemp2 := SubStr( sTemp2, nNextAssign + 2 ) DropTrailingWS( @sLeft ) nLen := Len( sLeft ) @@ -172,9 +292,9 @@ PROCEDURE RP_Dot() IF ! ( sTemp == '' ) sTemp2 := sTemp - WHILE ( nNext := At( ":=", sTemp2 ) ) > 0 - sLeft := Left( sTemp2, nNext - 1 ) - sTemp2 := SubStr( sTemp2, nNext + 2 ) + WHILE ( nNextAssign := At( ":=", sTemp2 ) ) > 0 + sLeft := Left( sTemp2, nNextAssign - 1 ) + sTemp2 := SubStr( sTemp2, nNextAssign + 2 ) DropTrailingWS( @sLeft ) nLen := Len( sLeft ) @@ -195,9 +315,11 @@ PROCEDURE RP_Dot() ENDDO sTemp := "{|| " + sTemp + " }" + bBlock := &sTemp Eval( bBlock ) ENDIF + @ 0,0 SAY "PP: " @ 0,4 SAY Pad( sPPed, 76 ) COLOR "N/R" @@ -1047,7 +1169,7 @@ RETURN sOut FUNCTION MatchRule( sKey, sLine, aRules, aResults, bStatement, bUpper ) - LOCAL Counter, nRules, sCommand, nRule, aMarkers, xMarker, bPartialOk + LOCAL Counter, nRules, sCommand, nRule, aMarkers, xMarker LOCAL aMP, nOptional := 0, sAnchor, cType, aList, nMarkerId, nKeyLen LOCAL sToken, sWorkLine, sNextExp, sNextAnchor, nMatch, nMatches LOCAL sPad, asRevert := {}, bNext, sPreMatch, sTemp, nLen, nBookMark @@ -1590,7 +1712,6 @@ FUNCTION MatchRule( sKey, sLine, aRules, aResults, bStatement, bUpper ) /* Skip all same level optionals to next group. */ nOptional := aMP[2] - bPartialOk := .T. /* */ WHILE nMatch < nMatches nMatch++ aMP := aRules[nRule][2][nMatch] @@ -1598,7 +1719,6 @@ FUNCTION MatchRule( sKey, sLine, aRules, aResults, bStatement, bUpper ) IF bDbgMatch ? "Partial not allowed" ENDIF - bPartialOk := .F. EXIT ENDIF IF ( aMP[2] >= 0 ) .AND. ( aMP[2] <= Abs( nOptional ) ) @@ -1606,36 +1726,16 @@ FUNCTION MatchRule( sKey, sLine, aRules, aResults, bStatement, bUpper ) ENDIF ENDDO - /* Partial match was acceptable, rewind to top of same level optionals. */ - /* - IF bPartialOk .AND. ( nOptional := Abs( nOptional ) ) > 1 - nOptional-- + IF nMatch == nMatches - WHILE nMatch > 1 - nMatch-- - IF aRules[nRule][2][nMatch][2] >= 0 .AND. aRules[nRule][2][nMatch][2] < nOPtional - EXIT + IF ( aMP[2] >= 0 ) .AND. ( aMP[2] <= Abs( nOptional ) ) + /* Ok. */ + ELSE + IF bDbgMatch + ? "Reached End of Rule" ENDIF - ENDDO - //IF nMatch == 0 .OR. ( aRules[nRule][2][nMatch][2] >= 0 .AND. aRules[nRule][2][nMatch][2] <= nOptional ) - nMatch++ - //ENDIF - - nOptional := 0 - - IF bDbgMatch - ? "Partial Accepted - Rewinded to:", nMatch + EXIT ENDIF - - LOOP - ENDIF - */ - - IF nMatch == nMatches .AND. Abs( aMP[2] ) == nOptional /* reached EOR and still same group */ - IF bDbgMatch - ? "Reached End of Rule" - ENDIF - EXIT ENDIF IF bDbgMatch @@ -2053,29 +2153,13 @@ FUNCTION NextExp( sLine, cType, aWords, aExp, sNextAnchor ) IF Left( sToken, 2 ) == '->' - sExp := sToken - - IF sNextAnchor != '->' - sTemp := NextExp( @sLine, '<', NIL, NIL, sNextAnchor ) - IF sTemp == NIL - Alert( "ERROR! orphan '->'" ) - ELSE - sExp += sTemp - ENDIF - ENDIF + sLine := sToken + sLine + sExp := NIL ELSEIF Left( sToken, 2 ) == ':=' - sExp := sToken - - IF sNextAnchor != ':=' - sTemp := NextExp( @sLine, '<', NIL, NIL, sNextAnchor ) - IF sTemp == NIL - Alert( "ERROR! orphan ':='" ) - ELSE - sExp += sTemp - ENDIF - ENDIF + sLine := sToken + sLine + sExp := NIL ELSEIF Left( sToken, 1 ) == '!' @@ -2092,11 +2176,8 @@ FUNCTION NextExp( sLine, cType, aWords, aExp, sNextAnchor ) ELSEIF Left( sToken, 1 ) == ')' - IF sNextAnchor == ')' - sExp := sToken - ELSE - sExp := NIL - ENDIF + sLine := sToken + sLine + sExp := '' ELSEIF Left( sToken, 1 ) == '(' @@ -2120,11 +2201,8 @@ FUNCTION NextExp( sLine, cType, aWords, aExp, sNextAnchor ) ELSEIF Left( sToken, 1 ) == '}' - IF sNextAnchor == '}' - sExp := sToken - ELSE - sExp := NIL - ENDIF + sLine := sToken + sLine + sExp := '' ELSEIF Left( sToken, 1 ) == '{' @@ -2196,6 +2274,11 @@ FUNCTION NextExp( sLine, cType, aWords, aExp, sNextAnchor ) ENDIF + ELSEIF Left( sToken, 1 ) == ',' .AND. ! cType $ ",A" + + sLine := sToken + sLine + sExp := '' + ELSE sExp := sToken @@ -2762,7 +2845,7 @@ FUNCTION CompileRule( sRule, aRules, aResults, bX, bUpper ) LOCAL nNext, sKey, sAnchor := NIL, nOptional := 0, cType := NIL, nId := 0, aRule := NIL, aMatch, aWords := NIL LOCAL aTemp, nOptionalAt, nMarkerAt, aMarkers := {}, Counter, nType, aResult := {}, sTemp, aModifiers, aValues LOCAL aRP, nAt, sResult, nCloseAt, sMarker, nCloseOptionalAt, sPad, nResults, nMarker, nMP, nMatches, nOffset - LOCAL nWord, nWords + LOCAL nWord, nWords, cChar /* nMarkerID @@ -2798,7 +2881,7 @@ FUNCTION CompileRule( sRule, aRules, aResults, bX, bUpper ) sRule := Left( sRule, nNext - 1 ) ENDIF - DO WHILE ! ( Left( sRule, 2 ) == '' ) + DO WHILE ! ( Left( sRule, 1 ) == '' ) //? "Scaning: " + sRule @@ -3012,7 +3095,67 @@ FUNCTION CompileRule( sRule, aRules, aResults, bX, bUpper ) ExtractLeadingWS( @sRule ) LOOP + ELSEIF Left( sRule, 2 ) == ":=" .OR. Left( sRule, 2 ) == "==" + + IF ! ( sAnchor == NIL ) + //? "ORPHAN ANCHOR: " + sAnchor + + aMatch := { 0, nOptional, sAnchor, NIL, NIL } + //? aMatch[1], aMatch[2], aMatch[3], aMatch[4], aMatch[5] + + aAdd( aRule[2], aMatch ) + + //sAnchor := NIL + aWords := NIL + cType := NIL + ENDIF + + sAnchor := Left( sRule, 2 ) + sRule := SubStr( sRule, 3 ) + ExtractLeadingWS( @sRule ) + LOOP + + ELSEIF Left( sRule, 1 ) $ "():=" + + IF ! ( sAnchor == NIL ) + //? "ORPHAN ANCHOR: " + sAnchor + + aMatch := { 0, nOptional, sAnchor, NIL, NIL } + //? aMatch[1], aMatch[2], aMatch[3], aMatch[4], aMatch[5] + + aAdd( aRule[2], aMatch ) + + //sAnchor := NIL + aWords := NIL + cType := NIL + ENDIF + + sAnchor := Left( sRule, 1 ) + sRule := SubStr( sRule, 2 ) + ExtractLeadingWS( @sRule ) + LOOP + + ELSEIF ( ( cChar := Left( sRule, 1 ) ) >= 'A' .AND. cChar <= 'Z' ) .OR. ; + ( cChar >= 'a' .AND. cChar <= 'z' ) .OR. cChar == '_' + + IF ! ( sAnchor == NIL ) + //? "ORPHAN ANCHOR: " + sAnchor + + aMatch := { 0, nOptional, sAnchor, NIL, NIL } + //? aMatch[1], aMatch[2], aMatch[3], aMatch[4], aMatch[5] + + aAdd( aRule[2], aMatch ) + + //sAnchor := NIL + aWords := NIL + cType := NIL + ENDIF + + sAnchor := Upper( DropTrailingWS( NextToken( @sRule, .F. ) ) ) + LOOP + ELSE + IF ! ( sAnchor == NIL ) //? "ORPHAN ANCHOR: " + sAnchor @@ -4185,9 +4328,6 @@ FUNCTION InitRules() /* Defines */ aDefRules := {} -#ifdef __HARBOUR__ - aAdd( aDefRules, { '__HARBOUR__' , , .T. } ) -#endif aAdd( aDefRules, { '_SET_EXACT' , , .T. } ) aAdd( aDefRules, { '_SET_FIXED' , , .T. } ) aAdd( aDefRules, { '_SET_DECIMALS' , , .T. } ) @@ -4245,7 +4385,7 @@ aAdd( aCommRules, { 'ENDCASE' , { { 1, 0, NIL, '*', NIL } } , .F. } ) aAdd( aCommRules, { 'ENDFOR' , { { 1, 1, NIL, '*', NIL } } , .F. } ) aAdd( aCommRules, { 'NEXT' , { { 1, 0, NIL, '<', NIL }, { 2, 1, 'TO', '<', NIL }, { 3, 1, 'STEP', '<', NIL } } , .F. } ) aAdd( aCommRules, { 'DO' , { { 1, 0, NIL, '<', NIL }, { 0, 0, '.PRG', NIL, NIL }, { 1002, 1, 'WITH', 'A', NIL } } , .F. } ) -aAdd( aCommRules, { 'CALL' , { { 1, 0, NIL, '<', NIL }, { 0, 0, '()', NIL, NIL }, { 1002, 1, 'WITH', 'A', NIL } } , .F. } ) +aAdd( aCommRules, { 'CALL' , { { 1, 0, NIL, '<', NIL }, { 0, 0, '(', NIL, NIL }, { 0, 0, ')', NIL, NIL }, { 1002, 1, 'WITH', 'A', NIL } } , .F. } ) aAdd( aCommRules, { 'STORE' , { { 1, 0, NIL, '<', NIL }, { 2, 0, 'TO', '<', NIL }, { 1003, 1, ',', '<', NIL } } , .F. } ) aAdd( aCommRules, { 'SET' , { { 1, 0, 'ECHO', '*', NIL } } , .F. } ) aAdd( aCommRules, { 'SET' , { { 1, 0, 'HEADING', '*', NIL } } , .F. } ) @@ -4378,7 +4518,7 @@ aAdd( aCommRules, { 'DELETE' , { { 1, 0, 'FILE', '(', NIL } } , .F. } ) aAdd( aCommRules, { 'RENAME' , { { 1, 0, NIL, '(', NIL }, { 2, 0, 'TO', '(', NIL } } , .F. } ) aAdd( aCommRules, { 'COPY' , { { 1, 0, 'FILE', '(', NIL }, { 2, 0, 'TO', '(', NIL } } , .F. } ) aAdd( aCommRules, { 'DIR' , { { 1, 1, NIL, '(', NIL } } , .F. } ) -aAdd( aCommRules, { 'TYPE' , { { 1001, 0, NIL, '(', NIL }, { 2, 1, NIL, ':', { 'TO PRINTER' } }, { 1000, 1, 'TO', NIL, NIL }, { 1003, -1, 'FILE', '(', NIL } } , .F. } ) +aAdd( aCommRules, { 'TYPE' , { { 1001, 0, NIL, '(', NIL }, { 2, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 1003, 1, 'FILE', '(', NIL } } , .F. } ) aAdd( aCommRules, { 'TYPE' , { { 1, 0, NIL, '(', NIL }, { 2, 1, NIL, ':', { 'TO PRINTER' } } } , .F. } ) aAdd( aCommRules, { 'REQUEST' , { { 1, 0, NIL, 'A', NIL } } , .F. } ) aAdd( aCommRules, { 'CANCEL' , , .F. } ) @@ -4397,7 +4537,7 @@ aAdd( aCommRules, { 'SET' , { { 0, 0, 'UNIQUE', NIL, NIL }, { 1, 0, '( aAdd( aCommRules, { 'SET' , { { 1, 0, 'DELETED', ':', { 'ON', 'OFF', '&' } } } , .F. } ) aAdd( aCommRules, { 'SET' , { { 0, 0, 'DELETED', NIL, NIL }, { 1, 0, '(', '<', NIL }, { 0, 0, ')', NIL, NIL } } , .F. } ) aAdd( aCommRules, { 'SELECT' , { { 1, 0, NIL, '<', NIL } } , .F. } ) -aAdd( aCommRules, { 'SELECT' , { { 1, 0, NIL, '<', NIL }, { 2, 1, '(', 'A', NIL }, { 0, 0, ')', NIL, NIL } } , .F. } ) +aAdd( aCommRules, { 'SELECT' , { { 1, 0, NIL, '<', NIL }, { 0, 0, '(', NIL, NIL }, { 2, 1, NIL, 'A', { ')' } }, { 0, 0, ')', NIL, NIL } } , .F. } ) aAdd( aCommRules, { 'USE' , , .F. } ) aAdd( aCommRules, { 'USE' , { { 1, 0, NIL, '(', NIL }, { 2, 1, 'VIA', '<', NIL }, { 3, 1, 'ALIAS', '<', NIL }, { 4, 1, NIL, ':', { 'NEW' } }, { 5, 1, NIL, ':', { 'EXCLUSIVE' } }, { 6, 1, NIL, ':', { 'SHARED' } }, { 7, 1, NIL, ':', { 'READONLY' } }, { 1008, 1, 'INDEX', '(', NIL }, { 1009, 2, ',', '(', NIL } } , .F. } ) aAdd( aCommRules, { 'APPEND' , { { 0, 0, 'BLANK', NIL, NIL } } , .F. } ) @@ -4423,7 +4563,7 @@ aAdd( aCommRules, { 'FIND' , { { 1, 0, '=', '<', NIL } } , .F. } ) aAdd( aCommRules, { 'CONTINUE' , , .F. } ) aAdd( aCommRules, { 'LOCATE' , { { 1, 1, 'FOR', '<', NIL }, { 2, 1, 'WHILE', '<', NIL }, { 3, 1, 'NEXT', '<', NIL }, { 4, 1, 'RECORD', '<', NIL }, { 5, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } ) aAdd( aCommRules, { 'SET' , { { 0, 0, 'RELATION', NIL, NIL }, { 0, 0, 'TO', NIL, NIL } } , .F. } ) -aAdd( aCommRules, { 'SET' , { { 0, 0, 'RELATION', NIL, NIL }, { 1, 1, NIL, ':', { 'ADDITIVE' } }, { 2, 1, 'TO', '<', NIL }, { 3, -1, 'INTO', '(', NIL }, { 0, 2, ',', NIL, NIL }, { 0, 3, 'TO', NIL, NIL }, { 1004, 2, NIL, '<', { ',' } }, { 1005, -2, 'INTO', '(', NIL } } , .F. } ) +aAdd( aCommRules, { 'SET' , { { 0, 0, 'RELATION', NIL, NIL }, { 1, 1, NIL, ':', { 'ADDITIVE' } }, { 2, 1, 'TO', '<', NIL }, { 3, -1, 'INTO', '(', NIL }, { 0, 2, ',', NIL, NIL }, { 1000, 3, 'TO', NIL, NIL }, { 1004, -2, NIL, '<', NIL }, { 1005, -2, 'INTO', '(', NIL } } , .F. } ) aAdd( aCommRules, { 'SET' , { { 0, 0, 'FILTER', NIL, NIL }, { 0, 0, 'TO', NIL, NIL } } , .F. } ) aAdd( aCommRules, { 'SET' , { { 0, 0, 'FILTER', NIL, NIL }, { 1, 0, 'TO', '<', NIL } } , .F. } ) aAdd( aCommRules, { 'SET' , { { 0, 0, 'FILTER', NIL, NIL }, { 1, 0, 'TO', ':', { '&' } } } , .F. } ) @@ -4449,10 +4589,10 @@ aAdd( aCommRules, { 'JOIN' , { { 1, 1, 'WITH', '(', NIL }, { 2, 1, 'TO aAdd( aCommRules, { 'COUNT' , { { 1, 1, 'TO', '<', NIL }, { 2, 1, 'FOR', '<', NIL }, { 3, 1, 'WHILE', '<', NIL }, { 4, 1, 'NEXT', '<', NIL }, { 5, 1, 'RECORD', '<', NIL }, { 6, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } ) aAdd( aCommRules, { 'SUM' , { { 1, 1, NIL, '<', { 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 1002, 2, ',', '<', NIL }, { 3, -1, 'TO', '<', NIL }, { 1004, 2, ',', '<', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } ) aAdd( aCommRules, { 'AVERAGE' , { { 1, 1, NIL, '<', { 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 1002, 2, ',', '<', NIL }, { 3, -1, 'TO', '<', NIL }, { 1004, 2, ',', '<', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } ) -aAdd( aCommRules, { 'LIST' , { { 1, 1, NIL, 'A', { 'OFF', 'TO PRINTER', 'TO', 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 2, 1, NIL, ':', { 'OFF' } }, { 3, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 4, -1, 'FILE', '(', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } ) -aAdd( aCommRules, { 'DISPLAY' , { { 1, 1, NIL, 'A', { 'OFF', 'TO PRINTER', 'TO', 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 2, 1, NIL, ':', { 'OFF' } }, { 3, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 4, -1, 'FILE', '(', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 10, 1, NIL, ':', { 'ALL' } } } , .F. } ) -aAdd( aCommRules, { 'REPORT' , { { 1, 0, 'FORM', '<', NIL }, { 2, 1, 'HEADING', '<', NIL }, { 3, 1, NIL, ':', { 'PLAIN' } }, { 4, 1, NIL, ':', { 'NOEJECT' } }, { 5, 1, NIL, ':', { 'SUMMARY' } }, { 6, 1, NIL, ':', { 'NOCONSOLE' } }, { 7, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 8, -1, 'FILE', '(', NIL }, { 9, 1, 'FOR', '<', NIL }, { 10, 1, 'WHILE', '<', NIL }, { 11, 1, 'NEXT', '<', NIL }, { 12, 1, 'RECORD', '<', NIL }, { 13, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } ) -aAdd( aCommRules, { 'LABEL' , { { 1, 0, 'FORM', '<', NIL }, { 2, 1, NIL, ':', { 'SAMPLE' } }, { 3, 1, NIL, ':', { 'NOCONSOLE' } }, { 4, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 5, -1, 'FILE', '(', NIL }, { 6, 1, 'FOR', '<', NIL }, { 7, 1, 'WHILE', '<', NIL }, { 8, 1, 'NEXT', '<', NIL }, { 9, 1, 'RECORD', '<', NIL }, { 10, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } ) +aAdd( aCommRules, { 'LIST' , { { 1, 1, NIL, 'A', { 'OFF', 'TO PRINTER', 'TO', 'FILE', 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 2, 1, NIL, ':', { 'OFF' } }, { 3, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 4, 1, 'FILE', '(', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } ) +aAdd( aCommRules, { 'DISPLAY' , { { 1, 1, NIL, 'A', { 'OFF', 'TO PRINTER', 'TO', 'FILE', 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 2, 1, NIL, ':', { 'OFF' } }, { 3, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 4, 1, 'FILE', '(', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 10, 1, NIL, ':', { 'ALL' } } } , .F. } ) +aAdd( aCommRules, { 'REPORT' , { { 1, 0, 'FORM', '<', NIL }, { 2, 1, 'HEADING', '<', NIL }, { 3, 1, NIL, ':', { 'PLAIN' } }, { 4, 1, NIL, ':', { 'NOEJECT' } }, { 5, 1, NIL, ':', { 'SUMMARY' } }, { 6, 1, NIL, ':', { 'NOCONSOLE' } }, { 7, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 8, 1, 'FILE', '(', NIL }, { 9, 1, 'FOR', '<', NIL }, { 10, 1, 'WHILE', '<', NIL }, { 11, 1, 'NEXT', '<', NIL }, { 12, 1, 'RECORD', '<', NIL }, { 13, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } ) +aAdd( aCommRules, { 'LABEL' , { { 1, 0, 'FORM', '<', NIL }, { 2, 1, NIL, ':', { 'SAMPLE' } }, { 3, 1, NIL, ':', { 'NOCONSOLE' } }, { 4, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 5, 1, 'FILE', '(', NIL }, { 6, 1, 'FOR', '<', NIL }, { 7, 1, 'WHILE', '<', NIL }, { 8, 1, 'NEXT', '<', NIL }, { 9, 1, 'RECORD', '<', NIL }, { 10, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } ) aAdd( aCommRules, { 'CLOSE' , { { 1, 0, NIL, '<', NIL } } , .F. } ) aAdd( aCommRules, { 'CLOSE' , , .F. } ) aAdd( aCommRules, { 'CLOSE' , { { 0, 0, 'DATABASES', NIL, NIL } } , .F. } ) @@ -4480,9 +4620,6 @@ FUNCTION InitResults() /* Defines Results*/ aDefResults := {} -#ifdef __HARBOUR__ -aAdd( aDefResults, { { { 0, '1' } }, { -1} , { } } ) -#endif aAdd( aDefResults, { { { 0, '1' } }, { -1} , { } } ) aAdd( aDefResults, { { { 0, '2' } }, { -1} , { } } ) aAdd( aDefResults, { { { 0, '3' } }, { -1} , { } } ) diff --git a/harbour/contrib/dot/rp_dot.ch b/harbour/contrib/dot/rp_dot.ch index cc8502f3f7..3c37c49d5a 100644 --- a/harbour/contrib/dot/rp_dot.ch +++ b/harbour/contrib/dot/rp_dot.ch @@ -1,2 +1,11 @@ #COMMAND BROWSE => Browse( 1, 0, 23, 79 ) #COMMAND EXIT => __QUIT() + +#ifdef __HARBOUR__ + #TRANSLATE _GET_( , , , , ) => __GET( , , , , , MEMVARBLOCK() ) +#else + #TRANSLATE _GET_( , , , , ) => __GET( MEMVARBLOCK(), , , , ) + #TRANSLATE __GET( ):Display() => __GET() +#endif + +__get(1,2,3,4,5):display() diff --git a/harbour/source/pp/ppcore.c b/harbour/source/pp/ppcore.c index 2d5524492d..7142e313ef 100644 --- a/harbour/source/pp/ppcore.c +++ b/harbour/source/pp/ppcore.c @@ -2795,13 +2795,11 @@ static int md_strAt( char * szSub, int lSubLen, char * szText, BOOL checkword, B lPos++; } } - - cLastChar = *(szText+lPos); } #if 0 - printf( "In: >%s<\n", szText ); - printf( "Pos: %i Len: %i Str: >%s< At: >%s<\n", lSubPos, lSubLen, szSub, (szText+lPos-lSubLen+1) ); + printf( "Rule: %i Find: >%s< In: >%s<\n", bRule, szSub, szText ); + printf( "Pos: %i Len: %i At: >%s<\n", lSubPos, lSubLen, (szText+lPos-lSubLen+1) ); #endif return (lSubPos < lSubLen? 0: lPos - lSubLen + 1);