[Saga-devel] saga SVN commit 3295: /trunk/saga/impl/packages/sd/
paul.livesey at stfc.ac.uk
paul.livesey at stfc.ac.uk
Thu Jan 15 06:54:59 CST 2009
User: svn_plivesey
Date: 2009/01/15 06:54 AM
Modified:
/trunk/saga/impl/packages/sd/
sdTokenTypes.hpp, sdTokenTypes.txt, sd_lexer.cpp, sd_lexer.hpp, sd_parser.cpp, sd_parser.hpp
Log:
New versions of ANTLR generated files from the new grammer.
File Changes:
Directory: /trunk/saga/impl/packages/sd/
========================================
File [modified]: sdTokenTypes.hpp
Delta lines: +35 -32
===================================================================
--- trunk/saga/impl/packages/sd/sdTokenTypes.hpp 2009-01-15 12:53:02 UTC (rev 3294)
+++ trunk/saga/impl/packages/sd/sdTokenTypes.hpp 2009-01-15 12:54:46 UTC (rev 3295)
@@ -1,7 +1,7 @@
#ifndef INC_sdTokenTypes_hpp_
#define INC_sdTokenTypes_hpp_
-/* $ANTLR 2.7.7 (20080506): "sd_grammar.g" -> "sdTokenTypes.hpp"$ */
+/* $ANTLR 2.7.7 (20081210): "sd_grammar.g" -> "sdTokenTypes.hpp"$ */
#ifndef CUSTOM_API
# define CUSTOM_API
@@ -14,37 +14,40 @@
EOF_ = 1,
K_IN = 4,
K_LIKE = 5,
- K_NOT = 6,
- K_AND = 7,
- K_OR = 8,
- K_VO = 9,
- K_TYPE = 10,
- K_NAME = 11,
- K_UID = 12,
- K_URI = 13,
- K_ENDPOINT = 14,
- K_SITE = 15,
- K_SERVICE = 16,
- SVC_CMP = 17,
- DATA_CMP = 18,
- S_CHAR_LITERAL = 19,
- LPAREN = 20,
- RPAREN = 21,
- COMMA = 22,
- LPARAN = 23,
- NE = 24,
- EQ = 25,
- LESS = 26,
- GT = 27,
- LE = 28,
- GE = 29,
- S_IDENTIFIER = 30,
- S_NUMBER = 31,
- WS_ = 32,
- DIGIT = 33,
- INTEGER = 34,
- FLOAT = 35,
- LETTER = 36,
+ K_ESCAPE = 6,
+ K_NOT = 7,
+ K_AND = 8,
+ K_OR = 9,
+ K_VO = 10,
+ K_TYPE = 11,
+ K_NAME = 12,
+ K_UID = 13,
+ K_URI = 14,
+ K_ENDPOINT = 15,
+ K_SITE = 16,
+ K_SERVICE = 17,
+ K_ALL = 18,
+ K_ANY = 19,
+ K_STRING_LIST = 20,
+ SVC_CMP = 21,
+ DATA_CMP = 22,
+ S_CHAR_LITERAL = 23,
+ LPAREN = 24,
+ RPAREN = 25,
+ S_NUMBER = 26,
+ COMMA = 27,
+ NE = 28,
+ EQ = 29,
+ LESS = 30,
+ GT = 31,
+ LE = 32,
+ GE = 33,
+ S_IDENTIFIER = 34,
+ WS_ = 35,
+ DIGIT = 36,
+ INTEGER = 37,
+ FLOAT = 38,
+ LETTER = 39,
NULL_TREE_LOOKAHEAD = 3
};
#ifdef __cplusplus
File [modified]: sdTokenTypes.txt
Delta lines: +35 -32
===================================================================
--- trunk/saga/impl/packages/sd/sdTokenTypes.txt 2009-01-15 12:53:02 UTC (rev 3294)
+++ trunk/saga/impl/packages/sd/sdTokenTypes.txt 2009-01-15 12:54:46 UTC (rev 3295)
@@ -1,35 +1,38 @@
-// $ANTLR 2.7.7 (20080506): sd_grammar.g -> sdTokenTypes.txt$
+// $ANTLR 2.7.7 (20081210): sd_grammar.g -> sdTokenTypes.txt$
sd // output token vocab name
K_IN="in"=4
K_LIKE="like"=5
-K_NOT="not"=6
-K_AND="and"=7
-K_OR="or"=8
-K_VO="vo"=9
-K_TYPE="type"=10
-K_NAME="name"=11
-K_UID="uid"=12
-K_URI="uri"=13
-K_ENDPOINT="endpoint"=14
-K_SITE="site"=15
-K_SERVICE="related_services"=16
-SVC_CMP=17
-DATA_CMP=18
-S_CHAR_LITERAL("char literal")=19
-LPAREN("left parenthesis")=20
-RPAREN("right parenthesis")=21
-COMMA("comma")=22
-LPARAN=23
-NE("not equals")=24
-EQ("equals")=25
-LESS=26
-GT("greater than")=27
-LE=28
-GE=29
-S_IDENTIFIER("identifier")=30
-S_NUMBER("number")=31
-WS_("white space")=32
-DIGIT("digit")=33
-INTEGER("integer")=34
-FLOAT("float")=35
-LETTER("letter")=36
+K_ESCAPE="escape"=6
+K_NOT="not"=7
+K_AND="and"=8
+K_OR="or"=9
+K_VO="vo"=10
+K_TYPE="type"=11
+K_NAME="name"=12
+K_UID="uid"=13
+K_URI="uri"=14
+K_ENDPOINT="endpoint"=15
+K_SITE="site"=16
+K_SERVICE="related_services"=17
+K_ALL="all"=18
+K_ANY="any"=19
+K_STRING_LIST=20
+SVC_CMP=21
+DATA_CMP=22
+S_CHAR_LITERAL("char literal")=23
+LPAREN("left parenthesis")=24
+RPAREN("right parenthesis")=25
+S_NUMBER("number")=26
+COMMA("comma")=27
+NE("not equals")=28
+EQ("equals")=29
+LESS=30
+GT("greater than")=31
+LE=32
+GE=33
+S_IDENTIFIER("identifier")=34
+WS_("white space")=35
+DIGIT("digit")=36
+INTEGER("integer")=37
+FLOAT("float")=38
+LETTER("letter")=39
File [modified]: sd_lexer.cpp
Delta lines: +34 -31
===================================================================
--- trunk/saga/impl/packages/sd/sd_lexer.cpp 2009-01-15 12:53:02 UTC (rev 3294)
+++ trunk/saga/impl/packages/sd/sd_lexer.cpp 2009-01-15 12:54:46 UTC (rev 3295)
@@ -1,4 +1,4 @@
-/* $ANTLR 2.7.7 (20080506): "sd_grammar.g" -> "sd_lexer.cpp"$ */
+/* $ANTLR 2.7.7 (20081210): "sd_grammar.g" -> "sd_lexer.cpp"$ */
#include "sd_lexer.hpp"
#include <antlr/CharBuffer.hpp>
#include <antlr/TokenStreamException.hpp>
@@ -30,19 +30,22 @@
void sd_lexer::initLiterals()
{
- literals["related_services"] = 16;
- literals["type"] = 10;
- literals["name"] = 11;
+ literals["related_services"] = 17;
+ literals["type"] = 11;
+ literals["name"] = 12;
literals["like"] = 5;
- literals["site"] = 15;
+ literals["all"] = 18;
+ literals["site"] = 16;
literals["in"] = 4;
- literals["or"] = 8;
- literals["endpoint"] = 14;
- literals["uid"] = 12;
- literals["vo"] = 9;
- literals["and"] = 7;
- literals["not"] = 6;
- literals["uri"] = 13;
+ literals["or"] = 9;
+ literals["endpoint"] = 15;
+ literals["uid"] = 13;
+ literals["escape"] = 6;
+ literals["vo"] = 10;
+ literals["and"] = 8;
+ literals["not"] = 7;
+ literals["uri"] = 14;
+ literals["any"] = 19;
}
ANTLR_USE_NAMESPACE(antlr)RefToken sd_lexer::nextToken()
@@ -216,9 +219,9 @@
}
}
}
-#line 232 "sd_grammar.g"
+#line 397 "sd_grammar.g"
_ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
-#line 222 "sd_lexer.cpp"
+#line 225 "sd_lexer.cpp"
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
@@ -289,18 +292,18 @@
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
{ // ( ... )+
- int _cnt47=0;
+ int _cnt57=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
- if ( _cnt47>=1 ) { goto _loop47; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
+ if ( _cnt57>=1 ) { goto _loop57; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
- _cnt47++;
+ _cnt57++;
}
- _loop47:;
+ _loop57:;
} // ( ... )+
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
@@ -427,11 +430,11 @@
matchNot('\'' /* charlit */ );
}
else {
- goto _loop56;
+ goto _loop66;
}
}
- _loop56:;
+ _loop66:;
} // ( ... )*
match('\'' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
@@ -465,18 +468,18 @@
case 0x3c /* '<' */ :
{
match('<' /* charlit */ );
-#line 255 "sd_grammar.g"
+#line 420 "sd_grammar.g"
_ttype = LESS;
-#line 471 "sd_lexer.cpp"
+#line 474 "sd_lexer.cpp"
{
switch ( LA(1)) {
case 0x3e /* '>' */ :
{
{
match('>' /* charlit */ );
-#line 256 "sd_grammar.g"
+#line 421 "sd_grammar.g"
_ttype = NE;
-#line 480 "sd_lexer.cpp"
+#line 483 "sd_lexer.cpp"
}
break;
}
@@ -484,9 +487,9 @@
{
{
match('=' /* charlit */ );
-#line 257 "sd_grammar.g"
+#line 422 "sd_grammar.g"
_ttype = LE;
-#line 490 "sd_lexer.cpp"
+#line 493 "sd_lexer.cpp"
}
break;
}
@@ -524,9 +527,9 @@
{
if ((LA(1) == 0x3d /* '=' */ )) {
match('=' /* charlit */ );
-#line 259 "sd_grammar.g"
+#line 424 "sd_grammar.g"
_ttype = GE;
-#line 530 "sd_lexer.cpp"
+#line 533 "sd_lexer.cpp"
}
else {
}
@@ -614,11 +617,11 @@
}
default:
{
- goto _loop67;
+ goto _loop77;
}
}
}
- _loop67:;
+ _loop77:;
} // ( ... )*
_ttype = testLiteralsTable(_ttype);
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
@@ -633,6 +636,6 @@
const unsigned long sd_lexer::_tokenSet_0_data_[] = { 4294967295UL, 4294967167UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL };
// 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10
// 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e
-// 0x1f ! \" # $
+// 0x1f ! \" # $ % &
const ANTLR_USE_NAMESPACE(antlr)BitSet sd_lexer::_tokenSet_0(_tokenSet_0_data_,8);
File [modified]: sd_lexer.hpp
Delta lines: +12 -11
===================================================================
--- trunk/saga/impl/packages/sd/sd_lexer.hpp 2009-01-15 12:53:02 UTC (rev 3294)
+++ trunk/saga/impl/packages/sd/sd_lexer.hpp 2009-01-15 12:54:46 UTC (rev 3295)
@@ -2,27 +2,28 @@
#define INC_sd_lexer_hpp_
#include <antlr/config.hpp>
-/* $ANTLR 2.7.7 (20080506): "sd_grammar.g" -> "sd_lexer.hpp"$ */
+/* $ANTLR 2.7.7 (20081210): "sd_grammar.g" -> "sd_lexer.hpp"$ */
#include <antlr/CommonToken.hpp>
#include <antlr/InputBuffer.hpp>
#include <antlr/BitSet.hpp>
#include "sdTokenTypes.hpp"
#include <antlr/CharScanner.hpp>
-#line 1 "sd_grammar.g"
+#line 2 "sd_grammar.g"
- #include "sd_leafnode.hpp"
- #include "sd_internalnode.hpp"
- #include <iostream>
- #include <string>
- #include <list>
- #include <math.h>
- using namespace std;
+ #include "sd_leafnode.hpp"
+ #include "sd_internalnode.hpp"
+ #include <iostream>
+ #include <string>
+ #include <list>
+ #include <math.h>
+ #include <utility>
+ using namespace std;
-#line 22 "sd_lexer.hpp"
+#line 23 "sd_lexer.hpp"
class CUSTOM_API sd_lexer : public ANTLR_USE_NAMESPACE(antlr)CharScanner, public sdTokenTypes
{
#line 1 "sd_grammar.g"
-#line 26 "sd_lexer.hpp"
+#line 27 "sd_lexer.hpp"
private:
void initLiterals();
public:
File [modified]: sd_parser.cpp
Delta lines: +688 -254
===================================================================
--- trunk/saga/impl/packages/sd/sd_parser.cpp 2009-01-15 12:53:02 UTC (rev 3294)
+++ trunk/saga/impl/packages/sd/sd_parser.cpp 2009-01-15 12:54:46 UTC (rev 3295)
@@ -1,4 +1,4 @@
-/* $ANTLR 2.7.7 (20080506): "sd_grammar.g" -> "sd_parser.cpp"$ */
+/* $ANTLR 2.7.7 (20081210): "sd_grammar.g" -> "sd_parser.cpp"$ */
#include "sd_parser.hpp"
#include <antlr/NoViableAltException.hpp>
#include <antlr/SemanticException.hpp>
@@ -31,7 +31,7 @@
}
int sd_parser::service_keyword() {
-#line 41 "sd_grammar.g"
+#line 49 "sd_grammar.g"
int tok_type = 0;
#line 37 "sd_parser.cpp"
returnAST = ANTLR_USE_NAMESPACE(antlr)nullAST;
@@ -59,7 +59,7 @@
k1 = LT(1);
k1_AST = astFactory->create(k1);
match(K_TYPE);
-#line 42 "sd_grammar.g"
+#line 50 "sd_grammar.g"
tok_type = k1->getType();
#line 65 "sd_parser.cpp"
break;
@@ -69,7 +69,7 @@
k2 = LT(1);
k2_AST = astFactory->create(k2);
match(K_NAME);
-#line 43 "sd_grammar.g"
+#line 51 "sd_grammar.g"
tok_type = k2->getType();
#line 75 "sd_parser.cpp"
break;
@@ -79,7 +79,7 @@
k3 = LT(1);
k3_AST = astFactory->create(k3);
match(K_SITE);
-#line 44 "sd_grammar.g"
+#line 52 "sd_grammar.g"
tok_type = k3->getType();
#line 85 "sd_parser.cpp"
break;
@@ -89,7 +89,7 @@
k4 = LT(1);
k4_AST = astFactory->create(k4);
match(K_ENDPOINT);
-#line 45 "sd_grammar.g"
+#line 53 "sd_grammar.g"
tok_type = k4->getType();
#line 95 "sd_parser.cpp"
break;
@@ -99,7 +99,7 @@
k5 = LT(1);
k5_AST = astFactory->create(k5);
match(K_SERVICE);
-#line 46 "sd_grammar.g"
+#line 54 "sd_grammar.g"
tok_type = k5->getType();
#line 105 "sd_parser.cpp"
break;
@@ -109,7 +109,7 @@
k6 = LT(1);
k6_AST = astFactory->create(k6);
match(K_UID);
-#line 47 "sd_grammar.g"
+#line 55 "sd_grammar.g"
tok_type = k6->getType();
#line 115 "sd_parser.cpp"
break;
@@ -119,7 +119,7 @@
k7 = LT(1);
k7_AST = astFactory->create(k7);
match(K_URI);
-#line 48 "sd_grammar.g"
+#line 56 "sd_grammar.g"
tok_type = k7->getType();
#line 125 "sd_parser.cpp"
break;
@@ -229,37 +229,70 @@
ANTLR_USE_NAMESPACE(antlr)RefAST service_expression_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
ANTLR_USE_NAMESPACE(antlr)RefToken rval = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefAST rval_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 57 "sd_grammar.g"
- int knot=0; int lhs, op; string rhs, comp; Refsd_leafnode myRef; std::list<std::string> slist; std::string s;
-#line 235 "sd_parser.cpp"
+#line 65 "sd_grammar.g"
+ int knot = 0; int lhs; int op;
+ std::pair<std::string, char> rhs;
+ std::list<std::string> slist;
+ std::string s;
+ Refsd_leafnode myRef;
+#line 240 "sd_parser.cpp"
+
try { // for error handling
+ {
if (((LA(1) >= K_TYPE && LA(1) <= K_SERVICE)) && (LA(2) == K_IN || LA(2) == K_NOT) && (LA(3) == K_IN || LA(3) == LPAREN)) {
lhs=service_keyword();
astFactory->addASTChild( currentAST, returnAST );
- slist=in_clause(&knot);
+ {
+ switch ( LA(1)) {
+ case K_NOT:
+ {
+ match(K_NOT);
+#line 73 "sd_grammar.g"
+ knot=1;
+#line 254 "sd_parser.cpp"
+ break;
+ }
+ case K_IN:
+ {
+ break;
+ }
+ default:
+ {
+ throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+ }
+ }
+ }
+ match(K_IN);
+ slist=in_clause();
astFactory->addASTChild( currentAST, returnAST );
service_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 59 "sd_grammar.g"
+#line 74 "sd_grammar.g"
- service_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(SVC_CMP))));
- myRef = (Refsd_leafnode)service_expression_AST;
+ service_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(SVC_CMP))));
+ myRef = (Refsd_leafnode)service_expression_AST;
myRef->setLValue(lhs);
- myRef->setOpType(K_IN);
- //myRef->setList(&slist);
+ myRef->setOpType(K_IN);
+ myRef->setRValType(K_STRING_LIST);
+
while (slist.size() > 0)
{
- s = slist.front();
+ s = slist.front();
myRef->addListElement(s);
slist.pop_front();
}
- if (knot)
- myRef->setNotPrefix();
- //std::cout << "front list element : " << myRef->frontListElement() << endl;
- //std::cout << "list size : " << myRef->getListSize() << endl;
+
+ if ( knot )
+ {
+ myRef->setNotPrefix();
+ }
+ //std::cout << "front list element : "
+ // << myRef->frontListElement() << endl;
+ //std::cout << "list size : "
+ // << myRef->getListSize() << endl;
//std::cout << "in clause parsed" << endl;
-#line 263 "sd_parser.cpp"
+#line 296 "sd_parser.cpp"
currentAST.root = service_expression_AST;
if ( service_expression_AST!=ANTLR_USE_NAMESPACE(antlr)nullAST &&
service_expression_AST->getFirstChild() != ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -267,25 +300,52 @@
else
currentAST.child = service_expression_AST;
currentAST.advanceChildToEnd();
- service_expression_AST = currentAST.root;
}
else if (((LA(1) >= K_TYPE && LA(1) <= K_SERVICE)) && (LA(2) == K_LIKE || LA(2) == K_NOT) && (LA(3) == K_LIKE || LA(3) == S_CHAR_LITERAL)) {
lhs=service_keyword();
astFactory->addASTChild( currentAST, returnAST );
- rhs=like_clause(&knot);
+ {
+ switch ( LA(1)) {
+ case K_NOT:
+ {
+ match(K_NOT);
+#line 99 "sd_grammar.g"
+ knot = 1;
+#line 315 "sd_parser.cpp"
+ break;
+ }
+ case K_LIKE:
+ {
+ break;
+ }
+ default:
+ {
+ throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+ }
+ }
+ }
+ match(K_LIKE);
+ rhs=like_clause();
astFactory->addASTChild( currentAST, returnAST );
service_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 79 "sd_grammar.g"
+#line 100 "sd_grammar.g"
- service_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(SVC_CMP))));
- myRef = (Refsd_leafnode)service_expression_AST;
+ service_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(SVC_CMP))));
+ myRef = (Refsd_leafnode)service_expression_AST;
myRef->setLValue(lhs);
- myRef->setOpType(K_LIKE);
- myRef->setRValue(rhs);
- if (knot)
+ myRef->setOpType(K_LIKE);
+ myRef->setRValue(rhs.first);
+
+ //Set the escape character
+ //for the 'LIKE' clause
+ myRef->setEscapeChar(rhs.second);
+
+ if ( knot )
+ {
myRef->setNotPrefix();
+ }
-#line 289 "sd_parser.cpp"
+#line 349 "sd_parser.cpp"
currentAST.root = service_expression_AST;
if ( service_expression_AST!=ANTLR_USE_NAMESPACE(antlr)nullAST &&
service_expression_AST->getFirstChild() != ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -293,7 +353,6 @@
else
currentAST.child = service_expression_AST;
currentAST.advanceChildToEnd();
- service_expression_AST = currentAST.root;
}
else if (((LA(1) >= K_TYPE && LA(1) <= K_SERVICE)) && (LA(2) == NE || LA(2) == EQ)) {
lhs=service_keyword();
@@ -304,10 +363,10 @@
rval_AST = astFactory->create(rval);
match(S_CHAR_LITERAL);
service_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 89 "sd_grammar.g"
+#line 118 "sd_grammar.g"
- service_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(SVC_CMP))));
- myRef = (Refsd_leafnode)service_expression_AST;
+ service_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(SVC_CMP))));
+ myRef = (Refsd_leafnode)service_expression_AST;
myRef->setLValue(lhs);
//std::cout << "keyword type " << lhs << endl;
myRef->setOpType(op);
@@ -315,7 +374,7 @@
myRef->setRValue(rval->getText());
//std::cout << "literal " << rval->getText() << endl;
-#line 319 "sd_parser.cpp"
+#line 378 "sd_parser.cpp"
currentAST.root = service_expression_AST;
if ( service_expression_AST!=ANTLR_USE_NAMESPACE(antlr)nullAST &&
service_expression_AST->getFirstChild() != ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -323,19 +382,19 @@
else
currentAST.child = service_expression_AST;
currentAST.advanceChildToEnd();
- service_expression_AST = currentAST.root;
}
else if ((LA(1) == LPAREN)) {
match(LPAREN);
service_filter_expression();
astFactory->addASTChild( currentAST, returnAST );
match(RPAREN);
- service_expression_AST = currentAST.root;
}
else {
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
}
+ }
+ service_expression_AST = currentAST.root;
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
@@ -344,75 +403,18 @@
returnAST = service_expression_AST;
}
-std::list<std::string> sd_parser::in_clause(
- int *knot
-) {
-#line 110 "sd_grammar.g"
+std::list<std::string> sd_parser::in_clause() {
+#line 157 "sd_grammar.g"
std::list<std::string> slist;
-#line 353 "sd_parser.cpp"
+#line 410 "sd_parser.cpp"
returnAST = ANTLR_USE_NAMESPACE(antlr)nullAST;
ANTLR_USE_NAMESPACE(antlr)ASTPair currentAST;
ANTLR_USE_NAMESPACE(antlr)RefAST in_clause_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
- ANTLR_USE_NAMESPACE(antlr)RefToken lit = ANTLR_USE_NAMESPACE(antlr)nullToken;
- ANTLR_USE_NAMESPACE(antlr)RefAST lit_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
- ANTLR_USE_NAMESPACE(antlr)RefToken lit2 = ANTLR_USE_NAMESPACE(antlr)nullToken;
- ANTLR_USE_NAMESPACE(antlr)RefAST lit2_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 110 "sd_grammar.g"
- string list;
-#line 363 "sd_parser.cpp"
try { // for error handling
- {
- switch ( LA(1)) {
- case K_NOT:
- {
- match(K_NOT);
-#line 111 "sd_grammar.g"
- *knot = 1;
-#line 373 "sd_parser.cpp"
- break;
- }
- case K_IN:
- {
- break;
- }
- default:
- {
- throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
- }
- }
- }
- match(K_IN);
- match(LPAREN);
- lit = LT(1);
- lit_AST = astFactory->create(lit);
- match(S_CHAR_LITERAL);
-#line 113 "sd_grammar.g"
-
- slist.push_back(lit->getText());
-
-#line 395 "sd_parser.cpp"
- { // ( ... )*
- for (;;) {
- if ((LA(1) == COMMA)) {
- match(COMMA);
- lit2 = LT(1);
- lit2_AST = astFactory->create(lit2);
- match(S_CHAR_LITERAL);
-#line 117 "sd_grammar.g"
-
- slist.push_back(lit2->getText());
-
-#line 407 "sd_parser.cpp"
- }
- else {
- goto _loop15;
- }
-
- }
- _loop15:;
- } // ( ... )*
- match(RPAREN);
+ slist=bracketed_list();
+ astFactory->addASTChild( currentAST, returnAST );
+ in_clause_AST = currentAST.root;
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
@@ -422,32 +424,61 @@
return slist;
}
-string sd_parser::like_clause(
- int *knot
-) {
-#line 102 "sd_grammar.g"
- string s;
+pair<string, char> sd_parser::like_clause() {
+#line 133 "sd_grammar.g"
+ pair<string, char> s;
#line 431 "sd_parser.cpp"
returnAST = ANTLR_USE_NAMESPACE(antlr)nullAST;
ANTLR_USE_NAMESPACE(antlr)ASTPair currentAST;
ANTLR_USE_NAMESPACE(antlr)RefAST like_clause_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
ANTLR_USE_NAMESPACE(antlr)RefToken rhs = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefAST rhs_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ ANTLR_USE_NAMESPACE(antlr)RefToken esc = ANTLR_USE_NAMESPACE(antlr)nullToken;
+ ANTLR_USE_NAMESPACE(antlr)RefAST esc_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
try { // for error handling
+ rhs = LT(1);
+ rhs_AST = astFactory->create(rhs);
+ match(S_CHAR_LITERAL);
+#line 135 "sd_grammar.g"
+
+ s.first = rhs->getText();
+ s.second = '\0';
+
+#line 449 "sd_parser.cpp"
{
switch ( LA(1)) {
- case K_NOT:
+ case K_ESCAPE:
{
- ANTLR_USE_NAMESPACE(antlr)RefAST tmp10_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
- tmp10_AST = astFactory->create(LT(1));
- match(K_NOT);
-#line 103 "sd_grammar.g"
- *knot = 1;
-#line 448 "sd_parser.cpp"
+ ANTLR_USE_NAMESPACE(antlr)RefAST tmp9_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ tmp9_AST = astFactory->create(LT(1));
+ astFactory->addASTChild(currentAST, tmp9_AST);
+ match(K_ESCAPE);
+ esc = LT(1);
+ esc_AST = astFactory->create(esc);
+ match(S_CHAR_LITERAL);
+#line 140 "sd_grammar.g"
+
+ //Check there are at least three characters
+ //to allow for the quotes
+ if ( esc->getText().size() > 2 )
+ {
+ //Character [1] to allow for the quote
+ s.second = esc->getText()[1];
+ }
+
+ else
+ {
+ s.second = '\0';
+ }
+
+#line 476 "sd_parser.cpp"
break;
}
- case K_LIKE:
+ case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
+ case K_AND:
+ case K_OR:
+ case RPAREN:
{
break;
}
@@ -457,17 +488,7 @@
}
}
}
- ANTLR_USE_NAMESPACE(antlr)RefAST tmp11_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
- tmp11_AST = astFactory->create(LT(1));
- match(K_LIKE);
- rhs = LT(1);
- rhs_AST = astFactory->create(rhs);
- match(S_CHAR_LITERAL);
-#line 105 "sd_grammar.g"
-
- s = rhs->getText();
-
-#line 471 "sd_parser.cpp"
+ like_clause_AST = currentAST.root;
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
@@ -478,9 +499,9 @@
}
int sd_parser::eqop() {
-#line 189 "sd_grammar.g"
+#line 270 "sd_grammar.g"
int tok_type = 0;
-#line 484 "sd_parser.cpp"
+#line 505 "sd_parser.cpp"
returnAST = ANTLR_USE_NAMESPACE(antlr)nullAST;
ANTLR_USE_NAMESPACE(antlr)ASTPair currentAST;
ANTLR_USE_NAMESPACE(antlr)RefAST eqop_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
@@ -496,9 +517,10 @@
o1 = LT(1);
o1_AST = astFactory->create(o1);
match(NE);
-#line 189 "sd_grammar.g"
+#line 271 "sd_grammar.g"
tok_type = o1->getType();
-#line 502 "sd_parser.cpp"
+#line 523 "sd_parser.cpp"
+ eqop_AST = currentAST.root;
break;
}
case EQ:
@@ -506,9 +528,10 @@
o2 = LT(1);
o2_AST = astFactory->create(o2);
match(EQ);
-#line 190 "sd_grammar.g"
+#line 272 "sd_grammar.g"
tok_type = o2->getType();
-#line 512 "sd_parser.cpp"
+#line 534 "sd_parser.cpp"
+ eqop_AST = currentAST.root;
break;
}
default:
@@ -525,6 +548,109 @@
return tok_type;
}
+std::list<std::string> sd_parser::bracketed_list() {
+#line 163 "sd_grammar.g"
+ std::list<std::string> slist;
+#line 555 "sd_parser.cpp"
+ returnAST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ ANTLR_USE_NAMESPACE(antlr)ASTPair currentAST;
+ ANTLR_USE_NAMESPACE(antlr)RefAST bracketed_list_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ ANTLR_USE_NAMESPACE(antlr)RefToken lit = ANTLR_USE_NAMESPACE(antlr)nullToken;
+ ANTLR_USE_NAMESPACE(antlr)RefAST lit_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ ANTLR_USE_NAMESPACE(antlr)RefToken num = ANTLR_USE_NAMESPACE(antlr)nullToken;
+ ANTLR_USE_NAMESPACE(antlr)RefAST num_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ ANTLR_USE_NAMESPACE(antlr)RefToken lit2 = ANTLR_USE_NAMESPACE(antlr)nullToken;
+ ANTLR_USE_NAMESPACE(antlr)RefAST lit2_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ ANTLR_USE_NAMESPACE(antlr)RefToken num2 = ANTLR_USE_NAMESPACE(antlr)nullToken;
+ ANTLR_USE_NAMESPACE(antlr)RefAST num2_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+
+ try { // for error handling
+ ANTLR_USE_NAMESPACE(antlr)RefAST tmp10_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ tmp10_AST = astFactory->create(LT(1));
+ astFactory->addASTChild(currentAST, tmp10_AST);
+ match(LPAREN);
+ {
+ switch ( LA(1)) {
+ case S_CHAR_LITERAL:
+ {
+ lit = LT(1);
+ lit_AST = astFactory->create(lit);
+ match(S_CHAR_LITERAL);
+#line 166 "sd_grammar.g"
+ slist.push_back(lit->getText());
+#line 582 "sd_parser.cpp"
+ break;
+ }
+ case S_NUMBER:
+ {
+ num = LT(1);
+ num_AST = astFactory->create(num);
+ match(S_NUMBER);
+#line 167 "sd_grammar.g"
+ slist.push_back(num->getText());
+#line 592 "sd_parser.cpp"
+ break;
+ }
+ default:
+ {
+ throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+ }
+ }
+ }
+ { // ( ... )*
+ for (;;) {
+ if ((LA(1) == COMMA)) {
+ match(COMMA);
+ {
+ switch ( LA(1)) {
+ case S_CHAR_LITERAL:
+ {
+ lit2 = LT(1);
+ lit2_AST = astFactory->create(lit2);
+ match(S_CHAR_LITERAL);
+#line 169 "sd_grammar.g"
+ slist.push_back(lit2->getText());
+#line 614 "sd_parser.cpp"
+ break;
+ }
+ case S_NUMBER:
+ {
+ num2 = LT(1);
+ num2_AST = astFactory->create(num2);
+ match(S_NUMBER);
+#line 170 "sd_grammar.g"
+ slist.push_back(num2->getText());
+#line 624 "sd_parser.cpp"
+ break;
+ }
+ default:
+ {
+ throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+ }
+ }
+ }
+ }
+ else {
+ goto _loop20;
+ }
+
+ }
+ _loop20:;
+ } // ( ... )*
+ ANTLR_USE_NAMESPACE(antlr)RefAST tmp12_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ tmp12_AST = astFactory->create(LT(1));
+ astFactory->addASTChild(currentAST, tmp12_AST);
+ match(RPAREN);
+ bracketed_list_AST = currentAST.root;
+ }
+ catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
+ reportError(ex);
+ recover(ex,_tokenSet_4);
+ }
+ returnAST = bracketed_list_AST;
+ return slist;
+}
+
void sd_parser::string_literal_list() {
returnAST = ANTLR_USE_NAMESPACE(antlr)nullAST;
ANTLR_USE_NAMESPACE(antlr)ASTPair currentAST;
@@ -545,21 +671,21 @@
lit2 = LT(1);
lit2_AST = astFactory->create(lit2);
match(S_CHAR_LITERAL);
-#line 130 "sd_grammar.g"
+#line 181 "sd_grammar.g"
- //s = s + "," + lit2->getText();
+ //s = s + "," + lit2->getText();
//std::cout << myRef->getListSize() <<endl;
//myRef->addListElement(lit2->getText());
//std::cout << lit2->getText() <<endl;
-#line 556 "sd_parser.cpp"
+#line 682 "sd_parser.cpp"
}
else {
- goto _loop18;
+ goto _loop23;
}
}
- _loop18:;
+ _loop23:;
} // ( ... )*
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
@@ -597,19 +723,19 @@
{ // ( ... )*
for (;;) {
if ((LA(1) == K_OR)) {
- Refsd_internalnode tmp13_AST = Refsd_internalnode(ANTLR_USE_NAMESPACE(antlr)nullAST);
- tmp13_AST = astFactory->create(LT(1));
- astFactory->makeASTRoot(currentAST, ANTLR_USE_NAMESPACE(antlr)RefAST(tmp13_AST));
+ Refsd_internalnode tmp14_AST = Refsd_internalnode(ANTLR_USE_NAMESPACE(antlr)nullAST);
+ tmp14_AST = astFactory->create(LT(1));
+ astFactory->makeASTRoot(currentAST, ANTLR_USE_NAMESPACE(antlr)RefAST(tmp14_AST));
match(K_OR);
vo_and_expression();
astFactory->addASTChild( currentAST, returnAST );
}
else {
- goto _loop22;
+ goto _loop27;
}
}
- _loop22:;
+ _loop27:;
} // ( ... )*
vo_filter_expression_AST = currentAST.root;
}
@@ -631,19 +757,19 @@
{ // ( ... )*
for (;;) {
if ((LA(1) == K_AND)) {
- Refsd_internalnode tmp14_AST = Refsd_internalnode(ANTLR_USE_NAMESPACE(antlr)nullAST);
- tmp14_AST = astFactory->create(LT(1));
- astFactory->makeASTRoot(currentAST, ANTLR_USE_NAMESPACE(antlr)RefAST(tmp14_AST));
+ Refsd_internalnode tmp15_AST = Refsd_internalnode(ANTLR_USE_NAMESPACE(antlr)nullAST);
+ tmp15_AST = astFactory->create(LT(1));
+ astFactory->makeASTRoot(currentAST, ANTLR_USE_NAMESPACE(antlr)RefAST(tmp15_AST));
match(K_AND);
vo_expression();
astFactory->addASTChild( currentAST, returnAST );
}
else {
- goto _loop25;
+ goto _loop30;
}
}
- _loop25:;
+ _loop30:;
} // ( ... )*
vo_and_expression_AST = currentAST.root;
}
@@ -660,33 +786,68 @@
ANTLR_USE_NAMESPACE(antlr)RefAST vo_expression_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
ANTLR_USE_NAMESPACE(antlr)RefToken rval = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefAST rval_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 148 "sd_grammar.g"
- int knot=0; int op; string rhs, comp; Refsd_leafnode myRef; list<string> slist; string s;
-#line 666 "sd_parser.cpp"
+#line 198 "sd_grammar.g"
+ int knot = 0;
+ int op;
+ string rhs;
+ string comp;
+ string s;
+ Refsd_leafnode myRef;
+ list<string> slist;
+ std::pair<std::string, char> rhsLike;
+
+#line 801 "sd_parser.cpp"
+
try { // for error handling
- if ((LA(1) == K_VO) && (LA(2) == K_IN || LA(2) == K_NOT)) {
+ if ((LA(1) == K_VO) && (LA(2) == K_IN || LA(2) == K_NOT) && (LA(3) == K_IN || LA(3) == LPAREN)) {
match(K_VO);
- slist=in_clause(&knot);
+ {
+ switch ( LA(1)) {
+ case K_NOT:
+ {
+ match(K_NOT);
+#line 209 "sd_grammar.g"
+ knot=1;
+#line 813 "sd_parser.cpp"
+ break;
+ }
+ case K_IN:
+ {
+ break;
+ }
+ default:
+ {
+ throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+ }
+ }
+ }
+ match(K_IN);
+ slist=in_clause();
astFactory->addASTChild( currentAST, returnAST );
vo_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 150 "sd_grammar.g"
+#line 210 "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;
myRef->setLValue(K_VO);
myRef->setOpType(K_IN);
- while (slist.size() > 0)
+ myRef->setRValType(K_STRING_LIST);
+
+ while ( slist.size() > 0 )
{
s = slist.front();
myRef->addListElement(s);
slist.pop_front();
}
- if (knot)
+
+ if ( knot )
+ {
myRef->setNotPrefix();
+ }
-#line 690 "sd_parser.cpp"
+#line 851 "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 )
@@ -696,6 +857,62 @@
currentAST.advanceChildToEnd();
vo_expression_AST = currentAST.root;
}
+ else if ((LA(1) == K_VO) && (LA(2) == K_LIKE || LA(2) == K_NOT) && (LA(3) == K_LIKE || LA(3) == S_CHAR_LITERAL)) {
+ match(K_VO);
+ {
+ switch ( LA(1)) {
+ case K_NOT:
+ {
+ match(K_NOT);
+#line 230 "sd_grammar.g"
+ knot = 1;
+#line 870 "sd_parser.cpp"
+ break;
+ }
+ case K_LIKE:
+ {
+ break;
+ }
+ default:
+ {
+ throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+ }
+ }
+ }
+ ANTLR_USE_NAMESPACE(antlr)RefAST tmp21_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ tmp21_AST = astFactory->create(LT(1));
+ astFactory->addASTChild(currentAST, tmp21_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"
+
+ 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;
+ 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();
+ }
+
+#line 907 "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 )
+ currentAST.child = vo_expression_AST->getFirstChild();
+ else
+ currentAST.child = vo_expression_AST;
+ currentAST.advanceChildToEnd();
+ vo_expression_AST = currentAST.root;
+ }
else if ((LA(1) == K_VO) && (LA(2) == NE || LA(2) == EQ)) {
match(K_VO);
op=eqop();
@@ -704,15 +921,15 @@
rval_AST = astFactory->create(rval);
match(S_CHAR_LITERAL);
vo_expression_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 166 "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;
myRef->setLValue(K_VO);
myRef->setOpType(op);
- myRef->setRValue(rval->getText());
+ myRef->setRValue(rval->getText());
-#line 716 "sd_parser.cpp"
+#line 933 "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 )
@@ -722,8 +939,8 @@
currentAST.advanceChildToEnd();
vo_expression_AST = currentAST.root;
}
- else if ((LA(1) == LPARAN)) {
- match(LPARAN);
+ else if ((LA(1) == LPAREN)) {
+ match(LPAREN);
vo_filter_expression();
astFactory->addASTChild( currentAST, returnAST );
match(RPAREN);
@@ -769,19 +986,19 @@
{ // ( ... )*
for (;;) {
if ((LA(1) == K_OR)) {
- Refsd_internalnode tmp19_AST = Refsd_internalnode(ANTLR_USE_NAMESPACE(antlr)nullAST);
- tmp19_AST = astFactory->create(LT(1));
- astFactory->makeASTRoot(currentAST, ANTLR_USE_NAMESPACE(antlr)RefAST(tmp19_AST));
+ 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));
match(K_OR);
data_and_expression();
astFactory->addASTChild( currentAST, returnAST );
}
else {
- goto _loop30;
+ goto _loop37;
}
}
- _loop30:;
+ _loop37:;
} // ( ... )*
data_filter_expression_AST = currentAST.root;
}
@@ -803,19 +1020,19 @@
{ // ( ... )*
for (;;) {
if ((LA(1) == K_AND)) {
- Refsd_internalnode tmp20_AST = Refsd_internalnode(ANTLR_USE_NAMESPACE(antlr)nullAST);
- tmp20_AST = astFactory->create(LT(1));
- astFactory->makeASTRoot(currentAST, ANTLR_USE_NAMESPACE(antlr)RefAST(tmp20_AST));
+ 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));
match(K_AND);
data_expression();
astFactory->addASTChild( currentAST, returnAST );
}
else {
- goto _loop33;
+ goto _loop40;
}
}
- _loop33:;
+ _loop40:;
} // ( ... )*
data_and_expression_AST = currentAST.root;
}
@@ -833,6 +1050,8 @@
try { // for error handling
switch ( LA(1)) {
+ case K_ALL:
+ case K_ANY:
case S_IDENTIFIER:
{
data_comparison();
@@ -868,73 +1087,285 @@
ANTLR_USE_NAMESPACE(antlr)RefAST data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
ANTLR_USE_NAMESPACE(antlr)RefToken lhs = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefAST lhs_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ ANTLR_USE_NAMESPACE(antlr)RefToken lhs0 = ANTLR_USE_NAMESPACE(antlr)nullToken;
+ ANTLR_USE_NAMESPACE(antlr)RefAST lhs0_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ ANTLR_USE_NAMESPACE(antlr)RefToken lhs1 = ANTLR_USE_NAMESPACE(antlr)nullToken;
+ ANTLR_USE_NAMESPACE(antlr)RefAST lhs1_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
ANTLR_USE_NAMESPACE(antlr)RefToken lit = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefAST lit_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
ANTLR_USE_NAMESPACE(antlr)RefToken num = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefAST num_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 201 "sd_grammar.g"
- int op; int rhs1 = 0; double dval; Refsd_leafnode myRef;
-#line 878 "sd_parser.cpp"
+ 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"
+ bool allVal = false;
+ bool anyVal = false;
+ int op; int rhs1 = 0; int knot = 0;
+ double dval;
+ Refsd_leafnode myRef;
+ std::list<std::string> slist;
+ std::string s;
+ std::pair<std::string, char> likePair;
+ std::string likeString;
+
+#line 1113 "sd_parser.cpp"
+
try { // for error handling
- lhs = LT(1);
- lhs_AST = astFactory->create(lhs);
- match(S_IDENTIFIER);
- op=relop();
- astFactory->addASTChild( currentAST, returnAST );
- {
- switch ( LA(1)) {
- case S_CHAR_LITERAL:
- {
- lit = LT(1);
- lit_AST = astFactory->create(lit);
- match(S_CHAR_LITERAL);
-#line 202 "sd_grammar.g"
- rhs1 = 1;
-#line 895 "sd_parser.cpp"
- break;
+ 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)) {
+ {
+ switch ( LA(1)) {
+ case K_ANY:
+ {
+ match(K_ANY);
+#line 297 "sd_grammar.g"
+ anyVal = true;
+#line 1124 "sd_parser.cpp"
+ break;
+ }
+ case K_ALL:
+ {
+ match(K_ALL);
+#line 298 "sd_grammar.g"
+ allVal = true;
+#line 1132 "sd_parser.cpp"
+ break;
+ }
+ case S_IDENTIFIER:
+ {
+ break;
+ }
+ default:
+ {
+ throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+ }
+ }
+ }
+ lhs = LT(1);
+ lhs_AST = astFactory->create(lhs);
+ match(S_IDENTIFIER);
+ {
+ switch ( LA(1)) {
+ case K_NOT:
+ {
+ match(K_NOT);
+#line 300 "sd_grammar.g"
+ knot=1;
+#line 1155 "sd_parser.cpp"
+ break;
+ }
+ case K_IN:
+ {
+ break;
+ }
+ default:
+ {
+ throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+ }
+ }
+ }
+ match(K_IN);
+ slist=in_clause();
+ astFactory->addASTChild( currentAST, returnAST );
+ data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
+#line 301 "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))));
+ myRef = (Refsd_leafnode)data_comparison_AST;
+ myRef->setLKey(lhs->getText());
+ myRef->setOpType(K_IN);
+ myRef->setRValType(K_STRING_LIST);
+
+ //Add everything in the 'IN' list to this element
+ while ( slist.size() > 0 )
+ {
+ s = slist.front();
+ myRef->addListElement(s);
+ slist.pop_front();
+ }
+
+ //Deal with the NOT condition
+ if ( knot )
+ {
+ myRef->setNotPrefix();
+ }
+
+#line 1195 "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 )
+ currentAST.child = data_comparison_AST->getFirstChild();
+ else
+ currentAST.child = data_comparison_AST;
+ currentAST.advanceChildToEnd();
+ data_comparison_AST = currentAST.root;
}
- case S_NUMBER:
- {
- num = LT(1);
- num_AST = astFactory->create(num);
- match(S_NUMBER);
- break;
+ else if ((LA(1) == S_IDENTIFIER) && (LA(2) == K_LIKE || LA(2) == K_NOT) && (LA(3) == K_LIKE || LA(3) == S_CHAR_LITERAL)) {
+ lhs0 = LT(1);
+ lhs0_AST = astFactory->create(lhs0);
+ astFactory->addASTChild(currentAST, lhs0_AST);
+ match(S_IDENTIFIER);
+ {
+ switch ( LA(1)) {
+ case K_NOT:
+ {
+ match(K_NOT);
+#line 324 "sd_grammar.g"
+ knot = 1;
+#line 1217 "sd_parser.cpp"
+ break;
+ }
+ case K_LIKE:
+ {
+ break;
+ }
+ default:
+ {
+ throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+ }
+ }
+ }
+ ANTLR_USE_NAMESPACE(antlr)RefAST tmp34_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
+ tmp34_AST = astFactory->create(LT(1));
+ astFactory->addASTChild(currentAST, tmp34_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"
+
+ //Deal with the 'LIKE' oerator
+ likeString = likePair.first;
+ data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(DATA_CMP))));
+ myRef = (Refsd_leafnode)data_comparison_AST;
+ myRef->setLKey(lhs0->getText());
+ myRef->setOpType(K_LIKE);
+ myRef->setRValue(likeString);
+
+ //Set the escape character
+ //for the 'LIKE' clause
+ myRef->setEscapeChar(likePair.second);
+
+ //Deal with the NOT condition
+ if ( knot )
+ {
+ myRef->setNotPrefix();
+ }
+
+#line 1257 "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 )
+ currentAST.child = data_comparison_AST->getFirstChild();
+ else
+ currentAST.child = data_comparison_AST;
+ currentAST.advanceChildToEnd();
+ data_comparison_AST = currentAST.root;
}
- default:
- {
- throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+ else if ((LA(1) == S_IDENTIFIER) && ((LA(2) >= NE && LA(2) <= GE)) && (LA(3) == S_CHAR_LITERAL || LA(3) == S_NUMBER)) {
+ lhs1 = LT(1);
+ lhs1_AST = astFactory->create(lhs1);
+ match(S_IDENTIFIER);
+ op=relop();
+ astFactory->addASTChild( currentAST, returnAST );
+ {
+ switch ( LA(1)) {
+ case S_CHAR_LITERAL:
+ {
+ lit = LT(1);
+ lit_AST = astFactory->create(lit);
+ match(S_CHAR_LITERAL);
+#line 345 "sd_grammar.g"
+ rhs1 = 1;
+#line 1282 "sd_parser.cpp"
+ break;
+ }
+ case S_NUMBER:
+ {
+ num = LT(1);
+ num_AST = astFactory->create(num);
+ match(S_NUMBER);
+ break;
+ }
+ default:
+ {
+ throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
+ }
+ }
+ }
+ data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
+#line 346 "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))));
+ myRef = (Refsd_leafnode)data_comparison_AST;
+ myRef->setLKey(lhs1->getText());
+ myRef->setOpType(op);
+
+ if ( rhs1 )
+ {
+ myRef->setRValType(S_CHAR_LITERAL);
+ myRef->setRValue(lit->getText());
+ }
+
+ else
+ {
+ myRef->setRValType(S_NUMBER);
+ dval = atof(num->getText().c_str());
+ myRef->setRValNum(dval);
+ }
+
+#line 1320 "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 )
+ currentAST.child = data_comparison_AST->getFirstChild();
+ else
+ currentAST.child = data_comparison_AST;
+ currentAST.advanceChildToEnd();
+ data_comparison_AST = currentAST.root;
}
+ else if ((LA(1) == S_IDENTIFIER) && (LA(2) == NE || LA(2) == EQ) && (LA(3) == LPAREN)) {
+ lhs2 = LT(1);
+ lhs2_AST = astFactory->create(lhs2);
+ match(S_IDENTIFIER);
+ op=eqop();
+ astFactory->addASTChild( currentAST, returnAST );
+ slist=bracketed_list();
+ astFactory->addASTChild( currentAST, returnAST );
+ data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
+#line 368 "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))));
+ myRef = (Refsd_leafnode)data_comparison_AST;
+ myRef->setLKey(lhs2->getText());
+ myRef->setOpType(op);
+ myRef->setRValType(K_STRING_LIST);
+
+ //Add everything in the 'IN' list to this element
+ while ( slist.size() > 0 )
+ {
+ s = slist.front();
+ myRef->addListElement(s);
+ slist.pop_front();
+ }
+
+#line 1356 "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 )
+ currentAST.child = data_comparison_AST->getFirstChild();
+ else
+ currentAST.child = data_comparison_AST;
+ currentAST.advanceChildToEnd();
+ data_comparison_AST = currentAST.root;
}
+ else {
+ throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
}
- data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 203 "sd_grammar.g"
- data_comparison_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(DATA_CMP))));
- myRef = (Refsd_leafnode)data_comparison_AST;
- myRef->setLKey(lhs->getText());
- myRef->setOpType(op);
- if (rhs1)
- {
- myRef->setRValType(S_CHAR_LITERAL);
- myRef->setRValue(lit->getText());
- }
- else
- {
- myRef->setRValType(S_NUMBER);
- dval = atof(num->getText().c_str());
- myRef->setRValNum(dval);
- }
-
-#line 930 "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 )
- currentAST.child = data_comparison_AST->getFirstChild();
- else
- currentAST.child = data_comparison_AST;
- currentAST.advanceChildToEnd();
- data_comparison_AST = currentAST.root;
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
@@ -944,9 +1375,9 @@
}
int sd_parser::relop() {
-#line 193 "sd_grammar.g"
+#line 275 "sd_grammar.g"
int tok_type = 0;
-#line 950 "sd_parser.cpp"
+#line 1381 "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;
@@ -970,9 +1401,9 @@
o1 = LT(1);
o1_AST = astFactory->create(o1);
match(EQ);
-#line 193 "sd_grammar.g"
+#line 276 "sd_grammar.g"
tok_type = o1->getType();
-#line 976 "sd_parser.cpp"
+#line 1407 "sd_parser.cpp"
break;
}
case LESS:
@@ -980,9 +1411,9 @@
o2 = LT(1);
o2_AST = astFactory->create(o2);
match(LESS);
-#line 194 "sd_grammar.g"
+#line 277 "sd_grammar.g"
tok_type = o2->getType();
-#line 986 "sd_parser.cpp"
+#line 1417 "sd_parser.cpp"
break;
}
case GT:
@@ -990,9 +1421,9 @@
o3 = LT(1);
o3_AST = astFactory->create(o3);
match(GT);
-#line 195 "sd_grammar.g"
+#line 278 "sd_grammar.g"
tok_type = o3->getType();
-#line 996 "sd_parser.cpp"
+#line 1427 "sd_parser.cpp"
break;
}
case NE:
@@ -1000,9 +1431,9 @@
o4 = LT(1);
o4_AST = astFactory->create(o4);
match(NE);
-#line 196 "sd_grammar.g"
+#line 279 "sd_grammar.g"
tok_type = o4->getType();
-#line 1006 "sd_parser.cpp"
+#line 1437 "sd_parser.cpp"
break;
}
case LE:
@@ -1010,9 +1441,9 @@
o5 = LT(1);
o5_AST = astFactory->create(o5);
match(LE);
-#line 197 "sd_grammar.g"
+#line 280 "sd_grammar.g"
tok_type = o5->getType();
-#line 1016 "sd_parser.cpp"
+#line 1447 "sd_parser.cpp"
break;
}
case GE:
@@ -1020,9 +1451,9 @@
o6 = LT(1);
o6_AST = astFactory->create(o6);
match(GE);
-#line 198 "sd_grammar.g"
+#line 281 "sd_grammar.g"
tok_type = o6->getType();
-#line 1026 "sd_parser.cpp"
+#line 1457 "sd_parser.cpp"
break;
}
default:
@@ -1041,11 +1472,11 @@
void sd_parser::initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& factory )
{
- factory.registerFactory(7, "sd_internalnode", sd_internalnode::factory);
factory.registerFactory(8, "sd_internalnode", sd_internalnode::factory);
- factory.registerFactory(17, "sd_leafnode", sd_leafnode::factory);
- factory.registerFactory(18, "sd_leafnode", sd_leafnode::factory);
- factory.setMaxNodeType(36);
+ factory.registerFactory(9, "sd_internalnode", sd_internalnode::factory);
+ factory.registerFactory(21, "sd_leafnode", sd_leafnode::factory);
+ factory.registerFactory(22, "sd_leafnode", sd_leafnode::factory);
+ factory.setMaxNodeType(39);
}
const char* sd_parser::tokenNames[] = {
"<0>",
@@ -1054,6 +1485,7 @@
"NULL_TREE_LOOKAHEAD",
"\"in\"",
"\"like\"",
+ "\"escape\"",
"\"not\"",
"\"and\"",
"\"or\"",
@@ -1065,13 +1497,16 @@
"\"endpoint\"",
"\"site\"",
"\"related_services\"",
+ "\"all\"",
+ "\"any\"",
+ "K_STRING_LIST",
"SVC_CMP",
"DATA_CMP",
"char literal",
"left parenthesis",
"right parenthesis",
+ "number",
"comma",
- "LPARAN",
"not equals",
"equals",
"LESS",
@@ -1079,7 +1514,6 @@
"LE",
"GE",
"identifier",
- "number",
"white space",
"digit",
"integer",
@@ -1088,25 +1522,25 @@
0
};
-const unsigned long sd_parser::_tokenSet_0_data_[] = { 50331760UL, 0UL, 0UL, 0UL };
+const unsigned long sd_parser::_tokenSet_0_data_[] = { 805306544UL, 0UL, 0UL, 0UL };
// "in" "like" "not" NE EQ
const ANTLR_USE_NAMESPACE(antlr)BitSet sd_parser::_tokenSet_0(_tokenSet_0_data_,4);
const unsigned long sd_parser::_tokenSet_1_data_[] = { 2UL, 0UL, 0UL, 0UL };
// EOF
const ANTLR_USE_NAMESPACE(antlr)BitSet sd_parser::_tokenSet_1(_tokenSet_1_data_,4);
-const unsigned long sd_parser::_tokenSet_2_data_[] = { 2097154UL, 0UL, 0UL, 0UL };
+const unsigned long sd_parser::_tokenSet_2_data_[] = { 33554434UL, 0UL, 0UL, 0UL };
// EOF RPAREN
const ANTLR_USE_NAMESPACE(antlr)BitSet sd_parser::_tokenSet_2(_tokenSet_2_data_,4);
-const unsigned long sd_parser::_tokenSet_3_data_[] = { 2097410UL, 0UL, 0UL, 0UL };
+const unsigned long sd_parser::_tokenSet_3_data_[] = { 33554946UL, 0UL, 0UL, 0UL };
// EOF "or" RPAREN
const ANTLR_USE_NAMESPACE(antlr)BitSet sd_parser::_tokenSet_3(_tokenSet_3_data_,4);
-const unsigned long sd_parser::_tokenSet_4_data_[] = { 2097538UL, 0UL, 0UL, 0UL };
+const unsigned long sd_parser::_tokenSet_4_data_[] = { 33555202UL, 0UL, 0UL, 0UL };
// EOF "and" "or" RPAREN
const ANTLR_USE_NAMESPACE(antlr)BitSet sd_parser::_tokenSet_4(_tokenSet_4_data_,4);
-const unsigned long sd_parser::_tokenSet_5_data_[] = { 524288UL, 0UL, 0UL, 0UL };
-// S_CHAR_LITERAL
+const unsigned long sd_parser::_tokenSet_5_data_[] = { 25165824UL, 0UL, 0UL, 0UL };
+// S_CHAR_LITERAL LPAREN
const ANTLR_USE_NAMESPACE(antlr)BitSet sd_parser::_tokenSet_5(_tokenSet_5_data_,4);
-const unsigned long sd_parser::_tokenSet_6_data_[] = { 2148007936UL, 0UL, 0UL, 0UL };
+const unsigned long sd_parser::_tokenSet_6_data_[] = { 75497472UL, 0UL, 0UL, 0UL };
// S_CHAR_LITERAL S_NUMBER
const ANTLR_USE_NAMESPACE(antlr)BitSet sd_parser::_tokenSet_6(_tokenSet_6_data_,4);
File [modified]: sd_parser.hpp
Delta lines: +17 -19
===================================================================
--- trunk/saga/impl/packages/sd/sd_parser.hpp 2009-01-15 12:53:02 UTC (rev 3294)
+++ trunk/saga/impl/packages/sd/sd_parser.hpp 2009-01-15 12:54:46 UTC (rev 3295)
@@ -2,27 +2,28 @@
#define INC_sd_parser_hpp_
#include <antlr/config.hpp>
-/* $ANTLR 2.7.7 (20080506): "sd_grammar.g" -> "sd_parser.hpp"$ */
+/* $ANTLR 2.7.7 (20081210): "sd_grammar.g" -> "sd_parser.hpp"$ */
#include <antlr/TokenStream.hpp>
#include <antlr/TokenBuffer.hpp>
#include "sdTokenTypes.hpp"
#include <antlr/LLkParser.hpp>
-#line 1 "sd_grammar.g"
+#line 2 "sd_grammar.g"
- #include "sd_leafnode.hpp"
- #include "sd_internalnode.hpp"
- #include <iostream>
- #include <string>
- #include <list>
- #include <math.h>
- using namespace std;
+ #include "sd_leafnode.hpp"
+ #include "sd_internalnode.hpp"
+ #include <iostream>
+ #include <string>
+ #include <list>
+ #include <math.h>
+ #include <utility>
+ using namespace std;
-#line 22 "sd_parser.hpp"
+#line 23 "sd_parser.hpp"
class CUSTOM_API sd_parser : public ANTLR_USE_NAMESPACE(antlr)LLkParser, public sdTokenTypes
{
#line 1 "sd_grammar.g"
-#line 26 "sd_parser.hpp"
+#line 27 "sd_parser.hpp"
public:
void initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& factory );
protected:
@@ -52,13 +53,10 @@
public: void service_filter_expression();
public: void service_and_expression();
public: void service_expression();
- public: std::list<std::string> in_clause(
- int *knot
- );
- public: string like_clause(
- int *knot
- );
+ public: std::list<std::string> in_clause();
+ public: pair<string, char> like_clause();
public: int eqop();
+ public: std::list<std::string> bracketed_list();
public: void string_literal_list();
public: void vo_filter();
public: void vo_filter_expression();
@@ -81,10 +79,10 @@
private:
static const char* tokenNames[];
#ifndef NO_STATIC_CONSTS
- static const int NUM_TOKENS = 37;
+ static const int NUM_TOKENS = 40;
#else
enum {
- NUM_TOKENS = 37
+ NUM_TOKENS = 40
};
#endif
More information about the saga-devel
mailing list