1<lexer>
2 <config>
3 <name>Cassandra CQL</name>
4 <alias>cassandra</alias>
5 <alias>cql</alias>
6 <filename>*.cql</filename>
7 <mime_type>text/x-cql</mime_type>
8 <case_insensitive>true</case_insensitive>
9 <not_multiline>true</not_multiline>
10 </config>
11 <rules>
12 <state name="string">
13 <rule pattern="[^']+">
14 <token type="LiteralStringSingle"/>
15 </rule>
16 <rule pattern="''">
17 <token type="LiteralStringSingle"/>
18 </rule>
19 <rule pattern="'">
20 <token type="LiteralStringSingle"/>
21 <pop depth="1"/>
22 </rule>
23 </state>
24 <state name="quoted-ident">
25 <rule pattern="[^"]+">
26 <token type="LiteralStringName"/>
27 </rule>
28 <rule pattern="""">
29 <token type="LiteralStringName"/>
30 </rule>
31 <rule pattern=""">
32 <token type="LiteralStringName"/>
33 <pop depth="1"/>
34 </rule>
35 </state>
36 <state name="dollar-string">
37 <rule pattern="[^\$]+">
38 <token type="LiteralStringHeredoc"/>
39 </rule>
40 <rule pattern="\$\$">
41 <token type="LiteralStringHeredoc"/>
42 <pop depth="1"/>
43 </rule>
44 </state>
45 <state name="root">
46 <rule pattern="\s+">
47 <token type="TextWhitespace"/>
48 </rule>
49 <rule pattern="(--|\/\/).*\n?">
50 <token type="CommentSingle"/>
51 </rule>
52 <rule pattern="/\*">
53 <token type="CommentMultiline"/>
54 <push state="multiline-comments"/>
55 </rule>
56 <rule pattern="(ascii|bigint|blob|boolean|counter|date|decimal|double|float|frozen|inet|int|list|map|set|smallint|text|time|timestamp|timeuuid|tinyint|tuple|uuid|varchar|varint)\b">
57 <token type="NameBuiltin"/>
58 </rule>
59 <rule pattern="(DURABLE_WRITES|LOCAL_QUORUM|MATERIALIZED|COLUMNFAMILY|REPLICATION|NORECURSIVE|NOSUPERUSER|PERMISSIONS|EACH_QUORUM|CONSISTENCY|PERMISSION|CLUSTERING|WRITETIME|SUPERUSER|KEYSPACES|AUTHORIZE|LOCAL_ONE|AGGREGATE|FINALFUNC|PARTITION|FILTERING|UNLOGGED|CONTAINS|DISTINCT|FUNCTION|LANGUAGE|INFINITY|INITCOND|TRUNCATE|KEYSPACE|PASSWORD|REPLACE|OPTIONS|TRIGGER|STORAGE|ENTRIES|RETURNS|COMPACT|PRIMARY|EXISTS|STATIC|PAGING|UPDATE|CUSTOM|VALUES|INSERT|DELETE|MODIFY|CREATE|SELECT|SCHEMA|LOGGED|REVOKE|RENAME|QUORUM|CALLED|STYPE|ORDER|ALTER|BATCH|BEGIN|COUNT|ROLES|APPLY|WHERE|SFUNC|LEVEL|INPUT|LOGIN|INDEX|TABLE|THREE|ALLOW|TOKEN|LIMIT|USING|USERS|GRANT|FROM|KEYS|JSON|USER|INTO|ROLE|TYPE|VIEW|DESC|WITH|DROP|FULL|ASC|TTL|OFF|PER|KEY|USE|ADD|NAN|ONE|ALL|ANY|TWO|AND|NOT|AS|IN|IF|OF|IS|ON|TO|BY|OR)\b">
60 <token type="Keyword"/>
61 </rule>
62 <rule pattern="[+*/<>=~!@#%^&|`?-]+">
63 <token type="Operator"/>
64 </rule>
65 <rule pattern="(?s)(java|javascript)(\s+)(AS)(\s+)('|\$\$)(.*?)(\5)">
66 <usingbygroup>
67 <sublexer_name_group>1</sublexer_name_group>
68 <code_group>6</code_group>
69 <emitters>
70 <token type="NameBuiltin"/>
71 <token type="TextWhitespace"/>
72 <token type="Keyword"/>
73 <token type="TextWhitespace"/>
74 <token type="LiteralStringHeredoc"/>
75 <token type="LiteralStringHeredoc"/>
76 <token type="LiteralStringHeredoc"/>
77 </emitters>
78 </usingbygroup>
79 </rule>
80 <rule pattern="(true|false|null)\b">
81 <token type="KeywordConstant"/>
82 </rule>
83 <rule pattern="0x[0-9a-f]+">
84 <token type="LiteralNumberHex"/>
85 </rule>
86 <rule pattern="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}">
87 <token type="LiteralNumberHex"/>
88 </rule>
89 <rule pattern="\.[0-9]+(e[+-]?[0-9]+)?">
90 <token type="Error"/>
91 </rule>
92 <rule pattern="-?[0-9]+(\.[0-9])?(e[+-]?[0-9]+)?">
93 <token type="LiteralNumberFloat"/>
94 </rule>
95 <rule pattern="[0-9]+">
96 <token type="LiteralNumberInteger"/>
97 </rule>
98 <rule pattern="'">
99 <token type="LiteralStringSingle"/>
100 <push state="string"/>
101 </rule>
102 <rule pattern=""">
103 <token type="LiteralStringName"/>
104 <push state="quoted-ident"/>
105 </rule>
106 <rule pattern="\$\$">
107 <token type="LiteralStringHeredoc"/>
108 <push state="dollar-string"/>
109 </rule>
110 <rule pattern="[a-z_]\w*">
111 <token type="Name"/>
112 </rule>
113 <rule pattern=":(['"]?)[a-z]\w*\b\1">
114 <token type="NameVariable"/>
115 </rule>
116 <rule pattern="[;:()\[\]\{\},.]">
117 <token type="Punctuation"/>
118 </rule>
119 </state>
120 <state name="multiline-comments">
121 <rule pattern="/\*">
122 <token type="CommentMultiline"/>
123 <push state="multiline-comments"/>
124 </rule>
125 <rule pattern="\*/">
126 <token type="CommentMultiline"/>
127 <pop depth="1"/>
128 </rule>
129 <rule pattern="[^/*]+">
130 <token type="CommentMultiline"/>
131 </rule>
132 <rule pattern="[/*]">
133 <token type="CommentMultiline"/>
134 </rule>
135 </state>
136 </rules>
137</lexer>