diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 08b90a1cf2..673c733636 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,11 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ + detail description will have to take me few days. + +2006-11-21 14:35 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/common.mak + + added missing compiler/hbcomp.c file 2006-11-21 05:05 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/source/compiler/complex.c diff --git a/harbour/source/compiler/complex.c b/harbour/source/compiler/complex.c index 9d395c3528..8cfc778ab7 100644 --- a/harbour/source/compiler/complex.c +++ b/harbour/source/compiler/complex.c @@ -1,110 +1,62 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * compiler lexer which converts PP tokens to the ones which + * grammar parser generated by bison can understand + * + * Copyright 2006 Przemyslaw Czerpak + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ + + #include "hbpp.h" #include "hbcomp.h" #include "hbdate.h" #include "harboury.h" -/* - keywords: - ANNO[UNCE] -> ANNOUNCE - BEGI[N] SEQU[ENCE]-> BEGINSEQ - BREA[K] -> BREAK - CASE -> CASE - _PROCREQ_( -> PROCREQ - DECL[ARE] -> DECLARE, PRIVATE, IDENTIFIER - OPTI[ONAL] -> OPTIONAL - DO -> DO - DO CASE -> DOCASE - DO WHILE -> WHILE - DESCEND -> DESCEND - ELSE -> ELSE - ELSEI[F] -> ELSEIF - END SEQU[ENCE] -> END - ENDI[F] -> ENDIF - ENDC[ASE] -> ENDCASE - ENDD[O] -> ENDDO - END -> END - EXIT -> EXIT - EXTE[RNAL] -> EXTERN - _FIE[LD] -> FIELD - FIEL[D] -> FIELD - FOR -> FOR - FOR EACH -> FOREACH - FUNC[TION] -> FUNCTION - HB_INLINE -> ??? - IIF -> IIF - IF -> IF, IIF - IN -> IN - INIT -> INIT - LOOP -> LOOP - MEMV[AR] -> MEMVAR - NEXT -> NEXT - NIL -> NIL - OTHE[RWISE] -> OTHERWISE - PARA[METERS] -> PARAMETERS - PRIV[ATE] -> PRIVATE - PROC[EDURE] -> PROCEDURE - PUBL[IC] -> PUBLIC - QSELF() -> SELF - RECO[VER] -> RECOVER - RECO[VER] USIN[G] -> RECOVERUSING - RETU[RN] -> RETURN - STAT[IC] -> STATIC - STEP -> STEP - SWITCH -> DOSWITCH - TO -> TO - WHILE -> WHILE - WITH -> WITH - WITH OBJECT -> WITHOBJECT - AS ARRA[Y] -> AS_ARRAY - AS CODE[BLOCK] -> AS_BLOCK - AS STRI[NG] -> AS_CHARACTER - AS CHAR[ACTER] -> AS_CHARACTER - AS CLAS[S] -> AS_CLASS - AS DATE -> AS_DATE - AS LOGI[CAL] -> AS_LOGICAL - AS NUME[RIC] -> AS_NUMERIC - AS OBJE[CT] -> AS_OBJECT - AS USUA[L] -> AS_VARIANT - AS ANYT[YPE] -> AS_VARIANT - AS ARRA[Y] OF USUA[L] -> AS_ARRAY - AS ARRA[Y] OF ANYT[YPE] -> AS_ARRAY - AS ARRA[Y] OF ARRA[Y] -> AS_ARRAY_ARRAY - AS ARRA[Y] OF CODE[BLOCK] -> AS_BLOCK_ARRAY - AS ARRA[Y] OF STRI[NG] -> AS_CHARACTER_ARRAY - AS ARRA[Y] OF CHAR[ACTER] -> AS_CHARACTER_ARRAY - AS ARRA[Y] OF CLAS[S] -> AS_CLASS_ARRAY - AS ARRA[Y] OF DATE -> AS_DATE_ARRAY - AS ARRA[Y] OF LOGI[CAL] -> AS_LOGICAL_ARRAY - AS ARRA[Y] OF NUME[RIC] -> AS_NUMERIC_ARRAY - AS ARRA[Y] OF OBJE[CT] -> AS_OBJECT_ARRAY - _HB_CLASS -> DECLARE_CLASS - _HB_MEMBER -> DECLARE_MEMBER - - - iState usage: - '[': OPERATOR, LSEPARATOR, LARRAY, IF, ELSEIF, CASE, BREAK, - RETURN, WITH, WHILE - break: LOOKUP - case: LOOKUP - declare: DO - do: LOOKUP - end: LOOKUP - field: LOOKUP - for: LOOKUP - iif: FUNCTION, PROCEDURE - if: FUNCTION, PROCEDURE, LOOKUP - init: LOOKUP - next: LOOKUP - otherwise: LOOKUP - recover: LOOKUP - return: LOOKUP - switch: LOOKUP - while: DO, LOOKUP - whith: LOOKUP, DO, WHILE, MACROVAR, MACROTEXT, IDENTIFIER, - RSEPARATOR - -*/ - #define HB_PP_LEX_SELF(t) ( HB_PP_TOKEN_TYPE((t)->type) == HB_PP_TOKEN_SEND && \ (t)->pNext && t->pNext->spaces == 0 && \ HB_PP_TOKEN_TYPE((t)->pNext->type) == HB_PP_TOKEN_SEND ) diff --git a/harbour/source/compiler/hbcomp.c b/harbour/source/compiler/hbcomp.c new file mode 100644 index 0000000000..f6ae0cec0b --- /dev/null +++ b/harbour/source/compiler/hbcomp.c @@ -0,0 +1,81 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * allocate/free new compiler context + * + * Copyright 2006 Przemyslaw Czerpak + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ + + +#include "hbcomp.h" + +HB_COMP_PTR hb_comp_new( void ) +{ + HB_COMP_PTR pComp = NULL; + PHB_PP_STATE pPP = hb_pp_new(); + + if( pPP ) + { + pComp = ( HB_COMP_PTR ) hb_xgrab( sizeof( HB_COMP ) ); + memset( pComp, 0, sizeof( HB_COMP ) ); + pComp->pLex = ( PHB_COMP_LEX ) hb_xgrab( sizeof( HB_COMP_LEX ) ); + memset( pComp->pLex, 0, sizeof( HB_COMP_LEX ) ); + pComp->pLex->pPP = pPP; + } + return pComp; +} + +void hb_comp_free( HB_COMP_PTR pComp ) +{ + if( pComp->pLex ) + { + if( pComp->pLex->pPP ) + hb_pp_free( pComp->pLex->pPP ); + hb_xfree( pComp->pLex ); + } + hb_xfree( pComp ); +}