summaryrefslogtreecommitdiff
path: root/patches/vba/vba-fix-logical-precedence-order.diff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/vba/vba-fix-logical-precedence-order.diff')
-rw-r--r--patches/vba/vba-fix-logical-precedence-order.diff161
1 files changed, 0 insertions, 161 deletions
diff --git a/patches/vba/vba-fix-logical-precedence-order.diff b/patches/vba/vba-fix-logical-precedence-order.diff
deleted file mode 100644
index f486a0d69..000000000
--- a/patches/vba/vba-fix-logical-precedence-order.diff
+++ /dev/null
@@ -1,161 +0,0 @@
-diff --git basic/source/comp/exprtree.cxx basic/source/comp/exprtree.cxx
-index e7025f7..dc3ec80 100644
---- basic/source/comp/exprtree.cxx
-+++ basic/source/comp/exprtree.cxx
-@@ -582,13 +582,19 @@ SbiExprNode* SbiExpression::Unary()
- {
- case MINUS:
- eTok = NEG;
-- case NOT:
- pParser->Next();
-- // process something like "Do While Not "foo"="" "
-+ pNd = new SbiExprNode( pParser, Unary(), eTok, NULL );
-+ break;
-+ case NOT:
- if( pParser->IsVBASupportOn() )
-- pNd = new SbiExprNode( pParser, Like(), eTok, NULL );
-- else
-+ {
-+ pNd = Operand();
-+ }
-+ else
-+ {
-+ pParser->Next();
- pNd = new SbiExprNode( pParser, Unary(), eTok, NULL );
-+ }
- break;
- case PLUS:
- pParser->Next();
-@@ -733,9 +739,114 @@ SbiExprNode* SbiExpression::Comp()
- return pNd;
- }
-
-+
-+SbiExprNode* SbiExpression::VBA_Not()
-+{
-+ SbiExprNode* pNd = NULL;
-+
-+ SbiToken eTok = pParser->Peek();
-+ if( eTok == NOT )
-+ {
-+ pParser->Next();
-+ pNd = new SbiExprNode( pParser, VBA_Not(), eTok, NULL );
-+ }
-+ else
-+ {
-+ pNd = Comp();
-+ }
-+ return pNd;
-+}
-+
-+SbiExprNode* SbiExpression::VBA_And()
-+{
-+ SbiExprNode* pNd = VBA_Not();
-+ if( m_eMode != EXPRMODE_EMPTY_PAREN )
-+ {
-+ for( ;; )
-+ {
-+ SbiToken eTok = pParser->Peek();
-+ if( eTok != AND )
-+ break;
-+ eTok = pParser->Next();
-+ pNd = new SbiExprNode( pParser, pNd, eTok, VBA_Not() );
-+ }
-+ }
-+ return pNd;
-+}
-+
-+SbiExprNode* SbiExpression::VBA_Or()
-+{
-+ SbiExprNode* pNd = VBA_And();
-+ if( m_eMode != EXPRMODE_EMPTY_PAREN )
-+ {
-+ for( ;; )
-+ {
-+ SbiToken eTok = pParser->Peek();
-+ if( eTok != OR )
-+ break;
-+ eTok = pParser->Next();
-+ pNd = new SbiExprNode( pParser, pNd, eTok, VBA_And() );
-+ }
-+ }
-+ return pNd;
-+}
-+
-+SbiExprNode* SbiExpression::VBA_Xor()
-+{
-+ SbiExprNode* pNd = VBA_Or();
-+ if( m_eMode != EXPRMODE_EMPTY_PAREN )
-+ {
-+ for( ;; )
-+ {
-+ SbiToken eTok = pParser->Peek();
-+ if( eTok != XOR )
-+ break;
-+ eTok = pParser->Next();
-+ pNd = new SbiExprNode( pParser, pNd, eTok, VBA_Or() );
-+ }
-+ }
-+ return pNd;
-+
-+}
-+
-+SbiExprNode* SbiExpression::VBA_Eqv()
-+{
-+ SbiExprNode* pNd = VBA_Xor();
-+ if( m_eMode != EXPRMODE_EMPTY_PAREN )
-+ {
-+ for( ;; )
-+ {
-+ SbiToken eTok = pParser->Peek();
-+ if( eTok != EQV )
-+ break;
-+ eTok = pParser->Next();
-+ pNd = new SbiExprNode( pParser, pNd, eTok, VBA_Xor() );
-+ }
-+ }
-+ return pNd;
-+}
-+
-+SbiExprNode* SbiExpression::VBA_Imp()
-+{
-+ SbiExprNode* pNd = VBA_Eqv();
-+ if( m_eMode != EXPRMODE_EMPTY_PAREN )
-+ {
-+ for( ;; )
-+ {
-+ SbiToken eTok = pParser->Peek();
-+ if( eTok != IMP )
-+ break;
-+ eTok = pParser->Next();
-+ pNd = new SbiExprNode( pParser, pNd, eTok, VBA_Eqv() );
-+ }
-+ }
-+ return pNd;
-+
-+}
-+
- SbiExprNode* SbiExpression::Like()
- {
-- SbiExprNode* pNd = Comp();
-+ SbiExprNode* pNd = pParser->IsVBASupportOn() ? VBA_Imp() : Comp();
- if( m_eMode != EXPRMODE_EMPTY_PAREN )
- {
- short nCount = 0;
-diff --git basic/source/inc/expr.hxx basic/source/inc/expr.hxx
-index 96604cb..d76dc14 100644
---- basic/source/inc/expr.hxx
-+++ basic/source/inc/expr.hxx
-@@ -188,6 +188,12 @@ protected:
- SbiExprNode* AddSub();
- SbiExprNode* Cat();
- SbiExprNode* Like();
-+ SbiExprNode* VBA_Not();
-+ SbiExprNode* VBA_And();
-+ SbiExprNode* VBA_Or();
-+ SbiExprNode* VBA_Xor();
-+ SbiExprNode* VBA_Eqv();
-+ SbiExprNode* VBA_Imp();
- SbiExprNode* Comp();
- SbiExprNode* Boolean();
- public: