...
1<lexer>
2 <config>
3 <name>ANTLR</name>
4 <alias>antlr</alias>
5 </config>
6 <rules>
7 <state name="nested-arg-action">
8 <rule pattern="([^$\[\]\'"/]+|"(\\\\|\\"|[^"])*"|'(\\\\|\\'|[^'])*'|//.*$\n?|/\*(.|\n)*?\*/|/(?!\*)(\\\\|\\/|[^/])*/|/)+">
9 <token type="Other"/>
10 </rule>
11 <rule pattern="\[">
12 <token type="Punctuation"/>
13 <push/>
14 </rule>
15 <rule pattern="\]">
16 <token type="Punctuation"/>
17 <pop depth="1"/>
18 </rule>
19 <rule pattern="(\$[a-zA-Z]+)(\.?)(text|value)?">
20 <bygroups>
21 <token type="NameVariable"/>
22 <token type="Punctuation"/>
23 <token type="NameProperty"/>
24 </bygroups>
25 </rule>
26 <rule pattern="(\\\\|\\\]|\\\[|[^\[\]])+">
27 <token type="Other"/>
28 </rule>
29 </state>
30 <state name="exception">
31 <rule pattern="\n">
32 <token type="TextWhitespace"/>
33 <pop depth="1"/>
34 </rule>
35 <rule pattern="\s">
36 <token type="TextWhitespace"/>
37 </rule>
38 <rule>
39 <include state="comments"/>
40 </rule>
41 <rule pattern="\[">
42 <token type="Punctuation"/>
43 <push state="nested-arg-action"/>
44 </rule>
45 <rule pattern="\{">
46 <token type="Punctuation"/>
47 <push state="action"/>
48 </rule>
49 </state>
50 <state name="whitespace">
51 <rule pattern="\s+">
52 <token type="TextWhitespace"/>
53 </rule>
54 </state>
55 <state name="root">
56 <rule>
57 <include state="whitespace"/>
58 </rule>
59 <rule>
60 <include state="comments"/>
61 </rule>
62 <rule pattern="(lexer|parser|tree)?(\s*)(grammar\b)(\s*)([A-Za-z]\w*)(;)">
63 <bygroups>
64 <token type="Keyword"/>
65 <token type="TextWhitespace"/>
66 <token type="Keyword"/>
67 <token type="TextWhitespace"/>
68 <token type="NameClass"/>
69 <token type="Punctuation"/>
70 </bygroups>
71 </rule>
72 <rule pattern="options\b">
73 <token type="Keyword"/>
74 <push state="options"/>
75 </rule>
76 <rule pattern="tokens\b">
77 <token type="Keyword"/>
78 <push state="tokens"/>
79 </rule>
80 <rule pattern="(scope)(\s*)([A-Za-z]\w*)(\s*)(\{)">
81 <bygroups>
82 <token type="Keyword"/>
83 <token type="TextWhitespace"/>
84 <token type="NameVariable"/>
85 <token type="TextWhitespace"/>
86 <token type="Punctuation"/>
87 </bygroups>
88 <push state="action"/>
89 </rule>
90 <rule pattern="(catch|finally)\b">
91 <token type="Keyword"/>
92 <push state="exception"/>
93 </rule>
94 <rule pattern="(@[A-Za-z]\w*)(\s*)(::)?(\s*)([A-Za-z]\w*)(\s*)(\{)">
95 <bygroups>
96 <token type="NameLabel"/>
97 <token type="TextWhitespace"/>
98 <token type="Punctuation"/>
99 <token type="TextWhitespace"/>
100 <token type="NameLabel"/>
101 <token type="TextWhitespace"/>
102 <token type="Punctuation"/>
103 </bygroups>
104 <push state="action"/>
105 </rule>
106 <rule pattern="((?:protected|private|public|fragment)\b)?(\s*)([A-Za-z]\w*)(!)?">
107 <bygroups>
108 <token type="Keyword"/>
109 <token type="TextWhitespace"/>
110 <token type="NameLabel"/>
111 <token type="Punctuation"/>
112 </bygroups>
113 <push state="rule-alts" state="rule-prelims"/>
114 </rule>
115 </state>
116 <state name="tokens">
117 <rule>
118 <include state="whitespace"/>
119 </rule>
120 <rule>
121 <include state="comments"/>
122 </rule>
123 <rule pattern="\{">
124 <token type="Punctuation"/>
125 </rule>
126 <rule pattern="([A-Z]\w*)(\s*)(=)?(\s*)(\'(?:\\\\|\\\'|[^\']*)\')?(\s*)(;)">
127 <bygroups>
128 <token type="NameLabel"/>
129 <token type="TextWhitespace"/>
130 <token type="Punctuation"/>
131 <token type="TextWhitespace"/>
132 <token type="LiteralString"/>
133 <token type="TextWhitespace"/>
134 <token type="Punctuation"/>
135 </bygroups>
136 </rule>
137 <rule pattern="\}">
138 <token type="Punctuation"/>
139 <pop depth="1"/>
140 </rule>
141 </state>
142 <state name="options">
143 <rule>
144 <include state="whitespace"/>
145 </rule>
146 <rule>
147 <include state="comments"/>
148 </rule>
149 <rule pattern="\{">
150 <token type="Punctuation"/>
151 </rule>
152 <rule pattern="([A-Za-z]\w*)(\s*)(=)(\s*)([A-Za-z]\w*|\'(?:\\\\|\\\'|[^\']*)\'|[0-9]+|\*)(\s*)(;)">
153 <bygroups>
154 <token type="NameVariable"/>
155 <token type="TextWhitespace"/>
156 <token type="Punctuation"/>
157 <token type="TextWhitespace"/>
158 <token type="Text"/>
159 <token type="TextWhitespace"/>
160 <token type="Punctuation"/>
161 </bygroups>
162 </rule>
163 <rule pattern="\}">
164 <token type="Punctuation"/>
165 <pop depth="1"/>
166 </rule>
167 </state>
168 <state name="rule-alts">
169 <rule>
170 <include state="whitespace"/>
171 </rule>
172 <rule>
173 <include state="comments"/>
174 </rule>
175 <rule pattern="options\b">
176 <token type="Keyword"/>
177 <push state="options"/>
178 </rule>
179 <rule pattern=":">
180 <token type="Punctuation"/>
181 </rule>
182 <rule pattern="'(\\\\|\\'|[^'])*'">
183 <token type="LiteralString"/>
184 </rule>
185 <rule pattern=""(\\\\|\\"|[^"])*"">
186 <token type="LiteralString"/>
187 </rule>
188 <rule pattern="<<([^>]|>[^>])>>">
189 <token type="LiteralString"/>
190 </rule>
191 <rule pattern="\$?[A-Z_]\w*">
192 <token type="NameConstant"/>
193 </rule>
194 <rule pattern="\$?[a-z_]\w*">
195 <token type="NameVariable"/>
196 </rule>
197 <rule pattern="(\+|\||->|=>|=|\(|\)|\.\.|\.|\?|\*|\^|!|\#|~)">
198 <token type="Operator"/>
199 </rule>
200 <rule pattern=",">
201 <token type="Punctuation"/>
202 </rule>
203 <rule pattern="\[">
204 <token type="Punctuation"/>
205 <push state="nested-arg-action"/>
206 </rule>
207 <rule pattern="\{">
208 <token type="Punctuation"/>
209 <push state="action"/>
210 </rule>
211 <rule pattern=";">
212 <token type="Punctuation"/>
213 <pop depth="1"/>
214 </rule>
215 </state>
216 <state name="rule-prelims">
217 <rule>
218 <include state="whitespace"/>
219 </rule>
220 <rule>
221 <include state="comments"/>
222 </rule>
223 <rule pattern="returns\b">
224 <token type="Keyword"/>
225 </rule>
226 <rule pattern="\[">
227 <token type="Punctuation"/>
228 <push state="nested-arg-action"/>
229 </rule>
230 <rule pattern="\{">
231 <token type="Punctuation"/>
232 <push state="action"/>
233 </rule>
234 <rule pattern="(throws)(\s+)([A-Za-z]\w*)">
235 <bygroups>
236 <token type="Keyword"/>
237 <token type="TextWhitespace"/>
238 <token type="NameLabel"/>
239 </bygroups>
240 </rule>
241 <rule pattern="(,)(\s*)([A-Za-z]\w*)">
242 <bygroups>
243 <token type="Punctuation"/>
244 <token type="TextWhitespace"/>
245 <token type="NameLabel"/>
246 </bygroups>
247 </rule>
248 <rule pattern="options\b">
249 <token type="Keyword"/>
250 <push state="options"/>
251 </rule>
252 <rule pattern="(scope)(\s+)(\{)">
253 <bygroups>
254 <token type="Keyword"/>
255 <token type="TextWhitespace"/>
256 <token type="Punctuation"/>
257 </bygroups>
258 <push state="action"/>
259 </rule>
260 <rule pattern="(scope)(\s+)([A-Za-z]\w*)(\s*)(;)">
261 <bygroups>
262 <token type="Keyword"/>
263 <token type="TextWhitespace"/>
264 <token type="NameLabel"/>
265 <token type="TextWhitespace"/>
266 <token type="Punctuation"/>
267 </bygroups>
268 </rule>
269 <rule pattern="(@[A-Za-z]\w*)(\s*)(\{)">
270 <bygroups>
271 <token type="NameLabel"/>
272 <token type="TextWhitespace"/>
273 <token type="Punctuation"/>
274 </bygroups>
275 <push state="action"/>
276 </rule>
277 <rule pattern=":">
278 <token type="Punctuation"/>
279 <pop depth="1"/>
280 </rule>
281 </state>
282 <state name="action">
283 <rule pattern="([^${}\'"/\\]+|"(\\\\|\\"|[^"])*"|'(\\\\|\\'|[^'])*'|//.*$\n?|/\*(.|\n)*?\*/|/(?!\*)(\\\\|\\/|[^/])*/|\\(?!%)|/)+">
284 <token type="Other"/>
285 </rule>
286 <rule pattern="(\\)(%)">
287 <bygroups>
288 <token type="Punctuation"/>
289 <token type="Other"/>
290 </bygroups>
291 </rule>
292 <rule pattern="(\$[a-zA-Z]+)(\.?)(text|value)?">
293 <bygroups>
294 <token type="NameVariable"/>
295 <token type="Punctuation"/>
296 <token type="NameProperty"/>
297 </bygroups>
298 </rule>
299 <rule pattern="\{">
300 <token type="Punctuation"/>
301 <push/>
302 </rule>
303 <rule pattern="\}">
304 <token type="Punctuation"/>
305 <pop depth="1"/>
306 </rule>
307 </state>
308 <state name="comments">
309 <rule pattern="//.*$">
310 <token type="Comment"/>
311 </rule>
312 <rule pattern="/\*(.|\n)*?\*/">
313 <token type="Comment"/>
314 </rule>
315 </state>
316 </rules>
317</lexer>
View as plain text