merge in nbui updates

This commit is contained in:
Jonathan Shook 2020-08-06 14:28:47 -05:00
parent a42038cab5
commit b3ca71b570
24 changed files with 56425 additions and 1638 deletions

View File

@ -0,0 +1,479 @@
grammar CQL3;
// workaround for:
// https://github.com/antlr/antlr4/issues/118
//random_wrapper
// : statements EOF
// ;
statements
: statement ( ';'+ statement )* ';'+
;
statement
: drop_keyspace_stmt
| create_keyspace_stmt
| alter_keyspace_stmt
| use_stmt
| create_table_stmt
| alter_table_stmt
| drop_table_stmt
| truncate_table_stmt
| create_index_stmt
| drop_index_stmt
| insert_stmt
| update_stmt
| delete_stmt
| batch_stmt
;
dml_statements
: dml_statement (';'+ dml_statement)* ';'+
;
dml_statement
: insert_stmt
| update_stmt
| delete_stmt
;
create_keyspace_stmt
: K_CREATE K_KEYSPACE if_not_exists? keyspace_name K_WITH properties
;
alter_keyspace_stmt
: K_ALTER K_KEYSPACE keyspace_name K_WITH properties
;
drop_keyspace_stmt
: K_DROP K_KEYSPACE if_exists? keyspace_name
;
use_stmt
: K_USE keyspace_name
;
create_table_stmt
: K_CREATE (K_TABLE | K_COLUMNFAMILY) if_not_exists? table_name column_definitions (K_WITH table_options)?
;
alter_table_stmt
: K_ALTER (K_TABLE | K_COLUMNFAMILY) table_name alter_table_instruction
;
alter_table_instruction
: K_ALTER column_name K_TYPE column_type
| K_ADD column_name column_type
| K_DROP column_name
| K_WITH table_options
;
drop_table_stmt
: K_DROP K_TABLE if_exists? table_name
;
truncate_table_stmt
: K_TRUNCATE table_name
;
create_index_stmt
: K_CREATE (K_CUSTOM)? K_INDEX if_not_exists? index_name? K_ON table_name '(' column_name ')'
(K_USING index_class (K_WITH index_options)?)?
;
drop_index_stmt
: K_DROP K_INDEX if_exists? index_name
;
insert_stmt
: K_INSERT K_INTO table_name column_names K_VALUES column_values if_not_exists? upsert_options?
;
column_names
: '(' column_name (',' column_name)* ')'
;
column_values
: '(' term (',' term)* ')'
;
upsert_options
: K_USING upsert_option (K_AND upsert_option)*
;
upsert_option
: K_TIMESTAMP INTEGER
| K_TTL INTEGER
;
index_name
: IDENTIFIER
;
index_class
: STRING
;
index_options
: K_OPTIONS '=' map
;
update_stmt
: K_UPDATE table_name upsert_options? K_SET update_assignments K_WHERE where_clause update_conditions?
;
update_assignments
: update_assignment (',' update_assignment)*
;
update_assignment
: column_name '=' term
| column_name '=' column_name ('+' | '-') (INTEGER | set | list)
| column_name '=' column_name '+' map
| column_name '[' term ']' '=' term
;
update_conditions
: K_IF update_condition (K_AND update_condition)*
;
update_condition
: IDENTIFIER '=' term
| IDENTIFIER '[' term ']' '=' term
;
where_clause
: relation (K_AND relation)*
;
relation
: column_name '=' term
| column_name K_IN '(' (term (',' term)*)? ')'
| column_name K_IN '?'
;
delete_stmt
: K_DELETE delete_selections? K_FROM table_name
(K_USING K_TIMESTAMP INTEGER)?
K_WHERE where_clause
delete_conditions?
;
delete_conditions
: K_IF ( K_EXISTS
| (delete_condition (K_AND delete_condition)*))
;
delete_condition
: IDENTIFIER ('[' term ']')? '=' term
;
delete_selections
: delete_selection (',' delete_selection)*
;
delete_selection
: IDENTIFIER ('[' term ']')?
;
batch_stmt
: K_BEGIN (K_UNLOGGED | K_COUNTER)? K_BATCH batch_options? dml_statements K_APPLY K_BATCH
;
batch_options
: K_USING batch_option (K_AND batch_option)*
;
batch_option
: K_TIMESTAMP INTEGER
;
table_name
: (keyspace_name '.')? table_name_noks
;
table_name_noks
: IDENTIFIER
;
column_name
: IDENTIFIER
;
table_options
: table_option (K_AND table_option)*
;
table_option
: property
| K_COMPACT K_STORAGE
| K_CLUSTERING K_ORDER K_BY IDENTIFIER
| K_CLUSTERING K_ORDER K_BY '('IDENTIFIER asc_or_desc')'
;
asc_or_desc
: K_ASC
| K_DESC
;
column_definitions
: '(' column_definition (',' column_definition)* ')'
;
column_definition
: column_name column_type (K_STATIC)? (K_PRIMARY K_KEY)?
| K_PRIMARY K_KEY primary_key
;
column_type
: data_type
;
primary_key
: '(' partition_key (',' clustering_column)* ')'
;
partition_key
: column_name
| '(' column_name (',' column_name)* ')'
;
clustering_column
: column_name
;
keyspace_name
: IDENTIFIER
;
if_not_exists
: K_IF K_NOT K_EXISTS
;
if_exists
: K_IF K_EXISTS
;
constant
: STRING
| INTEGER
| FLOAT
| bool
| UUID
| BLOB
;
variable
: '?'
| ':' IDENTIFIER
;
term
: constant
| collection
| variable
| function
;
collection
: map
| set
| list
;
map
: '{' (term ':' term (',' term ':' term)*)? '}'
;
set
: '{' (term (',' term)*)? '}'
;
list
: '[' (term (',' term)*)? ']'
;
function
: IDENTIFIER '(' (term (',' term)*)? ')'
;
properties
: property (K_AND property)*
;
property
: property_name '=' property_value
;
property_name
: IDENTIFIER
;
property_value
: IDENTIFIER
| constant
| map
;
data_type
: native_type
| collection_type
| STRING
;
native_type
: 'ascii'
| 'bigint'
| 'blob'
| 'boolean'
| 'counter'
| 'decimal'
| 'double'
| 'float'
| 'inet'
| 'int'
| 'text'
| 'tinyint'
| 'timestamp'
| 'timeuuid'
| 'uuid'
| 'varchar'
| 'varint'
;
collection_type
: 'list' '<' native_type '>'
| 'set' '<' native_type '>'
| 'map' '<' native_type ',' native_type '>'
;
bool
: K_TRUE
| K_FALSE
;
K_ADD: A D D;
K_ALTER: A L T E R;
K_AND: A N D;
K_APPLY: A P P L Y;
K_BATCH: B A T C H;
K_BEGIN: B E G I N;
K_CLUSTERING: C L U S T E R I N G;
K_ASC: A S C;
K_DESC: D E S C;
K_COLUMNFAMILY: C O L U M N F A M I L Y;
K_COMPACT: C O M P A C T;
K_COUNTER: C O U N T E R;
K_CREATE: C R E A T E;
K_CUSTOM: C U S T O M;
K_DELETE: D E L E T E;
K_DROP: D R O P;
K_EXISTS: E X I S T S;
K_FALSE: F A L S E;
K_FROM: F R O M;
K_IF: I F;
K_IN: I N;
K_INDEX: I N D E X;
K_INSERT: I N S E R T;
K_INTO: I N T O;
K_KEY: K E Y;
K_KEYSPACE: K E Y S P A C E;
K_NOT: N O T;
K_ON: O N;
K_OPTIONS: O P T I O N S;
K_ORDER: O R D E R;
K_BY: B Y;
K_PRIMARY: P R I M A R Y;
K_SELECT: S E L E C T;
K_SET: S E T;
K_STATIC: S T A T I C;
K_STORAGE: S T O R A G E;
K_TABLE: T A B L E;
K_TIMESTAMP: T I M E S T A M P;
K_TRUE: T R U E;
K_TRUNCATE: T R U N C A T E;
K_TTL: T T L;
K_TYPE: T Y P E;
K_UNLOGGED: U N L O G G E D;
K_UPDATE: U P D A T E;
K_USE: U S E;
K_USING: U S I N G;
K_VALUES: V A L U E S;
K_WHERE: W H E R E;
K_WITH: W I T H;
IDENTIFIER
: [a-zA-Z0-9_] [a-zA-Z0-9_]*
;
STRING
: '\'' IDENTIFIER '\''
;
INTEGER
: '-'? DIGIT+
;
FLOAT
: '-'? DIGIT+ ( '.' DIGIT* )? ( E [+-]? DIGIT+ )?
| 'NaN'
| 'Infinity'
;
UUID
: HEX HEX HEX HEX HEX HEX HEX HEX '-' HEX HEX HEX HEX '-' HEX HEX HEX HEX '-' HEX HEX HEX HEX '-' HEX HEX HEX HEX HEX HEX HEX HEX HEX HEX HEX HEX
;
BLOB
: '0' X (HEX)+
;
fragment HEX : [0-9a-fA-F];
fragment DIGIT : [0-9];
fragment A : [aA];
fragment B : [bB];
fragment C : [cC];
fragment D : [dD];
fragment E : [eE];
fragment F : [fF];
fragment G : [gG];
fragment H : [hH];
fragment I : [iI];
fragment J : [jJ];
fragment K : [kK];
fragment L : [lL];
fragment M : [mM];
fragment N : [nN];
fragment O : [oO];
fragment P : [pP];
fragment Q : [qQ];
fragment R : [rR];
fragment S : [sS];
fragment T : [tT];
fragment U : [uU];
fragment V : [vV];
fragment W : [wW];
fragment X : [xX];
fragment Y : [yY];
fragment Z : [zZ];
SINGLE_LINE_COMMENT
: ('--'|'//') ~[\r\n]* -> channel(HIDDEN)
;
MULTILINE_COMMENT
: '/*' .*? ( '*/' | EOF ) -> channel(HIDDEN)
;
WS
: [ \t\r\n] -> channel(HIDDEN)
;

View File

@ -0,0 +1,130 @@
T__0=1
T__1=2
T__2=3
T__3=4
T__4=5
T__5=6
T__6=7
T__7=8
T__8=9
T__9=10
T__10=11
T__11=12
T__12=13
T__13=14
T__14=15
T__15=16
T__16=17
T__17=18
T__18=19
T__19=20
T__20=21
T__21=22
T__22=23
T__23=24
T__24=25
T__25=26
T__26=27
T__27=28
T__28=29
T__29=30
T__30=31
T__31=32
T__32=33
T__33=34
T__34=35
T__35=36
K_ADD=37
K_ALTER=38
K_AND=39
K_APPLY=40
K_BATCH=41
K_BEGIN=42
K_CLUSTERING=43
K_ASC=44
K_DESC=45
K_COLUMNFAMILY=46
K_COMPACT=47
K_COUNTER=48
K_CREATE=49
K_CUSTOM=50
K_DELETE=51
K_DROP=52
K_EXISTS=53
K_FALSE=54
K_FROM=55
K_IF=56
K_IN=57
K_INDEX=58
K_INSERT=59
K_INTO=60
K_KEY=61
K_KEYSPACE=62
K_NOT=63
K_ON=64
K_OPTIONS=65
K_ORDER=66
K_BY=67
K_PRIMARY=68
K_SELECT=69
K_SET=70
K_STATIC=71
K_STORAGE=72
K_TABLE=73
K_TIMESTAMP=74
K_TRUE=75
K_TRUNCATE=76
K_TTL=77
K_TYPE=78
K_UNLOGGED=79
K_UPDATE=80
K_USE=81
K_USING=82
K_VALUES=83
K_WHERE=84
K_WITH=85
IDENTIFIER=86
STRING=87
INTEGER=88
FLOAT=89
UUID=90
BLOB=91
SINGLE_LINE_COMMENT=92
MULTILINE_COMMENT=93
WS=94
';'=1
'('=2
')'=3
','=4
'='=5
'+'=6
'-'=7
'['=8
']'=9
'?'=10
'.'=11
':'=12
'{'=13
'}'=14
'ascii'=15
'bigint'=16
'blob'=17
'boolean'=18
'counter'=19
'decimal'=20
'double'=21
'float'=22
'inet'=23
'int'=24
'text'=25
'tinyint'=26
'timestamp'=27
'timeuuid'=28
'uuid'=29
'varchar'=30
'varint'=31
'list'=32
'<'=33
'>'=34
'set'=35
'map'=36

View File

@ -0,0 +1,497 @@
// Generated from CQL3.g4 by ANTLR 4.5
// jshint ignore: start
var antlr4 = require('antlr4/index');
var serializedATN = ["\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd",
"\2`\u0389\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t",
"\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20",
"\t\20\4\21\t\21\4\22\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4",
"\27\t\27\4\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35",
"\4\36\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'",
"\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61",
"\t\61\4\62\t\62\4\63\t\63\4\64\t\64\4\65\t\65\4\66\t\66\4\67\t\67\4",
"8\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C",
"\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\t",
"N\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY",
"\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\t",
"d\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to",
"\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4z\tz\4",
"{\t{\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t",
"\3\n\3\n\3\13\3\13\3\f\3\f\3\r\3\r\3\16\3\16\3\17\3\17\3\20\3\20\3\20",
"\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3",
"\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24",
"\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3",
"\26\3\26\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30",
"\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\33\3",
"\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34",
"\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\36\3",
"\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3 \3 \3 ",
"\3 \3 \3 \3 \3!\3!\3!\3!\3!\3\"\3\"\3#\3#\3$\3$\3$\3$\3%\3%\3%\3%\3",
"&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3*",
"\3*\3*\3*\3*\3*\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3",
"-\3-\3-\3-\3.\3.\3.\3.\3.\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3\60",
"\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3\61\3",
"\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63",
"\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3",
"\65\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\67\3\67\3\67\3\67\3\67\3\67",
"\38\38\38\38\38\39\39\39\3:\3:\3:\3;\3;\3;\3;\3;\3;\3<\3<\3<\3<\3<\3",
"<\3<\3=\3=\3=\3=\3=\3>\3>\3>\3>\3?\3?\3?\3?\3?\3?\3?\3?\3?\3@\3@\3@",
"\3@\3A\3A\3A\3B\3B\3B\3B\3B\3B\3B\3B\3C\3C\3C\3C\3C\3C\3D\3D\3D\3E\3",
"E\3E\3E\3E\3E\3E\3E\3F\3F\3F\3F\3F\3F\3F\3G\3G\3G\3G\3H\3H\3H\3H\3H",
"\3H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3J\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K\3K\3",
"K\3K\3K\3K\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3M\3M\3M\3M\3N\3N\3N\3N\3O",
"\3O\3O\3O\3O\3P\3P\3P\3P\3P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3R\3R\3",
"R\3R\3S\3S\3S\3S\3S\3S\3T\3T\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3V\3V",
"\3V\3V\3V\3W\3W\7W\u02ca\nW\fW\16W\u02cd\13W\3X\3X\3X\3X\3Y\5Y\u02d4",
"\nY\3Y\6Y\u02d7\nY\rY\16Y\u02d8\3Z\5Z\u02dc\nZ\3Z\6Z\u02df\nZ\rZ\16",
"Z\u02e0\3Z\3Z\7Z\u02e5\nZ\fZ\16Z\u02e8\13Z\5Z\u02ea\nZ\3Z\3Z\5Z\u02ee",
"\nZ\3Z\6Z\u02f1\nZ\rZ\16Z\u02f2\5Z\u02f5\nZ\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z",
"\3Z\3Z\3Z\5Z\u0302\nZ\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3",
"[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3\\",
"\3\\\3\\\6\\\u032c\n\\\r\\\16\\\u032d\3]\3]\3^\3^\3_\3_\3`\3`\3a\3a",
"\3b\3b\3c\3c\3d\3d\3e\3e\3f\3f\3g\3g\3h\3h\3i\3i\3j\3j\3k\3k\3l\3l\3",
"m\3m\3n\3n\3o\3o\3p\3p\3q\3q\3r\3r\3s\3s\3t\3t\3u\3u\3v\3v\3w\3w\3x",
"\3x\3y\3y\3y\3y\5y\u036c\ny\3y\7y\u036f\ny\fy\16y\u0372\13y\3y\3y\3",
"z\3z\3z\3z\7z\u037a\nz\fz\16z\u037d\13z\3z\3z\3z\5z\u0382\nz\3z\3z\3",
"{\3{\3{\3{\3\u037b\2|\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f",
"\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32",
"\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61",
"a\62c\63e\64g\65i\66k\67m8o9q:s;u<w=y>{?}@\177A\u0081B\u0083C\u0085",
"D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095L\u0097M\u0099",
"N\u009bO\u009dP\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00ad",
"X\u00afY\u00b1Z\u00b3[\u00b5\\\u00b7]\u00b9\2\u00bb\2\u00bd\2\u00bf",
"\2\u00c1\2\u00c3\2\u00c5\2\u00c7\2\u00c9\2\u00cb\2\u00cd\2\u00cf\2\u00d1",
"\2\u00d3\2\u00d5\2\u00d7\2\u00d9\2\u00db\2\u00dd\2\u00df\2\u00e1\2\u00e3",
"\2\u00e5\2\u00e7\2\u00e9\2\u00eb\2\u00ed\2\u00ef\2\u00f1^\u00f3_\u00f5",
"`\3\2\"\6\2\62;C\\aac|\4\2--//\5\2\62;CHch\3\2\62;\4\2CCcc\4\2DDdd\4",
"\2EEee\4\2FFff\4\2GGgg\4\2HHhh\4\2IIii\4\2JJjj\4\2KKkk\4\2LLll\4\2M",
"Mmm\4\2NNnn\4\2OOoo\4\2PPpp\4\2QQqq\4\2RRrr\4\2SSss\4\2TTtt\4\2UUuu",
"\4\2VVvv\4\2WWww\4\2XXxx\4\2YYyy\4\2ZZzz\4\2[[{{\4\2\\\\||\4\2\f\f\17",
"\17\5\2\13\f\17\17\"\"\u037d\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t",
"\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2",
"\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2",
"\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2",
"\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65",
"\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2",
"A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M",
"\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3",
"\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2",
"\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2",
"\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2",
"\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087",
"\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2\2\u008f\3\2",
"\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2",
"\2\u0099\3\2\2\2\2\u009b\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1",
"\3\2\2\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9\3\2",
"\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2\2",
"\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00f1\3\2\2\2\2\u00f3",
"\3\2\2\2\2\u00f5\3\2\2\2\3\u00f7\3\2\2\2\5\u00f9\3\2\2\2\7\u00fb\3\2",
"\2\2\t\u00fd\3\2\2\2\13\u00ff\3\2\2\2\r\u0101\3\2\2\2\17\u0103\3\2\2",
"\2\21\u0105\3\2\2\2\23\u0107\3\2\2\2\25\u0109\3\2\2\2\27\u010b\3\2\2",
"\2\31\u010d\3\2\2\2\33\u010f\3\2\2\2\35\u0111\3\2\2\2\37\u0113\3\2\2",
"\2!\u0119\3\2\2\2#\u0120\3\2\2\2%\u0125\3\2\2\2\'\u012d\3\2\2\2)\u0135",
"\3\2\2\2+\u013d\3\2\2\2-\u0144\3\2\2\2/\u014a\3\2\2\2\61\u014f\3\2\2",
"\2\63\u0153\3\2\2\2\65\u0158\3\2\2\2\67\u0160\3\2\2\29\u016a\3\2\2\2",
";\u0173\3\2\2\2=\u0178\3\2\2\2?\u0180\3\2\2\2A\u0187\3\2\2\2C\u018c",
"\3\2\2\2E\u018e\3\2\2\2G\u0190\3\2\2\2I\u0194\3\2\2\2K\u0198\3\2\2\2",
"M\u019c\3\2\2\2O\u01a2\3\2\2\2Q\u01a6\3\2\2\2S\u01ac\3\2\2\2U\u01b2",
"\3\2\2\2W\u01b8\3\2\2\2Y\u01c3\3\2\2\2[\u01c7\3\2\2\2]\u01cc\3\2\2\2",
"_\u01d9\3\2\2\2a\u01e1\3\2\2\2c\u01e9\3\2\2\2e\u01f0\3\2\2\2g\u01f7",
"\3\2\2\2i\u01fe\3\2\2\2k\u0203\3\2\2\2m\u020a\3\2\2\2o\u0210\3\2\2\2",
"q\u0215\3\2\2\2s\u0218\3\2\2\2u\u021b\3\2\2\2w\u0221\3\2\2\2y\u0228",
"\3\2\2\2{\u022d\3\2\2\2}\u0231\3\2\2\2\177\u023a\3\2\2\2\u0081\u023e",
"\3\2\2\2\u0083\u0241\3\2\2\2\u0085\u0249\3\2\2\2\u0087\u024f\3\2\2\2",
"\u0089\u0252\3\2\2\2\u008b\u025a\3\2\2\2\u008d\u0261\3\2\2\2\u008f\u0265",
"\3\2\2\2\u0091\u026c\3\2\2\2\u0093\u0274\3\2\2\2\u0095\u027a\3\2\2\2",
"\u0097\u0284\3\2\2\2\u0099\u0289\3\2\2\2\u009b\u0292\3\2\2\2\u009d\u0296",
"\3\2\2\2\u009f\u029b\3\2\2\2\u00a1\u02a4\3\2\2\2\u00a3\u02ab\3\2\2\2",
"\u00a5\u02af\3\2\2\2\u00a7\u02b5\3\2\2\2\u00a9\u02bc\3\2\2\2\u00ab\u02c2",
"\3\2\2\2\u00ad\u02c7\3\2\2\2\u00af\u02ce\3\2\2\2\u00b1\u02d3\3\2\2\2",
"\u00b3\u0301\3\2\2\2\u00b5\u0303\3\2\2\2\u00b7\u0328\3\2\2\2\u00b9\u032f",
"\3\2\2\2\u00bb\u0331\3\2\2\2\u00bd\u0333\3\2\2\2\u00bf\u0335\3\2\2\2",
"\u00c1\u0337\3\2\2\2\u00c3\u0339\3\2\2\2\u00c5\u033b\3\2\2\2\u00c7\u033d",
"\3\2\2\2\u00c9\u033f\3\2\2\2\u00cb\u0341\3\2\2\2\u00cd\u0343\3\2\2\2",
"\u00cf\u0345\3\2\2\2\u00d1\u0347\3\2\2\2\u00d3\u0349\3\2\2\2\u00d5\u034b",
"\3\2\2\2\u00d7\u034d\3\2\2\2\u00d9\u034f\3\2\2\2\u00db\u0351\3\2\2\2",
"\u00dd\u0353\3\2\2\2\u00df\u0355\3\2\2\2\u00e1\u0357\3\2\2\2\u00e3\u0359",
"\3\2\2\2\u00e5\u035b\3\2\2\2\u00e7\u035d\3\2\2\2\u00e9\u035f\3\2\2\2",
"\u00eb\u0361\3\2\2\2\u00ed\u0363\3\2\2\2\u00ef\u0365\3\2\2\2\u00f1\u036b",
"\3\2\2\2\u00f3\u0375\3\2\2\2\u00f5\u0385\3\2\2\2\u00f7\u00f8\7=\2\2",
"\u00f8\4\3\2\2\2\u00f9\u00fa\7*\2\2\u00fa\6\3\2\2\2\u00fb\u00fc\7+\2",
"\2\u00fc\b\3\2\2\2\u00fd\u00fe\7.\2\2\u00fe\n\3\2\2\2\u00ff\u0100\7",
"?\2\2\u0100\f\3\2\2\2\u0101\u0102\7-\2\2\u0102\16\3\2\2\2\u0103\u0104",
"\7/\2\2\u0104\20\3\2\2\2\u0105\u0106\7]\2\2\u0106\22\3\2\2\2\u0107\u0108",
"\7_\2\2\u0108\24\3\2\2\2\u0109\u010a\7A\2\2\u010a\26\3\2\2\2\u010b\u010c",
"\7\60\2\2\u010c\30\3\2\2\2\u010d\u010e\7<\2\2\u010e\32\3\2\2\2\u010f",
"\u0110\7}\2\2\u0110\34\3\2\2\2\u0111\u0112\7\177\2\2\u0112\36\3\2\2",
"\2\u0113\u0114\7c\2\2\u0114\u0115\7u\2\2\u0115\u0116\7e\2\2\u0116\u0117",
"\7k\2\2\u0117\u0118\7k\2\2\u0118 \3\2\2\2\u0119\u011a\7d\2\2\u011a\u011b",
"\7k\2\2\u011b\u011c\7i\2\2\u011c\u011d\7k\2\2\u011d\u011e\7p\2\2\u011e",
"\u011f\7v\2\2\u011f\"\3\2\2\2\u0120\u0121\7d\2\2\u0121\u0122\7n\2\2",
"\u0122\u0123\7q\2\2\u0123\u0124\7d\2\2\u0124$\3\2\2\2\u0125\u0126\7",
"d\2\2\u0126\u0127\7q\2\2\u0127\u0128\7q\2\2\u0128\u0129\7n\2\2\u0129",
"\u012a\7g\2\2\u012a\u012b\7c\2\2\u012b\u012c\7p\2\2\u012c&\3\2\2\2\u012d",
"\u012e\7e\2\2\u012e\u012f\7q\2\2\u012f\u0130\7w\2\2\u0130\u0131\7p\2",
"\2\u0131\u0132\7v\2\2\u0132\u0133\7g\2\2\u0133\u0134\7t\2\2\u0134(\3",
"\2\2\2\u0135\u0136\7f\2\2\u0136\u0137\7g\2\2\u0137\u0138\7e\2\2\u0138",
"\u0139\7k\2\2\u0139\u013a\7o\2\2\u013a\u013b\7c\2\2\u013b\u013c\7n\2",
"\2\u013c*\3\2\2\2\u013d\u013e\7f\2\2\u013e\u013f\7q\2\2\u013f\u0140",
"\7w\2\2\u0140\u0141\7d\2\2\u0141\u0142\7n\2\2\u0142\u0143\7g\2\2\u0143",
",\3\2\2\2\u0144\u0145\7h\2\2\u0145\u0146\7n\2\2\u0146\u0147\7q\2\2\u0147",
"\u0148\7c\2\2\u0148\u0149\7v\2\2\u0149.\3\2\2\2\u014a\u014b\7k\2\2\u014b",
"\u014c\7p\2\2\u014c\u014d\7g\2\2\u014d\u014e\7v\2\2\u014e\60\3\2\2\2",
"\u014f\u0150\7k\2\2\u0150\u0151\7p\2\2\u0151\u0152\7v\2\2\u0152\62\3",
"\2\2\2\u0153\u0154\7v\2\2\u0154\u0155\7g\2\2\u0155\u0156\7z\2\2\u0156",
"\u0157\7v\2\2\u0157\64\3\2\2\2\u0158\u0159\7v\2\2\u0159\u015a\7k\2\2",
"\u015a\u015b\7p\2\2\u015b\u015c\7{\2\2\u015c\u015d\7k\2\2\u015d\u015e",
"\7p\2\2\u015e\u015f\7v\2\2\u015f\66\3\2\2\2\u0160\u0161\7v\2\2\u0161",
"\u0162\7k\2\2\u0162\u0163\7o\2\2\u0163\u0164\7g\2\2\u0164\u0165\7u\2",
"\2\u0165\u0166\7v\2\2\u0166\u0167\7c\2\2\u0167\u0168\7o\2\2\u0168\u0169",
"\7r\2\2\u01698\3\2\2\2\u016a\u016b\7v\2\2\u016b\u016c\7k\2\2\u016c\u016d",
"\7o\2\2\u016d\u016e\7g\2\2\u016e\u016f\7w\2\2\u016f\u0170\7w\2\2\u0170",
"\u0171\7k\2\2\u0171\u0172\7f\2\2\u0172:\3\2\2\2\u0173\u0174\7w\2\2\u0174",
"\u0175\7w\2\2\u0175\u0176\7k\2\2\u0176\u0177\7f\2\2\u0177<\3\2\2\2\u0178",
"\u0179\7x\2\2\u0179\u017a\7c\2\2\u017a\u017b\7t\2\2\u017b\u017c\7e\2",
"\2\u017c\u017d\7j\2\2\u017d\u017e\7c\2\2\u017e\u017f\7t\2\2\u017f>\3",
"\2\2\2\u0180\u0181\7x\2\2\u0181\u0182\7c\2\2\u0182\u0183\7t\2\2\u0183",
"\u0184\7k\2\2\u0184\u0185\7p\2\2\u0185\u0186\7v\2\2\u0186@\3\2\2\2\u0187",
"\u0188\7n\2\2\u0188\u0189\7k\2\2\u0189\u018a\7u\2\2\u018a\u018b\7v\2",
"\2\u018bB\3\2\2\2\u018c\u018d\7>\2\2\u018dD\3\2\2\2\u018e\u018f\7@\2",
"\2\u018fF\3\2\2\2\u0190\u0191\7u\2\2\u0191\u0192\7g\2\2\u0192\u0193",
"\7v\2\2\u0193H\3\2\2\2\u0194\u0195\7o\2\2\u0195\u0196\7c\2\2\u0196\u0197",
"\7r\2\2\u0197J\3\2\2\2\u0198\u0199\5\u00bd_\2\u0199\u019a\5\u00c3b\2",
"\u019a\u019b\5\u00c3b\2\u019bL\3\2\2\2\u019c\u019d\5\u00bd_\2\u019d",
"\u019e\5\u00d3j\2\u019e\u019f\5\u00e3r\2\u019f\u01a0\5\u00c5c\2\u01a0",
"\u01a1\5\u00dfp\2\u01a1N\3\2\2\2\u01a2\u01a3\5\u00bd_\2\u01a3\u01a4",
"\5\u00d7l\2\u01a4\u01a5\5\u00c3b\2\u01a5P\3\2\2\2\u01a6\u01a7\5\u00bd",
"_\2\u01a7\u01a8\5\u00dbn\2\u01a8\u01a9\5\u00dbn\2\u01a9\u01aa\5\u00d3",
"j\2\u01aa\u01ab\5\u00edw\2\u01abR\3\2\2\2\u01ac\u01ad\5\u00bf`\2\u01ad",
"\u01ae\5\u00bd_\2\u01ae\u01af\5\u00e3r\2\u01af\u01b0\5\u00c1a\2\u01b0",
"\u01b1\5\u00cbf\2\u01b1T\3\2\2\2\u01b2\u01b3\5\u00bf`\2\u01b3\u01b4",
"\5\u00c5c\2\u01b4\u01b5\5\u00c9e\2\u01b5\u01b6\5\u00cdg\2\u01b6\u01b7",
"\5\u00d7l\2\u01b7V\3\2\2\2\u01b8\u01b9\5\u00c1a\2\u01b9\u01ba\5\u00d3",
"j\2\u01ba\u01bb\5\u00e5s\2\u01bb\u01bc\5\u00e1q\2\u01bc\u01bd\5\u00e3",
"r\2\u01bd\u01be\5\u00c5c\2\u01be\u01bf\5\u00dfp\2\u01bf\u01c0\5\u00cd",
"g\2\u01c0\u01c1\5\u00d7l\2\u01c1\u01c2\5\u00c9e\2\u01c2X\3\2\2\2\u01c3",
"\u01c4\5\u00bd_\2\u01c4\u01c5\5\u00e1q\2\u01c5\u01c6\5\u00c1a\2\u01c6",
"Z\3\2\2\2\u01c7\u01c8\5\u00c3b\2\u01c8\u01c9\5\u00c5c\2\u01c9\u01ca",
"\5\u00e1q\2\u01ca\u01cb\5\u00c1a\2\u01cb\\\3\2\2\2\u01cc\u01cd\5\u00c1",
"a\2\u01cd\u01ce\5\u00d9m\2\u01ce\u01cf\5\u00d3j\2\u01cf\u01d0\5\u00e5",
"s\2\u01d0\u01d1\5\u00d5k\2\u01d1\u01d2\5\u00d7l\2\u01d2\u01d3\5\u00c7",
"d\2\u01d3\u01d4\5\u00bd_\2\u01d4\u01d5\5\u00d5k\2\u01d5\u01d6\5\u00cd",
"g\2\u01d6\u01d7\5\u00d3j\2\u01d7\u01d8\5\u00edw\2\u01d8^\3\2\2\2\u01d9",
"\u01da\5\u00c1a\2\u01da\u01db\5\u00d9m\2\u01db\u01dc\5\u00d5k\2\u01dc",
"\u01dd\5\u00dbn\2\u01dd\u01de\5\u00bd_\2\u01de\u01df\5\u00c1a\2\u01df",
"\u01e0\5\u00e3r\2\u01e0`\3\2\2\2\u01e1\u01e2\5\u00c1a\2\u01e2\u01e3",
"\5\u00d9m\2\u01e3\u01e4\5\u00e5s\2\u01e4\u01e5\5\u00d7l\2\u01e5\u01e6",
"\5\u00e3r\2\u01e6\u01e7\5\u00c5c\2\u01e7\u01e8\5\u00dfp\2\u01e8b\3\2",
"\2\2\u01e9\u01ea\5\u00c1a\2\u01ea\u01eb\5\u00dfp\2\u01eb\u01ec\5\u00c5",
"c\2\u01ec\u01ed\5\u00bd_\2\u01ed\u01ee\5\u00e3r\2\u01ee\u01ef\5\u00c5",
"c\2\u01efd\3\2\2\2\u01f0\u01f1\5\u00c1a\2\u01f1\u01f2\5\u00e5s\2\u01f2",
"\u01f3\5\u00e1q\2\u01f3\u01f4\5\u00e3r\2\u01f4\u01f5\5\u00d9m\2\u01f5",
"\u01f6\5\u00d5k\2\u01f6f\3\2\2\2\u01f7\u01f8\5\u00c3b\2\u01f8\u01f9",
"\5\u00c5c\2\u01f9\u01fa\5\u00d3j\2\u01fa\u01fb\5\u00c5c\2\u01fb\u01fc",
"\5\u00e3r\2\u01fc\u01fd\5\u00c5c\2\u01fdh\3\2\2\2\u01fe\u01ff\5\u00c3",
"b\2\u01ff\u0200\5\u00dfp\2\u0200\u0201\5\u00d9m\2\u0201\u0202\5\u00db",
"n\2\u0202j\3\2\2\2\u0203\u0204\5\u00c5c\2\u0204\u0205\5\u00ebv\2\u0205",
"\u0206\5\u00cdg\2\u0206\u0207\5\u00e1q\2\u0207\u0208\5\u00e3r\2\u0208",
"\u0209\5\u00e1q\2\u0209l\3\2\2\2\u020a\u020b\5\u00c7d\2\u020b\u020c",
"\5\u00bd_\2\u020c\u020d\5\u00d3j\2\u020d\u020e\5\u00e1q\2\u020e\u020f",
"\5\u00c5c\2\u020fn\3\2\2\2\u0210\u0211\5\u00c7d\2\u0211\u0212\5\u00df",
"p\2\u0212\u0213\5\u00d9m\2\u0213\u0214\5\u00d5k\2\u0214p\3\2\2\2\u0215",
"\u0216\5\u00cdg\2\u0216\u0217\5\u00c7d\2\u0217r\3\2\2\2\u0218\u0219",
"\5\u00cdg\2\u0219\u021a\5\u00d7l\2\u021at\3\2\2\2\u021b\u021c\5\u00cd",
"g\2\u021c\u021d\5\u00d7l\2\u021d\u021e\5\u00c3b\2\u021e\u021f\5\u00c5",
"c\2\u021f\u0220\5\u00ebv\2\u0220v\3\2\2\2\u0221\u0222\5\u00cdg\2\u0222",
"\u0223\5\u00d7l\2\u0223\u0224\5\u00e1q\2\u0224\u0225\5\u00c5c\2\u0225",
"\u0226\5\u00dfp\2\u0226\u0227\5\u00e3r\2\u0227x\3\2\2\2\u0228\u0229",
"\5\u00cdg\2\u0229\u022a\5\u00d7l\2\u022a\u022b\5\u00e3r\2\u022b\u022c",
"\5\u00d9m\2\u022cz\3\2\2\2\u022d\u022e\5\u00d1i\2\u022e\u022f\5\u00c5",
"c\2\u022f\u0230\5\u00edw\2\u0230|\3\2\2\2\u0231\u0232\5\u00d1i\2\u0232",
"\u0233\5\u00c5c\2\u0233\u0234\5\u00edw\2\u0234\u0235\5\u00e1q\2\u0235",
"\u0236\5\u00dbn\2\u0236\u0237\5\u00bd_\2\u0237\u0238\5\u00c1a\2\u0238",
"\u0239\5\u00c5c\2\u0239~\3\2\2\2\u023a\u023b\5\u00d7l\2\u023b\u023c",
"\5\u00d9m\2\u023c\u023d\5\u00e3r\2\u023d\u0080\3\2\2\2\u023e\u023f\5",
"\u00d9m\2\u023f\u0240\5\u00d7l\2\u0240\u0082\3\2\2\2\u0241\u0242\5\u00d9",
"m\2\u0242\u0243\5\u00dbn\2\u0243\u0244\5\u00e3r\2\u0244\u0245\5\u00cd",
"g\2\u0245\u0246\5\u00d9m\2\u0246\u0247\5\u00d7l\2\u0247\u0248\5\u00e1",
"q\2\u0248\u0084\3\2\2\2\u0249\u024a\5\u00d9m\2\u024a\u024b\5\u00dfp",
"\2\u024b\u024c\5\u00c3b\2\u024c\u024d\5\u00c5c\2\u024d\u024e\5\u00df",
"p\2\u024e\u0086\3\2\2\2\u024f\u0250\5\u00bf`\2\u0250\u0251\5\u00edw",
"\2\u0251\u0088\3\2\2\2\u0252\u0253\5\u00dbn\2\u0253\u0254\5\u00dfp\2",
"\u0254\u0255\5\u00cdg\2\u0255\u0256\5\u00d5k\2\u0256\u0257\5\u00bd_",
"\2\u0257\u0258\5\u00dfp\2\u0258\u0259\5\u00edw\2\u0259\u008a\3\2\2\2",
"\u025a\u025b\5\u00e1q\2\u025b\u025c\5\u00c5c\2\u025c\u025d\5\u00d3j",
"\2\u025d\u025e\5\u00c5c\2\u025e\u025f\5\u00c1a\2\u025f\u0260\5\u00e3",
"r\2\u0260\u008c\3\2\2\2\u0261\u0262\5\u00e1q\2\u0262\u0263\5\u00c5c",
"\2\u0263\u0264\5\u00e3r\2\u0264\u008e\3\2\2\2\u0265\u0266\5\u00e1q\2",
"\u0266\u0267\5\u00e3r\2\u0267\u0268\5\u00bd_\2\u0268\u0269\5\u00e3r",
"\2\u0269\u026a\5\u00cdg\2\u026a\u026b\5\u00c1a\2\u026b\u0090\3\2\2\2",
"\u026c\u026d\5\u00e1q\2\u026d\u026e\5\u00e3r\2\u026e\u026f\5\u00d9m",
"\2\u026f\u0270\5\u00dfp\2\u0270\u0271\5\u00bd_\2\u0271\u0272\5\u00c9",
"e\2\u0272\u0273\5\u00c5c\2\u0273\u0092\3\2\2\2\u0274\u0275\5\u00e3r",
"\2\u0275\u0276\5\u00bd_\2\u0276\u0277\5\u00bf`\2\u0277\u0278\5\u00d3",
"j\2\u0278\u0279\5\u00c5c\2\u0279\u0094\3\2\2\2\u027a\u027b\5\u00e3r",
"\2\u027b\u027c\5\u00cdg\2\u027c\u027d\5\u00d5k\2\u027d\u027e\5\u00c5",
"c\2\u027e\u027f\5\u00e1q\2\u027f\u0280\5\u00e3r\2\u0280\u0281\5\u00bd",
"_\2\u0281\u0282\5\u00d5k\2\u0282\u0283\5\u00dbn\2\u0283\u0096\3\2\2",
"\2\u0284\u0285\5\u00e3r\2\u0285\u0286\5\u00dfp\2\u0286\u0287\5\u00e5",
"s\2\u0287\u0288\5\u00c5c\2\u0288\u0098\3\2\2\2\u0289\u028a\5\u00e3r",
"\2\u028a\u028b\5\u00dfp\2\u028b\u028c\5\u00e5s\2\u028c\u028d\5\u00d7",
"l\2\u028d\u028e\5\u00c1a\2\u028e\u028f\5\u00bd_\2\u028f\u0290\5\u00e3",
"r\2\u0290\u0291\5\u00c5c\2\u0291\u009a\3\2\2\2\u0292\u0293\5\u00e3r",
"\2\u0293\u0294\5\u00e3r\2\u0294\u0295\5\u00d3j\2\u0295\u009c\3\2\2\2",
"\u0296\u0297\5\u00e3r\2\u0297\u0298\5\u00edw\2\u0298\u0299\5\u00dbn",
"\2\u0299\u029a\5\u00c5c\2\u029a\u009e\3\2\2\2\u029b\u029c\5\u00e5s\2",
"\u029c\u029d\5\u00d7l\2\u029d\u029e\5\u00d3j\2\u029e\u029f\5\u00d9m",
"\2\u029f\u02a0\5\u00c9e\2\u02a0\u02a1\5\u00c9e\2\u02a1\u02a2\5\u00c5",
"c\2\u02a2\u02a3\5\u00c3b\2\u02a3\u00a0\3\2\2\2\u02a4\u02a5\5\u00e5s",
"\2\u02a5\u02a6\5\u00dbn\2\u02a6\u02a7\5\u00c3b\2\u02a7\u02a8\5\u00bd",
"_\2\u02a8\u02a9\5\u00e3r\2\u02a9\u02aa\5\u00c5c\2\u02aa\u00a2\3\2\2",
"\2\u02ab\u02ac\5\u00e5s\2\u02ac\u02ad\5\u00e1q\2\u02ad\u02ae\5\u00c5",
"c\2\u02ae\u00a4\3\2\2\2\u02af\u02b0\5\u00e5s\2\u02b0\u02b1\5\u00e1q",
"\2\u02b1\u02b2\5\u00cdg\2\u02b2\u02b3\5\u00d7l\2\u02b3\u02b4\5\u00c9",
"e\2\u02b4\u00a6\3\2\2\2\u02b5\u02b6\5\u00e7t\2\u02b6\u02b7\5\u00bd_",
"\2\u02b7\u02b8\5\u00d3j\2\u02b8\u02b9\5\u00e5s\2\u02b9\u02ba\5\u00c5",
"c\2\u02ba\u02bb\5\u00e1q\2\u02bb\u00a8\3\2\2\2\u02bc\u02bd\5\u00e9u",
"\2\u02bd\u02be\5\u00cbf\2\u02be\u02bf\5\u00c5c\2\u02bf\u02c0\5\u00df",
"p\2\u02c0\u02c1\5\u00c5c\2\u02c1\u00aa\3\2\2\2\u02c2\u02c3\5\u00e9u",
"\2\u02c3\u02c4\5\u00cdg\2\u02c4\u02c5\5\u00e3r\2\u02c5\u02c6\5\u00cb",
"f\2\u02c6\u00ac\3\2\2\2\u02c7\u02cb\t\2\2\2\u02c8\u02ca\t\2\2\2\u02c9",
"\u02c8\3\2\2\2\u02ca\u02cd\3\2\2\2\u02cb\u02c9\3\2\2\2\u02cb\u02cc\3",
"\2\2\2\u02cc\u00ae\3\2\2\2\u02cd\u02cb\3\2\2\2\u02ce\u02cf\7)\2\2\u02cf",
"\u02d0\5\u00adW\2\u02d0\u02d1\7)\2\2\u02d1\u00b0\3\2\2\2\u02d2\u02d4",
"\7/\2\2\u02d3\u02d2\3\2\2\2\u02d3\u02d4\3\2\2\2\u02d4\u02d6\3\2\2\2",
"\u02d5\u02d7\5\u00bb^\2\u02d6\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8",
"\u02d6\3\2\2\2\u02d8\u02d9\3\2\2\2\u02d9\u00b2\3\2\2\2\u02da\u02dc\7",
"/\2\2\u02db\u02da\3\2\2\2\u02db\u02dc\3\2\2\2\u02dc\u02de\3\2\2\2\u02dd",
"\u02df\5\u00bb^\2\u02de\u02dd\3\2\2\2\u02df\u02e0\3\2\2\2\u02e0\u02de",
"\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1\u02e9\3\2\2\2\u02e2\u02e6\7\60\2",
"\2\u02e3\u02e5\5\u00bb^\2\u02e4\u02e3\3\2\2\2\u02e5\u02e8\3\2\2\2\u02e6",
"\u02e4\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7\u02ea\3\2\2\2\u02e8\u02e6\3",
"\2\2\2\u02e9\u02e2\3\2\2\2\u02e9\u02ea\3\2\2\2\u02ea\u02f4\3\2\2\2\u02eb",
"\u02ed\5\u00c5c\2\u02ec\u02ee\t\3\2\2\u02ed\u02ec\3\2\2\2\u02ed\u02ee",
"\3\2\2\2\u02ee\u02f0\3\2\2\2\u02ef\u02f1\5\u00bb^\2\u02f0\u02ef\3\2",
"\2\2\u02f1\u02f2\3\2\2\2\u02f2\u02f0\3\2\2\2\u02f2\u02f3\3\2\2\2\u02f3",
"\u02f5\3\2\2\2\u02f4\u02eb\3\2\2\2\u02f4\u02f5\3\2\2\2\u02f5\u0302\3",
"\2\2\2\u02f6\u02f7\7P\2\2\u02f7\u02f8\7c\2\2\u02f8\u0302\7P\2\2\u02f9",
"\u02fa\7K\2\2\u02fa\u02fb\7p\2\2\u02fb\u02fc\7h\2\2\u02fc\u02fd\7k\2",
"\2\u02fd\u02fe\7p\2\2\u02fe\u02ff\7k\2\2\u02ff\u0300\7v\2\2\u0300\u0302",
"\7{\2\2\u0301\u02db\3\2\2\2\u0301\u02f6\3\2\2\2\u0301\u02f9\3\2\2\2",
"\u0302\u00b4\3\2\2\2\u0303\u0304\5\u00b9]\2\u0304\u0305\5\u00b9]\2\u0305",
"\u0306\5\u00b9]\2\u0306\u0307\5\u00b9]\2\u0307\u0308\5\u00b9]\2\u0308",
"\u0309\5\u00b9]\2\u0309\u030a\5\u00b9]\2\u030a\u030b\5\u00b9]\2\u030b",
"\u030c\7/\2\2\u030c\u030d\5\u00b9]\2\u030d\u030e\5\u00b9]\2\u030e\u030f",
"\5\u00b9]\2\u030f\u0310\5\u00b9]\2\u0310\u0311\7/\2\2\u0311\u0312\5",
"\u00b9]\2\u0312\u0313\5\u00b9]\2\u0313\u0314\5\u00b9]\2\u0314\u0315",
"\5\u00b9]\2\u0315\u0316\7/\2\2\u0316\u0317\5\u00b9]\2\u0317\u0318\5",
"\u00b9]\2\u0318\u0319\5\u00b9]\2\u0319\u031a\5\u00b9]\2\u031a\u031b",
"\7/\2\2\u031b\u031c\5\u00b9]\2\u031c\u031d\5\u00b9]\2\u031d\u031e\5",
"\u00b9]\2\u031e\u031f\5\u00b9]\2\u031f\u0320\5\u00b9]\2\u0320\u0321",
"\5\u00b9]\2\u0321\u0322\5\u00b9]\2\u0322\u0323\5\u00b9]\2\u0323\u0324",
"\5\u00b9]\2\u0324\u0325\5\u00b9]\2\u0325\u0326\5\u00b9]\2\u0326\u0327",
"\5\u00b9]\2\u0327\u00b6\3\2\2\2\u0328\u0329\7\62\2\2\u0329\u032b\5\u00eb",
"v\2\u032a\u032c\5\u00b9]\2\u032b\u032a\3\2\2\2\u032c\u032d\3\2\2\2\u032d",
"\u032b\3\2\2\2\u032d\u032e\3\2\2\2\u032e\u00b8\3\2\2\2\u032f\u0330\t",
"\4\2\2\u0330\u00ba\3\2\2\2\u0331\u0332\t\5\2\2\u0332\u00bc\3\2\2\2\u0333",
"\u0334\t\6\2\2\u0334\u00be\3\2\2\2\u0335\u0336\t\7\2\2\u0336\u00c0\3",
"\2\2\2\u0337\u0338\t\b\2\2\u0338\u00c2\3\2\2\2\u0339\u033a\t\t\2\2\u033a",
"\u00c4\3\2\2\2\u033b\u033c\t\n\2\2\u033c\u00c6\3\2\2\2\u033d\u033e\t",
"\13\2\2\u033e\u00c8\3\2\2\2\u033f\u0340\t\f\2\2\u0340\u00ca\3\2\2\2",
"\u0341\u0342\t\r\2\2\u0342\u00cc\3\2\2\2\u0343\u0344\t\16\2\2\u0344",
"\u00ce\3\2\2\2\u0345\u0346\t\17\2\2\u0346\u00d0\3\2\2\2\u0347\u0348",
"\t\20\2\2\u0348\u00d2\3\2\2\2\u0349\u034a\t\21\2\2\u034a\u00d4\3\2\2",
"\2\u034b\u034c\t\22\2\2\u034c\u00d6\3\2\2\2\u034d\u034e\t\23\2\2\u034e",
"\u00d8\3\2\2\2\u034f\u0350\t\24\2\2\u0350\u00da\3\2\2\2\u0351\u0352",
"\t\25\2\2\u0352\u00dc\3\2\2\2\u0353\u0354\t\26\2\2\u0354\u00de\3\2\2",
"\2\u0355\u0356\t\27\2\2\u0356\u00e0\3\2\2\2\u0357\u0358\t\30\2\2\u0358",
"\u00e2\3\2\2\2\u0359\u035a\t\31\2\2\u035a\u00e4\3\2\2\2\u035b\u035c",
"\t\32\2\2\u035c\u00e6\3\2\2\2\u035d\u035e\t\33\2\2\u035e\u00e8\3\2\2",
"\2\u035f\u0360\t\34\2\2\u0360\u00ea\3\2\2\2\u0361\u0362\t\35\2\2\u0362",
"\u00ec\3\2\2\2\u0363\u0364\t\36\2\2\u0364\u00ee\3\2\2\2\u0365\u0366",
"\t\37\2\2\u0366\u00f0\3\2\2\2\u0367\u0368\7/\2\2\u0368\u036c\7/\2\2",
"\u0369\u036a\7\61\2\2\u036a\u036c\7\61\2\2\u036b\u0367\3\2\2\2\u036b",
"\u0369\3\2\2\2\u036c\u0370\3\2\2\2\u036d\u036f\n \2\2\u036e\u036d\3",
"\2\2\2\u036f\u0372\3\2\2\2\u0370\u036e\3\2\2\2\u0370\u0371\3\2\2\2\u0371",
"\u0373\3\2\2\2\u0372\u0370\3\2\2\2\u0373\u0374\by\2\2\u0374\u00f2\3",
"\2\2\2\u0375\u0376\7\61\2\2\u0376\u0377\7,\2\2\u0377\u037b\3\2\2\2\u0378",
"\u037a\13\2\2\2\u0379\u0378\3\2\2\2\u037a\u037d\3\2\2\2\u037b\u037c",
"\3\2\2\2\u037b\u0379\3\2\2\2\u037c\u0381\3\2\2\2\u037d\u037b\3\2\2\2",
"\u037e\u037f\7,\2\2\u037f\u0382\7\61\2\2\u0380\u0382\7\2\2\3\u0381\u037e",
"\3\2\2\2\u0381\u0380\3\2\2\2\u0382\u0383\3\2\2\2\u0383\u0384\bz\2\2",
"\u0384\u00f4\3\2\2\2\u0385\u0386\t!\2\2\u0386\u0387\3\2\2\2\u0387\u0388",
"\b{\2\2\u0388\u00f6\3\2\2\2\23\2\u02cb\u02d3\u02d8\u02db\u02e0\u02e6",
"\u02e9\u02ed\u02f2\u02f4\u0301\u032d\u036b\u0370\u037b\u0381\3\2\3\2"].join("");
var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);
var decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });
function CQL3Lexer(input) {
antlr4.Lexer.call(this, input);
this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());
return this;
}
CQL3Lexer.prototype = Object.create(antlr4.Lexer.prototype);
CQL3Lexer.prototype.constructor = CQL3Lexer;
CQL3Lexer.EOF = antlr4.Token.EOF;
CQL3Lexer.T__0 = 1;
CQL3Lexer.T__1 = 2;
CQL3Lexer.T__2 = 3;
CQL3Lexer.T__3 = 4;
CQL3Lexer.T__4 = 5;
CQL3Lexer.T__5 = 6;
CQL3Lexer.T__6 = 7;
CQL3Lexer.T__7 = 8;
CQL3Lexer.T__8 = 9;
CQL3Lexer.T__9 = 10;
CQL3Lexer.T__10 = 11;
CQL3Lexer.T__11 = 12;
CQL3Lexer.T__12 = 13;
CQL3Lexer.T__13 = 14;
CQL3Lexer.T__14 = 15;
CQL3Lexer.T__15 = 16;
CQL3Lexer.T__16 = 17;
CQL3Lexer.T__17 = 18;
CQL3Lexer.T__18 = 19;
CQL3Lexer.T__19 = 20;
CQL3Lexer.T__20 = 21;
CQL3Lexer.T__21 = 22;
CQL3Lexer.T__22 = 23;
CQL3Lexer.T__23 = 24;
CQL3Lexer.T__24 = 25;
CQL3Lexer.T__25 = 26;
CQL3Lexer.T__26 = 27;
CQL3Lexer.T__27 = 28;
CQL3Lexer.T__28 = 29;
CQL3Lexer.T__29 = 30;
CQL3Lexer.T__30 = 31;
CQL3Lexer.T__31 = 32;
CQL3Lexer.T__32 = 33;
CQL3Lexer.T__33 = 34;
CQL3Lexer.T__34 = 35;
CQL3Lexer.T__35 = 36;
CQL3Lexer.K_ADD = 37;
CQL3Lexer.K_ALTER = 38;
CQL3Lexer.K_AND = 39;
CQL3Lexer.K_APPLY = 40;
CQL3Lexer.K_BATCH = 41;
CQL3Lexer.K_BEGIN = 42;
CQL3Lexer.K_CLUSTERING = 43;
CQL3Lexer.K_ASC = 44;
CQL3Lexer.K_DESC = 45;
CQL3Lexer.K_COLUMNFAMILY = 46;
CQL3Lexer.K_COMPACT = 47;
CQL3Lexer.K_COUNTER = 48;
CQL3Lexer.K_CREATE = 49;
CQL3Lexer.K_CUSTOM = 50;
CQL3Lexer.K_DELETE = 51;
CQL3Lexer.K_DROP = 52;
CQL3Lexer.K_EXISTS = 53;
CQL3Lexer.K_FALSE = 54;
CQL3Lexer.K_FROM = 55;
CQL3Lexer.K_IF = 56;
CQL3Lexer.K_IN = 57;
CQL3Lexer.K_INDEX = 58;
CQL3Lexer.K_INSERT = 59;
CQL3Lexer.K_INTO = 60;
CQL3Lexer.K_KEY = 61;
CQL3Lexer.K_KEYSPACE = 62;
CQL3Lexer.K_NOT = 63;
CQL3Lexer.K_ON = 64;
CQL3Lexer.K_OPTIONS = 65;
CQL3Lexer.K_ORDER = 66;
CQL3Lexer.K_BY = 67;
CQL3Lexer.K_PRIMARY = 68;
CQL3Lexer.K_SELECT = 69;
CQL3Lexer.K_SET = 70;
CQL3Lexer.K_STATIC = 71;
CQL3Lexer.K_STORAGE = 72;
CQL3Lexer.K_TABLE = 73;
CQL3Lexer.K_TIMESTAMP = 74;
CQL3Lexer.K_TRUE = 75;
CQL3Lexer.K_TRUNCATE = 76;
CQL3Lexer.K_TTL = 77;
CQL3Lexer.K_TYPE = 78;
CQL3Lexer.K_UNLOGGED = 79;
CQL3Lexer.K_UPDATE = 80;
CQL3Lexer.K_USE = 81;
CQL3Lexer.K_USING = 82;
CQL3Lexer.K_VALUES = 83;
CQL3Lexer.K_WHERE = 84;
CQL3Lexer.K_WITH = 85;
CQL3Lexer.IDENTIFIER = 86;
CQL3Lexer.STRING = 87;
CQL3Lexer.INTEGER = 88;
CQL3Lexer.FLOAT = 89;
CQL3Lexer.UUID = 90;
CQL3Lexer.BLOB = 91;
CQL3Lexer.SINGLE_LINE_COMMENT = 92;
CQL3Lexer.MULTILINE_COMMENT = 93;
CQL3Lexer.WS = 94;
CQL3Lexer.modeNames = [ "DEFAULT_MODE" ];
CQL3Lexer.literalNames = [ 'null', "';'", "'('", "')'", "','", "'='", "'+'",
"'-'", "'['", "']'", "'?'", "'.'", "':'", "'{'",
"'}'", "'ascii'", "'bigint'", "'blob'", "'boolean'",
"'counter'", "'decimal'", "'double'", "'float'",
"'inet'", "'int'", "'text'", "'tinyint'", "'timestamp'",
"'timeuuid'", "'uuid'", "'varchar'", "'varint'",
"'list'", "'<'", "'>'", "'set'", "'map'" ];
CQL3Lexer.symbolicNames = [ 'null', 'null', 'null', 'null', 'null', 'null',
'null', 'null', 'null', 'null', 'null', 'null',
'null', 'null', 'null', 'null', 'null', 'null',
'null', 'null', 'null', 'null', 'null', 'null',
'null', 'null', 'null', 'null', 'null', 'null',
'null', 'null', 'null', 'null', 'null', 'null',
'null', "K_ADD", "K_ALTER", "K_AND", "K_APPLY",
"K_BATCH", "K_BEGIN", "K_CLUSTERING", "K_ASC",
"K_DESC", "K_COLUMNFAMILY", "K_COMPACT", "K_COUNTER",
"K_CREATE", "K_CUSTOM", "K_DELETE", "K_DROP",
"K_EXISTS", "K_FALSE", "K_FROM", "K_IF", "K_IN",
"K_INDEX", "K_INSERT", "K_INTO", "K_KEY", "K_KEYSPACE",
"K_NOT", "K_ON", "K_OPTIONS", "K_ORDER", "K_BY",
"K_PRIMARY", "K_SELECT", "K_SET", "K_STATIC",
"K_STORAGE", "K_TABLE", "K_TIMESTAMP", "K_TRUE",
"K_TRUNCATE", "K_TTL", "K_TYPE", "K_UNLOGGED",
"K_UPDATE", "K_USE", "K_USING", "K_VALUES",
"K_WHERE", "K_WITH", "IDENTIFIER", "STRING",
"INTEGER", "FLOAT", "UUID", "BLOB", "SINGLE_LINE_COMMENT",
"MULTILINE_COMMENT", "WS" ];
CQL3Lexer.ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5",
"T__6", "T__7", "T__8", "T__9", "T__10", "T__11",
"T__12", "T__13", "T__14", "T__15", "T__16", "T__17",
"T__18", "T__19", "T__20", "T__21", "T__22", "T__23",
"T__24", "T__25", "T__26", "T__27", "T__28", "T__29",
"T__30", "T__31", "T__32", "T__33", "T__34", "T__35",
"K_ADD", "K_ALTER", "K_AND", "K_APPLY", "K_BATCH",
"K_BEGIN", "K_CLUSTERING", "K_ASC", "K_DESC", "K_COLUMNFAMILY",
"K_COMPACT", "K_COUNTER", "K_CREATE", "K_CUSTOM",
"K_DELETE", "K_DROP", "K_EXISTS", "K_FALSE", "K_FROM",
"K_IF", "K_IN", "K_INDEX", "K_INSERT", "K_INTO",
"K_KEY", "K_KEYSPACE", "K_NOT", "K_ON", "K_OPTIONS",
"K_ORDER", "K_BY", "K_PRIMARY", "K_SELECT", "K_SET",
"K_STATIC", "K_STORAGE", "K_TABLE", "K_TIMESTAMP",
"K_TRUE", "K_TRUNCATE", "K_TTL", "K_TYPE", "K_UNLOGGED",
"K_UPDATE", "K_USE", "K_USING", "K_VALUES", "K_WHERE",
"K_WITH", "IDENTIFIER", "STRING", "INTEGER", "FLOAT",
"UUID", "BLOB", "HEX", "DIGIT", "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", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT",
"WS" ];
CQL3Lexer.grammarFileName = "CQL3.g4";
exports.CQL3Lexer = CQL3Lexer;

