fix create table statements with IN operator

fixes issue #34
IN wasn't added to the token list and not enabled in the suffix expression
as this gives a parser generator warning, because of an ambiguity with IN as an operator
we stick with the warning right now
This commit is contained in:
Peinthor Rene
2014-06-10 23:09:11 +02:00
parent 1e787b4d22
commit b02b36b2a2
5 changed files with 317 additions and 213 deletions

View File

@@ -1,4 +1,4 @@
/* $ANTLR 2.7.7 (20130425): "sqlite3.g" -> "Sqlite3Lexer.cpp"$ */
/* $ANTLR 2.7.7 (20140222): "sqlite3.g" -> "Sqlite3Lexer.cpp"$ */
#include "Sqlite3Lexer.hpp"
#include <antlr/CharBuffer.hpp>
#include <antlr/TokenStreamException.hpp>
@@ -33,33 +33,33 @@ void Sqlite3Lexer::initLiterals()
literals["CASE"] = 12;
literals["END"] = 28;
literals["CASCADE"] = 11;
literals["TEMPORARY"] = 55;
literals["TEMPORARY"] = 56;
literals["DEFERRABLE"] = 23;
literals["IMMEDIATE"] = 39;
literals["IMMEDIATE"] = 40;
literals["AUTOINCREMENT"] = 6;
literals["ROWID"] = 53;
literals["EXISTS"] = 44;
literals["THEN"] = 57;
literals["ROWID"] = 54;
literals["EXISTS"] = 45;
literals["THEN"] = 58;
literals["AND"] = 9;
literals["CURRENT_DATE"] = 20;
literals["NOT"] = 41;
literals["NOT"] = 42;
literals["KEY"] = 33;
literals["COLLATE"] = 16;
literals["NULL"] = 42;
literals["TEMP"] = 56;
literals["INITIALLY"] = 38;
literals["RESTRICT"] = 51;
literals["NULL"] = 43;
literals["TEMP"] = 57;
literals["INITIALLY"] = 39;
literals["RESTRICT"] = 52;
literals["LIKE"] = 34;
literals["WHEN"] = 60;
literals["WHEN"] = 61;
literals["FOREIGN"] = 31;
literals["SET"] = 54;
literals["IS"] = 40;
literals["SET"] = 55;
literals["IS"] = 41;
literals["OR"] = 10;
literals["PRIMARY"] = 46;
literals["PRIMARY"] = 47;
literals["DEFERRED"] = 24;
literals["UPDATE"] = 59;
literals["UPDATE"] = 60;
literals["IF"] = 36;
literals["UNIQUE"] = 58;
literals["UNIQUE"] = 59;
literals["AS"] = 7;
literals["TABLE"] = 35;
literals["DEFAULT"] = 22;
@@ -69,22 +69,23 @@ void Sqlite3Lexer::initLiterals()
literals["IGNORE"] = 37;
literals["CURRENT_TIMESTAMP"] = 21;
literals["CONFLICT"] = 17;
literals["REPLACE"] = 50;
literals["REPLACE"] = 51;
literals["ASC"] = 8;
literals["FAIL"] = 30;
literals["REGEXP"] = 49;
literals["REFERENCES"] = 48;
literals["ON"] = 45;
literals["REGEXP"] = 50;
literals["REFERENCES"] = 49;
literals["ON"] = 46;
literals["DESC"] = 26;
literals["IN"] = 38;
literals["CAST"] = 13;
literals["ESCAPE"] = 29;
literals["ELSE"] = 27;
literals["WITHOUT"] = 61;
literals["MATCH"] = 43;
literals["RAISE"] = 47;
literals["WITHOUT"] = 62;
literals["MATCH"] = 44;
literals["RAISE"] = 48;
literals["ABORT"] = 4;
literals["CHECK"] = 14;
literals["ROLLBACK"] = 52;
literals["ROLLBACK"] = 53;
literals["CURRENT_TIME"] = 19;
}

View File

