mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-20 02:50:46 -06:00
fix all warnings in the grammar and some bugs
literals were case sensitive so lower keywords broke parsing
This commit is contained in:
@@ -28,42 +28,44 @@ Sqlite3Lexer::Sqlite3Lexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState
|
||||
|
||||
void Sqlite3Lexer::initLiterals()
|
||||
{
|
||||
literals["DEFAULT"] = 16;
|
||||
literals["IF"] = 25;
|
||||
literals["CURRENT_DATE"] = 14;
|
||||
literals["LIKE"] = 23;
|
||||
literals["DEFAULT"] = 18;
|
||||
literals["IF"] = 27;
|
||||
literals["CURRENT_DATE"] = 16;
|
||||
literals["LIKE"] = 25;
|
||||
literals["AS"] = 5;
|
||||
literals["TEMPORARY"] = 35;
|
||||
literals["UNIQUE"] = 38;
|
||||
literals["CHECK"] = 8;
|
||||
literals["COLLATE"] = 10;
|
||||
literals["NOT"] = 27;
|
||||
literals["ELSE"] = 18;
|
||||
literals["REFERENCES"] = 33;
|
||||
literals["CREATE"] = 9;
|
||||
literals["THEN"] = 37;
|
||||
literals["EXISTS"] = 30;
|
||||
literals["CASE"] = 7;
|
||||
literals["REGEXP"] = 34;
|
||||
literals["ON"] = 31;
|
||||
literals["CURRENT_TIME"] = 13;
|
||||
literals["GLOB"] = 21;
|
||||
literals["CURRENT_TIMESTAMP"] = 15;
|
||||
literals["TEMPORARY"] = 37;
|
||||
literals["UNIQUE"] = 40;
|
||||
literals["CHECK"] = 10;
|
||||
literals["COLLATE"] = 12;
|
||||
literals["NOT"] = 29;
|
||||
literals["ELSE"] = 20;
|
||||
literals["REFERENCES"] = 35;
|
||||
literals["THEN"] = 39;
|
||||
literals["CREATE"] = 11;
|
||||
literals["EXISTS"] = 32;
|
||||
literals["CASE"] = 9;
|
||||
literals["REGEXP"] = 36;
|
||||
literals["ON"] = 33;
|
||||
literals["CURRENT_TIME"] = 15;
|
||||
literals["GLOB"] = 23;
|
||||
literals["CURRENT_TIMESTAMP"] = 17;
|
||||
literals["AND"] = 7;
|
||||
literals["ASC"] = 6;
|
||||
literals["ESCAPE"] = 20;
|
||||
literals["DESC"] = 17;
|
||||
literals["TABLE"] = 24;
|
||||
literals["TEMP"] = 36;
|
||||
literals["END"] = 19;
|
||||
literals["KEY"] = 22;
|
||||
literals["WHEN"] = 39;
|
||||
literals["CONSTRAINT"] = 12;
|
||||
literals["MATCH"] = 29;
|
||||
literals["ESCAPE"] = 22;
|
||||
literals["DESC"] = 19;
|
||||
literals["TABLE"] = 26;
|
||||
literals["TEMP"] = 38;
|
||||
literals["END"] = 21;
|
||||
literals["KEY"] = 24;
|
||||
literals["WHEN"] = 41;
|
||||
literals["CONSTRAINT"] = 14;
|
||||
literals["MATCH"] = 31;
|
||||
literals["OR"] = 8;
|
||||
literals["AUTOINCREMENT"] = 4;
|
||||
literals["IS"] = 26;
|
||||
literals["NULL"] = 28;
|
||||
literals["CONFLICT"] = 11;
|
||||
literals["PRIMARY"] = 32;
|
||||
literals["IS"] = 28;
|
||||
literals["NULL"] = 30;
|
||||
literals["CONFLICT"] = 13;
|
||||
literals["PRIMARY"] = 34;
|
||||
}
|
||||
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken Sqlite3Lexer::nextToken()
|
||||
@@ -143,8 +145,15 @@ ANTLR_USE_NAMESPACE(antlr)RefToken Sqlite3Lexer::nextToken()
|
||||
theRetToken=_returnToken;
|
||||
break;
|
||||
}
|
||||
case 0x2f /* '/' */ :
|
||||
{
|
||||
mCOMMENT(true);
|
||||
theRetToken=_returnToken;
|
||||
break;
|
||||
}
|
||||
case 0x9 /* '\t' */ :
|
||||
case 0xa /* '\n' */ :
|
||||
case 0xc /* '\14' */ :
|
||||
case 0xd /* '\r' */ :
|
||||
case 0x20 /* ' ' */ :
|
||||
{
|
||||
@@ -154,7 +163,7 @@ ANTLR_USE_NAMESPACE(antlr)RefToken Sqlite3Lexer::nextToken()
|
||||
}
|
||||
case 0x27 /* '\'' */ :
|
||||
{
|
||||
mSTRING(true);
|
||||
mSTRINGLITERAL(true);
|
||||
theRetToken=_returnToken;
|
||||
break;
|
||||
}
|
||||
@@ -207,15 +216,7 @@ ANTLR_USE_NAMESPACE(antlr)RefToken Sqlite3Lexer::nextToken()
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if ((LA(1) == 0x2f /* '/' */ ) && (LA(2) == 0x2f /* '/' */ )) {
|
||||
mSL_COMMENT(true);
|
||||
theRetToken=_returnToken;
|
||||
}
|
||||
else if ((LA(1) == 0x2f /* '/' */ ) && (LA(2) == 0x2a /* '*' */ )) {
|
||||
mML_COMMENT(true);
|
||||
theRetToken=_returnToken;
|
||||
}
|
||||
else if ((LA(1) == 0x7c /* '|' */ ) && (LA(2) == 0x7c /* '|' */ )) {
|
||||
if ((LA(1) == 0x7c /* '|' */ ) && (LA(2) == 0x7c /* '|' */ )) {
|
||||
mOROP(true);
|
||||
theRetToken=_returnToken;
|
||||
}
|
||||
@@ -680,26 +681,30 @@ void Sqlite3Lexer::mMINUS(bool _createToken) {
|
||||
_saveIndex=0;
|
||||
}
|
||||
|
||||
void Sqlite3Lexer::mSL_COMMENT(bool _createToken) {
|
||||
void Sqlite3Lexer::mNL(bool _createToken) {
|
||||
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
|
||||
_ttype = SL_COMMENT;
|
||||
_ttype = NL;
|
||||
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
|
||||
|
||||
match("//");
|
||||
{ // ( ... )*
|
||||
for (;;) {
|
||||
if ((_tokenSet_3.member(LA(1)))) {
|
||||
matchNot('\n' /* charlit */ );
|
||||
}
|
||||
else {
|
||||
goto _loop32;
|
||||
}
|
||||
|
||||
{
|
||||
switch ( LA(1)) {
|
||||
case 0xd /* '\r' */ :
|
||||
{
|
||||
match('\r' /* charlit */ );
|
||||
break;
|
||||
}
|
||||
case 0xa /* '\n' */ :
|
||||
{
|
||||
match('\n' /* charlit */ );
|
||||
newline();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
|
||||
}
|
||||
}
|
||||
}
|
||||
_loop32:;
|
||||
} // ( ... )*
|
||||
match('\n' /* charlit */ );
|
||||
_ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; newline();
|
||||
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));
|
||||
@@ -708,165 +713,60 @@ void Sqlite3Lexer::mSL_COMMENT(bool _createToken) {
|
||||
_saveIndex=0;
|
||||
}
|
||||
|
||||
void Sqlite3Lexer::mML_COMMENT(bool _createToken) {
|
||||
void Sqlite3Lexer::mCOMMENT(bool _createToken) {
|
||||
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
|
||||
_ttype = ML_COMMENT;
|
||||
_ttype = COMMENT;
|
||||
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
|
||||
|
||||
match("/*");
|
||||
{ // ( ... )*
|
||||
for (;;) {
|
||||
switch ( LA(1)) {
|
||||
case 0xa /* '\n' */ :
|
||||
{
|
||||
match('\n' /* charlit */ );
|
||||
newline();
|
||||
break;
|
||||
}
|
||||
case 0x0 /* '\0' */ :
|
||||
case 0x1 /* '\1' */ :
|
||||
case 0x2 /* '\2' */ :
|
||||
case 0x3 /* '\3' */ :
|
||||
case 0x4 /* '\4' */ :
|
||||
case 0x5 /* '\5' */ :
|
||||
case 0x6 /* '\6' */ :
|
||||
case 0x7 /* '\7' */ :
|
||||
case 0x8 /* '\10' */ :
|
||||
case 0x9 /* '\t' */ :
|
||||
case 0xb /* '\13' */ :
|
||||
case 0xc /* '\14' */ :
|
||||
case 0xd /* '\r' */ :
|
||||
case 0xe /* '\16' */ :
|
||||
case 0xf /* '\17' */ :
|
||||
case 0x10 /* '\20' */ :
|
||||
case 0x11 /* '\21' */ :
|
||||
case 0x12 /* '\22' */ :
|
||||
case 0x13 /* '\23' */ :
|
||||
case 0x14 /* '\24' */ :
|
||||
case 0x15 /* '\25' */ :
|
||||
case 0x16 /* '\26' */ :
|
||||
case 0x17 /* '\27' */ :
|
||||
case 0x18 /* '\30' */ :
|
||||
case 0x19 /* '\31' */ :
|
||||
case 0x1a /* '\32' */ :
|
||||
case 0x1b /* '\33' */ :
|
||||
case 0x1c /* '\34' */ :
|
||||
case 0x1d /* '\35' */ :
|
||||
case 0x1e /* '\36' */ :
|
||||
case 0x1f /* '\37' */ :
|
||||
case 0x20 /* ' ' */ :
|
||||
case 0x21 /* '!' */ :
|
||||
case 0x22 /* '\"' */ :
|
||||
case 0x23 /* '#' */ :
|
||||
case 0x24 /* '$' */ :
|
||||
case 0x25 /* '%' */ :
|
||||
case 0x26 /* '&' */ :
|
||||
case 0x27 /* '\'' */ :
|
||||
case 0x28 /* '(' */ :
|
||||
case 0x29 /* ')' */ :
|
||||
case 0x2b /* '+' */ :
|
||||
case 0x2c /* ',' */ :
|
||||
case 0x2d /* '-' */ :
|
||||
case 0x2e /* '.' */ :
|
||||
case 0x2f /* '/' */ :
|
||||
case 0x30 /* '0' */ :
|
||||
case 0x31 /* '1' */ :
|
||||
case 0x32 /* '2' */ :
|
||||
case 0x33 /* '3' */ :
|
||||
case 0x34 /* '4' */ :
|
||||
case 0x35 /* '5' */ :
|
||||
case 0x36 /* '6' */ :
|
||||
case 0x37 /* '7' */ :
|
||||
case 0x38 /* '8' */ :
|
||||
case 0x39 /* '9' */ :
|
||||
case 0x3a /* ':' */ :
|
||||
case 0x3b /* ';' */ :
|
||||
case 0x3c /* '<' */ :
|
||||
case 0x3d /* '=' */ :
|
||||
case 0x3e /* '>' */ :
|
||||
case 0x3f /* '?' */ :
|
||||
case 0x40 /* '@' */ :
|
||||
case 0x41 /* 'A' */ :
|
||||
case 0x42 /* 'B' */ :
|
||||
case 0x43 /* 'C' */ :
|
||||
case 0x44 /* 'D' */ :
|
||||
case 0x45 /* 'E' */ :
|
||||
case 0x46 /* 'F' */ :
|
||||
case 0x47 /* 'G' */ :
|
||||
case 0x48 /* 'H' */ :
|
||||
case 0x49 /* 'I' */ :
|
||||
case 0x4a /* 'J' */ :
|
||||
case 0x4b /* 'K' */ :
|
||||
case 0x4c /* 'L' */ :
|
||||
case 0x4d /* 'M' */ :
|
||||
case 0x4e /* 'N' */ :
|
||||
case 0x4f /* 'O' */ :
|
||||
case 0x50 /* 'P' */ :
|
||||
case 0x51 /* 'Q' */ :
|
||||
case 0x52 /* 'R' */ :
|
||||
case 0x53 /* 'S' */ :
|
||||
case 0x54 /* 'T' */ :
|
||||
case 0x55 /* 'U' */ :
|
||||
case 0x56 /* 'V' */ :
|
||||
case 0x57 /* 'W' */ :
|
||||
case 0x58 /* 'X' */ :
|
||||
case 0x59 /* 'Y' */ :
|
||||
case 0x5a /* 'Z' */ :
|
||||
case 0x5b /* '[' */ :
|
||||
case 0x5c /* '\\' */ :
|
||||
case 0x5d /* ']' */ :
|
||||
case 0x5e /* '^' */ :
|
||||
case 0x5f /* '_' */ :
|
||||
case 0x60 /* '`' */ :
|
||||
case 0x61 /* 'a' */ :
|
||||
case 0x62 /* 'b' */ :
|
||||
case 0x63 /* 'c' */ :
|
||||
case 0x64 /* 'd' */ :
|
||||
case 0x65 /* 'e' */ :
|
||||
case 0x66 /* 'f' */ :
|
||||
case 0x67 /* 'g' */ :
|
||||
case 0x68 /* 'h' */ :
|
||||
case 0x69 /* 'i' */ :
|
||||
case 0x6a /* 'j' */ :
|
||||
case 0x6b /* 'k' */ :
|
||||
case 0x6c /* 'l' */ :
|
||||
case 0x6d /* 'm' */ :
|
||||
case 0x6e /* 'n' */ :
|
||||
case 0x6f /* 'o' */ :
|
||||
case 0x70 /* 'p' */ :
|
||||
case 0x71 /* 'q' */ :
|
||||
case 0x72 /* 'r' */ :
|
||||
case 0x73 /* 's' */ :
|
||||
case 0x74 /* 't' */ :
|
||||
case 0x75 /* 'u' */ :
|
||||
case 0x76 /* 'v' */ :
|
||||
case 0x77 /* 'w' */ :
|
||||
case 0x78 /* 'x' */ :
|
||||
case 0x79 /* 'y' */ :
|
||||
case 0x7a /* 'z' */ :
|
||||
case 0x7b /* '{' */ :
|
||||
case 0x7c /* '|' */ :
|
||||
case 0x7d /* '}' */ :
|
||||
case 0x7e /* '~' */ :
|
||||
case 0x7f:
|
||||
{
|
||||
{
|
||||
match(_tokenSet_4);
|
||||
{
|
||||
if ((LA(1) == 0x2f /* '/' */ ) && (LA(2) == 0x2f /* '/' */ )) {
|
||||
match("//");
|
||||
{ // ( ... )*
|
||||
for (;;) {
|
||||
if ((_tokenSet_3.member(LA(1)))) {
|
||||
{
|
||||
match(_tokenSet_3);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (((LA(1) == 0x2a /* '*' */ ) && ((LA(2) >= 0x0 /* '\0' */ && LA(2) <= 0x7f)))&&( LA(2)!='/' )) {
|
||||
match('*' /* charlit */ );
|
||||
else {
|
||||
goto _loop36;
|
||||
}
|
||||
else {
|
||||
goto _loop36;
|
||||
}
|
||||
|
||||
}
|
||||
_loop36:;
|
||||
} // ( ... )*
|
||||
mNL(false);
|
||||
newline();
|
||||
}
|
||||
else if ((LA(1) == 0x2f /* '/' */ ) && (LA(2) == 0x2a /* '*' */ )) {
|
||||
match("/*");
|
||||
{ // ( ... )*
|
||||
for (;;) {
|
||||
// nongreedy exit test
|
||||
if ((LA(1) == 0x2a /* '*' */ ) && (LA(2) == 0x2f /* '/' */ )) goto _loop39;
|
||||
if ((_tokenSet_3.member(LA(1))) && ((LA(2) >= 0x0 /* '\0' */ && LA(2) <= 0x7f))) {
|
||||
{
|
||||
match(_tokenSet_3);
|
||||
}
|
||||
}
|
||||
else if ((LA(1) == 0xa /* '\n' */ || LA(1) == 0xd /* '\r' */ )) {
|
||||
mNL(false);
|
||||
newline();
|
||||
}
|
||||
else {
|
||||
goto _loop39;
|
||||
}
|
||||
|
||||
}
|
||||
_loop39:;
|
||||
} // ( ... )*
|
||||
match("*/");
|
||||
}
|
||||
else {
|
||||
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
|
||||
}
|
||||
|
||||
}
|
||||
_loop36:;
|
||||
} // ( ... )*
|
||||
match("*/");
|
||||
_ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
_token = makeToken(_ttype);
|
||||
@@ -893,15 +793,15 @@ void Sqlite3Lexer::mWS(bool _createToken) {
|
||||
match('\t' /* charlit */ );
|
||||
break;
|
||||
}
|
||||
case 0xd /* '\r' */ :
|
||||
case 0xc /* '\14' */ :
|
||||
{
|
||||
match('\r' /* charlit */ );
|
||||
match('\14' /* charlit */ );
|
||||
break;
|
||||
}
|
||||
case 0xa /* '\n' */ :
|
||||
case 0xd /* '\r' */ :
|
||||
{
|
||||
match('\n' /* charlit */ );
|
||||
newline();
|
||||
mNL(false);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -919,25 +819,25 @@ void Sqlite3Lexer::mWS(bool _createToken) {
|
||||
_saveIndex=0;
|
||||
}
|
||||
|
||||
void Sqlite3Lexer::mSTRING(bool _createToken) {
|
||||
void Sqlite3Lexer::mSTRINGLITERAL(bool _createToken) {
|
||||
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
|
||||
_ttype = STRING;
|
||||
_ttype = STRINGLITERAL;
|
||||
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
|
||||
|
||||
match('\'' /* charlit */ );
|
||||
{ // ( ... )*
|
||||
for (;;) {
|
||||
if ((_tokenSet_5.member(LA(1)))) {
|
||||
if ((_tokenSet_4.member(LA(1)))) {
|
||||
{
|
||||
match(_tokenSet_5);
|
||||
match(_tokenSet_4);
|
||||
}
|
||||
}
|
||||
else {
|
||||
goto _loop42;
|
||||
goto _loop45;
|
||||
}
|
||||
|
||||
}
|
||||
_loop42:;
|
||||
_loop45:;
|
||||
} // ( ... )*
|
||||
match('\'' /* charlit */ );
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
@@ -1236,25 +1136,18 @@ const unsigned long Sqlite3Lexer::_tokenSet_2_data_[] = { 4294967295UL, 42949672
|
||||
// @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ `
|
||||
// a b c d
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Lexer::_tokenSet_2(_tokenSet_2_data_,8);
|
||||
const unsigned long Sqlite3Lexer::_tokenSet_3_data_[] = { 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL };
|
||||
// 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xd 0xe 0xf 0x10 0x11
|
||||
// 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f
|
||||
// ! \" # $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
|
||||
// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ ` a
|
||||
// b c d
|
||||
const unsigned long Sqlite3Lexer::_tokenSet_3_data_[] = { 4294958079UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL };
|
||||
// 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12
|
||||
// 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f !
|
||||
// \" # $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B
|
||||
// C D E F G H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ ` a b c
|
||||
// d
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Lexer::_tokenSet_3(_tokenSet_3_data_,8);
|
||||
const unsigned long Sqlite3Lexer::_tokenSet_4_data_[] = { 4294966271UL, 4294966271UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL };
|
||||
// 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xd 0xe 0xf 0x10 0x11
|
||||
// 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f
|
||||
// ! \" # $ % & \' ( ) + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A
|
||||
// B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ ` a b
|
||||
// c d
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Lexer::_tokenSet_4(_tokenSet_4_data_,8);
|
||||
const unsigned long Sqlite3Lexer::_tokenSet_5_data_[] = { 4294967295UL, 4294967167UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL };
|
||||
const unsigned long Sqlite3Lexer::_tokenSet_4_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 ! \" # $ % & ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
|
||||
// @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ `
|
||||
// a b c d
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Lexer::_tokenSet_5(_tokenSet_5_data_,8);
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet Sqlite3Lexer::_tokenSet_4(_tokenSet_4_data_,8);
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ private:
|
||||
public:
|
||||
bool getCaseSensitiveLiterals() const
|
||||
{
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
public:
|
||||
Sqlite3Lexer(ANTLR_USE_NAMESPACE(std)istream& in);
|
||||
@@ -29,10 +29,10 @@ public:
|
||||
public: void mNUMERIC(bool _createToken);
|
||||
public: void mPLUS(bool _createToken);
|
||||
public: void mMINUS(bool _createToken);
|
||||
public: void mSL_COMMENT(bool _createToken);
|
||||
public: void mML_COMMENT(bool _createToken);
|
||||
protected: void mNL(bool _createToken);
|
||||
public: void mCOMMENT(bool _createToken);
|
||||
public: void mWS(bool _createToken);
|
||||
public: void mSTRING(bool _createToken);
|
||||
public: void mSTRINGLITERAL(bool _createToken);
|
||||
public: void mLPAREN(bool _createToken);
|
||||
public: void mRPAREN(bool _createToken);
|
||||
public: void mCOMMA(bool _createToken);
|
||||
@@ -64,8 +64,6 @@ private:
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_3;
|
||||
static const unsigned long _tokenSet_4_data_[];
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_4;
|
||||
static const unsigned long _tokenSet_5_data_[];
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_5;
|
||||
};
|
||||
|
||||
#endif /*INC_Sqlite3Lexer_hpp_*/
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -58,8 +58,9 @@ public:
|
||||
public: void functionname();
|
||||
public: void subexpr();
|
||||
public: void binaryoperator();
|
||||
public: void unaryoperator();
|
||||
public: void literalvalue();
|
||||
public: void castexpr();
|
||||
public: void caseexpr();
|
||||
public: void raisefunction();
|
||||
public: void suffixexpr();
|
||||
public:
|
||||
@@ -124,14 +125,6 @@ private:
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_20;
|
||||
static const unsigned long _tokenSet_21_data_[];
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_21;
|
||||
static const unsigned long _tokenSet_22_data_[];
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_22;
|
||||
static const unsigned long _tokenSet_23_data_[];
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_23;
|
||||
static const unsigned long _tokenSet_24_data_[];
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_24;
|
||||
static const unsigned long _tokenSet_25_data_[];
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_25;
|
||||
};
|
||||
|
||||
#endif /*INC_Sqlite3Parser_hpp_*/
|
||||
|
||||
@@ -8,12 +8,15 @@ options {
|
||||
k=2;
|
||||
exportVocab=sqlite3;
|
||||
caseSensitive=false;
|
||||
caseSensitiveLiterals=false;
|
||||
}
|
||||
|
||||
tokens {
|
||||
AUTOINCREMENT="AUTOINCREMENT";
|
||||
AS="AS";
|
||||
ASC="ASC";
|
||||
AND="AND";
|
||||
OR="OR";
|
||||
CASE_T="CASE";
|
||||
CHECK="CHECK";
|
||||
CREATE="CREATE";
|
||||
@@ -79,31 +82,25 @@ NUMERIC
|
||||
( 'e' (PLUS|MINUS)? (DIGIT)+ )?
|
||||
;
|
||||
|
||||
SL_COMMENT
|
||||
:
|
||||
"//" (~'\n')* '\n' { _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; newline(); }
|
||||
;
|
||||
protected
|
||||
NL :
|
||||
( '\r'
|
||||
| '\n' {newline();}
|
||||
);
|
||||
|
||||
ML_COMMENT
|
||||
: "/*"
|
||||
( { LA(2)!='/' }? '*'
|
||||
| '\n' { newline(); }
|
||||
| ~('*'|'\n')
|
||||
)*
|
||||
"*/"
|
||||
{$setType(ANTLR_USE_NAMESPACE(antlr)Token::SKIP);}
|
||||
;
|
||||
COMMENT :
|
||||
( "//" (~('\n'|'\r'))* NL {newline();} // single line comment
|
||||
| "/*" ( options{greedy=false;} : NL {newline();} | ~('\n'|'\r') )* "*/" // multi-line comment
|
||||
) { $setType(ANTLR_USE_NAMESPACE(antlr)Token::SKIP); };
|
||||
|
||||
WS
|
||||
:
|
||||
( ' '
|
||||
| '\t'
|
||||
| '\r'
|
||||
| '\n' {newline();}
|
||||
) { _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; }
|
||||
;
|
||||
WS :
|
||||
( ' '
|
||||
| '\t'
|
||||
| '\f'
|
||||
| NL
|
||||
) { $setType(ANTLR_USE_NAMESPACE(antlr)Token::SKIP); };
|
||||
|
||||
STRING
|
||||
STRINGLITERAL
|
||||
:
|
||||
// '"' ( ESC_SEQ | ~('\\'|'"') )* '"'
|
||||
'\'' ( ~('\'') )* '\''
|
||||
@@ -224,7 +221,7 @@ columnconstraint
|
||||
| NOT NULL_T (conflictclause)?
|
||||
| UNIQUE (conflictclause)?
|
||||
| CHECK LPAREN expr RPAREN
|
||||
| DEFAULT (signednumber | STRING | LPAREN expr RPAREN)
|
||||
| DEFAULT (signednumber | STRINGLITERAL | LPAREN expr RPAREN)
|
||||
| COLLATE collationname
|
||||
| foreignkeyclause)
|
||||
{#columnconstraint = #([COLUMNCONSTRAINT, "COLUMNCONSTRAINT"], #columnconstraint);}
|
||||
@@ -267,7 +264,8 @@ foreignkeyclause
|
||||
)
|
||||
| MATCH name
|
||||
)*
|
||||
( (NOT)? DEFERRABLE (INITIALLY (DEFERRED | IMMEDIATE))? )?
|
||||
( (NOT DEFERRABLE) => NOT DEFERRABLE (INITIALLY (DEFERRED | IMMEDIATE))?
|
||||
| DEFERRABLE (INITIALLY (DEFERRED | IMMEDIATE) ) )?
|
||||
;
|
||||
|
||||
selectstmt
|
||||
@@ -279,39 +277,50 @@ functionname
|
||||
|
||||
expr
|
||||
:
|
||||
subexpr ( ( binaryoperator | AND | OR) subexpr )*
|
||||
// {#expr = #([EXPR, "EXPR"],#expr);}
|
||||
( subexpr (binaryoperator | AND | OR) ) => subexpr ( ( binaryoperator | AND | OR) subexpr )*
|
||||
| subexpr
|
||||
;
|
||||
|
||||
subexpr
|
||||
:
|
||||
(unaryoperator)?
|
||||
( MINUS | PLUS | TILDE | NOT)?
|
||||
( literalvalue
|
||||
// | bindparameter TODO
|
||||
| ((databasename DOT)? tablename)? columnname
|
||||
| functionname LPAREN (expr (COMMA expr)* )? RPAREN //TODO
|
||||
| CAST LPAREN expr AS type_name RPAREN
|
||||
| LPAREN expr RPAREN
|
||||
| ( (NOT)? EXISTS)? LPAREN selectstmt RPAREN
|
||||
| CASE_T (expr)? (WHEN expr THEN expr)+ (ELSE expr)? END
|
||||
| castexpr
|
||||
| (EXISTS)? LPAREN (expr | selectstmt) RPAREN
|
||||
| caseexpr
|
||||
| raisefunction
|
||||
)
|
||||
(suffixexpr)?
|
||||
;
|
||||
|
||||
castexpr
|
||||
:
|
||||
CAST LPAREN expr AS type_name RPAREN
|
||||
;
|
||||
|
||||
caseexpr
|
||||
:
|
||||
CASE_T (expr)? (WHEN expr THEN expr)+ (ELSE expr)? END
|
||||
;
|
||||
|
||||
suffixexpr
|
||||
:
|
||||
( COLLATE collationname
|
||||
| (NOT)?
|
||||
( (LIKE | GLOB | REGEXP | MATCH) expr (ESCAPE expr)?
|
||||
| IN ( LPAREN (selectstmt | expr (COMMA expr)* )? RPAREN | tablename)
|
||||
)
|
||||
)
|
||||
COLLATE collationname
|
||||
// | (NOT)?
|
||||
// ( (LIKE | GLOB | REGEXP | MATCH)
|
||||
// ( (expr ESCAPE) => ESCAPE expr | expr)
|
||||
// | IN ( LPAREN (selectstmt | expr (COMMA expr)* )? RPAREN | tablename)
|
||||
// )
|
||||
|
||||
;
|
||||
|
||||
literalvalue
|
||||
: signednumber
|
||||
| STRING
|
||||
:
|
||||
NUMERIC
|
||||
| STRINGLITERAL
|
||||
// | blob-literal
|
||||
| NULL_T
|
||||
| CURRENT_TIME
|
||||
@@ -320,9 +329,8 @@ literalvalue
|
||||
;
|
||||
|
||||
raisefunction
|
||||
: RAISE LPAREN ( IGNORE | (ROLLBACK | ABORT | FAIL) COMMA STRING ) RPAREN ;
|
||||
: RAISE LPAREN ( IGNORE | (ROLLBACK | ABORT | FAIL) COMMA STRINGLITERAL ) RPAREN ;
|
||||
|
||||
// TODO operators missing
|
||||
binaryoperator
|
||||
:
|
||||
OROP
|
||||
@@ -331,9 +339,6 @@ binaryoperator
|
||||
| BITWISELEFT | BITWISERIGHT | AMPERSAND | BITOR
|
||||
| LOWER | LOWEREQUAL | GREATER | GREATEREQUAL
|
||||
| EQUAL | EQUAL2 | UNEQUAL | UNEQUAL2
|
||||
| IS (NOT)? | IN | LIKE | GLOB | MATCH | REGEXP
|
||||
| IS | IN | LIKE | GLOB | MATCH | REGEXP
|
||||
;
|
||||
|
||||
unaryoperator
|
||||
: MINUS | PLUS | TILDE | NOT ;
|
||||
|
||||
|
||||
@@ -15,100 +15,100 @@ struct CUSTOM_API sqlite3TokenTypes {
|
||||
AUTOINCREMENT = 4,
|
||||
AS = 5,
|
||||
ASC = 6,
|
||||
CASE_T = 7,
|
||||
CHECK = 8,
|
||||
CREATE = 9,
|
||||
COLLATE = 10,
|
||||
CONFLICT = 11,
|
||||
CONSTRAINT = 12,
|
||||
CURRENT_TIME = 13,
|
||||
CURRENT_DATE = 14,
|
||||
CURRENT_TIMESTAMP = 15,
|
||||
DEFAULT = 16,
|
||||
DESC = 17,
|
||||
ELSE_T = 18,
|
||||
END = 19,
|
||||
ESCAPE = 20,
|
||||
GLOB = 21,
|
||||
KEY = 22,
|
||||
LIKE = 23,
|
||||
TABLE = 24,
|
||||
IF_T = 25,
|
||||
IS = 26,
|
||||
NOT = 27,
|
||||
NULL_T = 28,
|
||||
MATCH = 29,
|
||||
EXISTS = 30,
|
||||
ON = 31,
|
||||
PRIMARY = 32,
|
||||
REFERENCES = 33,
|
||||
REGEXP = 34,
|
||||
TEMPORARY = 35,
|
||||
TEMP = 36,
|
||||
THEN = 37,
|
||||
UNIQUE = 38,
|
||||
WHEN = 39,
|
||||
TYPE_NAME = 40,
|
||||
COLUMNDEF = 41,
|
||||
COLUMNCONSTRAINT = 42,
|
||||
TABLECONSTRAINT = 43,
|
||||
CREATETABLE = 44,
|
||||
DIGIT = 45,
|
||||
DOT = 46,
|
||||
ID = 47,
|
||||
QUOTEDID = 48,
|
||||
NUMERIC = 49,
|
||||
SL_COMMENT = 50,
|
||||
ML_COMMENT = 51,
|
||||
WS = 52,
|
||||
STRING = 53,
|
||||
LPAREN = 54,
|
||||
RPAREN = 55,
|
||||
COMMA = 56,
|
||||
SEMI = 57,
|
||||
PLUS = 58,
|
||||
MINUS = 59,
|
||||
STAR = 60,
|
||||
TILDE = 61,
|
||||
AMPERSAND = 62,
|
||||
BITOR = 63,
|
||||
OROP = 64,
|
||||
EQUAL = 65,
|
||||
EQUAL2 = 66,
|
||||
GREATER = 67,
|
||||
GREATEREQUAL = 68,
|
||||
LOWER = 69,
|
||||
LOWEREQUAL = 70,
|
||||
UNEQUAL = 71,
|
||||
UNEQUAL2 = 72,
|
||||
BITWISELEFT = 73,
|
||||
BITWISERIGHT = 74,
|
||||
FOREIGN = 75,
|
||||
ROLLBACK = 76,
|
||||
ABORT = 77,
|
||||
FAIL = 78,
|
||||
IGNORE = 79,
|
||||
REPLACE = 80,
|
||||
DELETE = 81,
|
||||
UPDATE = 82,
|
||||
SET = 83,
|
||||
CASCADE = 84,
|
||||
RESTRICT = 85,
|
||||
NO = 86,
|
||||
ACTION = 87,
|
||||
DEFERRABLE = 88,
|
||||
INITIALLY = 89,
|
||||
DEFERRED = 90,
|
||||
IMMEDIATE = 91,
|
||||
SELECT = 92,
|
||||
AND = 93,
|
||||
OR = 94,
|
||||
AND = 7,
|
||||
OR = 8,
|
||||
CASE_T = 9,
|
||||
CHECK = 10,
|
||||
CREATE = 11,
|
||||
COLLATE = 12,
|
||||
CONFLICT = 13,
|
||||
CONSTRAINT = 14,
|
||||
CURRENT_TIME = 15,
|
||||
CURRENT_DATE = 16,
|
||||
CURRENT_TIMESTAMP = 17,
|
||||
DEFAULT = 18,
|
||||
DESC = 19,
|
||||
ELSE_T = 20,
|
||||
END = 21,
|
||||
ESCAPE = 22,
|
||||
GLOB = 23,
|
||||
KEY = 24,
|
||||
LIKE = 25,
|
||||
TABLE = 26,
|
||||
IF_T = 27,
|
||||
IS = 28,
|
||||
NOT = 29,
|
||||
NULL_T = 30,
|
||||
MATCH = 31,
|
||||
EXISTS = 32,
|
||||
ON = 33,
|
||||
PRIMARY = 34,
|
||||
REFERENCES = 35,
|
||||
REGEXP = 36,
|
||||
TEMPORARY = 37,
|
||||
TEMP = 38,
|
||||
THEN = 39,
|
||||
UNIQUE = 40,
|
||||
WHEN = 41,
|
||||
TYPE_NAME = 42,
|
||||
COLUMNDEF = 43,
|
||||
COLUMNCONSTRAINT = 44,
|
||||
TABLECONSTRAINT = 45,
|
||||
CREATETABLE = 46,
|
||||
DIGIT = 47,
|
||||
DOT = 48,
|
||||
ID = 49,
|
||||
QUOTEDID = 50,
|
||||
NUMERIC = 51,
|
||||
NL = 52,
|
||||
COMMENT = 53,
|
||||
WS = 54,
|
||||
STRINGLITERAL = 55,
|
||||
LPAREN = 56,
|
||||
RPAREN = 57,
|
||||
COMMA = 58,
|
||||
SEMI = 59,
|
||||
PLUS = 60,
|
||||
MINUS = 61,
|
||||
STAR = 62,
|
||||
TILDE = 63,
|
||||
AMPERSAND = 64,
|
||||
BITOR = 65,
|
||||
OROP = 66,
|
||||
EQUAL = 67,
|
||||
EQUAL2 = 68,
|
||||
GREATER = 69,
|
||||
GREATEREQUAL = 70,
|
||||
LOWER = 71,
|
||||
LOWEREQUAL = 72,
|
||||
UNEQUAL = 73,
|
||||
UNEQUAL2 = 74,
|
||||
BITWISELEFT = 75,
|
||||
BITWISERIGHT = 76,
|
||||
FOREIGN = 77,
|
||||
ROLLBACK = 78,
|
||||
ABORT = 79,
|
||||
FAIL = 80,
|
||||
IGNORE = 81,
|
||||
REPLACE = 82,
|
||||
DELETE = 83,
|
||||
UPDATE = 84,
|
||||
SET = 85,
|
||||
CASCADE = 86,
|
||||
RESTRICT = 87,
|
||||
NO = 88,
|
||||
ACTION = 89,
|
||||
DEFERRABLE = 90,
|
||||
INITIALLY = 91,
|
||||
DEFERRED = 92,
|
||||
IMMEDIATE = 93,
|
||||
SELECT = 94,
|
||||
CAST = 95,
|
||||
ELSE = 96,
|
||||
IN = 97,
|
||||
RAISE = 98,
|
||||
SLASH = 99,
|
||||
PERCENT = 100,
|
||||
RAISE = 97,
|
||||
SLASH = 98,
|
||||
PERCENT = 99,
|
||||
IN = 100,
|
||||
NULL_TREE_LOOKAHEAD = 3
|
||||
};
|
||||
#ifdef __cplusplus
|
||||
|
||||
Reference in New Issue
Block a user