View File

@ -0,0 +1,130 @@
T__0=1
T__1=2
T__2=3
T__3=4
T__4=5
T__5=6
T__6=7
T__7=8
T__8=9
T__9=10
T__10=11
T__11=12
T__12=13
T__13=14
T__14=15
T__15=16
T__16=17
T__17=18
T__18=19
T__19=20
T__20=21
T__21=22
T__22=23
T__23=24
T__24=25
T__25=26
T__26=27
T__27=28
T__28=29
T__29=30
T__30=31
T__31=32
T__32=33
T__33=34
T__34=35
T__35=36
K_ADD=37
K_ALTER=38
K_AND=39
K_APPLY=40
K_BATCH=41
K_BEGIN=42
K_CLUSTERING=43
K_ASC=44
K_DESC=45
K_COLUMNFAMILY=46
K_COMPACT=47
K_COUNTER=48
K_CREATE=49
K_CUSTOM=50
K_DELETE=51
K_DROP=52
K_EXISTS=53
K_FALSE=54
K_FROM=55
K_IF=56
K_IN=57
K_INDEX=58
K_INSERT=59
K_INTO=60
K_KEY=61
K_KEYSPACE=62
K_NOT=63
K_ON=64
K_OPTIONS=65
K_ORDER=66
K_BY=67
K_PRIMARY=68
K_SELECT=69
K_SET=70
K_STATIC=71
K_STORAGE=72
K_TABLE=73
K_TIMESTAMP=74
K_TRUE=75
K_TRUNCATE=76
K_TTL=77
K_TYPE=78
K_UNLOGGED=79
K_UPDATE=80
K_USE=81
K_USING=82
K_VALUES=83
K_WHERE=84
K_WITH=85
IDENTIFIER=86
STRING=87
INTEGER=88
FLOAT=89
UUID=90
BLOB=91
SINGLE_LINE_COMMENT=92
MULTILINE_COMMENT=93
WS=94
';'=1
'('=2
')'=3
','=4
'='=5
'+'=6
'-'=7
'['=8
']'=9
'?'=10
'.'=11
':'=12
'{'=13
'}'=14
'ascii'=15
'bigint'=16
'blob'=17
'boolean'=18
'counter'=19
'decimal'=20
'double'=21
'float'=22
'inet'=23
'int'=24
'text'=25
'tinyint'=26
'timestamp'=27
'timeuuid'=28
'uuid'=29
'varchar'=30
'varint'=31
'list'=32
'<'=33
'>'=34
'set'=35
'map'=36

