cassandra_cql.xml

  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="[^&#39;]+">
 14        <token type="LiteralStringSingle"/>
 15      </rule>
 16      <rule pattern="&#39;&#39;">
 17        <token type="LiteralStringSingle"/>
 18      </rule>
 19      <rule pattern="&#39;">
 20        <token type="LiteralStringSingle"/>
 21        <pop depth="1"/>
 22      </rule>
 23    </state>
 24    <state name="quoted-ident">
 25      <rule pattern="[^&#34;]+">
 26        <token type="LiteralStringName"/>
 27      </rule>
 28      <rule pattern="&#34;&#34;">
 29        <token type="LiteralStringName"/>
 30      </rule>
 31      <rule pattern="&#34;">
 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="[+*/&lt;&gt;=~!@#%^&amp;|`?-]+">
 63        <token type="Operator"/>
 64      </rule>
 65      <rule pattern="(?s)(java|javascript)(\s+)(AS)(\s+)(&#39;|\$\$)(.*?)(\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="&#39;">
 99        <token type="LiteralStringSingle"/>
100        <push state="string"/>
101      </rule>
102      <rule pattern="&#34;">
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=":([&#39;&#34;]?)[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>