@@ -1,4 +1,4 @@
/* $ANTLR 2.7.7 (20130425): "sqlite3.g" -> "Sqlite3Parser.cpp"$ */
/* $ANTLR 2.7.7 (20140222): "sqlite3.g" -> "Sqlite3Parser.cpp"$ */
#include "Sqlite3Parser.hpp"
#include <antlr/NoViableAltException.hpp>
#include <antlr/SemanticException.hpp>
@@ -2719,6 +2719,7 @@ void Sqlite3Parser::expr() {
switch ( LA(1)) {
case GLOB:
case LIKE:
case IN:
case IS:
case MATCH:
case REGEXP:
@@ -2740,7 +2741,6 @@ void Sqlite3Parser::expr() {
case BITWISERIGHT:
case SLASH:
case PERCENT:
case IN:
{
binaryoperator();
break;
@@ -2781,6 +2781,7 @@ void Sqlite3Parser::expr() {
switch ( LA(1)) {
case GLOB:
case LIKE:
case IN:
case IS:
case MATCH:
case REGEXP:
@@ -2802,7 +2803,6 @@ void Sqlite3Parser::expr() {
case BITWISERIGHT:
case SLASH:
case PERCENT:
case IN:
{
binaryoperator();
if (inputState->guessing==0) {
@@ -3614,63 +3614,25 @@ void Sqlite3Parser::subexpr() {
}
}
{
switch ( LA(1)) {
case COLLATE:
{
if ((LA(1) == COLLATE || LA(1) == IN) && (_tokenSet_26.member(LA(2)))) {
suffixexpr();
if (inputState->guessing==0) {
astFactory->addASTChild( currentAST, returnAST );
}
break;
}
case AS:
case AND:
case OR:
case ELSE_T:
case END:
case GLOB:
case LIKE:
case IS:
case MATCH:
case REGEXP:
case THEN:
case WHEN:
case RPAREN:
case COMMA:
case PLUS:
case MINUS:
case STAR:
case AMPERSAND:
case BITOR:
case OROP:
case EQUAL:
case EQUAL2:
case GREATER:
case GREATEREQUAL:
case LOWER:
case LOWEREQUAL:
case UNEQUAL:
case UNEQUAL2:
case BITWISELEFT:
case BITWISERIGHT:
case SLASH:
case PERCENT:
case IN:
{
break;
else if ((_tokenSet_27.member(LA(1))) && (_tokenSet_28.member(LA(2)))) {
}
default:
{
else {
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
}
}
}
subexpr_AST = currentAST.root;
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
if( inputState->guessing == 0 ) {
reportError(ex);
recover(ex,_tokenSet_26);
recover(ex,_tokenSet_27);
} else {
throw;
}
@@ -4340,22 +4302,144 @@ void Sqlite3Parser::suffixexpr() {
ANTLR_USE_NAMESPACE(antlr)RefAST suffixexpr_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
try { // for error handling
ANTLR_USE_NAMESPACE(antlr)RefAST tmp238_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
if ( inputState->guessing == 0 ) {
tmp238_AST = astFactory->create(LT(1));
astFactory->addASTChild(currentAST, tmp238_AST);
switch ( LA(1)) {
case COLLATE:
{
ANTLR_USE_NAMESPACE(antlr)RefAST tmp238_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
if ( inputState->guessing == 0 ) {
tmp238_AST = astFactory->create(LT(1));
astFactory->addASTChild(currentAST, tmp238_AST);
}
match(COLLATE);
collationname();
if (inputState->guessing==0) {
astFactory->addASTChild( currentAST, returnAST );
}
suffixexpr_AST = currentAST.root;
break;
}
case IN:
{
ANTLR_USE_NAMESPACE(antlr)RefAST tmp239_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
if ( inputState->guessing == 0 ) {
tmp239_AST = astFactory->create(LT(1));
astFactory->addASTChild(currentAST, tmp239_AST);
}
match(IN);
{
switch ( LA(1)) {
case LPAREN:
{
ANTLR_USE_NAMESPACE(antlr)RefAST tmp240_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
if ( inputState->guessing == 0 ) {
tmp240_AST = astFactory->create(LT(1));
astFactory->addASTChild(currentAST, tmp240_AST);
}
match(LPAREN);
{
switch ( LA(1)) {
case SELECT:
{
selectstmt();
if (inputState->guessing==0) {
astFactory->addASTChild( currentAST, returnAST );
}
break;
}
case CASE_T:
case CAST:
case CURRENT_TIME:
case CURRENT_DATE:
case CURRENT_TIMESTAMP:
case NOT:
case NULL_T:
case EXISTS:
case RAISE:
case ID:
case QUOTEDID:
case QUOTEDLITERAL:
case NUMERIC:
case STRINGLITERAL:
case LPAREN:
case PLUS:
case MINUS:
case TILDE:
{
expr();
if (inputState->guessing==0) {
astFactory->addASTChild( currentAST, returnAST );
}
{ // ( ... )*
for (;;) {
if ((LA(1) == COMMA)) {
ANTLR_USE_NAMESPACE(antlr)RefAST tmp241_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
if ( inputState->guessing == 0 ) {
tmp241_AST = astFactory->create(LT(1));
astFactory->addASTChild(currentAST, tmp241_AST);
}
match(COMMA);
expr();
if (inputState->guessing==0) {
astFactory->addASTChild( currentAST, returnAST );
}
}
else {
goto _loop178;
}
}
_loop178:;
} // ( ... )*
break;
}
case RPAREN:
{
break;
}
default:
{
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
}
}
}
ANTLR_USE_NAMESPACE(antlr)RefAST tmp242_AST = ANTLR_USE_NAMESPACE(antlr)nullAST;
if ( inputState->guessing == 0 ) {
tmp242_AST = astFactory->create(LT(1));
astFactory->addASTChild(currentAST, tmp242_AST);
}
match(RPAREN);
break;
}
case ID:
case QUOTEDID:
case QUOTEDLITERAL:
case STRINGLITERAL:
{
tablename();
if (inputState->guessing==0) {
astFactory->addASTChild( currentAST, returnAST );
}
break;
}
default:
{
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
}
}
}
suffixexpr_AST = currentAST.root;
break;
}
default:
{
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
}
match(COLLATE);
collationname();
if (inputState->guessing==0) {
astFactory->addASTChild( currentAST, returnAST );
}
suffixexpr_AST = currentAST.root;
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
if( inputState->guessing == 0 ) {
reportError(ex);
recover(ex,_tokenSet_26);
recover(ex,_tokenSet_27);
} else {
throw;
}
@@ -4406,6 +4490,7 @@ const char* Sqlite3Parser::tokenNames[] = {
"\"TABLE\"",
"\"IF\"",
"\"IGNORE\"",
"\"IN\"",
"\"INITIALLY\"",
"\"IMMEDIATE\"",
"\"IS\"",
@@ -4472,58 +4557,60 @@ const char* Sqlite3Parser::tokenNames[] = {
"SELECT",
"SLASH",
"PERCENT",
"IN",
0
};
const unsigned long Sqlite3Parser::_tokenSet_0_data_[] = { 415581826UL, 369323781UL, 4290495424UL, 463UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_0_data_[] = { 415581826UL, 738647621UL, 4286023552UL, 415UL, 0UL, 0UL, 0UL, 0UL };
// EOF "AS" "AND" "OR" "CHECK" "COLLATE" "CONSTRAINT" "DEFAULT" "DEFERRABLE"
// "ELSE" "END" "GLOB" "LIKE" "IS" "NOT" "NULL" "MATCH" "ON" "PRIMARY"
// "ELSE" "END" "GLOB" "LIKE" "IN" "IS" "NOT" "NULL" "MATCH" "ON" "PRIMARY"
// "REFERENCES" "REGEXP" "THEN" "UNIQUE" "WHEN" DOT ID QUOTEDID QUOTEDLITERAL
// STRINGLITERAL LPAREN RPAREN COMMA PLUS MINUS STAR AMPERSAND BITOR OROP
// EQUAL EQUAL2 GREATER GREATEREQUAL LOWER LOWEREQUAL UNEQUAL UNEQUAL2
// BITWISELEFT BITWISERIGHT SLASH PERCENT IN
// BITWISELEFT BITWISERIGHT SLASH PERCENT
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_0(_tokenSet_0_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_1_data_[] = { 0UL, 0UL, 64UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_1_data_[] = { 0UL, 0UL, 128UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// DOT
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_1(_tokenSet_1_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_2_data_[] = { 12927106UL, 67202560UL, 246656UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// EOF "AS" "CHECK" "COLLATE" "CONSTRAINT" "DEFAULT" "DEFERRABLE" "NOT"
// "NULL" "MATCH" "ON" "PRIMARY" "REFERENCES" "UNIQUE" ID QUOTEDID QUOTEDLITERAL
// STRINGLITERAL LPAREN RPAREN COMMA
const unsigned long Sqlite3Parser::_tokenSet_2_data_[] = { 415581826UL, 738647621UL, 4286023424UL, 415UL, 0UL, 0UL, 0UL, 0UL };
// EOF "AS" "AND" "OR" "CHECK" "COLLATE" "CONSTRAINT" "DEFAULT" "DEFERRABLE"
// "ELSE" "END" "GLOB" "LIKE" "IN" "IS" "NOT" "NULL" "MATCH" "ON" "PRIMARY"
// "REFERENCES" "REGEXP" "THEN" "UNIQUE" "WHEN" ID QUOTEDID QUOTEDLITERAL
// STRINGLITERAL LPAREN RPAREN COMMA PLUS MINUS STAR AMPERSAND BITOR OROP
// EQUAL EQUAL2 GREATER GREATEREQUAL LOWER LOWEREQUAL UNEQUAL UNEQUAL2
// BITWISELEFT BITWISERIGHT SLASH PERCENT
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_2(_tokenSet_2_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_3_data_[] = { 407193216UL, 369315589UL, 4290462592UL, 463UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_3_data_[] = { 407193216UL, 738631237UL, 4285957888UL, 415UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "AND" "OR" "CHECK" "COLLATE" "CONSTRAINT" "DEFAULT" "ELSE" "END"
// "GLOB" "LIKE" "IS" "NOT" "NULL" "MATCH" "PRIMARY" "REFERENCES" "REGEXP"
// "THEN" "UNIQUE" "WHEN" ID QUOTEDID QUOTEDLITERAL STRINGLITERAL RPAREN
// COMMA PLUS MINUS STAR AMPERSAND BITOR OROP EQUAL EQUAL2 GREATER GREATEREQUAL
// LOWER LOWEREQUAL UNEQUAL UNEQUAL2 BITWISELEFT BITWISERIGHT SLASH PERCENT
// IN
// "GLOB" "LIKE" "IN" "IS" "NOT" "NULL" "MATCH" "PRIMARY" "REFERENCES"
// "REGEXP" "THEN" "UNIQUE" "WHEN" ID QUOTEDID QUOTEDLITERAL STRINGLITERAL
// RPAREN COMMA PLUS MINUS STAR AMPERSAND BITOR OROP EQUAL EQUAL2 GREATER
// GREATEREQUAL LOWER LOWEREQUAL UNEQUAL UNEQUAL2 BITWISELEFT BITWISERIGHT
// SLASH PERCENT
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_3(_tokenSet_3_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_4_data_[] = { 0UL, 0UL, 17344UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_4_data_[] = { 0UL, 0UL, 34688UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// DOT ID QUOTEDID QUOTEDLITERAL STRINGLITERAL
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_4(_tokenSet_4_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_5_data_[] = { 0UL, 0UL, 17280UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_5_data_[] = { 0UL, 0UL, 34560UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// ID QUOTEDID QUOTEDLITERAL STRINGLITERAL
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_5(_tokenSet_5_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_6_data_[] = { 2UL, 0UL, 0UL, 0UL };
// EOF
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_6(_tokenSet_6_data_,4);
const unsigned long Sqlite3Parser::_tokenSet_7_data_[] = { 407193216UL, 369315589UL, 4290445312UL, 463UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_7_data_[] = { 407193216UL, 738631237UL, 4285923328UL, 415UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "AND" "OR" "CHECK" "COLLATE" "CONSTRAINT" "DEFAULT" "ELSE" "END"
// "GLOB" "LIKE" "IS" "NOT" "NULL" "MATCH" "PRIMARY" "REFERENCES" "REGEXP"
// "THEN" "UNIQUE" "WHEN" RPAREN COMMA PLUS MINUS STAR AMPERSAND BITOR
// OROP EQUAL EQUAL2 GREATER GREATEREQUAL LOWER LOWEREQUAL UNEQUAL UNEQUAL2
// BITWISELEFT BITWISERIGHT SLASH PERCENT IN
// "GLOB" "LIKE" "IN" "IS" "NOT" "NULL" "MATCH" "PRIMARY" "REFERENCES"
// "REGEXP" "THEN" "UNIQUE" "WHEN" RPAREN COMMA PLUS MINUS STAR AMPERSAND
// BITOR OROP EQUAL EQUAL2 GREATER GREATEREQUAL LOWER LOWEREQUAL UNEQUAL
// UNEQUAL2 BITWISELEFT BITWISERIGHT SLASH PERCENT
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_7(_tokenSet_7_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_8_data_[] = { 4538368UL, 67192320UL, 196608UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_8_data_[] = { 4538368UL, 134384640UL, 393216UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// "CHECK" "COLLATE" "CONSTRAINT" "DEFAULT" "NOT" "NULL" "PRIMARY" "REFERENCES"
// "UNIQUE" RPAREN COMMA
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_8(_tokenSet_8_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_9_data_[] = { 2UL, 0UL, 262144UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_9_data_[] = { 2UL, 0UL, 524288UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// EOF SEMI
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_9(_tokenSet_9_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_10_data_[] = { 2147205104UL, 467648511UL, 17280UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_10_data_[] = { 2147205104UL, 935296959UL, 34560UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// "ABORT" "ACTION" "AUTOINCREMENT" "AS" "ASC" "AND" "OR" "CASCADE" "CASE"
// "CAST" "CREATE" "COLLATE" "CONFLICT" "CURRENT_TIME" "CURRENT_DATE" "CURRENT_TIMESTAMP"
// "DEFAULT" "DEFERRABLE" "DEFERRED" "DELETE" "DESC" "ELSE" "END" "ESCAPE"
@@ -4532,56 +4619,56 @@ const unsigned long Sqlite3Parser::_tokenSet_10_data_[] = { 2147205104UL, 467648
// "REPLACE" "RESTRICT" "ROLLBACK" "SET" "TEMPORARY" "TEMP" "THEN" "UPDATE"
// "WHEN" ID QUOTEDID QUOTEDLITERAL STRINGLITERAL
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_10(_tokenSet_10_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_11_data_[] = { 128UL, 0UL, 32768UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_11_data_[] = { 128UL, 0UL, 65536UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// "AS" LPAREN
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_11(_tokenSet_11_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_12_data_[] = { 4538368UL, 67192320UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_12_data_[] = { 4538368UL, 134384640UL, 0UL, 0UL };
// "CHECK" "COLLATE" "CONSTRAINT" "DEFAULT" "NOT" "NULL" "PRIMARY" "REFERENCES"
// "UNIQUE"
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_12(_tokenSet_12_data_,4);
const unsigned long Sqlite3Parser::_tokenSet_13_data_[] = { 0UL, 0UL, 196608UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_13_data_[] = { 0UL, 0UL, 393216UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// RPAREN COMMA
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_13(_tokenSet_13_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_14_data_[] = { 2UL, 0UL, 327680UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_14_data_[] = { 2UL, 0UL, 655360UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// EOF RPAREN SEMI
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_14(_tokenSet_14_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_15_data_[] = { 4538368UL, 67192320UL, 213888UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_15_data_[] = { 4538368UL, 134384640UL, 427776UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// "CHECK" "COLLATE" "CONSTRAINT" "DEFAULT" "NOT" "NULL" "PRIMARY" "REFERENCES"
// "UNIQUE" ID QUOTEDID QUOTEDLITERAL STRINGLITERAL RPAREN COMMA
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_15(_tokenSet_15_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_16_data_[] = { 2160410624UL, 67202560UL, 246656UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_16_data_[] = { 2160410624UL, 134405120UL, 493312UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// "CHECK" "COLLATE" "CONSTRAINT" "DEFAULT" "DEFERRABLE" "FOREIGN" "NOT"
// "NULL" "MATCH" "ON" "PRIMARY" "REFERENCES" "UNIQUE" ID QUOTEDID QUOTEDLITERAL
// STRINGLITERAL LPAREN RPAREN COMMA
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_16(_tokenSet_16_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_17_data_[] = { 3682304UL, 38400UL, 5818240UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_17_data_[] = { 3682304UL, 76800UL, 11636480UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// "CASE" "CAST" "CURRENT_TIME" "CURRENT_DATE" "CURRENT_TIMESTAMP" "NOT"
// "NULL" "EXISTS" "RAISE" ID QUOTEDID QUOTEDLITERAL NUMERIC STRINGLITERAL
// LPAREN PLUS MINUS TILDE
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_17(_tokenSet_17_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_18_data_[] = { 406402688UL, 302161669UL, 4294690752UL, 495UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_18_data_[] = { 406402688UL, 604323397UL, 4294414208UL, 479UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "AND" "OR" "CASE" "CAST" "COLLATE" "CURRENT_TIME" "CURRENT_DATE"
// "CURRENT_TIMESTAMP" "ELSE" "END" "GLOB" "LIKE" "IS" "NOT" "NULL" "MATCH"
// "EXISTS" "RAISE" "REGEXP" "THEN" "WHEN" DOT ID QUOTEDID QUOTEDLITERAL
// "CURRENT_TIMESTAMP" "ELSE" "END" "GLOB" "LIKE" "IN" "IS" "NOT" "NULL"
// "MATCH" "EXISTS" "RAISE" "REGEXP" "THEN" "WHEN" DOT ID QUOTEDID QUOTEDLITERAL
// NUMERIC STRINGLITERAL LPAREN RPAREN COMMA PLUS MINUS STAR TILDE AMPERSAND
// BITOR OROP EQUAL EQUAL2 GREATER GREATEREQUAL LOWER LOWEREQUAL UNEQUAL
// UNEQUAL2 BITWISELEFT BITWISERIGHT SELECT SLASH PERCENT IN
// UNEQUAL2 BITWISELEFT BITWISERIGHT SELECT SLASH PERCENT
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_18(_tokenSet_18_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_19_data_[] = { 1536UL, 133381UL, 4290248704UL, 463UL, 0UL, 0UL, 0UL, 0UL };
// "AND" "OR" "GLOB" "LIKE" "IS" "MATCH" "REGEXP" PLUS MINUS STAR AMPERSAND
// BITOR OROP EQUAL EQUAL2 GREATER GREATEREQUAL LOWER LOWEREQUAL UNEQUAL
// UNEQUAL2 BITWISELEFT BITWISERIGHT SLASH PERCENT IN
const unsigned long Sqlite3Parser::_tokenSet_19_data_[] = { 1536UL, 266821UL, 4285530112UL, 415UL, 0UL, 0UL, 0UL, 0UL };
// "AND" "OR" "GLOB" "LIKE" "IN" "IS" "MATCH" "REGEXP" PLUS MINUS STAR
// AMPERSAND BITOR OROP EQUAL EQUAL2 GREATER GREATEREQUAL LOWER LOWEREQUAL
// UNEQUAL UNEQUAL2 BITWISELEFT BITWISERIGHT SLASH PERCENT
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_19(_tokenSet_19_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_20_data_[] = { 406401152UL, 302028288UL, 6014912UL, 32UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_20_data_[] = { 406401152UL, 604056640UL, 12029824UL, 64UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "CASE" "CAST" "COLLATE" "CURRENT_TIME" "CURRENT_DATE" "CURRENT_TIMESTAMP"
// "ELSE" "END" "NOT" "NULL" "EXISTS" "RAISE" "THEN" "WHEN" DOT ID QUOTEDID
// QUOTEDLITERAL NUMERIC STRINGLITERAL LPAREN RPAREN COMMA PLUS MINUS TILDE
// SELECT
// "ELSE" "END" "IN" "NOT" "NULL" "EXISTS" "RAISE" "THEN" "WHEN" DOT ID
// QUOTEDID QUOTEDLITERAL NUMERIC STRINGLITERAL LPAREN RPAREN COMMA PLUS
// MINUS TILDE SELECT
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_20(_tokenSet_20_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_21_data_[] = { 402653312UL, 301989888UL, 196608UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_21_data_[] = { 402653312UL, 603979776UL, 393216UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "ELSE" "END" "THEN" "WHEN" RPAREN COMMA
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_21(_tokenSet_21_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_22_data_[] = { 4294967282UL, 1071644671UL, 2082688UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_22_data_[] = { 4294967282UL, 2143289279UL, 4165376UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// EOF "ABORT" "ACTION" "AUTOINCREMENT" "AS" "ASC" "AND" "OR" "CASCADE"
// "CASE" "CAST" "CHECK" "CREATE" "COLLATE" "CONFLICT" "CONSTRAINT" "CURRENT_TIME"
// "CURRENT_DATE" "CURRENT_TIMESTAMP" "DEFAULT" "DEFERRABLE" "DEFERRED"
@@ -4592,27 +4679,38 @@ const unsigned long Sqlite3Parser::_tokenSet_22_data_[] = { 4294967282UL, 107164
// "WHEN" "WITHOUT" ID QUOTEDID QUOTEDLITERAL NUMERIC STRINGLITERAL LPAREN
// RPAREN COMMA SEMI PLUS MINUS
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_22(_tokenSet_22_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_23_data_[] = { 0UL, 0UL, 32768UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long Sqlite3Parser::_tokenSet_23_data_[] = { 0UL, 0UL, 65536UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// LPAREN
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_23(_tokenSet_23_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_24_data_[] = { 402720384UL, 302123269UL, 4290462656UL, 463UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "AND" "OR" "COLLATE" "ELSE" "END" "GLOB" "LIKE" "IS" "MATCH" "REGEXP"
// "THEN" "WHEN" DOT ID QUOTEDID QUOTEDLITERAL STRINGLITERAL RPAREN COMMA
// PLUS MINUS STAR AMPERSAND BITOR OROP EQUAL EQUAL2 GREATER GREATEREQUAL
const unsigned long Sqlite3Parser::_tokenSet_24_data_[] = { 402720384UL, 604246597UL, 4285958016UL, 415UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "AND" "OR" "COLLATE" "ELSE" "END" "GLOB" "LIKE" "IN" "IS" "MATCH"
// "REGEXP" "THEN" "WHEN" DOT ID QUOTEDID QUOTEDLITERAL STRINGLITERAL RPAREN
// COMMA PLUS MINUS STAR AMPERSAND BITOR OROP EQUAL EQUAL2 GREATER GREATEREQUAL
// LOWER LOWEREQUAL UNEQUAL UNEQUAL2 BITWISELEFT BITWISERIGHT SLASH PERCENT
// IN
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_24(_tokenSet_24_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_25_data_[] = { 402720384UL, 302123269UL, 4290445312UL, 463UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "AND" "OR" "COLLATE" "ELSE" "END" "GLOB" "LIKE" "IS" "MATCH" "REGEXP"
const unsigned long Sqlite3Parser::_tokenSet_25_data_[] = { 402720384UL, 604246597UL, 4285923328UL, 415UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "AND" "OR" "COLLATE" "ELSE" "END" "GLOB" "LIKE" "IN" "IS" "MATCH"
// "REGEXP" "THEN" "WHEN" RPAREN COMMA PLUS MINUS STAR AMPERSAND BITOR
// OROP EQUAL EQUAL2 GREATER GREATEREQUAL LOWER LOWEREQUAL UNEQUAL UNEQUAL2
// BITWISELEFT BITWISERIGHT SLASH PERCENT
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_25(_tokenSet_25_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_26_data_[] = { 0UL, 0UL, 100096UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// ID QUOTEDID QUOTEDLITERAL STRINGLITERAL LPAREN
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_26(_tokenSet_26_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_27_data_[] = { 402654848UL, 604246597UL, 4285923328UL, 415UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "AND" "OR" "ELSE" "END" "GLOB" "LIKE" "IN" "IS" "MATCH" "REGEXP"
// "THEN" "WHEN" RPAREN COMMA PLUS MINUS STAR AMPERSAND BITOR OROP EQUAL
// EQUAL2 GREATER GREATEREQUAL LOWER LOWEREQUAL UNEQUAL UNEQUAL2 BITWISELEFT
// BITWISERIGHT SLASH PERCENT IN
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_25(_tokenSet_25_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_26_data_[] = { 402654848UL, 302123269UL, 4290445312UL, 463UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "AND" "OR" "ELSE" "END" "GLOB" "LIKE" "IS" "MATCH" "REGEXP" "THEN"
// "WHEN" RPAREN COMMA PLUS MINUS STAR AMPERSAND BITOR OROP EQUAL EQUAL2
// GREATER GREATEREQUAL LOWER LOWEREQUAL UNEQUAL UNEQUAL2 BITWISELEFT BITWISERIGHT
// SLASH PERCENT IN
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_26(_tokenSet_26_data_,8);
// BITWISERIGHT SLASH PERCENT
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_27(_tokenSet_27_data_,8);
const unsigned long Sqlite3Parser::_tokenSet_28_data_[] = { 410875520UL, 738704965UL, 4294414080UL, 415UL, 0UL, 0UL, 0UL, 0UL };
// "AS" "AND" "OR" "CASE" "CAST" "CHECK" "COLLATE" "CONSTRAINT" "CURRENT_TIME"
// "CURRENT_DATE" "CURRENT_TIMESTAMP" "DEFAULT" "ELSE" "END" "GLOB" "LIKE"
// "IN" "IS" "NOT" "NULL" "MATCH" "EXISTS" "PRIMARY" "RAISE" "REFERENCES"
// "REGEXP" "THEN" "UNIQUE" "WHEN" ID QUOTEDID QUOTEDLITERAL NUMERIC STRINGLITERAL
// LPAREN RPAREN COMMA PLUS MINUS STAR TILDE AMPERSAND BITOR OROP EQUAL
// EQUAL2 GREATER GREATEREQUAL LOWER LOWEREQUAL UNEQUAL UNEQUAL2 BITWISELEFT
// BITWISERIGHT SLASH PERCENT
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Parser::_tokenSet_28(_tokenSet_28_data_,8);

View File

@@ -2,7 +2,7 @@
#define INC_Sqlite3Parser_hpp_
#include <antlr/config.hpp>
/* $ANTLR 2.7.7 (20130425): "sqlite3.g" -> "Sqlite3Parser.hpp"$ */
/* $ANTLR 2.7.7 (20140222): "sqlite3.g" -> "Sqlite3Parser.hpp"$ */
#include <antlr/TokenStream.hpp>
#include <antlr/TokenBuffer.hpp>
#include "sqlite3TokenTypes.hpp"
@@ -137,6 +137,10 @@ private:
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_25;
static const unsigned long _tokenSet_26_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_26;
static const unsigned long _tokenSet_27_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_27;
static const unsigned long _tokenSet_28_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_28;
};
#endif /*INC_Sqlite3Parser_hpp_*/

View File

@@ -47,6 +47,7 @@ tokens {
TABLE="TABLE";
IF_T="IF";
IGNORE="IGNORE";
IN="IN";
INITIALLY="INITIALLY";
IMMEDIATE="IMMEDIATE";
IS="IS";
@@ -430,7 +431,7 @@ suffixexpr
// | (NOT)?
// ( (LIKE | GLOB | REGEXP | MATCH)
// ( (expr ESCAPE) => ESCAPE expr | expr)
// | IN ( LPAREN (selectstmt | expr (COMMA expr)* )? RPAREN | tablename)
| IN ( LPAREN (selectstmt | expr (COMMA expr)* )? RPAREN | tablename)
// )
;

View File

@@ -1,7 +1,7 @@
#ifndef INC_sqlite3TokenTypes_hpp_
#define INC_sqlite3TokenTypes_hpp_
/* $ANTLR 2.7.7 (20130425): "sqlite3.g" -> "sqlite3TokenTypes.hpp"$ */
/* $ANTLR 2.7.7 (20140222): "sqlite3.g" -> "sqlite3TokenTypes.hpp"$ */
#ifndef CUSTOM_API
# define CUSTOM_API
@@ -46,73 +46,73 @@ struct CUSTOM_API sqlite3TokenTypes {
TABLE = 35,
IF_T = 36,
IGNORE = 37,
INITIALLY = 38,
IMMEDIATE = 39,
IS = 40,
NOT = 41,
NULL_T = 42,
MATCH = 43,
EXISTS = 44,
ON = 45,
PRIMARY = 46,
RAISE = 47,
REFERENCES = 48,
REGEXP = 49,
REPLACE = 50,
RESTRICT = 51,
ROLLBACK = 52,
ROWID = 53,
SET = 54,
TEMPORARY = 55,
TEMP = 56,
THEN = 57,
UNIQUE = 58,
UPDATE = 59,
WHEN = 60,
WITHOUT = 61,
TYPE_NAME = 62,
COLUMNDEF = 63,
COLUMNCONSTRAINT = 64,
TABLECONSTRAINT = 65,
CREATETABLE = 66,
KEYWORDASTABLENAME = 67,
KEYWORDASCOLUMNNAME = 68,
DIGIT = 69,
DOT = 70,
ID = 71,
QUOTEDID = 72,
QUOTEDLITERAL = 73,
NUMERIC = 74,
NL = 75,
COMMENT = 76,
WS = 77,
STRINGLITERAL = 78,
LPAREN = 79,
RPAREN = 80,
COMMA = 81,
SEMI = 82,
PLUS = 83,
MINUS = 84,
STAR = 85,
TILDE = 86,
AMPERSAND = 87,
BITOR = 88,
OROP = 89,
EQUAL = 90,
EQUAL2 = 91,
GREATER = 92,
GREATEREQUAL = 93,
LOWER = 94,
LOWEREQUAL = 95,
UNEQUAL = 96,
UNEQUAL2 = 97,
BITWISELEFT = 98,
BITWISERIGHT = 99,
NO = 100,
SELECT = 101,
SLASH = 102,
PERCENT = 103,
IN = 104,
IN = 38,
INITIALLY = 39,
IMMEDIATE = 40,
IS = 41,
NOT = 42,
NULL_T = 43,
MATCH = 44,
EXISTS = 45,
ON = 46,
PRIMARY = 47,
RAISE = 48,
REFERENCES = 49,
REGEXP = 50,
REPLACE = 51,
RESTRICT = 52,
ROLLBACK = 53,
ROWID = 54,
SET = 55,
TEMPORARY = 56,
TEMP = 57,
THEN = 58,
UNIQUE = 59,
UPDATE = 60,
WHEN = 61,
WITHOUT = 62,
TYPE_NAME = 63,
COLUMNDEF = 64,
COLUMNCONSTRAINT = 65,
TABLECONSTRAINT = 66,
CREATETABLE = 67,
KEYWORDASTABLENAME = 68,
KEYWORDASCOLUMNNAME = 69,
DIGIT = 70,
DOT = 71,
ID = 72,
QUOTEDID = 73,
QUOTEDLITERAL = 74,
NUMERIC = 75,
NL = 76,
COMMENT = 77,
WS = 78,
STRINGLITERAL = 79,
LPAREN = 80,
RPAREN = 81,
COMMA = 82,
SEMI = 83,
PLUS = 84,
MINUS = 85,
STAR = 86,
TILDE = 87,
AMPERSAND = 88,
BITOR = 89,
OROP = 90,
EQUAL = 91,
EQUAL2 = 92,
GREATER = 93,
GREATEREQUAL = 94,
LOWER = 95,
LOWEREQUAL = 96,
UNEQUAL = 97,
UNEQUAL2 = 98,
BITWISELEFT = 99,
BITWISERIGHT = 100,
NO = 101,
SELECT = 102,
SLASH = 103,
PERCENT = 104,
NULL_TREE_LOOKAHEAD = 3
};
#ifdef __cplusplus