View File

@ -0,0 +1,636 @@
// Generated from CQL3.g4 by ANTLR 4.5
// jshint ignore: start
var antlr4 = require('antlr4/index');
// This class defines a complete listener for a parse tree produced by CQL3Parser.
function CQL3Listener() {
antlr4.tree.ParseTreeListener.call(this);
return this;
}
CQL3Listener.prototype = Object.create(antlr4.tree.ParseTreeListener.prototype);
CQL3Listener.prototype.constructor = CQL3Listener;
// Enter a parse tree produced by CQL3Parser#statements.
CQL3Listener.prototype.enterStatements = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#statements.
CQL3Listener.prototype.exitStatements = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#statement.
CQL3Listener.prototype.enterStatement = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#statement.
CQL3Listener.prototype.exitStatement = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#dml_statements.
CQL3Listener.prototype.enterDml_statements = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#dml_statements.
CQL3Listener.prototype.exitDml_statements = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#dml_statement.
CQL3Listener.prototype.enterDml_statement = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#dml_statement.
CQL3Listener.prototype.exitDml_statement = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#create_keyspace_stmt.
CQL3Listener.prototype.enterCreate_keyspace_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#create_keyspace_stmt.
CQL3Listener.prototype.exitCreate_keyspace_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#alter_keyspace_stmt.
CQL3Listener.prototype.enterAlter_keyspace_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#alter_keyspace_stmt.
CQL3Listener.prototype.exitAlter_keyspace_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#drop_keyspace_stmt.
CQL3Listener.prototype.enterDrop_keyspace_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#drop_keyspace_stmt.
CQL3Listener.prototype.exitDrop_keyspace_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#use_stmt.
CQL3Listener.prototype.enterUse_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#use_stmt.
CQL3Listener.prototype.exitUse_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#create_table_stmt.
CQL3Listener.prototype.enterCreate_table_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#create_table_stmt.
CQL3Listener.prototype.exitCreate_table_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#alter_table_stmt.
CQL3Listener.prototype.enterAlter_table_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#alter_table_stmt.
CQL3Listener.prototype.exitAlter_table_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#alter_table_instruction.
CQL3Listener.prototype.enterAlter_table_instruction = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#alter_table_instruction.
CQL3Listener.prototype.exitAlter_table_instruction = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#drop_table_stmt.
CQL3Listener.prototype.enterDrop_table_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#drop_table_stmt.
CQL3Listener.prototype.exitDrop_table_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#truncate_table_stmt.
CQL3Listener.prototype.enterTruncate_table_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#truncate_table_stmt.
CQL3Listener.prototype.exitTruncate_table_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#create_index_stmt.
CQL3Listener.prototype.enterCreate_index_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#create_index_stmt.
CQL3Listener.prototype.exitCreate_index_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#drop_index_stmt.
CQL3Listener.prototype.enterDrop_index_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#drop_index_stmt.
CQL3Listener.prototype.exitDrop_index_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#insert_stmt.
CQL3Listener.prototype.enterInsert_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#insert_stmt.
CQL3Listener.prototype.exitInsert_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#column_names.
CQL3Listener.prototype.enterColumn_names = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#column_names.
CQL3Listener.prototype.exitColumn_names = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#column_values.
CQL3Listener.prototype.enterColumn_values = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#column_values.
CQL3Listener.prototype.exitColumn_values = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#upsert_options.
CQL3Listener.prototype.enterUpsert_options = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#upsert_options.
CQL3Listener.prototype.exitUpsert_options = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#upsert_option.
CQL3Listener.prototype.enterUpsert_option = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#upsert_option.
CQL3Listener.prototype.exitUpsert_option = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#index_name.
CQL3Listener.prototype.enterIndex_name = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#index_name.
CQL3Listener.prototype.exitIndex_name = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#index_class.
CQL3Listener.prototype.enterIndex_class = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#index_class.
CQL3Listener.prototype.exitIndex_class = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#index_options.
CQL3Listener.prototype.enterIndex_options = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#index_options.
CQL3Listener.prototype.exitIndex_options = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#update_stmt.
CQL3Listener.prototype.enterUpdate_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#update_stmt.
CQL3Listener.prototype.exitUpdate_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#update_assignments.
CQL3Listener.prototype.enterUpdate_assignments = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#update_assignments.
CQL3Listener.prototype.exitUpdate_assignments = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#update_assignment.
CQL3Listener.prototype.enterUpdate_assignment = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#update_assignment.
CQL3Listener.prototype.exitUpdate_assignment = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#update_conditions.
CQL3Listener.prototype.enterUpdate_conditions = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#update_conditions.
CQL3Listener.prototype.exitUpdate_conditions = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#update_condition.
CQL3Listener.prototype.enterUpdate_condition = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#update_condition.
CQL3Listener.prototype.exitUpdate_condition = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#where_clause.
CQL3Listener.prototype.enterWhere_clause = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#where_clause.
CQL3Listener.prototype.exitWhere_clause = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#relation.
CQL3Listener.prototype.enterRelation = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#relation.
CQL3Listener.prototype.exitRelation = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#delete_stmt.
CQL3Listener.prototype.enterDelete_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#delete_stmt.
CQL3Listener.prototype.exitDelete_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#delete_conditions.
CQL3Listener.prototype.enterDelete_conditions = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#delete_conditions.
CQL3Listener.prototype.exitDelete_conditions = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#delete_condition.
CQL3Listener.prototype.enterDelete_condition = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#delete_condition.
CQL3Listener.prototype.exitDelete_condition = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#delete_selections.
CQL3Listener.prototype.enterDelete_selections = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#delete_selections.
CQL3Listener.prototype.exitDelete_selections = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#delete_selection.
CQL3Listener.prototype.enterDelete_selection = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#delete_selection.
CQL3Listener.prototype.exitDelete_selection = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#batch_stmt.
CQL3Listener.prototype.enterBatch_stmt = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#batch_stmt.
CQL3Listener.prototype.exitBatch_stmt = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#batch_options.
CQL3Listener.prototype.enterBatch_options = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#batch_options.
CQL3Listener.prototype.exitBatch_options = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#batch_option.
CQL3Listener.prototype.enterBatch_option = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#batch_option.
CQL3Listener.prototype.exitBatch_option = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#table_name.
CQL3Listener.prototype.enterTable_name = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#table_name.
CQL3Listener.prototype.exitTable_name = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#table_name_noks.
CQL3Listener.prototype.enterTable_name_noks = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#table_name_noks.
CQL3Listener.prototype.exitTable_name_noks = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#column_name.
CQL3Listener.prototype.enterColumn_name = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#column_name.
CQL3Listener.prototype.exitColumn_name = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#table_options.
CQL3Listener.prototype.enterTable_options = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#table_options.
CQL3Listener.prototype.exitTable_options = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#table_option.
CQL3Listener.prototype.enterTable_option = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#table_option.
CQL3Listener.prototype.exitTable_option = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#asc_or_desc.
CQL3Listener.prototype.enterAsc_or_desc = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#asc_or_desc.
CQL3Listener.prototype.exitAsc_or_desc = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#column_definitions.
CQL3Listener.prototype.enterColumn_definitions = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#column_definitions.
CQL3Listener.prototype.exitColumn_definitions = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#column_definition.
CQL3Listener.prototype.enterColumn_definition = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#column_definition.
CQL3Listener.prototype.exitColumn_definition = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#column_type.
CQL3Listener.prototype.enterColumn_type = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#column_type.
CQL3Listener.prototype.exitColumn_type = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#primary_key.
CQL3Listener.prototype.enterPrimary_key = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#primary_key.
CQL3Listener.prototype.exitPrimary_key = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#partition_key.
CQL3Listener.prototype.enterPartition_key = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#partition_key.
CQL3Listener.prototype.exitPartition_key = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#clustering_column.
CQL3Listener.prototype.enterClustering_column = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#clustering_column.
CQL3Listener.prototype.exitClustering_column = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#keyspace_name.
CQL3Listener.prototype.enterKeyspace_name = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#keyspace_name.
CQL3Listener.prototype.exitKeyspace_name = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#if_not_exists.
CQL3Listener.prototype.enterIf_not_exists = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#if_not_exists.
CQL3Listener.prototype.exitIf_not_exists = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#if_exists.
CQL3Listener.prototype.enterIf_exists = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#if_exists.
CQL3Listener.prototype.exitIf_exists = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#constant.
CQL3Listener.prototype.enterConstant = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#constant.
CQL3Listener.prototype.exitConstant = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#variable.
CQL3Listener.prototype.enterVariable = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#variable.
CQL3Listener.prototype.exitVariable = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#term.
CQL3Listener.prototype.enterTerm = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#term.
CQL3Listener.prototype.exitTerm = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#collection.
CQL3Listener.prototype.enterCollection = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#collection.
CQL3Listener.prototype.exitCollection = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#map.
CQL3Listener.prototype.enterMap = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#map.
CQL3Listener.prototype.exitMap = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#set.
CQL3Listener.prototype.enterSet = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#set.
CQL3Listener.prototype.exitSet = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#list.
CQL3Listener.prototype.enterList = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#list.
CQL3Listener.prototype.exitList = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#function.
CQL3Listener.prototype.enterFunction = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#function.
CQL3Listener.prototype.exitFunction = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#properties.
CQL3Listener.prototype.enterProperties = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#properties.
CQL3Listener.prototype.exitProperties = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#property.
CQL3Listener.prototype.enterProperty = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#property.
CQL3Listener.prototype.exitProperty = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#property_name.
CQL3Listener.prototype.enterProperty_name = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#property_name.
CQL3Listener.prototype.exitProperty_name = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#property_value.
CQL3Listener.prototype.enterProperty_value = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#property_value.
CQL3Listener.prototype.exitProperty_value = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#data_type.
CQL3Listener.prototype.enterData_type = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#data_type.
CQL3Listener.prototype.exitData_type = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#native_type.
CQL3Listener.prototype.enterNative_type = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#native_type.
CQL3Listener.prototype.exitNative_type = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#collection_type.
CQL3Listener.prototype.enterCollection_type = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#collection_type.
CQL3Listener.prototype.exitCollection_type = function(ctx) {
};
// Enter a parse tree produced by CQL3Parser#bool.
CQL3Listener.prototype.enterBool = function(ctx) {
};
// Exit a parse tree produced by CQL3Parser#bool.
CQL3Listener.prototype.exitBool = function(ctx) {
};
exports.CQL3Listener = CQL3Listener;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,361 @@
// Generated from CQL3.g4 by ANTLR 4.5
// jshint ignore: start
var antlr4 = require('antlr4/index');
// This class defines a complete generic visitor for a parse tree produced by CQL3Parser.
function CQL3Visitor() {
antlr4.tree.ParseTreeVisitor.call(this);
return this;
}
CQL3Visitor.prototype = Object.create(antlr4.tree.ParseTreeVisitor.prototype);
CQL3Visitor.prototype.constructor = CQL3Visitor;
// Visit a parse tree produced by CQL3Parser#statements.
CQL3Visitor.prototype.visitStatements = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#statement.
CQL3Visitor.prototype.visitStatement = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#dml_statements.
CQL3Visitor.prototype.visitDml_statements = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#dml_statement.
CQL3Visitor.prototype.visitDml_statement = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#create_keyspace_stmt.
CQL3Visitor.prototype.visitCreate_keyspace_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#alter_keyspace_stmt.
CQL3Visitor.prototype.visitAlter_keyspace_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#drop_keyspace_stmt.
CQL3Visitor.prototype.visitDrop_keyspace_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#use_stmt.
CQL3Visitor.prototype.visitUse_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#create_table_stmt.
CQL3Visitor.prototype.visitCreate_table_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#alter_table_stmt.
CQL3Visitor.prototype.visitAlter_table_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#alter_table_instruction.
CQL3Visitor.prototype.visitAlter_table_instruction = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#drop_table_stmt.
CQL3Visitor.prototype.visitDrop_table_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#truncate_table_stmt.
CQL3Visitor.prototype.visitTruncate_table_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#create_index_stmt.
CQL3Visitor.prototype.visitCreate_index_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#drop_index_stmt.
CQL3Visitor.prototype.visitDrop_index_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#insert_stmt.
CQL3Visitor.prototype.visitInsert_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#column_names.
CQL3Visitor.prototype.visitColumn_names = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#column_values.
CQL3Visitor.prototype.visitColumn_values = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#upsert_options.
CQL3Visitor.prototype.visitUpsert_options = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#upsert_option.
CQL3Visitor.prototype.visitUpsert_option = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#index_name.
CQL3Visitor.prototype.visitIndex_name = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#index_class.
CQL3Visitor.prototype.visitIndex_class = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#index_options.
CQL3Visitor.prototype.visitIndex_options = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#update_stmt.
CQL3Visitor.prototype.visitUpdate_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#update_assignments.
CQL3Visitor.prototype.visitUpdate_assignments = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#update_assignment.
CQL3Visitor.prototype.visitUpdate_assignment = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#update_conditions.
CQL3Visitor.prototype.visitUpdate_conditions = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#update_condition.
CQL3Visitor.prototype.visitUpdate_condition = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#where_clause.
CQL3Visitor.prototype.visitWhere_clause = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#relation.
CQL3Visitor.prototype.visitRelation = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#delete_stmt.
CQL3Visitor.prototype.visitDelete_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#delete_conditions.
CQL3Visitor.prototype.visitDelete_conditions = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#delete_condition.
CQL3Visitor.prototype.visitDelete_condition = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#delete_selections.
CQL3Visitor.prototype.visitDelete_selections = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#delete_selection.
CQL3Visitor.prototype.visitDelete_selection = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#batch_stmt.
CQL3Visitor.prototype.visitBatch_stmt = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#batch_options.
CQL3Visitor.prototype.visitBatch_options = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#batch_option.
CQL3Visitor.prototype.visitBatch_option = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#table_name.
CQL3Visitor.prototype.visitTable_name = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#table_name_noks.
CQL3Visitor.prototype.visitTable_name_noks = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#column_name.
CQL3Visitor.prototype.visitColumn_name = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#table_options.
CQL3Visitor.prototype.visitTable_options = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#table_option.
CQL3Visitor.prototype.visitTable_option = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#asc_or_desc.
CQL3Visitor.prototype.visitAsc_or_desc = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#column_definitions.
CQL3Visitor.prototype.visitColumn_definitions = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#column_definition.
CQL3Visitor.prototype.visitColumn_definition = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#column_type.
CQL3Visitor.prototype.visitColumn_type = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#primary_key.
CQL3Visitor.prototype.visitPrimary_key = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#partition_key.
CQL3Visitor.prototype.visitPartition_key = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#clustering_column.
CQL3Visitor.prototype.visitClustering_column = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#keyspace_name.
CQL3Visitor.prototype.visitKeyspace_name = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#if_not_exists.
CQL3Visitor.prototype.visitIf_not_exists = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#if_exists.
CQL3Visitor.prototype.visitIf_exists = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#constant.
CQL3Visitor.prototype.visitConstant = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#variable.
CQL3Visitor.prototype.visitVariable = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#term.
CQL3Visitor.prototype.visitTerm = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#collection.
CQL3Visitor.prototype.visitCollection = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#map.
CQL3Visitor.prototype.visitMap = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#set.
CQL3Visitor.prototype.visitSet = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#list.
CQL3Visitor.prototype.visitList = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#function.
CQL3Visitor.prototype.visitFunction = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#properties.
CQL3Visitor.prototype.visitProperties = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#property.
CQL3Visitor.prototype.visitProperty = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#property_name.
CQL3Visitor.prototype.visitProperty_name = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#property_value.
CQL3Visitor.prototype.visitProperty_value = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#data_type.
CQL3Visitor.prototype.visitData_type = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#native_type.
CQL3Visitor.prototype.visitNative_type = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#collection_type.
CQL3Visitor.prototype.visitCollection_type = function(ctx) {
};
// Visit a parse tree produced by CQL3Parser#bool.
CQL3Visitor.prototype.visitBool = function(ctx) {
};
exports.CQL3Visitor = CQL3Visitor;

