[Saga-devel] saga SVN commit 3299: /trunk/saga/impl/packages/sd/

paul.livesey at stfc.ac.uk paul.livesey at stfc.ac.uk
Thu Jan 15 08:55:26 CST 2009


User: svn_plivesey
Date: 2009/01/15 08:55 AM

Modified:
 /trunk/saga/impl/packages/sd/
  sd_grammar.g, sd_lexer.cpp, sd_parser.cpp

Log:
 More work on the ANY/ALL code.
 Has been added for the VO filter but is fairly redundant.

File Changes:

Directory: /trunk/saga/impl/packages/sd/
========================================

File [modified]: sd_grammar.g
Delta lines: +128 -43
===================================================================
--- trunk/saga/impl/packages/sd/sd_grammar.g	2009-01-15 14:33:13 UTC (rev 3298)
+++ trunk/saga/impl/packages/sd/sd_grammar.g	2009-01-15 14:55:18 UTC (rev 3299)
@@ -197,6 +197,8 @@
 
 vo_expression
 {
+   bool allVal = false;
+   bool anyVal = false;
    int knot = 0;
    int op;
    string rhs;
@@ -206,55 +208,94 @@
    list<string> slist;
    std::pair<std::string, char> rhsLike;
 } :
-              K_VO! (K_NOT! {knot=1;})? K_IN! slist=in_clause
-              {
-                 #vo_expression = #([SVC_CMP]);
-                 myRef = (Refsd_leafnode)#vo_expression;
-                 myRef->setLValue(K_VO);
-                 myRef->setOpType(K_IN);
-                 myRef->setRValType(K_STRING_LIST);
+   //Check for ANY/ALL clause
+   (K_ANY! {anyVal = true;} |
+    K_ALL! {allVal = true;})?
 
-                 while ( slist.size() > 0 )
-                 {
-                     s = slist.front();
-                     myRef->addListElement(s);
-                     slist.pop_front();
-                 }
+   K_VO! (K_NOT! {knot=1;})? K_IN! slist=in_clause
+   {
+      #vo_expression = #([SVC_CMP]);
+      myRef = (Refsd_leafnode)#vo_expression;
+      myRef->setLValue(K_VO);
+      myRef->setOpType(K_IN);
+      myRef->setRValType(K_STRING_LIST);
 
-                 if ( knot )
-                 {
-                    myRef->setNotPrefix();
-                 }
+      while ( slist.size() > 0 )
+      {
+          s = slist.front();
+          myRef->addListElement(s);
+          slist.pop_front();
+      }
 
-               }
-               | K_VO! (K_NOT! {knot = 1;})? K_LIKE rhsLike=like_clause
-               {
-                  #vo_expression = #([SVC_CMP]);
-                  myRef = (Refsd_leafnode)#vo_expression;
-                  myRef->setLValue(K_VO);
-                  myRef->setOpType(K_LIKE);
-                  myRef->setRValue(rhsLike.first);
+      if ( knot )
+      {
+         myRef->setNotPrefix();
+      }
 
-                  //Set the escape character
-                  //for the 'LIKE' clause
-                  myRef->setEscapeChar(rhsLike.second);
+      //Deal with ANY/ALL
+      if ( anyVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+      }
 
-                  if ( knot )
-                  {
-                     myRef->setNotPrefix();
-                  }
-               }
-               | K_VO! op=eqop rval:S_CHAR_LITERAL!
-               {
-                 #vo_expression = #([SVC_CMP]);
-                 myRef = (Refsd_leafnode)#vo_expression;
-                 myRef->setLValue(K_VO);
-                 myRef->setOpType(op);
-                 myRef->setRValue(rval->getText());
-               }
-               | LPAREN! vo_filter_expression RPAREN!
-               ;
+      if ( allVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+      }
+   } |
 
