diff options
Diffstat (limited to 'basic/source/comp/parser.cxx')
-rw-r--r-- | basic/source/comp/parser.cxx | 170 |
1 files changed, 85 insertions, 85 deletions
diff --git a/basic/source/comp/parser.cxx b/basic/source/comp/parser.cxx index 6d6c02ce0308..1e8e7b2cee1d 100644 --- a/basic/source/comp/parser.cxx +++ b/basic/source/comp/parser.cxx @@ -2,7 +2,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -32,87 +32,87 @@ #include "sbcomp.hxx" #include <com/sun/star/script/ModuleType.hpp> -struct SbiParseStack { // "Stack" fuer Statement-Blocks - SbiParseStack* pNext; // Chain - SbiExprNode* pWithVar; // Variable fuer WITH - SbiToken eExitTok; // Exit-Token - UINT32 nChain; // JUMP-Chain +struct SbiParseStack { // "Stack" fuer Statement-Blocks + SbiParseStack* pNext; // Chain + SbiExprNode* pWithVar; // Variable fuer WITH + SbiToken eExitTok; // Exit-Token + UINT32 nChain; // JUMP-Chain }; struct SbiStatement { SbiToken eTok; - void( SbiParser::*Func )(); // Verarbeitungsroutine - BOOL bMain; // TRUE: ausserhalb SUBs OK - BOOL bSubr; // TRUE: in SUBs OK + void( SbiParser::*Func )(); // Verarbeitungsroutine + BOOL bMain; // TRUE: ausserhalb SUBs OK + BOOL bSubr; // TRUE: in SUBs OK }; -#define Y TRUE -#define N FALSE +#define Y TRUE +#define N FALSE static SbiStatement StmntTable [] = { { ATTRIBUTE, &SbiParser::Attribute, Y, Y, }, // ATTRIBUTE -{ CALL, &SbiParser::Call, N, Y, }, // CALL -{ CLOSE, &SbiParser::Close, N, Y, }, // CLOSE -{ _CONST_, &SbiParser::Dim, Y, Y, }, // CONST -{ DECLARE, &SbiParser::Declare, Y, N, }, // DECLARE -{ DEFBOOL, &SbiParser::DefXXX, Y, N, }, // DEFBOOL -{ DEFCUR, &SbiParser::DefXXX, Y, N, }, // DEFCUR -{ DEFDATE, &SbiParser::DefXXX, Y, N, }, // DEFDATE -{ DEFDBL, &SbiParser::DefXXX, Y, N, }, // DEFDBL -{ DEFERR, &SbiParser::DefXXX, Y, N, }, // DEFERR -{ DEFINT, &SbiParser::DefXXX, Y, N, }, // DEFINT -{ DEFLNG, &SbiParser::DefXXX, Y, N, }, // DEFLNG -{ DEFOBJ, &SbiParser::DefXXX, Y, N, }, // DEFOBJ -{ DEFSNG, &SbiParser::DefXXX, Y, N, }, // DEFSNG -{ DEFSTR, &SbiParser::DefXXX, Y, N, }, // DEFSTR -{ DEFVAR, &SbiParser::DefXXX, Y, N, }, // DEFVAR -{ DIM, &SbiParser::Dim, Y, Y, }, // DIM -{ DO, &SbiParser::DoLoop, N, Y, }, // DO -{ ELSE, &SbiParser::NoIf, N, Y, }, // ELSE -{ ELSEIF, &SbiParser::NoIf, N, Y, }, // ELSEIF -{ ENDIF, &SbiParser::NoIf, N, Y, }, // ENDIF -{ END, &SbiParser::Stop, N, Y, }, // END -{ ENUM, &SbiParser::Enum, Y, N, }, // TYPE -{ ERASE, &SbiParser::Erase, N, Y, }, // ERASE -{ _ERROR_, &SbiParser::ErrorStmnt, N, Y, }, // ERROR -{ EXIT, &SbiParser::Exit, N, Y, }, // EXIT -{ FOR, &SbiParser::For, N, Y, }, // FOR -{ FUNCTION, &SbiParser::SubFunc, Y, N, }, // FUNCTION -{ GOSUB, &SbiParser::Goto, N, Y, }, // GOSUB -{ GLOBAL, &SbiParser::Dim, Y, N, }, // GLOBAL -{ GOTO, &SbiParser::Goto, N, Y, }, // GOTO -{ IF, &SbiParser::If, N, Y, }, // IF +{ CALL, &SbiParser::Call, N, Y, }, // CALL +{ CLOSE, &SbiParser::Close, N, Y, }, // CLOSE +{ _CONST_, &SbiParser::Dim, Y, Y, }, // CONST +{ DECLARE, &SbiParser::Declare, Y, N, }, // DECLARE +{ DEFBOOL, &SbiParser::DefXXX, Y, N, }, // DEFBOOL +{ DEFCUR, &SbiParser::DefXXX, Y, N, }, // DEFCUR +{ DEFDATE, &SbiParser::DefXXX, Y, N, }, // DEFDATE +{ DEFDBL, &SbiParser::DefXXX, Y, N, }, // DEFDBL +{ DEFERR, &SbiParser::DefXXX, Y, N, }, // DEFERR +{ DEFINT, &SbiParser::DefXXX, Y, N, }, // DEFINT +{ DEFLNG, &SbiParser::DefXXX, Y, N, }, // DEFLNG +{ DEFOBJ, &SbiParser::DefXXX, Y, N, }, // DEFOBJ +{ DEFSNG, &SbiParser::DefXXX, Y, N, }, // DEFSNG +{ DEFSTR, &SbiParser::DefXXX, Y, N, }, // DEFSTR +{ DEFVAR, &SbiParser::DefXXX, Y, N, }, // DEFVAR +{ DIM, &SbiParser::Dim, Y, Y, }, // DIM +{ DO, &SbiParser::DoLoop, N, Y, }, // DO +{ ELSE, &SbiParser::NoIf, N, Y, }, // ELSE +{ ELSEIF, &SbiParser::NoIf, N, Y, }, // ELSEIF +{ ENDIF, &SbiParser::NoIf, N, Y, }, // ENDIF +{ END, &SbiParser::Stop, N, Y, }, // END +{ ENUM, &SbiParser::Enum, Y, N, }, // TYPE +{ ERASE, &SbiParser::Erase, N, Y, }, // ERASE +{ _ERROR_, &SbiParser::ErrorStmnt, N, Y, }, // ERROR +{ EXIT, &SbiParser::Exit, N, Y, }, // EXIT +{ FOR, &SbiParser::For, N, Y, }, // FOR +{ FUNCTION, &SbiParser::SubFunc, Y, N, }, // FUNCTION +{ GOSUB, &SbiParser::Goto, N, Y, }, // GOSUB +{ GLOBAL, &SbiParser::Dim, Y, N, }, // GLOBAL +{ GOTO, &SbiParser::Goto, N, Y, }, // GOTO +{ IF, &SbiParser::If, N, Y, }, // IF { IMPLEMENTS, &SbiParser::Implements, Y, N, }, // IMPLEMENTS -{ INPUT, &SbiParser::Input, N, Y, }, // INPUT -{ LET, &SbiParser::Assign, N, Y, }, // LET -{ LINE, &SbiParser::Line, N, Y, }, // LINE, -> LINE INPUT (#i92642) -{ LINEINPUT,&SbiParser::LineInput, N, Y, }, // LINE INPUT -{ LOOP, &SbiParser::BadBlock, N, Y, }, // LOOP -{ LSET, &SbiParser::LSet, N, Y, }, // LSET -{ NAME, &SbiParser::Name, N, Y, }, // NAME -{ NEXT, &SbiParser::BadBlock, N, Y, }, // NEXT -{ ON, &SbiParser::On, N, Y, }, // ON -{ OPEN, &SbiParser::Open, N, Y, }, // OPEN -{ OPTION, &SbiParser::Option, Y, N, }, // OPTION -{ PRINT, &SbiParser::Print, N, Y, }, // PRINT -{ PRIVATE, &SbiParser::Dim, Y, N, }, // PRIVATE -{ PROPERTY, &SbiParser::SubFunc, Y, N, }, // FUNCTION -{ PUBLIC, &SbiParser::Dim, Y, N, }, // PUBLIC -{ REDIM, &SbiParser::ReDim, N, Y, }, // DIM -{ RESUME, &SbiParser::Resume, N, Y, }, // RESUME -{ RETURN, &SbiParser::Return, N, Y, }, // RETURN -{ RSET, &SbiParser::RSet, N, Y, }, // RSET -{ SELECT, &SbiParser::Select, N, Y, }, // SELECT -{ SET, &SbiParser::Set, N, Y, }, // SET -{ STATIC, &SbiParser::Static, Y, Y, }, // STATIC -{ STOP, &SbiParser::Stop, N, Y, }, // STOP -{ SUB, &SbiParser::SubFunc, Y, N, }, // SUB -{ TYPE, &SbiParser::Type, Y, N, }, // TYPE -{ UNTIL, &SbiParser::BadBlock, N, Y, }, // UNTIL -{ WHILE, &SbiParser::While, N, Y, }, // WHILE -{ WEND, &SbiParser::BadBlock, N, Y, }, // WEND -{ WITH, &SbiParser::With, N, Y, }, // WITH -{ WRITE, &SbiParser::Write, N, Y, }, // WRITE +{ INPUT, &SbiParser::Input, N, Y, }, // INPUT +{ LET, &SbiParser::Assign, N, Y, }, // LET +{ LINE, &SbiParser::Line, N, Y, }, // LINE, -> LINE INPUT (#i92642) +{ LINEINPUT,&SbiParser::LineInput, N, Y, }, // LINE INPUT +{ LOOP, &SbiParser::BadBlock, N, Y, }, // LOOP +{ LSET, &SbiParser::LSet, N, Y, }, // LSET +{ NAME, &SbiParser::Name, N, Y, }, // NAME +{ NEXT, &SbiParser::BadBlock, N, Y, }, // NEXT +{ ON, &SbiParser::On, N, Y, }, // ON +{ OPEN, &SbiParser::Open, N, Y, }, // OPEN +{ OPTION, &SbiParser::Option, Y, N, }, // OPTION +{ PRINT, &SbiParser::Print, N, Y, }, // PRINT +{ PRIVATE, &SbiParser::Dim, Y, N, }, // PRIVATE +{ PROPERTY, &SbiParser::SubFunc, Y, N, }, // FUNCTION +{ PUBLIC, &SbiParser::Dim, Y, N, }, // PUBLIC +{ REDIM, &SbiParser::ReDim, N, Y, }, // DIM +{ RESUME, &SbiParser::Resume, N, Y, }, // RESUME +{ RETURN, &SbiParser::Return, N, Y, }, // RETURN +{ RSET, &SbiParser::RSet, N, Y, }, // RSET +{ SELECT, &SbiParser::Select, N, Y, }, // SELECT +{ SET, &SbiParser::Set, N, Y, }, // SET +{ STATIC, &SbiParser::Static, Y, Y, }, // STATIC +{ STOP, &SbiParser::Stop, N, Y, }, // STOP +{ SUB, &SbiParser::SubFunc, Y, N, }, // SUB +{ TYPE, &SbiParser::Type, Y, N, }, // TYPE +{ UNTIL, &SbiParser::BadBlock, N, Y, }, // UNTIL +{ WHILE, &SbiParser::While, N, Y, }, // WHILE +{ WEND, &SbiParser::BadBlock, N, Y, }, // WEND +{ WITH, &SbiParser::With, N, Y, }, // WITH +{ WRITE, &SbiParser::Write, N, Y, }, // WRITE { NIL, NULL, N, N } }; @@ -132,21 +132,21 @@ SbiParser::SbiParser( StarBASIC* pb, SbModule* pm ) aRtlSyms( aGblStrings, SbRTL ), aGen( *pm, this, 1024 ) { - pBasic = pb; + pBasic = pb; eCurExpr = SbSYMBOL; eEndTok = NIL; pProc = NULL; pStack = NULL; pWithVar = NULL; - nBase = 0; - bText = + nBase = 0; + bText = bGblDefs = bNewGblDefs = bSingleLineIf = bExplicit = FALSE; bClassModule = ( pm->GetModuleType() == com::sun::star::script::ModuleType::CLASS ); OSL_TRACE("Parser - %s, bClassModule %d", rtl::OUStringToOString( pm->GetName(), RTL_TEXTENCODING_UTF8 ).getStr(), bClassModule ); - pPool = &aPublics; + pPool = &aPublics; for( short i = 0; i < 26; i++ ) eDefTypes[ i ] = SbxVARIANT; // Kein expliziter Defaulttyp @@ -241,8 +241,8 @@ void SbiParser::Exit() for( SbiParseStack* p = pStack; p; p = p->pNext ) { SbiToken eExitTok = p->eExitTok; - if( eTok == eExitTok || - (eTok == PROPERTY && (eExitTok == GET || eExitTok == LET) ) ) // #i109051 + if( eTok == eExitTok || + (eTok == PROPERTY && (eExitTok == GET || eExitTok == LET) ) ) // #i109051 { p->nChain = aGen.Gen( _JUMP, p->nChain ); return; @@ -373,7 +373,7 @@ BOOL SbiParser::Parse() // Ende des Parsings? if( eCurTok == eEndTok || - ( bVBASupportOn && // #i109075 + ( bVBASupportOn && // #i109075 (eCurTok == ENDFUNC || eCurTok == ENDPROPERTY || eCurTok == ENDSUB) && (eEndTok == ENDFUNC || eEndTok == ENDPROPERTY || eEndTok == ENDSUB) ) ) { @@ -438,7 +438,7 @@ BOOL SbiParser::Parse() // globalen Chain pflegen // AB #41606/#40689: Durch die neue static-Behandlung kann noch // ein nGblChain vorhanden sein, daher vorher abfragen - if( bNewGblDefs && nGblChain == 0 && + if( bNewGblDefs && nGblChain == 0 && ( eCurTok == SUB || eCurTok == FUNCTION || eCurTok == PROPERTY ) ) { nGblChain = aGen.Gen( _JUMP, 0 ); @@ -622,8 +622,8 @@ void SbiParser::Set() aLvalue.Gen(); aExpr.Gen(); // Its a good idea to distinguish between - // set someting = another & - // someting = another + // set someting = another & + // someting = another // ( its necessary for vba objects where set is object // specific and also doesn't involve processing default params ) if( pDef->GetTypeId() ) @@ -711,7 +711,7 @@ void SbiParser::DefXXX() void SbiParser::Stop() { aGen.Gen( _STOP ); - Peek(); // #35694: Nur Peek(), damit EOL in Single-Line-If erkannt wird + Peek(); // #35694: Nur Peek(), damit EOL in Single-Line-If erkannt wird } // IMPLEMENTS @@ -761,7 +761,7 @@ void SbiParser::EnableCompatibility() { if( !bCompatible ) AddConstants(); - bCompatible = TRUE; + bCompatible = TRUE; } // OPTION @@ -806,7 +806,7 @@ void SbiParser::Option() break; case CLASSMODULE: - bClassModule = TRUE; + bClassModule = TRUE; aGen.GetModule().SetModuleType( com::sun::star::script::ModuleType::CLASS ); break; case VBASUPPORT: // Option VBASupport used to override the module mode ( in fact this must reset the mode |