Skip to content

Commit 4207fbe

Browse files
authored
chore: add cql grammar (#8)
1 parent 7cd3429 commit 4207fbe

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+57900
-0
lines changed

cql/CqlLexer.g4

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false
2+
// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine
3+
// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true
4+
5+
lexer grammar CqlLexer;
6+
7+
options {
8+
caseInsensitive = true;
9+
}
10+
11+
// Operators and Punctuators
12+
13+
LR_BRACKET : '(';
14+
RR_BRACKET : ')';
15+
LC_BRACKET : '{';
16+
RC_BRACKET : '}';
17+
LS_BRACKET : '[';
18+
RS_BRACKET : ']';
19+
COMMA : ',';
20+
SEMI : ';';
21+
COLON : ':';
22+
DOT : '.';
23+
STAR : '*';
24+
DIVIDE : '/';
25+
MODULE : '%';
26+
PLUS : '+';
27+
MINUSMINUS : '--';
28+
MINUS : '-';
29+
DQUOTE : '"';
30+
SQUOTE : '\'';
31+
OPERATOR_EQ : '=';
32+
OPERATOR_LT : '<';
33+
OPERATOR_GT : '>';
34+
OPERATOR_LTE : '<=';
35+
OPERATOR_GTE : '>=';
36+
37+
// Keywords
38+
39+
K_ADD : 'ADD';
40+
K_AGGREGATE : 'AGGREGATE';
41+
K_ALL : 'ALL';
42+
K_ALLOW : 'ALLOW';
43+
K_ALTER : 'ALTER';
44+
K_AND : 'AND';
45+
K_ANY : 'ANY';
46+
K_APPLY : 'APPLY';
47+
K_AS : 'AS';
48+
K_ASC : 'ASC';
49+
K_AUTHORIZE : 'AUTHORIZE';
50+
K_BATCH : 'BATCH';
51+
K_BEGIN : 'BEGIN';
52+
K_BY : 'BY';
53+
K_CALLED : 'CALLED';
54+
K_CLUSTERING : 'CLUSTERING';
55+
K_COLUMNFAMILY : 'COLUMNFAMILY';
56+
K_COMPACT : 'COMPACT';
57+
K_CONSISTENCY : 'CONSISTENCY';
58+
K_CONTAINS : 'CONTAINS';
59+
K_CREATE : 'CREATE';
60+
K_CUSTOM : 'CUSTOM';
61+
K_DELETE : 'DELETE';
62+
K_DESC : 'DESC';
63+
K_DESCRIBE : 'DESCRIBE';
64+
K_DISTINCT : 'DISTINCT';
65+
K_DROP : 'DROP';
66+
K_DURABLE_WRITES : 'DURABLE_WRITES';
67+
K_EACH_QUORUM : 'EACH_QUORUM';
68+
K_ENTRIES : 'ENTRIES';
69+
K_EXECUTE : 'EXECUTE';
70+
K_EXISTS : 'EXISTS';
71+
K_FALSE : 'FALSE';
72+
K_FILTERING : 'FILTERING';
73+
K_FINALFUNC : 'FINALFUNC';
74+
K_FROM : 'FROM';
75+
K_FULL : 'FULL';
76+
K_FUNCTION : 'FUNCTION';
77+
K_FUNCTIONS : 'FUNCTIONS';
78+
K_GRANT : 'GRANT';
79+
K_IF : 'IF';
80+
K_IN : 'IN';
81+
K_INDEX : 'INDEX';
82+
K_INFINITY : 'INFINITY';
83+
K_INITCOND : 'INITCOND';
84+
K_INPUT : 'INPUT';
85+
K_INSERT : 'INSERT';
86+
K_INTO : 'INTO';
87+
K_IS : 'IS';
88+
K_JSON : 'JSON';
89+
K_KEY : 'KEY';
90+
K_KEYS : 'KEYS';
91+
K_KEYSPACE : 'KEYSPACE';
92+
K_KEYSPACES : 'KEYSPACES';
93+
K_LANGUAGE : 'LANGUAGE';
94+
K_LEVEL : 'LEVEL';
95+
K_LIMIT : 'LIMIT';
96+
K_LOCAL_ONE : 'LOCAL_ONE';
97+
K_LOCAL_QUORUM : 'LOCAL_QUORUM';
98+
K_LOGGED : 'LOGGED';
99+
K_LOGIN : 'LOGIN';
100+
K_MATERIALIZED : 'MATERIALIZED';
101+
K_MODIFY : 'MODIFY';
102+
K_NAN : 'NAN';
103+
K_NORECURSIVE : 'NORECURSIVE';
104+
K_NOSUPERUSER : 'NOSUPERUSER';
105+
K_NOT : 'NOT';
106+
K_NULL : 'NULL';
107+
K_OF : 'OF';
108+
K_ON : 'ON';
109+
K_ONE : 'ONE';
110+
K_OPTIONS : 'OPTIONS';
111+
K_OR : 'OR';
112+
K_ORDER : 'ORDER';
113+
K_PARTITION : 'PARTITION';
114+
K_PASSWORD : 'PASSWORD';
115+
K_PER : 'PER';
116+
K_PERMISSION : 'PERMISSION';
117+
K_PERMISSIONS : 'PERMISSIONS';
118+
K_PRIMARY : 'PRIMARY';
119+
K_QUORUM : 'QUORUM';
120+
K_RENAME : 'RENAME';
121+
K_REPLACE : 'REPLACE';
122+
K_REPLICATION : 'REPLICATION';
123+
K_RETURNS : 'RETURNS';
124+
K_REVOKE : 'REVOKE';
125+
K_ROLE : 'ROLE';
126+
K_ROLES : 'ROLES';
127+
K_SCHEMA : 'SCHEMA';
128+
K_SELECT : 'SELECT';
129+
K_SET : 'SET';
130+
K_SFUNC : 'SFUNC';
131+
K_STATIC : 'STATIC';
132+
K_STORAGE : 'STORAGE';
133+
K_STYPE : 'STYPE';
134+
K_SUPERUSER : 'SUPERUSER';
135+
K_TABLE : 'TABLE';
136+
K_THREE : 'THREE';
137+
K_TIMESTAMP : 'TIMESTAMP';
138+
K_TO : 'TO';
139+
K_TOKEN : 'TOKEN';
140+
K_TRIGGER : 'TRIGGER';
141+
K_TRUE : 'TRUE';
142+
K_TRUNCATE : 'TRUNCATE';
143+
K_TTL : 'TTL';
144+
K_TWO : 'TWO';
145+
K_TYPE : 'TYPE';
146+
K_UNLOGGED : 'UNLOGGED';
147+
K_UPDATE : 'UPDATE';
148+
K_USE : 'USE';
149+
K_USER : 'USER';
150+
K_USING : 'USING';
151+
K_UUID : 'UUID';
152+
K_VALUES : 'VALUES';
153+
K_VIEW : 'VIEW';
154+
K_WHERE : 'WHERE';
155+
K_WITH : 'WITH';
156+
K_WRITETIME : 'WRITETIME';
157+
K_ASCII : 'ASCII';
158+
K_BIGINT : 'BIGINT';
159+
K_BLOB : 'BLOB';
160+
K_BOOLEAN : 'BOOLEAN';
161+
K_COUNTER : 'COUNTER';
162+
K_DATE : 'DATE';
163+
K_DECIMAL : 'DECIMAL';
164+
K_DOUBLE : 'DOUBLE';
165+
K_FLOAT : 'FLOAT';
166+
K_FROZEN : 'FROZEN';
167+
K_INET : 'INET';
168+
K_INT : 'INT';
169+
K_LIST : 'LIST';
170+
K_MAP : 'MAP';
171+
K_SMALLINT : 'SMALLINT';
172+
K_TEXT : 'TEXT';
173+
K_TIMEUUID : 'TIMEUUID';
174+
K_TIME : 'TIME';
175+
K_TINYINT : 'TINYINT';
176+
K_TUPLE : 'TUPLE';
177+
K_VARCHAR : 'VARCHAR';
178+
K_VARINT : 'VARINT';
179+
180+
// Literals
181+
182+
CODE_BLOCK: '$$' (~ '$' | '$' ~'$')* '$$';
183+
184+
STRING_LITERAL: '\'' ('\\' . | '\'\'' | ~('\'' | '\\'))* '\'';
185+
186+
DECIMAL_LITERAL: DEC_DIGIT+;
187+
188+
FLOAT_LITERAL: MINUS? [0-9]+ (DOT [0-9]+)?;
189+
190+
HEXADECIMAL_LITERAL: 'X' '\'' (HEX_DIGIT HEX_DIGIT)+ '\'' | '0X' HEX_DIGIT+;
191+
192+
REAL_LITERAL: DEC_DIGIT+ '.'? EXPONENT_NUM_PART | DEC_DIGIT* '.' DEC_DIGIT+ EXPONENT_NUM_PART?;
193+
194+
OBJECT_NAME: [A-Z] [A-Z0-9_$]* | '"' ~'"'+ '"';
195+
196+
UUID:
197+
HEX_4DIGIT HEX_4DIGIT '-' HEX_4DIGIT '-' HEX_4DIGIT '-' HEX_4DIGIT '-' HEX_4DIGIT HEX_4DIGIT HEX_4DIGIT
198+
;
199+
200+
// Hidden
201+
202+
SPACE : [ \t\r\n]+ -> channel (HIDDEN);
203+
SPEC_MYSQL_COMMENT : '/*!' .+? '*/' -> channel (HIDDEN);
204+
COMMENT_INPUT : '/*' .*? '*/' -> channel (HIDDEN);
205+
LINE_COMMENT:
206+
(('-- ' | '#' | '//') ~ [\r\n]* ('\r'? '\n' | EOF) | '--' ('\r'? '\n' | EOF)) -> channel (HIDDEN)
207+
;
208+
209+
// Fragments
210+
211+
fragment HEX_4DIGIT: [0-9A-F] [0-9A-F] [0-9A-F] [0-9A-F];
212+
213+
fragment HEX_DIGIT: [0-9A-F];
214+
215+
fragment DEC_DIGIT: [0-9];
216+
217+
fragment EXPONENT_NUM_PART: 'E' '-'? DEC_DIGIT+;

0 commit comments

Comments
 (0)