+   K_VO! (K_NOT! {knot = 1;})? K_LIKE rhsLike=like_clause
+   {
+      #vo_expression = #([SVC_CMP]);
+      myRef = (Refsd_leafnode)#vo_expression;
+      myRef->setLValue(K_VO);
+      myRef->setOpType(K_LIKE);
+      myRef->setRValue(rhsLike.first);
+
+      //Set the escape character
+      //for the 'LIKE' clause
+      myRef->setEscapeChar(rhsLike.second);
+
+      if ( knot )
+      {
+         myRef->setNotPrefix();
+      }
+
+      //Deal with ANY/ALL
+      if ( anyVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+      }
+
+      if ( allVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+      }
+   } |
+
+   K_VO! op=eqop rval:S_CHAR_LITERAL!
+   {
+      #vo_expression = #([SVC_CMP]);
+      myRef = (Refsd_leafnode)#vo_expression;
+      myRef->setLValue(K_VO);
+      myRef->setOpType(op);
+      myRef->setRValue(rval->getText());
+
+      //Deal with ANY/ALL
+      if ( anyVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+      }
+
+      if ( allVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+      }
+   } |
+   
+   LPAREN! vo_filter_expression RPAREN!
+   ;
+
 data_filter : data_filter_expression
 ;
 
@@ -319,6 +360,17 @@
       {
          myRef->setNotPrefix();
       }
+
+      //Deal with ANY/ALL
+      if ( anyVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+      }
+
+      if ( allVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+      }
    } |
 
    lhs0:S_IDENTIFIER (K_NOT! {knot = 1;})? K_LIKE likePair=like_clause
@@ -340,6 +392,17 @@
       {
          myRef->setNotPrefix();
       }
+
+      //Deal with ANY/ALL
+      if ( anyVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+      }
+
+      if ( allVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+      }
    } |
 
    lhs1:S_IDENTIFIER! op=relop (lit:S_CHAR_LITERAL! { rhs1 = 1; } | num:S_NUMBER!)
@@ -362,6 +425,17 @@
          dval = atof(num->getText().c_str());
          myRef->setRValNum(dval);
       }
+
+      //Deal with ANY/ALL
+      if ( anyVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+      }
+
+      if ( allVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+      }
    } |
 
    lhs2:S_IDENTIFIER! op=eqop slist=bracketed_list
@@ -380,6 +454,17 @@
          myRef->addListElement(s);
          slist.pop_front();
       }
+
+      //Deal with ANY/ALL
+      if ( anyVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+      }
+
+      if ( allVal )
+      {
+         myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+      }
    }
 ;
 

File [modified]: sd_lexer.cpp
Delta lines: +13 -13
===================================================================
--- trunk/saga/impl/packages/sd/sd_lexer.cpp	2009-01-15 14:33:13 UTC (rev 3298)
+++ trunk/saga/impl/packages/sd/sd_lexer.cpp	2009-01-15 14:55:18 UTC (rev 3299)
@@ -219,7 +219,7 @@
 	}
 	}
 	}
-#line 397 "sd_grammar.g"
+#line 482 "sd_grammar.g"
 	_ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
 #line 225 "sd_lexer.cpp"
 	if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
@@ -292,18 +292,18 @@
 	ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
 	
 	{ // ( ... )+
-	int _cnt57=0;
+	int _cnt58=0;
 	for (;;) {
 		if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
 			mDIGIT(false);
 		}
 		else {
-			if ( _cnt57>=1 ) { goto _loop57; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
+			if ( _cnt58>=1 ) { goto _loop58; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
 		}
 		
-		_cnt57++;
+		_cnt58++;
 	}
-	_loop57:;
+	_loop58:;
 	}  // ( ... )+
 	if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
 	   _token = makeToken(_ttype);
@@ -430,11 +430,11 @@
 			matchNot('\'' /* charlit */ );
 		}
 		else {
-			goto _loop66;
+			goto _loop67;
 		}
 		
 	}
-	_loop66:;
+	_loop67:;
 	} // ( ... )*
 	match('\'' /* charlit */ );
 	if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
