diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2008-11-20 14:05:36 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2008-11-20 14:05:36 +0000 |
commit | 1c20d7b53d202a3400358b4248eb3c8ee49c8013 (patch) | |
tree | b1e5dac1f1051ca9c0323ba4c3e0ba3017922a6c /basic/source | |
parent | 2849810d867485f44d1c6017157d65707a799330 (diff) |
CWS-TOOLING: integrate CWS ab64_DEV300
Diffstat (limited to 'basic/source')
-rw-r--r-- | basic/source/classes/eventatt.cxx | 4 | ||||
-rw-r--r-- | basic/source/comp/exprnode.cxx | 9 | ||||
-rw-r--r-- | basic/source/comp/exprtree.cxx | 164 | ||||
-rw-r--r-- | basic/source/inc/expr.hxx | 9 |
4 files changed, 118 insertions, 68 deletions
diff --git a/basic/source/classes/eventatt.cxx b/basic/source/classes/eventatt.cxx index 5107eb22a396..d9269cf084e3 100644 --- a/basic/source/classes/eventatt.cxx +++ b/basic/source/classes/eventatt.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: eventatt.cxx,v $ - * $Revision: 1.35 $ + * $Revision: 1.35.40.1 $ * * This file is part of OpenOffice.org. * @@ -566,7 +566,7 @@ void RTL_Impl_CreateUnoDialog( StarBASIC* pBasic, SbxArray& rPar, BOOL bWrite ) OSL_TRACE("About to try get a hold of ThisComponent"); Reference< frame::XModel > xModel = getModelFromBasic( pStartedBasic ) ; - Reference< XScriptListener > xScriptListener = new BasicScriptListener_Impl( pBasic, xModel ); + Reference< XScriptListener > xScriptListener = new BasicScriptListener_Impl( pStartedBasic, xModel ); Sequence< Any > aArgs( 4 ); aArgs[ 0 ] <<= xModel; diff --git a/basic/source/comp/exprnode.cxx b/basic/source/comp/exprnode.cxx index 294d4d1b8769..92da5d4f22fd 100644 --- a/basic/source/comp/exprnode.cxx +++ b/basic/source/comp/exprnode.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: exprnode.cxx,v $ - * $Revision: 1.19 $ + * $Revision: 1.19.40.1 $ * * This file is part of OpenOffice.org. * @@ -39,6 +39,13 @@ ////////////////////////////////////////////////////////////////////////// +SbiExprNode::SbiExprNode( void ) +{ + pLeft = NULL; + pRight = NULL; + eNodeType = SbxDUMMY; +} + SbiExprNode::SbiExprNode( SbiParser* p, SbiExprNode* l, SbiToken t, SbiExprNode* r ) { BaseInit( p ); diff --git a/basic/source/comp/exprtree.cxx b/basic/source/comp/exprtree.cxx index 29874fe5184d..e69551f364e5 100644 --- a/basic/source/comp/exprtree.cxx +++ b/basic/source/comp/exprtree.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: exprtree.cxx,v $ - * $Revision: 1.24 $ + * $Revision: 1.24.40.1 $ * * This file is part of OpenOffice.org. * @@ -513,8 +513,15 @@ SbiExprNode* SbiExpression::Operand() pParser->Next(); pRes = new SbiExprNode( pParser, pParser->GetSym() ); break; case LPAREN: - nParenLevel++; pParser->Next(); + if( nParenLevel == 0 && m_eMode == EXPRMODE_LPAREN_PENDING && pParser->Peek() == RPAREN ) + { + m_eMode = EXPRMODE_EMPTY_PAREN; + pRes = new SbiExprNode(); // Dummy node + pParser->Next(); + break; + } + nParenLevel++; pRes = Boolean(); if( pParser->Peek() != RPAREN ) { @@ -589,9 +596,12 @@ SbiExprNode* SbiExpression::Unary() SbiExprNode* SbiExpression::Exp() { SbiExprNode* pNd = Unary(); - while( pParser->Peek() == EXPON ) { - SbiToken eTok = pParser->Next(); - pNd = new SbiExprNode( pParser, pNd, eTok, Unary() ); + if( m_eMode != EXPRMODE_EMPTY_PAREN ) + { + while( pParser->Peek() == EXPON ) { + SbiToken eTok = pParser->Next(); + pNd = new SbiExprNode( pParser, pNd, eTok, Unary() ); + } } return pNd; } @@ -599,13 +609,16 @@ SbiExprNode* SbiExpression::Exp() SbiExprNode* SbiExpression::MulDiv() { SbiExprNode* pNd = Exp(); - for( ;; ) + if( m_eMode != EXPRMODE_EMPTY_PAREN ) { - SbiToken eTok = pParser->Peek(); - if( eTok != MUL && eTok != DIV ) - break; - eTok = pParser->Next(); - pNd = new SbiExprNode( pParser, pNd, eTok, Exp() ); + for( ;; ) + { + SbiToken eTok = pParser->Peek(); + if( eTok != MUL && eTok != DIV ) + break; + eTok = pParser->Next(); + pNd = new SbiExprNode( pParser, pNd, eTok, Exp() ); + } } return pNd; } @@ -613,9 +626,12 @@ SbiExprNode* SbiExpression::MulDiv() SbiExprNode* SbiExpression::IntDiv() { SbiExprNode* pNd = MulDiv(); - while( pParser->Peek() == IDIV ) { - SbiToken eTok = pParser->Next(); - pNd = new SbiExprNode( pParser, pNd, eTok, MulDiv() ); + if( m_eMode != EXPRMODE_EMPTY_PAREN ) + { + while( pParser->Peek() == IDIV ) { + SbiToken eTok = pParser->Next(); + pNd = new SbiExprNode( pParser, pNd, eTok, MulDiv() ); + } } return pNd; } @@ -623,9 +639,12 @@ SbiExprNode* SbiExpression::IntDiv() SbiExprNode* SbiExpression::Mod() { SbiExprNode* pNd = IntDiv(); - while( pParser->Peek() == MOD ) { - SbiToken eTok = pParser->Next(); - pNd = new SbiExprNode( pParser, pNd, eTok, IntDiv() ); + if( m_eMode != EXPRMODE_EMPTY_PAREN ) + { + while( pParser->Peek() == MOD ) { + SbiToken eTok = pParser->Next(); + pNd = new SbiExprNode( pParser, pNd, eTok, IntDiv() ); + } } return pNd; } @@ -633,13 +652,16 @@ SbiExprNode* SbiExpression::Mod() SbiExprNode* SbiExpression::AddSub() { SbiExprNode* pNd = Mod(); - for( ;; ) + if( m_eMode != EXPRMODE_EMPTY_PAREN ) { - SbiToken eTok = pParser->Peek(); - if( eTok != PLUS && eTok != MINUS ) - break; - eTok = pParser->Next(); - pNd = new SbiExprNode( pParser, pNd, eTok, Mod() ); + for( ;; ) + { + SbiToken eTok = pParser->Peek(); + if( eTok != PLUS && eTok != MINUS ) + break; + eTok = pParser->Next(); + pNd = new SbiExprNode( pParser, pNd, eTok, Mod() ); + } } return pNd; } @@ -647,13 +669,16 @@ SbiExprNode* SbiExpression::AddSub() SbiExprNode* SbiExpression::Cat() { SbiExprNode* pNd = AddSub(); - for( ;; ) + if( m_eMode != EXPRMODE_EMPTY_PAREN ) { - SbiToken eTok = pParser->Peek(); - if( eTok != CAT ) - break; - eTok = pParser->Next(); - pNd = new SbiExprNode( pParser, pNd, eTok, AddSub() ); + for( ;; ) + { + SbiToken eTok = pParser->Peek(); + if( eTok != CAT ) + break; + eTok = pParser->Next(); + pNd = new SbiExprNode( pParser, pNd, eTok, AddSub() ); + } } return pNd; } @@ -661,24 +686,27 @@ SbiExprNode* SbiExpression::Cat() SbiExprNode* SbiExpression::Comp() { SbiExprNode* pNd = Cat(); - short nCount = 0; - for( ;; ) + if( m_eMode != EXPRMODE_EMPTY_PAREN ) { - SbiToken eTok = pParser->Peek(); - if( m_eMode == EXPRMODE_ARRAY_OR_OBJECT ) - break; - if( eTok != EQ && eTok != NE && eTok != LT - && eTok != GT && eTok != LE && eTok != GE ) - break; - eTok = pParser->Next(); - pNd = new SbiExprNode( pParser, pNd, eTok, Cat() ); - nCount++; - } - // Mehrere Operatoren hintereinander gehen nicht - if( nCount > 1 ) - { - pParser->Error( SbERR_SYNTAX ); - bError = TRUE; + short nCount = 0; + for( ;; ) + { + SbiToken eTok = pParser->Peek(); + if( m_eMode == EXPRMODE_ARRAY_OR_OBJECT ) + break; + if( eTok != EQ && eTok != NE && eTok != LT + && eTok != GT && eTok != LE && eTok != GE ) + break; + eTok = pParser->Next(); + pNd = new SbiExprNode( pParser, pNd, eTok, Cat() ); + nCount++; + } + // Mehrere Operatoren hintereinander gehen nicht + if( nCount > 1 ) + { + pParser->Error( SbERR_SYNTAX ); + bError = TRUE; + } } return pNd; } @@ -686,16 +714,19 @@ SbiExprNode* SbiExpression::Comp() SbiExprNode* SbiExpression::Like() { SbiExprNode* pNd = Comp(); - short nCount = 0; - while( pParser->Peek() == LIKE ) { - SbiToken eTok = pParser->Next(); - pNd = new SbiExprNode( pParser, pNd, eTok, Comp() ), nCount++; - } - // Mehrere Operatoren hintereinander gehen nicht - if( nCount > 1 ) + if( m_eMode != EXPRMODE_EMPTY_PAREN ) { - pParser->Error( SbERR_SYNTAX ); - bError = TRUE; + short nCount = 0; + while( pParser->Peek() == LIKE ) { + SbiToken eTok = pParser->Next(); + pNd = new SbiExprNode( pParser, pNd, eTok, Comp() ), nCount++; + } + // Mehrere Operatoren hintereinander gehen nicht + if( nCount > 1 ) + { + pParser->Error( SbERR_SYNTAX ); + bError = TRUE; + } } return pNd; } @@ -703,14 +734,17 @@ SbiExprNode* SbiExpression::Like() SbiExprNode* SbiExpression::Boolean() { SbiExprNode* pNd = Like(); - for( ;; ) + if( m_eMode != EXPRMODE_EMPTY_PAREN ) { - SbiToken eTok = pParser->Peek(); - if( eTok != AND && eTok != OR && eTok != XOR - && eTok != EQV && eTok != IMP && eTok != IS ) - break; - eTok = pParser->Next(); - pNd = new SbiExprNode( pParser, pNd, eTok, Like() ); + for( ;; ) + { + SbiToken eTok = pParser->Peek(); + if( eTok != AND && eTok != OR && eTok != XOR + && eTok != EQV && eTok != IMP && eTok != IS ) + break; + eTok = pParser->Next(); + pNd = new SbiExprNode( pParser, pNd, eTok, Like() ); + } } return pNd; } @@ -932,6 +966,12 @@ SbiParameters::SbiParameters( SbiParser* p, BOOL bStandaloneExpression, BOOL bPa bAssumeArrayMode = true; eTok = NIL; } + else if( eModeAfter == EXPRMODE_EMPTY_PAREN ) + { + bBracket = TRUE; + delete pExpr; + return; + } } else pExpr = new SbiExpression( pParser ); diff --git a/basic/source/inc/expr.hxx b/basic/source/inc/expr.hxx index d347e77f453e..319af5cbfbc5 100644 --- a/basic/source/inc/expr.hxx +++ b/basic/source/inc/expr.hxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: expr.hxx,v $ - * $Revision: 1.15 $ + * $Revision: 1.15.40.1 $ * * This file is part of OpenOffice.org. * @@ -67,9 +67,10 @@ enum SbiExprMode { // Expression context: EXPRMODE_STANDALONE, // a param1, param2 OR a( param1, param2 ) = 42 EXPRMODE_LPAREN_PENDING, // start of parameter list with bracket, special handling EXPRMODE_LPAREN_NOT_NEEDED, // pending LPAREN has not been used - EXPRMODE_ARRAY_OR_OBJECT // '=' or '(' or '.' found after ')' on ParenLevel 0, stopping + EXPRMODE_ARRAY_OR_OBJECT, // '=' or '(' or '.' found after ')' on ParenLevel 0, stopping // expression, assuming array syntax a(...)[(...)] = ? // or a(...).b(...) + EXPRMODE_EMPTY_PAREN // It turned out that the paren don't contain anything: a() }; enum SbiNodeType { @@ -77,7 +78,8 @@ enum SbiNodeType { SbxSTRVAL, // aStrVal = Wert, before #i59791/#i45570: nStringId = Wert SbxVARVAL, // aVar = Wert SbxTYPEOF, // TypeOf ObjExpr Is Type - SbxNODE // Node + SbxNODE, // Node + SbxDUMMY }; enum RecursiveMode @@ -117,6 +119,7 @@ class SbiExprNode { // Operatoren (und Operanden) void GenElement( SbiOpcode ); // Element void BaseInit( SbiParser* p ); // Hilfsfunktion fuer Ctor, AB 17.12.95 public: + SbiExprNode( void ); SbiExprNode( SbiParser*, double, SbxDataType ); SbiExprNode( SbiParser*, const String& ); SbiExprNode( SbiParser*, const SbiSymDef&, SbxDataType, SbiExprList* = NULL ); |