...
1<lexer>
2 <config>
3 <name>ArangoDB AQL</name>
4 <alias>aql</alias>
5 <filename>*.aql</filename>
6 <mime_type>text/x-aql</mime_type>
7 <dot_all>true</dot_all>
8 <ensure_nl>true</ensure_nl>
9 <case_insensitive>true</case_insensitive>
10 </config>
11 <rules>
12 <state name="comments-and-whitespace">
13 <rule pattern="\s+">
14 <token type="Text"/>
15 </rule>
16 <rule pattern="//.*?\n">
17 <token type="CommentSingle"/>
18 </rule>
19 <rule pattern="/\*">
20 <token type="CommentMultiline"/>
21 <push state="multiline-comment"/>
22 </rule>
23 </state>
24 <state name="multiline-comment">
25 <rule pattern="[^*]+">
26 <token type="CommentMultiline"/>
27 </rule>
28 <rule pattern="\*/">
29 <token type="CommentMultiline"/>
30 <pop depth="1"/>
31 </rule>
32 <rule pattern="\*">
33 <token type="CommentMultiline"/>
34 </rule>
35 </state>
36 <state name="double-quote">
37 <rule pattern="\\.">
38 <token type="LiteralStringDouble"/>
39 </rule>
40 <rule pattern="[^"\\]+">
41 <token type="LiteralStringDouble"/>
42 </rule>
43 <rule pattern=""">
44 <token type="LiteralStringDouble"/>
45 <pop depth="1"/>
46 </rule>
47 </state>
48 <state name="single-quote">
49 <rule pattern="\\.">
50 <token type="LiteralStringSingle"/>
51 </rule>
52 <rule pattern="[^'\\]+">
53 <token type="LiteralStringSingle"/>
54 </rule>
55 <rule pattern="'">
56 <token type="LiteralStringSingle"/>
57 <pop depth="1"/>
58 </rule>
59 </state>
60 <state name="backtick">
61 <rule pattern="\\.">
62 <token type="Name"/>
63 </rule>
64 <rule pattern="[^`\\]+">
65 <token type="Name"/>
66 </rule>
67 <rule pattern="`">
68 <token type="Name"/>
69 <pop depth="1"/>
70 </rule>
71 </state>
72 <state name="forwardtick">
73 <rule pattern="\\.">
74 <token type="Name"/>
75 </rule>
76 <rule pattern="[^´\\]+">
77 <token type="Name"/>
78 </rule>
79 <rule pattern="´">
80 <token type="Name"/>
81 <pop depth="1"/>
82 </rule>
83 </state>
84 <state name="identifier">
85 <rule pattern="(?:\$?|_+)[a-z]+[_a-z0-9]*">
86 <token type="Name"/>
87 </rule>
88 <rule pattern="`">
89 <token type="Name"/>
90 <push state="backtick"/>
91 </rule>
92 <rule pattern="´">
93 <token type="Name"/>
94 <push state="forwardtick"/>
95 </rule>
96 </state>
97 <state name="root">
98 <rule>
99 <include state="comments-and-whitespace"/>
100 </rule>
101 <rule pattern="0b[01]+">
102 <token type="LiteralNumberBin"/>
103 </rule>
104 <rule pattern="0x[0-9a-f]+">
105 <token type="LiteralNumberHex"/>
106 </rule>
107 <rule pattern="(?:0|[1-9][0-9]*)(?![\.e])">
108 <token type="LiteralNumberInteger"/>
109 </rule>
110 <rule pattern="(?:(?:0|[1-9][0-9]*)(?:\.[0-9]+)?|\.[0-9]+)(?:e[\-\+]?[0-9]+)?">
111 <token type="LiteralNumberFloat"/>
112 </rule>
113 <rule pattern="@@(?:_+[a-z0-9]+[a-z0-9_]*|[a-z0-9][a-z0-9_]*)">
114 <token type="NameVariableGlobal"/>
115 </rule>
116 <rule pattern="@(?:_+[a-z0-9]+[a-z0-9_]*|[a-z0-9][a-z0-9_]*)">
117 <token type="NameVariable"/>
118 </rule>
119 <rule pattern="=~|!~|[=!<>]=?|[%?:/*+-]|\.\.|&&|\|\|">
120 <token type="Operator"/>
121 </rule>
122 <rule pattern="[.,(){}\[\]]">
123 <token type="Punctuation"/>
124 </rule>
125 <rule pattern="[a-zA-Z0-9][a-zA-Z0-9_]*(?:::[a-zA-Z0-9_]+)+(?=\s*\()">
126 <token type="NameFunction"/>
127 </rule>
128 <rule pattern="(WITH)(\s+)(COUNT)(\s+)(INTO)\b">
129 <bygroups>
130 <token type="KeywordReserved"/>
131 <token type="Text"/>
132 <token type="KeywordPseudo"/>
133 <token type="Text"/>
134 <token type="KeywordReserved"/>
135 </bygroups>
136 </rule>
137 <rule pattern="(?:KEEP|PRUNE|SEARCH|TO)\b">
138 <token type="KeywordPseudo"/>
139 </rule>
140 <rule pattern="OPTIONS(?=\s*\{)">
141 <token type="KeywordPseudo"/>
142 </rule>
143 <rule pattern="(?:AGGREGATE|ALL|ALL_SHORTEST_PATHS|AND|ANY|ASC|AT LEAST|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_PATHS|K_SHORTEST_PATHS|LIKE|LIMIT|NONE|NOT|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WITH|WINDOW)\b">
144 <token type="KeywordReserved"/>
145 </rule>
146 <rule pattern="LET\b">
147 <token type="KeywordDeclaration"/>
148 </rule>
149 <rule pattern="(?:true|false|null)\b">
150 <token type="KeywordConstant"/>
151 </rule>
152 <rule pattern="(?-i)(?:CURRENT|NEW|OLD)\b">
153 <token type="NameBuiltinPseudo"/>
154 </rule>
155 <rule pattern="(?:to_bool|to_number|to_string|to_array|to_list|is_null|is_bool|is_number|is_string|is_array|is_list|is_object|is_document|is_datestring|typename|json_stringify|json_parse|concat|concat_separator|char_length|lower|upper|substring|substring_bytes|left|right|trim|reverse|contains|log|log2|log10|exp|exp2|sin|cos|tan|asin|acos|atan|atan2|radians|degrees|pi|regex_test|regex_replace|like|floor|ceil|round|abs|rand|sqrt|pow|length|count|min|max|average|avg|sum|product|median|variance_population|variance_sample|variance|percentile|bit_and|bit_or|bit_xor|bit_negate|bit_test|bit_popcount|bit_shift_left|bit_shift_right|bit_construct|bit_deconstruct|bit_to_string|bit_from_string|first|last|unique|outersection|interleave|in_range|jaccard|matches|merge|merge_recursive|has|attributes|keys|values|unset|unset_recursive|keep|keep_recursive|near|within|within_rectangle|is_in_polygon|distance|fulltext|stddev_sample|stddev_population|stddev|slice|nth|position|contains_array|translate|zip|call|apply|push|append|pop|shift|unshift|remove_value|remove_values|remove_nth|replace_nth|date_now|date_timestamp|date_iso8601|date_dayofweek|date_year|date_month|date_day|date_hour|date_minute|date_second|date_millisecond|date_dayofyear|date_isoweek|date_isoweekyear|date_leapyear|date_quarter|date_days_in_month|date_trunc|date_round|date_add|date_subtract|date_diff|date_compare|date_format|date_utctolocal|date_localtoutc|date_timezone|date_timezones|fail|passthru|v8|sleep|schema_get|schema_validate|shard_id|version|noopt|noeval|not_null|first_list|first_document|parse_identifier|current_user|current_database|collection_count|pregel_result|collections|document|decode_rev|range|union|union_distinct|minus|intersection|flatten|is_same_collection|check_document|ltrim|rtrim|find_first|find_last|split|substitute|ipv4_to_number|ipv4_from_number|is_ipv4|md5|sha1|sha256|sha512|crc32|fnv64|hash|random_token|to_base64|to_hex|encode_uri_component|soundex|assert|warn|is_key|sorted|sorted_unique|count_distinct|count_unique|levenshtein_distance|levenshtein_match|regex_matches|regex_split|ngram_match|ngram_similarity|ngram_positional_similarity|uuid|tokens|exists|starts_with|phrase|min_match|bm25|tfidf|boost|analyzer|offset_info|value|cosine_similarity|decay_exp|decay_gauss|decay_linear|l1_distance|l2_distance|minhash|minhash_count|minhash_error|minhash_match|geo_point|geo_multipoint|geo_polygon|geo_multipolygon|geo_linestring|geo_multilinestring|geo_contains|geo_intersects|geo_equals|geo_distance|geo_area|geo_in_range)(?=\s*\()">
156 <token type="NameFunction"/>
157 </rule>
158 <rule pattern=""">
159 <token type="LiteralStringDouble"/>
160 <push state="double-quote"/>
161 </rule>
162 <rule pattern="'">
163 <token type="LiteralStringSingle"/>
164 <push state="single-quote"/>
165 </rule>
166 <!-- not part of the language but useful for highlighting query explain outputs -->
167 <rule pattern="#\d+\b">
168 <token type="NameLabel"/>
169 </rule>
170 <rule>
171 <include state="identifier"/>
172 </rule>
173 </state>
174 </rules>
175</lexer>
View as plain text