@@ -468,7 +468,7 @@
 	case 0x3c /* '<' */ :
 	{
 		match('<' /* charlit */ );
-#line 420 "sd_grammar.g"
+#line 505 "sd_grammar.g"
 		_ttype = LESS;
 #line 474 "sd_lexer.cpp"
 		{
@@ -477,7 +477,7 @@
 		{
 			{
 			match('>' /* charlit */ );
-#line 421 "sd_grammar.g"
+#line 506 "sd_grammar.g"
 			_ttype = NE;
 #line 483 "sd_lexer.cpp"
 			}
@@ -487,7 +487,7 @@
 		{
 			{
 			match('=' /* charlit */ );
-#line 422 "sd_grammar.g"
+#line 507 "sd_grammar.g"
 			_ttype = LE;
 #line 493 "sd_lexer.cpp"
 			}
@@ -527,7 +527,7 @@
 	{
 	if ((LA(1) == 0x3d /* '=' */ )) {
 		match('=' /* charlit */ );
-#line 424 "sd_grammar.g"
+#line 509 "sd_grammar.g"
 		_ttype = GE;
 #line 533 "sd_lexer.cpp"
 	}
@@ -617,11 +617,11 @@
 		}
 		default:
 		{
-			goto _loop77;
+			goto _loop78;
 		}
 		}
 	}
-	_loop77:;
+	_loop78:;
 	} // ( ... )*
 	_ttype = testLiteralsTable(_ttype);
 	if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {

File [modified]: sd_parser.cpp
Delta lines: +171 -65
===================================================================
--- trunk/saga/impl/packages/sd/sd_parser.cpp	2009-01-15 14:33:13 UTC (rev 3298)
+++ trunk/saga/impl/packages/sd/sd_parser.cpp	2009-01-15 14:55:18 UTC (rev 3299)
@@ -499,7 +499,7 @@
 }
 
 int  sd_parser::eqop() {
-#line 270 "sd_grammar.g"
+#line 311 "sd_grammar.g"
 	int tok_type = 0;
 #line 505 "sd_parser.cpp"
 	returnAST = ANTLR_USE_NAMESPACE(antlr)nullAST;
@@ -517,7 +517,7 @@
 			o1 = LT(1);
 			o1_AST = astFactory->create(o1);
 			match(NE);
-#line 271 "sd_grammar.g"
+#line 312 "sd_grammar.g"
 			tok_type = o1->getType();
 #line 523 "sd_parser.cpp"
 			eqop_AST = currentAST.root;
@@ -528,7 +528,7 @@
 			o2 = LT(1);
 			o2_AST = astFactory->create(o2);
 			match(EQ);
-#line 272 "sd_grammar.g"
+#line 313 "sd_grammar.g"
 			tok_type = o2->getType();
 #line 534 "sd_parser.cpp"
 			eqop_AST = currentAST.root;
@@ -788,6 +788,8 @@
 	ANTLR_USE_NAMESPACE(antlr)RefAST rval_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
 #line 198 "sd_grammar.g"
 	
+	bool allVal = false;
+	bool anyVal = false;
 	int knot = 0;
 	int op;
 	string rhs;
@@ -797,19 +799,47 @@
 	list<string> slist;
 	std::pair<std::string, char> rhsLike;
 	
-#line 801 "sd_parser.cpp"
+#line 803 "sd_parser.cpp"
 	
 	try {      // for error handling
-		if ((LA(1) == K_VO) && (LA(2) == K_IN || LA(2) == K_NOT) && (LA(3) == K_IN || LA(3) == LPAREN)) {
+		if ((LA(1) == K_VO || LA(1) == K_ALL || LA(1) == K_ANY) && (LA(2) == K_IN || LA(2) == K_NOT || LA(2) == K_VO) && (LA(3) == K_IN || LA(3) == K_NOT || LA(3) == LPAREN)) {
+			{
+			switch ( LA(1)) {
+			case K_ANY:
+			{
+				match(K_ANY);
+#line 212 "sd_grammar.g"
+				anyVal = true;
+#line 814 "sd_parser.cpp"
+				break;
+			}
+			case K_ALL:
+			{
+				match(K_ALL);
+#line 213 "sd_grammar.g"
+				allVal = true;
+#line 822 "sd_parser.cpp"
+				break;
+			}
+			case K_VO:
+			{
+				break;
+			}
+			default:
+			{
+				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+			}
+			}
+			}
 			match(K_VO);
 			{
 			switch ( LA(1)) {
 			case K_NOT:
 			{
 				match(K_NOT);
-#line 209 "sd_grammar.g"
+#line 215 "sd_grammar.g"
 				knot=1;
-#line 813 "sd_parser.cpp"
+#line 843 "sd_parser.cpp"
 				break;
 			}
 			case K_IN:
@@ -826,7 +856,7 @@
 			slist=in_clause();
 			astFactory->addASTChild( currentAST, returnAST );
 			vo_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 210 "sd_grammar.g"
+#line 216 "sd_grammar.g"
 			
 			vo_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(SVC_CMP))));
 			myRef = (Refsd_leafnode)vo_expression_AST;
@@ -846,8 +876,18 @@
 			myRef->setNotPrefix();
 			}
 			
+			//Deal with ANY/ALL
+			if ( anyVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+			}
 			
-#line 851 "sd_parser.cpp"
+			if ( allVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+			}
+			
+#line 891 "sd_parser.cpp"
 			currentAST.root = vo_expression_AST;
 			if ( vo_expression_AST!=ANTLR_USE_NAMESPACE(antlr)nullAST &&
 				vo_expression_AST->getFirstChild() != ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -864,9 +904,9 @@
 			case K_NOT:
 			{
 				match(K_NOT);
-#line 230 "sd_grammar.g"
+#line 247 "sd_grammar.g"
 				knot = 1;
-#line 870 "sd_parser.cpp"
+#line 910 "sd_parser.cpp"
 				break;
 			}
 			case K_LIKE:
@@ -879,14 +919,14 @@
 			}
 			}
 			}
-			ANTLR_USE_NAMESPACE(antlr)RefAST tmp21_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
-			tmp21_AST = astFactory->create(LT(1));
-			astFactory->addASTChild(currentAST, tmp21_AST);
+			ANTLR_USE_NAMESPACE(antlr)RefAST tmp23_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+			tmp23_AST = astFactory->create(LT(1));
+			astFactory->addASTChild(currentAST, tmp23_AST);
 			match(K_LIKE);
 			rhsLike=like_clause();
 			astFactory->addASTChild( currentAST, returnAST );
 			vo_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 231 "sd_grammar.g"
+#line 248 "sd_grammar.g"
 			
 			vo_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(SVC_CMP))));
 			myRef = (Refsd_leafnode)vo_expression_AST;