View File

@ -0,0 +1,248 @@
lexer grammar CqlLexer;
LR_BRACKET: '(';
RR_BRACKET: ')';
LC_BRACKET: '{';
RC_BRACKET: '}';
LS_BRACKET: '[';
RS_BRACKET: ']';
COMMA: ',';
SEMI: ';';
COLON: ':';
DQUOTE: '"';
SQUOTE: '\'';
SPACE: [ \t\r\n]+ -> channel(HIDDEN);
SPEC_CQL_COMMENT: '/*!' .+? '*/' -> channel(HIDDEN);
COMMENT_INPUT: '/*' .*? '*/' -> channel(HIDDEN);
LINE_COMMENT: (
('-- ' | '#' | '//') ~[\r\n]* ('\r'? '\n' | EOF)
| '--' ('\r'? '\n' | EOF)
) -> channel(HIDDEN);
DOT: '.';
STAR: '*';
DIVIDE: '/';
MODULE: '%';
PLUS: '+';
MINUSMINUS: '--';
MINUS: '-';
// Keywords
K_ADD: A D D | 'ADD';
K_AGGREGATE: A G G R E G A T E | 'AGGREGATE';
K_ALL: A L L | 'ALL';
K_ALL_ROLES: A L L R O L E S| 'ALL ROLES';
K_ALL_KEYSPACES: A L L K E Y S P A C E S | 'ALL KEYSPACES';
K_ALL_FUNCTIONS: A L L F U N C T I O N S| 'ALL FUNCTIONS';
K_ALLOW: A L L O W | 'ALLOW';
K_ALTER: A L T E R | 'ALTER';
K_AND: A N D | 'AND';
K_ANY: A N Y | 'ANY';
K_APPLY: A P P L Y | 'APPLY';
K_AS: A S | 'AS';
K_ASC: A S C | 'ASC';
K_AUTHORIZE: A U T H O R I Z E | 'AUTHORIZE';
K_BATCH: B A T C H | 'BATCH';
K_BEGIN: B E G I N | 'BEGIN';
K_BY: B Y | 'BY';
K_CALLED: C A L L E D | 'CALLED';
K_CLUSTERING: C L U S T E R I N G | 'CLUSTERING';
K_COLUMNFAMILY: C O L U M N F A M I L Y | 'COLUMNFAMILY';
K_COMPACT: C O M P A C T | 'COMPACT';
K_CONSISTENCY: C O N S I S T E N C Y | 'CONSISTENCY';
K_CONTAINS: C O N T A I N S | 'CONTAINS';
K_CREATE: C R E A T E | 'CREATE';
K_CUSTOM: C U S T O M | 'CUSTOM';
K_DELETE: D E L E T E | 'DELETE';
K_DESC: D E S C | 'DESC';
K_DESCRIBE: D E S C R I B E | 'DESCRIBE';
K_DISTINCT: D I S T I N C T | 'DISTINCT';
K_DROP: D R O P | 'DROP';
K_DURABLE_WRITES: D U R A B L E '_' W R I T E S | 'DURABLE_WRITES';
K_EACH_QUORUM: E A C H '_' Q U O R U M | 'EACH_QUORUM';
K_ENTRIES: E N T R I E S | 'ENTRIES';
K_EXECUTE: E X E C U T E | 'EXECUTE';
K_EXISTS: E X I S T S | 'EXISTS';
K_FALSE: F A L S E | 'FALSE';
K_FILTERING: F I L T E R I N G | 'FILTERING';
K_FINALFUNC: F I N A L F U N C | 'FINALFUNC';
K_FROM: F R O M | 'FROM';
K_FULL: F U L L | 'FULL';
K_FUNCTION: F U N C T I O N | 'FUNCTION';
K_GRANT: G R A N T | 'GRANT';
K_IF: I F | 'IF';
K_IN: I N | 'IN';
K_INDEX: I N D E X | 'INDEX';
K_INFINITY: I N F I N I T Y | 'INFINITY';
K_INITCOND: I N I T C O N D | 'INITCOND';
K_INPUT: I N P U T | 'INPUT';
K_INSERT: I N S E R T | 'INSERT';
K_INTO: I N T O | 'INTO';
K_IS: I S | 'IS';
K_KEY: K E Y | 'KEY';
K_KEYS: K E Y S | 'KEYS';
K_KEYSPACE: K E Y S P A C E | 'KEYSPACE';
K_LANGUAGE: L A N G U A G E | 'LANGUAGE';
K_LEVEL: L E V E L | 'LEVEL';
K_LIMIT: L I M I T | 'LIMIT';
K_LOCAL_ONE: L O C A L '_' O N E | 'LOCAL_ONE';
K_LOCAL_QUORUM: L O C A L '_' Q U O R U M | 'LOCAL_QUORUM';
K_LOGGED: L O G G E D | 'LOGGED';
K_LOGIN: L O G I N | 'LOGIN';
K_MATERIALIZED: M A T E R I A L I Z E D | 'MATERIALIZED';
K_MODIFY: M O D I F Y | 'MODIFY';
K_NAN: N A N | 'NAN';
K_NORECURSIVE: N O R E C U R S I V E | 'NORECURSIVE';
K_NOSUPERUSER: N O S U P E R U S E R | 'NOSUPERUSER';
K_NOT: N O T | 'NOT';
K_NULL: N U L L | 'NULL';
K_OF: O F | 'OF';
K_ON: O N | 'ON';
K_ONE: O N E | 'ONE';
K_OPTIONS: O P T I O N S | 'OPTIONS';
K_OR: O R | 'OR';
K_ORDER: O R D E R | 'ORDER';
K_PARTITION: P A R T I T I O N | 'PARTITION';
K_PASSWORD: P A S S W O R D | 'PASSWORD';
K_PER: P E R | 'PER';
K_PERMISSION: P E R M I S S I O N | 'PERMISSION';
K_PERMISSIONS: P E R M I S S I O N S | 'PERMISSIONS';
K_PRIMARY: P R I M A R Y | 'PRIMARY';
K_QUORUM: Q U O R U M | 'QUORUM';
K_RENAME: R E N A M E | 'RENAME';
K_REPLACE: R E P L A C E | 'REPLACE';
K_REPLICATION: R E P L I C A T I O N | 'REPLICATION';
K_RETURNS: R E T U R N S | 'RETURNS';
K_REVOKE: R E V O K E | 'REVOKE';
K_SCHEMA: S C H E M A | 'SCHEMA';
K_SELECT: S E L E C T | 'SELECT';
K_SET: S E T | 'SET';
K_SFUNC: S F U N C | 'SFUNC';
K_STATIC: S T A T I C | 'STATIC';
K_STORAGE: S T O R A G E | 'STORAGE';
K_STYPE: S T Y P E | 'STYPE';
K_SUPERUSER: S U P E R U S E R | 'SUPERUSER';
K_TABLE: T A B L E | 'TABLE';
K_THREE: T H R E E | 'THREE';
K_TIMESTAMP: T I M E S T A M P | 'TIMESTAMP';
K_TO: T O | 'TO';
K_TOKEN: T O K E N | 'TOKEN';
K_TRIGGER: T R I G G E R | 'TRIGGER';
K_TRUE: T R U E | 'TRUE';
K_TRUNCATE: T R U N C A T E | 'TRUNCATE';
K_TTL: T T L | 'TTL';
K_TWO: T W O | 'TWO';
K_TYPE: T Y P E | 'TYPE';
K_UNLOGGED: U N L O G G E D | 'UNLOGGED';
K_UPDATE: U P D A T E | 'UPDATE';
K_USE: U S E | 'USE';
K_USING: U S I N G | 'USING';
K_VALUES: V A L U E S | 'VALUES';
K_VIEW: V I E W | 'VIEW';
K_WHERE: W H E R E | 'WHERE';
K_WITH: W I T H | 'WITH';
K_WRITETIME: W R I T E T I M E | 'WRITETIME';
K_ASCII: A S C I I | 'ASCII';
K_BIGINT: B I G I N T | 'BIGINT';
K_BLOB: B L O B | 'BLOB';
K_BOOLEAN: B O O L E A N | 'BOOLEAN';
K_COUNTER: C O U N T E R | 'COUNTER';
K_DATE: D A T E | 'DATE';
K_DECIMAL: D E C I M A L | 'DECIMAL';
K_DOUBLE: D O U B L E | 'DOUBLE';
K_FLOAT: F L O A T | 'FLOAT';
K_FROZEN: F R O Z E N | 'FROZEN';
K_INET: I N E T | 'INET';
K_INT: I N T | 'INT';
K_LIST: L I S T;
K_ROLES: R O L E S;
K_ROLE: R O L E;
K_MAP: M A P | 'MAP';
K_SMALLINT: S M A L L I N T | 'SMALLINT';
K_TEXT: T E X T | 'TEXT';
K_TIMEUUID: T I M E U U I D | 'TIMEUUID';
K_TIME: T I M E | 'TIME';
K_TINYINT: T I N Y I N T | 'TINYINT';
K_TUPLE: T U P L E | 'TUPLE';
K_UUID: U U I D | 'UUID';
K_VARCHAR: V A R C H A R | 'VARCHAR';
K_VARINT: V A R I N T | 'VARINT';
K_USERS: U S E R S | 'USERS';
K_USER: U S E R | 'USER';
fragment A : [aA]; // match either an 'a' or 'A'
fragment B : [bB];
fragment C : [cC];
fragment D : [dD];
fragment E : [eE];
fragment F : [fF];
fragment G : [gG];
fragment H : [hH];
fragment I : [iI];
fragment J : [jJ];
fragment K : [kK];
fragment L : [lL];
fragment M : [mM];
fragment N : [nN];
fragment O : [oO];
fragment P : [pP];
fragment Q : [qQ];
fragment R : [rR];
fragment S : [sS];
fragment T : [tT];
fragment U : [uU];
fragment V : [vV];
fragment W : [wW];
fragment X : [xX];
fragment Y : [yY];
fragment Z : [zZ];
fragment CODE_BLOCK_DELIMITER: '$$';
fragment CODE_BLOCK_FRAG: '$$' ( ~'$' | ( '$' ~('$') ))* '$$';
// CODE_BLOCK_FRAG: '$$' .*? '$$';
fragment HEX_4DIGIT: [0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F];
fragment OBJECT_NAME_FRAG: [a-zA-Z][A-Za-z0-9_$]*;
fragment SQUOTA_STRING: '\'' ('\\' . | '\'\'' | ~('\'' | '\\'))* '\'';
CODE_BLOCK: CODE_BLOCK_FRAG;
STRING_LITERAL: SQUOTA_STRING;
DECIMAL_LITERAL: DEC_DIGIT+;
FLOAT_LITERAL: (MINUS)? [0-9]+(DOT [0-9]+)?;
HEXADECIMAL_LITERAL
: 'X' '\'' (HEX_DIGIT HEX_DIGIT)+ '\''
| '0X' HEX_DIGIT+;
REAL_LITERAL
: (DEC_DIGIT+)? '.' DEC_DIGIT+
| DEC_DIGIT+ '.' EXPONENT_NUM_PART
| (DEC_DIGIT+)? '.' (DEC_DIGIT+ EXPONENT_NUM_PART)
| DEC_DIGIT+ EXPONENT_NUM_PART;
OBJECT_NAME: OBJECT_NAME_FRAG;
UUID: HEX_4DIGIT HEX_4DIGIT '-' HEX_4DIGIT '-' HEX_4DIGIT '-' HEX_4DIGIT '-' HEX_4DIGIT HEX_4DIGIT HEX_4DIGIT;
fragment HEX_DIGIT: [0-9A-F];
fragment DEC_DIGIT: [0-9];
fragment EXPONENT_NUM_PART: 'E' '-'? DEC_DIGIT+;
fragment OPERATOR_EQ_FRAG: '=';
fragment OPERATOR_LT_FRAG: '<';
fragment OPERATOR_GT_FRAG: '>';
fragment OPERATOR_GTE_FRAG: '>=';
fragment OPERATOR_LTE_FRAG: '<=';
OPERATOR_EQ: OPERATOR_EQ_FRAG;
OPERATOR_LT: OPERATOR_LT_FRAG;
OPERATOR_GT: OPERATOR_GT_FRAG;
OPERATOR_LTE: OPERATOR_LTE_FRAG;
OPERATOR_GTE: OPERATOR_GTE_FRAG;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,194 @@
LR_BRACKET=1
RR_BRACKET=2
LC_BRACKET=3
RC_BRACKET=4
LS_BRACKET=5
RS_BRACKET=6
COMMA=7
SEMI=8
COLON=9
DQUOTE=10
SQUOTE=11
SPACE=12
SPEC_CQL_COMMENT=13
COMMENT_INPUT=14
LINE_COMMENT=15
DOT=16
STAR=17
DIVIDE=18
MODULE=19
PLUS=20
MINUSMINUS=21
MINUS=22
K_ADD=23
K_AGGREGATE=24
K_ALL=25
K_ALL_ROLES=26
K_ALL_KEYSPACES=27
K_ALL_FUNCTIONS=28
K_ALLOW=29
K_ALTER=30
K_AND=31
K_ANY=32
K_APPLY=33
K_AS=34
K_ASC=35
K_AUTHORIZE=36
K_BATCH=37
K_BEGIN=38
K_BY=39
K_CALLED=40
K_CLUSTERING=41
K_COLUMNFAMILY=42
K_COMPACT=43
K_CONSISTENCY=44
K_CONTAINS=45
K_CREATE=46
K_CUSTOM=47
K_DELETE=48
K_DESC=49
K_DESCRIBE=50
K_DISTINCT=51
K_DROP=52
K_DURABLE_WRITES=53
K_EACH_QUORUM=54
K_ENTRIES=55
K_EXECUTE=56
K_EXISTS=57
K_FALSE=58
K_FILTERING=59
K_FINALFUNC=60
K_FROM=61
K_FULL=62
K_FUNCTION=63
K_GRANT=64
K_IF=65
K_IN=66
K_INDEX=67
K_INFINITY=68
K_INITCOND=69
K_INPUT=70
K_INSERT=71
K_INTO=72
K_IS=73
K_KEY=74
K_KEYS=75
K_KEYSPACE=76
K_LANGUAGE=77
K_LEVEL=78
K_LIMIT=79
K_LOCAL_ONE=80
K_LOCAL_QUORUM=81
K_LOGGED=82
K_LOGIN=83
K_MATERIALIZED=84
K_MODIFY=85
K_NAN=86
K_NORECURSIVE=87
K_NOSUPERUSER=88
K_NOT=89
K_NULL=90
K_OF=91
K_ON=92
K_ONE=93
K_OPTIONS=94
K_OR=95
K_ORDER=96
K_PARTITION=97
K_PASSWORD=98
K_PER=99
K_PERMISSION=100
K_PERMISSIONS=101
K_PRIMARY=102
K_QUORUM=103
K_RENAME=104
K_REPLACE=105
K_REPLICATION=106
K_RETURNS=107
K_REVOKE=108
K_SCHEMA=109
K_SELECT=110
K_SET=111
K_SFUNC=112
K_STATIC=113
K_STORAGE=114
K_STYPE=115
K_SUPERUSER=116
K_TABLE=117
K_THREE=118
K_TIMESTAMP=119
K_TO=120
K_TOKEN=121
K_TRIGGER=122
K_TRUE=123
K_TRUNCATE=124
K_TTL=125
K_TWO=126
K_TYPE=127
K_UNLOGGED=128
K_UPDATE=129
K_USE=130
K_USING=131
K_VALUES=132
K_VIEW=133
K_WHERE=134
K_WITH=135
K_WRITETIME=136
K_ASCII=137
K_BIGINT=138
K_BLOB=139
K_BOOLEAN=140
K_COUNTER=141
K_DATE=142
K_DECIMAL=143
K_DOUBLE=144
K_FLOAT=145
K_FROZEN=146
K_INET=147
K_INT=148
K_LIST=149
K_ROLES=150
K_ROLE=151
K_MAP=152
K_SMALLINT=153
K_TEXT=154
K_TIMEUUID=155
K_TIME=156
K_TINYINT=157
K_TUPLE=158
K_UUID=159
K_VARCHAR=160
K_VARINT=161
K_USERS=162
K_USER=163
CODE_BLOCK=164
STRING_LITERAL=165
DECIMAL_LITERAL=166
FLOAT_LITERAL=167
HEXADECIMAL_LITERAL=168
REAL_LITERAL=169
OBJECT_NAME=170
UUID=171
OPERATOR_EQ=172
OPERATOR_LT=173
OPERATOR_GT=174
OPERATOR_LTE=175
OPERATOR_GTE=176
'('=1
')'=2
'{'=3
'}'=4
'['=5
']'=6
','=7
';'=8
':'=9
'"'=10
'\''=11
'.'=16
'*'=17
'/'=18
'%'=19
'+'=20
'--'=21
'-'=22

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,194 @@
LR_BRACKET=1
RR_BRACKET=2
LC_BRACKET=3
RC_BRACKET=4
LS_BRACKET=5
RS_BRACKET=6
COMMA=7
SEMI=8
COLON=9
DQUOTE=10
SQUOTE=11
SPACE=12
SPEC_CQL_COMMENT=13
COMMENT_INPUT=14
LINE_COMMENT=15
DOT=16
STAR=17
DIVIDE=18
MODULE=19
PLUS=20
MINUSMINUS=21
MINUS=22
K_ADD=23
K_AGGREGATE=24
K_ALL=25
K_ALL_ROLES=26
K_ALL_KEYSPACES=27
K_ALL_FUNCTIONS=28
K_ALLOW=29
K_ALTER=30
K_AND=31
K_ANY=32
K_APPLY=33
K_AS=34
K_ASC=35
K_AUTHORIZE=36
K_BATCH=37
K_BEGIN=38
K_BY=39
K_CALLED=40
K_CLUSTERING=41
K_COLUMNFAMILY=42
K_COMPACT=43
K_CONSISTENCY=44
K_CONTAINS=45
K_CREATE=46
K_CUSTOM=47
K_DELETE=48
K_DESC=49
K_DESCRIBE=50
K_DISTINCT=51
K_DROP=52
K_DURABLE_WRITES=53
K_EACH_QUORUM=54
K_ENTRIES=55
K_EXECUTE=56
K_EXISTS=57
K_FALSE=58
K_FILTERING=59
K_FINALFUNC=60
K_FROM=61
K_FULL=62
K_FUNCTION=63
K_GRANT=64
K_IF=65
K_IN=66
K_INDEX=67
K_INFINITY=68
K_INITCOND=69
K_INPUT=70
K_INSERT=71
K_INTO=72
K_IS=73
K_KEY=74
K_KEYS=75
K_KEYSPACE=76
K_LANGUAGE=77
K_LEVEL=78
K_LIMIT=79
K_LOCAL_ONE=80
K_LOCAL_QUORUM=81
K_LOGGED=82
K_LOGIN=83
K_MATERIALIZED=84
K_MODIFY=85
K_NAN=86
K_NORECURSIVE=87
K_NOSUPERUSER=88
K_NOT=89
K_NULL=90
K_OF=91
K_ON=92
K_ONE=93
K_OPTIONS=94
K_OR=95
K_ORDER=96
K_PARTITION=97
K_PASSWORD=98
K_PER=99
K_PERMISSION=100
K_PERMISSIONS=101
K_PRIMARY=102
K_QUORUM=103
K_RENAME=104
K_REPLACE=105
K_REPLICATION=106
K_RETURNS=107
K_REVOKE=108
K_SCHEMA=109
K_SELECT=110
K_SET=111
K_SFUNC=112
K_STATIC=113
K_STORAGE=114
K_STYPE=115
K_SUPERUSER=116
K_TABLE=117
K_THREE=118
K_TIMESTAMP=119
K_TO=120
K_TOKEN=121
K_TRIGGER=122
K_TRUE=123
K_TRUNCATE=124
K_TTL=125
K_TWO=126
K_TYPE=127
K_UNLOGGED=128
K_UPDATE=129
K_USE=130
K_USING=131
K_VALUES=132
K_VIEW=133
K_WHERE=134
K_WITH=135
K_WRITETIME=136
K_ASCII=137
K_BIGINT=138
K_BLOB=139
K_BOOLEAN=140
K_COUNTER=141
K_DATE=142
K_DECIMAL=143
K_DOUBLE=144
K_FLOAT=145
K_FROZEN=146
K_INET=147
K_INT=148
K_LIST=149
K_ROLES=150
K_ROLE=151
K_MAP=152
K_SMALLINT=153
K_TEXT=154
K_TIMEUUID=155
K_TIME=156
K_TINYINT=157
K_TUPLE=158
K_UUID=159
K_VARCHAR=160
K_VARINT=161
K_USERS=162
K_USER=163
CODE_BLOCK=164
STRING_LITERAL=165
DECIMAL_LITERAL=166
FLOAT_LITERAL=167
HEXADECIMAL_LITERAL=168
REAL_LITERAL=169
OBJECT_NAME=170
UUID=171
OPERATOR_EQ=172
OPERATOR_LT=173
OPERATOR_GT=174
OPERATOR_LTE=175
OPERATOR_GTE=176
'('=1
')'=2
'{'=3
'}'=4
'['=5
']'=6
','=7
';'=8
':'=9
'"'=10
'\''=11
'.'=16
'*'=17
'/'=18
'%'=19
'+'=20
'--'=21
'-'=22

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
bindings:
partition: Div(<<partitions:10>>) -> long
cluster: Mod(<<clusters:10>>) -> long
cycle: Identity() -> long
asciival: NumberNameToString()
varcharval: NumberNameToString()
textval: NumberNameToString()
bigintval: Identity() -> long
blobval: HashedToByteBuffer(1024)
booleanval: ModuloToBoolean()
decimalval: ModuloToBigDecimal(9223372036854775807L)
doubleval: Pareto(1.161,5.0) -> double
floatval: compose Normal(15.0,3.0); DoubleToFloat() -> float
inetval: ToInetAddress()
intval: ToInt()
timestampval: ToDate()
uuidval: ToEpochTimeUUID('2017-01-01 23:59:59')
timeuuidval: ToFinestTimeUUID('2017-12-31 23:59:59',123,456) # tuuid node data 123 and tuuid clock data 456
varintval: ModuloToBigInt(50000) -> BigInteger
tinyintval: LongToByte()
smallintval: LongToShort()
dateval: LongToLocalDateDays()
timeval: Identity()

