[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