@@ -903,7 +943,18 @@
 			myRef->setNotPrefix();
 			}
 			
-#line 907 "sd_parser.cpp"
+			//Deal with ANY/ALL
+			if ( anyVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+			}
+			
+			if ( allVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+			}
+			
+#line 958 "sd_parser.cpp"
 			currentAST.root = vo_expression_AST;
 			if ( vo_expression_AST!=ANTLR_USE_NAMESPACE(antlr)nullAST &&
 				vo_expression_AST->getFirstChild() != ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -921,7 +972,7 @@
 			rval_AST = astFactory->create(rval);
 			match(S_CHAR_LITERAL);
 			vo_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 248 "sd_grammar.g"
+#line 277 "sd_grammar.g"
 			
 			vo_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(SVC_CMP))));
 			myRef = (Refsd_leafnode)vo_expression_AST;
@@ -929,7 +980,18 @@
 			myRef->setOpType(op);
 			myRef->setRValue(rval->getText());
 			
-#line 933 "sd_parser.cpp"
+			//Deal with ANY/ALL
+			if ( anyVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+			}
+			
+			if ( allVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+			}
+			
+#line 995 "sd_parser.cpp"
 			currentAST.root = vo_expression_AST;
 			if ( vo_expression_AST!=ANTLR_USE_NAMESPACE(antlr)nullAST &&
 				vo_expression_AST->getFirstChild() != ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -986,19 +1048,19 @@
 		{ // ( ... )*
 		for (;;) {
 			if ((LA(1) == K_OR)) {
-				Refsd_internalnode tmp25_AST = Refsd_internalnode(ANTLR_USE_NAMESPACE(antlr)nullAST);
-				tmp25_AST = astFactory->create(LT(1));
-				astFactory->makeASTRoot(currentAST, ANTLR_USE_NAMESPACE(antlr)RefAST(tmp25_AST));
+				Refsd_internalnode tmp27_AST = Refsd_internalnode(ANTLR_USE_NAMESPACE(antlr)nullAST);
+				tmp27_AST = astFactory->create(LT(1));
+				astFactory->makeASTRoot(currentAST, ANTLR_USE_NAMESPACE(antlr)RefAST(tmp27_AST));
 				match(K_OR);
 				data_and_expression();
 				astFactory->addASTChild( currentAST, returnAST );
 			}
 			else {
-				goto _loop37;
+				goto _loop38;
 			}
 			
 		}
-		_loop37:;
+		_loop38:;
 		} // ( ... )*
 		data_filter_expression_AST = currentAST.root;
 	}