View File

@ -0,0 +1,86 @@
description: |
Use case for
scenarios:
default:
- run driver=cql tags==phase:schema threads==1 cycles==UNDEF
- run driver=cql tags==phase:rampup cycles===TEMPLATE(rampup-cycles,10000000) threads=1000
- run driver=cql tags==phase:main cycles===TEMPLATE(main-cycles,10000000) threads=1000
main:
- run driver=cql tags==phase:main cycles===TEMPLATE(main-cycles,10000000) threads=1000
bindings:
version: Hash(); Identity() -> long
blocks:
- tags:
phase: schema
params:
prepared: false
statements:
- create-table : |
CREATE TABLE IF NOT EXISTS <<keyspace:test>>.a (
a text,
PRIMARY KEY (a)
);
- tags:
phase: rampup
params:
cl: <<write_cl:LOCAL_QUORUM>>
instrument: true
statements:
- insert-rampup: |
insert into <<keyspace:test>>.a
(
a
)
VALUES
(
{a}
)
idempotent: true
- tags:
phase: main
type: write
params:
ratio: <<write_ratio:1>>
cl: <<write_cl:LOCAL_QUORUM>>
instrument: true
statements:
- insert-main: |
insert into <<keyspace:test>>.a
(
a
)
VALUES
(
{a}
)
- tags:
phase: main
type: read
params:
ratio: <<read_partition_ratio:1>>
cl: <<read_cl:LOCAL_QUORUM>>
instrument: true
statements:
- read-partition: |
select * from <<keyspace:test>>.a
where
a = {a}
limit <<limit:1000>>;
- tags:
phase: main
type: read
params:
ratio: <<read_row_ratio:1>>
cl: <<read_cl:LOCAL_QUORUM>>
instrument: true
statements:
- read-row: |
select * from <<keyspace:test>>.a
where
a= {a};

