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>