@@ -1020,19 +1082,19 @@
 		{ // ( ... )*
 		for (;;) {
 			if ((LA(1) == K_AND)) {
-				Refsd_internalnode tmp26_AST = Refsd_internalnode(ANTLR_USE_NAMESPACE(antlr)nullAST);
-				tmp26_AST = astFactory->create(LT(1));
-				astFactory->makeASTRoot(currentAST, ANTLR_USE_NAMESPACE(antlr)RefAST(tmp26_AST));
+				Refsd_internalnode tmp28_AST = Refsd_internalnode(ANTLR_USE_NAMESPACE(antlr)nullAST);
+				tmp28_AST = astFactory->create(LT(1));
+				astFactory->makeASTRoot(currentAST, ANTLR_USE_NAMESPACE(antlr)RefAST(tmp28_AST));
 				match(K_AND);
 				data_expression();
 				astFactory->addASTChild( currentAST, returnAST );
 			}
 			else {
-				goto _loop40;
+				goto _loop41;
 			}
 			
 		}
-		_loop40:;
+		_loop41:;
 		} // ( ... )*
 		data_and_expression_AST = currentAST.root;
 	}
@@ -1097,7 +1159,7 @@
 	ANTLR_USE_NAMESPACE(antlr)RefAST num_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefToken  lhs2 = ANTLR_USE_NAMESPACE(antlr)nullToken;
 	ANTLR_USE_NAMESPACE(antlr)RefAST lhs2_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 284 "sd_grammar.g"
+#line 325 "sd_grammar.g"
 	
 	bool allVal = false;
 	bool anyVal = false;
@@ -1109,7 +1171,7 @@
 	std::pair<std::string, char> likePair;
 	std::string likeString;
 	
-#line 1113 "sd_parser.cpp"
+#line 1175 "sd_parser.cpp"
 	
 	try {      // for error handling
 		if ((LA(1) == K_ALL || LA(1) == K_ANY || LA(1) == S_IDENTIFIER) && (LA(2) == K_IN || LA(2) == K_NOT || LA(2) == S_IDENTIFIER) && (LA(3) == K_IN || LA(3) == K_NOT || LA(3) == LPAREN)) {
@@ -1118,17 +1180,17 @@
 			case K_ANY:
 			{
 				match(K_ANY);
-#line 297 "sd_grammar.g"
+#line 338 "sd_grammar.g"
 				anyVal = true;
-#line 1124 "sd_parser.cpp"
+#line 1186 "sd_parser.cpp"
 				break;
 			}
 			case K_ALL:
 			{
 				match(K_ALL);
-#line 298 "sd_grammar.g"
+#line 339 "sd_grammar.g"
 				allVal = true;
-#line 1132 "sd_parser.cpp"
+#line 1194 "sd_parser.cpp"
 				break;
 			}
 			case S_IDENTIFIER:
@@ -1149,9 +1211,9 @@
 			case K_NOT:
 			{
 				match(K_NOT);
-#line 300 "sd_grammar.g"
+#line 341 "sd_grammar.g"
 				knot=1;
-#line 1155 "sd_parser.cpp"
+#line 1217 "sd_parser.cpp"
 				break;
 			}
 			case K_IN:
@@ -1168,7 +1230,7 @@
 			slist=in_clause();
 			astFactory->addASTChild( currentAST, returnAST );
 			data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 301 "sd_grammar.g"
+#line 342 "sd_grammar.g"
 			
 			//Deal with the 'IN' oerator
 			data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(DATA_CMP))));