View File

@ -96,6 +96,19 @@ export default {
** Build configuration
*/
build: {
html: {
minify: {
collapseBooleanAttributes: false,
decodeEntities: false,
minifyCSS: false,
minifyJS: false,
processConditionalComments: false,
removeEmptyAttributes: false,
removeRedundantAttributes: false,
trimCustomFragments: false,
useShortDoctype: false
}
},
// analyze: {
// analyzerMode: 'static'
// },
@ -107,6 +120,17 @@ export default {
*/
extend(config, ctx) {
config.devtool = ctx.isClient ? 'eval-source-map' : 'inline-source-map'
config.module.rules.push({
test: /.g4/, loader: 'antlr4-webpack-loader'
})
config.module.rules.push({
test: /\.ya?ml$/,
use: 'js-yaml-loader',
})
config.node = {
fs: 'empty'
}
config.optimization.minimize = false;
}
}
, generate: {

View File

@ -100,15 +100,15 @@ export default {
build: {
html: {
minify: {
collapseBooleanAttributes: true,
decodeEntities: true,
minifyCSS: false,
minifyJS: false,
processConditionalComments: true,
removeEmptyAttributes: true,
removeRedundantAttributes: true,
trimCustomFragments: true,
useShortDoctype: true
collapseBooleanAttributes: false,
decodeEntities: false,
minifyCSS: false,
minifyJS: false,
processConditionalComments: false,
removeEmptyAttributes: false,
removeRedundantAttributes: false,
trimCustomFragments: false,
useShortDoctype: false
}
},
// analyze: {
@ -124,8 +124,18 @@ export default {
** You can extend webpack config here
*/
extend(config, ctx) {
config.devtool = 'souce-map'
// config.devtool = ctx.isClient ? 'eval-source-map' : 'inline-source-map'
config.devtool = ctx.isClient ? 'eval-source-map' : 'inline-source-map'
config.module.rules.push({
test: /.g4/, loader: 'antlr4-webpack-loader'
})
config.module.rules.push({
test: /\.ya?ml$/,
use: 'js-yaml-loader',
})
config.node = {
fs: 'empty'
}
config.optimization.minimize = false;
}
}
, generate: {
@ -135,8 +145,8 @@ export default {
}
var dynamicRoutes = getDynamicPaths({
// '/docs': 'docs/*.md',
// '/#/docs': '/#/docs/*.md'
'/docs': 'docs/*.md',
'/#/docs': '/#/docs/*.md'
});
function getDynamicPaths(urlFilepathTable) {

File diff suppressed because it is too large Load Diff

View File

@ -8,12 +8,18 @@
"dev": "nuxt -c nuxt.config.dev.js",
"build": "nuxt build",
"start": "nuxt start",
"generate": "nuxt generate"
"generate": "nuxt generate",
"antlr": "cd antlr && node ../node_modules/antlr4-cli/bin/antlr4.js -Dlanguage=JavaScript -Werror -visitor -listener CQL3.g4"
},
"dependencies": {
"@nuxtjs/axios": "^5.9.5",
"antlr4": "^4.8.0",
"antlr4-cli": "^4.5.3",
"file-saver": "^2.0.2",
"@nuxtjs/vuetify": "^2.0.0-beta.2",
"front-matter": "^3.1.0",
"js-yaml": "^3.14.0",
"js-yaml-loader": "^1.2.2",
"markdown-it-smartarrows": "^1.0.1",
"markdown-it-vue": "^1.0.11",
"node-fetch": "^2.6.0",

View File

@ -0,0 +1,295 @@
<template>
<v-app>
<v-app-bar app dark color="secondary">
<v-toolbar-title>NoSQLBench - Worlkoad Generator</v-toolbar-title>
<v-spacer></v-spacer>
<v-toolbar-items>
<v-btn text href="https://github.com/nosqlbench/nosqlbench/wiki/Submitting-Feedback">SUBMIT FEEDBACK</v-btn>
</v-toolbar-items>
</v-app-bar>
<v-layout
justify-center
align-center>
<v-content>
<v-container fluid>
<v-layout row>
<v-flex>
<v-card>
<v-card-title>
Workload details
</v-card-title>
<v-col
cols="12"
sm="6"
md="10"
lg="10"
>
<v-text-field
outlined
label="Workload name"
v-model="workloadName"
></v-text-field>
<v-textarea
outlined
label="Create Table Statement"
v-model="createTableDef"
v-on:blur="parseStatement()"
></v-textarea>
</v-col>
<v-col cols="12">
</v-col>
</v-card>
</v-flex>
</v-layout>
</v-container>
</v-content>
</v-layout>
<v-footer app dark color="secondary">
<span>&copy; 2020</span>
</v-footer>
</v-app>
</template>
<script>
import get_data from '~/mixins/get_data.js';
import antlr4 from "antlr4";
import { saveAs } from "file-saver";
import yamlDumper from "js-yaml";
import CQL3Parser from '~/antlr/CQL3Parser.js';
import CQL3Lexer from '~/antlr/CQL3Lexer.js';
import defaultYaml from '~/assets/default.yaml';
import basictypes from '~/assets/basictypes.yaml';
export default {
mixins: [get_data],
components: {
},
computed: {
},
methods: {
async parseStatement() {
console.log(this.$data.createTableDef);
const input = this.$data.createTableDef;
const chars = new antlr4.InputStream(input);
const lexer = new CQL3Lexer.CQL3Lexer(chars);
lexer.strictMode = false; // do not use js strictMode
const tokens = new antlr4.CommonTokenStream(lexer);
const parser = new CQL3Parser.CQL3Parser(tokens);
const context = parser.create_table_stmt();
try {
const keyspaceName = context.table_name().keyspace_name().getChild(0).getText()
const tableName = context.table_name().table_name_noks().getChild(0).getText()
const columnDefinitions = context.column_definitions().column_definition();
let columns = [];
let partitionKeys = [];
let clusteringKeys = [];
columnDefinitions.forEach(columnDef => {
if (columnDef.column_name() != null) {
columns.push({
"name": columnDef.column_name().getText(),
"type": columnDef.column_type().getText()
})
} else {
const primaryKeyContext = columnDef.primary_key()
if (primaryKeyContext.partition_key() != null) {
const partitionKeysContext = primaryKeyContext.partition_key().column_name();
partitionKeysContext.map((partitionKey, i) => {
const partitionKeyName = partitionKey.getText()
const col = {
"name": partitionKeyName,
"type": columns.filter(x => x.name == partitionKeyName)[0].type
}
partitionKeys.push(col)
})
}
if (primaryKeyContext.clustering_column().length != 0) {
const clusteringKeysContext = primaryKeyContext.clustering_column();
clusteringKeysContext.map((clusteringKey, i) => {
const clusteringKeyName = clusteringKey.getText()
const col = {
"name": clusteringKeyName,
"type": columns.filter(x => x.name == clusteringKeyName)[0].type
}
clusteringKeys.push(col)
})
}
}
})
columns = columns.filter(col => {
return partitionKeys.filter(pk => pk.name == col.name).length == 0 && clusteringKeys.filter(cc => cc.name == col.name).length == 0
})
const allColumns = [].concat(columns,partitionKeys, clusteringKeys)
this.$data.tableName = tableName;
this.$data.keyspaceName = keyspaceName;
this.$data.columns = columns;
this.$data.clusteringKeys = clusteringKeys;
this.$data.partitionKeys = partitionKeys;
this.$data.allColumns = allColumns;
console.log(this.$data)
console.log(defaultYaml)
// schema and bindings
let createTableStatement = "CREATE TABLE IF NOT EXISTS <<keyspace:"+keyspaceName+">>."+tableName +" (\n";
console.log(basictypes)
defaultYaml.bindings = {}
allColumns.forEach(column => {
let recipe = basictypes.bindings[column.type+"val"];
if (recipe == undefined){
const chars = new antlr4.InputStream(column.type);
const lexer = new CQL3Lexer.CQL3Lexer(chars);
lexer.strictMode = false; // do not use js strictMode
const tokens = new antlr4.CommonTokenStream(lexer);
const parser = new CQL3Parser.CQL3Parser(tokens);
const typeContext = parser.column_type();
const collectionTypeContext = typeContext.data_type().collection_type();
const collectionType = collectionTypeContext.children[0].getText();
if (collectionType.toLowerCase() == "set"){
const type = collectionTypeContext.children[2].getText();
recipe = "Set(HashRange(1,<<set-count-"+column.name+":5>>),"+basictypes.bindings[type+"val"]+") -> java.util.Set"
}
else if (collectionType.toLowerCase() == "list"){
const type = collectionTypeContext.children[2].getText();
recipe = "List(HashRange(1,<<list-count-"+column.name+":5>>),"+basictypes.bindings[type+"val"]+") -> java.util.List"
}
else if (collectionType.toLowerCase() == "map"){
const type1 = collectionTypeContext.children[2].getText();
const type2 = collectionTypeContext.children[4].getText();
recipe = "Map(HashRange(1,<<map-count-"+column.name+":5>>),"+basictypes.bindings[type1+"val"]+","+basictypes.bindings[type2+"val"]+") -> java.util.Map"
}
else{
alert("Could not generate recipe for type: " + column.type + " for column: " + column.name)
}
}
defaultYaml.bindings[column.name] = recipe
createTableStatement = createTableStatement+ column.name+ " " + column.type + ",\n";
})
let pk = "PRIMARY KEY (("
pk = pk +partitionKeys.map(x => x.name).reduce((x, acc)=> acc= acc+","+x)
pk = pk + ")"
if (clusteringKeys.length > 0){
pk = pk + ","+ clusteringKeys.map(x => x.name).reduce((x, acc)=> acc= acc+","+x)
}
pk = pk + ")"
createTableStatement = createTableStatement+pk+"\n);"
defaultYaml.blocks[0].statements[0] = {"create-table": createTableStatement}
//rampup
let insertStatement= "INSERT INTO <<keyspace:"+keyspaceName+">>."+tableName +" (\n";
insertStatement = insertStatement + allColumns.map(x => x.name).reduce((x, acc)=> acc = acc+",\n"+x) + "\n) VALUES (\n";
insertStatement = insertStatement + allColumns.map(x => "{"+x.name+"}").reduce((x, acc)=> acc = acc+",\n"+x) +"\n);"
defaultYaml.blocks[1].statements[0] = {"insert-rampup": insertStatement}
//main-write
defaultYaml.blocks[2].statements[0] = {"insert-main": insertStatement}
//main-read-partition
let readPartitionStatement= "SELECT * from <<keyspace:"+keyspaceName+">>."+tableName +" WHERE ";
readPartitionStatement = readPartitionStatement + partitionKeys.map(x => x.name + "={" +x.name+ "}").reduce((x, acc)=> acc = acc+" AND "+x);
let readRowStatement = readPartitionStatement + ";";
if (clusteringKeys.length >0) {
readPartitionStatement = readPartitionStatement + " AND " + clusteringKeys.map(x => x.name + "={" + x.name + "}").reduce((x, acc) => acc = acc + " AND " + x);
}
readPartitionStatement = readPartitionStatement + ";";
defaultYaml.blocks[3].statements[0] = {"read-partition": readPartitionStatement}
//main-read-row
defaultYaml.blocks[4].statements[0] = {"read-row": readRowStatement}
defaultYaml.description = this.$data.workloadName
const yamlOutputText = yamlDumper.dump(defaultYaml)
var blob = new Blob([yamlOutputText], {type: "text/plain;charset=utf-8"});
saveAs(blob, this.$data.workloadName +".yaml");
}catch(e){
console.log("blur, invalid create table def")
console.log(e)
}
},
},
data(context) {
let data = {
enabled: false,
createTableDef: "",
workloadName: "",
};
return data;
},
async asyncData({ $axios, store }) {
let enabled = await $axios.$get("/services/nb/enabled")
.then(res => {
return res
})
.catch((e) => {
console.log("back-end not found");
})
return {
enabled: enabled,
}
},
}
</script>
<style>
.container {
margin: 0 auto;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
.title {
font-family: 'Quicksand', 'Source Sans Pro', -apple-system, BlinkMacSystemFont,
'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
display: block;
font-weight: 300;
font-size: 100px;
color: #35495e;
letter-spacing: 1px;
}
.subtitle {
font-weight: 300;
font-size: 42px;
color: #526488;
word-spacing: 5px;
padding-bottom: 15px;
}
.links {
padding-top: 15px;
}
</style>

File diff suppressed because it is too large Load Diff