@@ -1191,7 +1253,18 @@
 			myRef->setNotPrefix();
 			}
 			
-#line 1195 "sd_parser.cpp"
+			//Deal with ANY/ALL
+			if ( anyVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+			}
+			
+			if ( allVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+			}
+			
+#line 1268 "sd_parser.cpp"
 			currentAST.root = data_comparison_AST;
 			if ( data_comparison_AST!=ANTLR_USE_NAMESPACE(antlr)nullAST &&
 				data_comparison_AST->getFirstChild() != ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -1211,9 +1284,9 @@
 			case K_NOT:
 			{
 				match(K_NOT);
-#line 324 "sd_grammar.g"
+#line 376 "sd_grammar.g"
 				knot = 1;
-#line 1217 "sd_parser.cpp"
+#line 1290 "sd_parser.cpp"
 				break;
 			}
 			case K_LIKE:
@@ -1226,14 +1299,14 @@
 			}
 			}
 			}
-			ANTLR_USE_NAMESPACE(antlr)RefAST tmp34_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
-			tmp34_AST = astFactory->create(LT(1));
-			astFactory->addASTChild(currentAST, tmp34_AST);
+			ANTLR_USE_NAMESPACE(antlr)RefAST tmp36_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+			tmp36_AST = astFactory->create(LT(1));
+			astFactory->addASTChild(currentAST, tmp36_AST);
 			match(K_LIKE);
 			likePair=like_clause();
 			astFactory->addASTChild( currentAST, returnAST );
 			data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 325 "sd_grammar.g"
+#line 377 "sd_grammar.g"
 			
 			//Deal with the 'LIKE' oerator
 			likeString = likePair.first;
@@ -1253,7 +1326,18 @@
 			myRef->setNotPrefix();
 			}
 			
-#line 1257 "sd_parser.cpp"
+			//Deal with ANY/ALL
+			if ( anyVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+			}
+			
+			if ( allVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+			}
+			
+#line 1341 "sd_parser.cpp"
 			currentAST.root = data_comparison_AST;
 			if ( data_comparison_AST!=ANTLR_USE_NAMESPACE(antlr)nullAST &&
 				data_comparison_AST->getFirstChild() != ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -1276,9 +1360,9 @@
 				lit = LT(1);
 				lit_AST = astFactory->create(lit);
 				match(S_CHAR_LITERAL);
-#line 345 "sd_grammar.g"
+#line 408 "sd_grammar.g"
 				rhs1 = 1;
-#line 1282 "sd_parser.cpp"
+#line 1366 "sd_parser.cpp"
 				break;
 			}
 			case S_NUMBER:
@@ -1295,7 +1379,7 @@
 			}
 			}
 			data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 346 "sd_grammar.g"
+#line 409 "sd_grammar.g"
 			
 			//Deal with the remaining operators
 			data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(DATA_CMP))));
@@ -1316,7 +1400,18 @@
 			myRef->setRValNum(dval);
 			}
 			
-#line 1320 "sd_parser.cpp"
+			//Deal with ANY/ALL
+			if ( anyVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+			}
+			
+			if ( allVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+			}
+			
+#line 1415 "sd_parser.cpp"
 			currentAST.root = data_comparison_AST;
 			if ( data_comparison_AST!=ANTLR_USE_NAMESPACE(antlr)nullAST &&
 				data_comparison_AST->getFirstChild() != ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -1335,7 +1430,7 @@
 			slist=bracketed_list();
 			astFactory->addASTChild( currentAST, returnAST );
 			data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 368 "sd_grammar.g"
+#line 442 "sd_grammar.g"
 			
 			//Deal with the remaining operators
 			data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(DATA_CMP))));
@@ -1352,7 +1447,18 @@
 			slist.pop_front();
 			}
 			
-#line 1356 "sd_parser.cpp"
+			//Deal with ANY/ALL
+			if ( anyVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ANY_VALUE);
+			}
+			
+			if ( allVal )
+			{
+			myRef->setAnyAllValue(sd_leafnode::ALL_VALUE);
+			}
+			
+#line 1462 "sd_parser.cpp"
 			currentAST.root = data_comparison_AST;
 			if ( data_comparison_AST!=ANTLR_USE_NAMESPACE(antlr)nullAST &&
 				data_comparison_AST->getFirstChild() != ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -1375,9 +1481,9 @@
 }
 
 int  sd_parser::relop() {
-#line 275 "sd_grammar.g"
+#line 316 "sd_grammar.g"
 	int tok_type = 0;
-#line 1381 "sd_parser.cpp"
+#line 1487 "sd_parser.cpp"
 	returnAST = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)ASTPair currentAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST relop_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
@@ -1401,9 +1507,9 @@
 			o1 = LT(1);
 			o1_AST = astFactory->create(o1);
 			match(EQ);
-#line 276 "sd_grammar.g"
+#line 317 "sd_grammar.g"
 			tok_type = o1->getType();
-#line 1407 "sd_parser.cpp"
+#line 1513 "sd_parser.cpp"
 			break;
 		}
 		case LESS:
@@ -1411,9 +1517,9 @@
 			o2 = LT(1);
 			o2_AST = astFactory->create(o2);
 			match(LESS);
-#line 277 "sd_grammar.g"
+#line 318 "sd_grammar.g"
 			tok_type = o2->getType();
-#line 1417 "sd_parser.cpp"
+#line 1523 "sd_parser.cpp"
 			break;
 		}
 		case GT:
@@ -1421,9 +1527,9 @@
 			o3 = LT(1);
 			o3_AST = astFactory->create(o3);
 			match(GT);
-#line 278 "sd_grammar.g"
+#line 319 "sd_grammar.g"
 			tok_type = o3->getType();
-#line 1427 "sd_parser.cpp"
+#line 1533 "sd_parser.cpp"
 			break;
 		}
 		case NE:
@@ -1431,9 +1537,9 @@
 			o4 = LT(1);
 			o4_AST = astFactory->create(o4);
 			match(NE);
-#line 279 "sd_grammar.g"
+#line 320 "sd_grammar.g"
 			tok_type = o4->getType();
-#line 1437 "sd_parser.cpp"
+#line 1543 "sd_parser.cpp"
 			break;
 		}
 		case LE:
@@ -1441,9 +1547,9 @@
 			o5 = LT(1);
 			o5_AST = astFactory->create(o5);
 			match(LE);
-#line 280 "sd_grammar.g"
+#line 321 "sd_grammar.g"
 			tok_type = o5->getType();
-#line 1447 "sd_parser.cpp"
+#line 1553 "sd_parser.cpp"
 			break;
 		}
 		case GE:
@@ -1451,9 +1557,9 @@
 			o6 = LT(1);
 			o6_AST = astFactory->create(o6);
 			match(GE);
-#line 281 "sd_grammar.g"
+#line 322 "sd_grammar.g"
 			tok_type = o6->getType();
-#line 1457 "sd_parser.cpp"
+#line 1563 "sd_parser.cpp"
 			break;
 		}
 		default:



More information about the saga-devel mailing list