1<lexer>
2 <config>
3 <name>Batchfile</name>
4 <alias>bat</alias>
5 <alias>batch</alias>
6 <alias>dosbatch</alias>
7 <alias>winbatch</alias>
8 <filename>*.bat</filename>
9 <filename>*.cmd</filename>
10 <mime_type>application/x-dos-batch</mime_type>
11 <case_insensitive>true</case_insensitive>
12 </config>
13 <rules>
14 <state name="arithmetic">
15 <rule pattern="0[0-7]+">
16 <token type="LiteralNumberOct"/>
17 </rule>
18 <rule pattern="0x[\da-f]+">
19 <token type="LiteralNumberHex"/>
20 </rule>
21 <rule pattern="\d+">
22 <token type="LiteralNumberInteger"/>
23 </rule>
24 <rule pattern="[(),]+">
25 <token type="Punctuation"/>
26 </rule>
27 <rule pattern="([=+\-*/!~]|%|\^\^)+">
28 <token type="Operator"/>
29 </rule>
30 <rule pattern="((?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|(\^[\n\x1a]?)?[^()=+\-*/!~%^"\n\x1a&<>|\t\v\f\r ,;=\xa0]|\^[\n\x1a\t\v\f\r ,;=\xa0]?[\w\W])+">
31 <usingself state="variable"/>
32 </rule>
33 <rule pattern="(?=[\x00|&])">
34 <token type="Text"/>
35 <pop depth="1"/>
36 </rule>
37 <rule>
38 <include state="follow"/>
39 </rule>
40 </state>
41 <state name="else?">
42 <rule pattern="(?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)">
43 <usingself state="text"/>
44 </rule>
45 <rule pattern="else(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])">
46 <token type="Keyword"/>
47 <pop depth="1"/>
48 </rule>
49 <rule>
50 <pop depth="1"/>
51 </rule>
52 </state>
53 <state name="sqstring">
54 <rule>
55 <include state="variable-or-escape"/>
56 </rule>
57 <rule pattern="[^%]+|%">
58 <token type="LiteralStringSingle"/>
59 </rule>
60 </state>
61 <state name="root">
62 <rule pattern="\)((?=\()|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))(?:(?:[^\n\x1a^]|\^[\n\x1a]?[\w\W])*)">
63 <token type="CommentSingle"/>
64 </rule>
65 <rule pattern="(?=((?:(?<=^[^:])|^[^:]?)[\t\v\f\r ,;=\xa0]*)(:))">
66 <token type="Text"/>
67 <push state="follow"/>
68 </rule>
69 <rule pattern="(?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)">
70 <usingself state="text"/>
71 </rule>
72 <rule>
73 <include state="redirect"/>
74 </rule>
75 <rule pattern="[\n\x1a]+">
76 <token type="Text"/>
77 </rule>
78 <rule pattern="\(">
79 <token type="Punctuation"/>
80 <push state="root/compound"/>
81 </rule>
82 <rule pattern="@+">
83 <token type="Punctuation"/>
84 </rule>
85 <rule pattern="((?:for|if|rem)(?:(?=(?:\^[\n\x1a]?)?/)|(?:(?!\^)|(?<=m))(?:(?=\()|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?(?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|\t\v\f\r ,;=\xa0])+)?(?:\^[\n\x1a]?)?/(?:\^[\n\x1a]?)?\?)">
86 <bygroups>
87 <token type="Keyword"/>
88 <usingself state="text"/>
89 </bygroups>
90 <push state="follow"/>
91 </rule>
92 <rule pattern="(goto(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(]))((?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|[^"%\n\x1a&<>|])*(?:\^[\n\x1a]?)?/(?:\^[\n\x1a]?)?\?(?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|[^"%\n\x1a&<>|])*)">
93 <bygroups>
94 <token type="Keyword"/>
95 <usingself state="text"/>
96 </bygroups>
97 <push state="follow"/>
98 </rule>
99 <rule pattern="(setlocal|endlocal|prompt|verify|rename|mklink|rmdir|shift|start|color|dpath|title|chdir|erase|pushd|ftype|break|pause|mkdir|assoc|date|path|time|popd|keys|exit|type|copy|echo|move|dir|del|ren|ver|cls|vol|rd|md|cd)(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(])">
100 <token type="Keyword"/>
101 <push state="follow"/>
102 </rule>
103 <rule pattern="(call)((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?)(:)">
104 <bygroups>
105 <token type="Keyword"/>
106 <usingself state="text"/>
107 <token type="Punctuation"/>
108 </bygroups>
109 <push state="call"/>
110 </rule>
111 <rule pattern="call(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(])">
112 <token type="Keyword"/>
113 </rule>
114 <rule pattern="(for(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])(?!\^))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+))(/f(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))">
115 <bygroups>
116 <token type="Keyword"/>
117 <usingself state="text"/>
118 <token type="Keyword"/>
119 </bygroups>
120 <push state="for/f" state="for"/>
121 </rule>
122 <rule pattern="(for(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])(?!\^))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+))(/l(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))">
123 <bygroups>
124 <token type="Keyword"/>
125 <usingself state="text"/>
126 <token type="Keyword"/>
127 </bygroups>
128 <push state="for/l" state="for"/>
129 </rule>
130 <rule pattern="for(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])(?!\^)">
131 <token type="Keyword"/>
132 <push state="for2" state="for"/>
133 </rule>
134 <rule pattern="(goto(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(]))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?)(:?)">
135 <bygroups>
136 <token type="Keyword"/>
137 <usingself state="text"/>
138 <token type="Punctuation"/>
139 </bygroups>
140 <push state="label"/>
141 </rule>
142 <rule pattern="(if(?:(?=\()|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))(?!\^))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?)((?:/i(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))?)((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?)((?:not(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))?)((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?)">
143 <bygroups>
144 <token type="Keyword"/>
145 <usingself state="text"/>
146 <token type="Keyword"/>
147 <usingself state="text"/>
148 <token type="Keyword"/>
149 <usingself state="text"/>
150 </bygroups>
151 <push state="(?" state="if"/>
152 </rule>
153 <rule pattern="rem(((?=\()|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))(?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?(?:[&<>|]+|(?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|(?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|\t\v\f\r ,;=\xa0])+))+)?.*|(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(])(?:(?:[^\n\x1a^]|\^[\n\x1a]?[\w\W])*))">
154 <token type="CommentSingle"/>
155 <push state="follow"/>
156 </rule>
157 <rule pattern="(set(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(]))((?:(?:\^[\n\x1a]?)?[^\S\n])*)(/a)">
158 <bygroups>
159 <token type="Keyword"/>
160 <usingself state="text"/>
161 <token type="Keyword"/>
162 </bygroups>
163 <push state="arithmetic"/>
164 </rule>
165 <rule pattern="(set(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(]))((?:(?:\^[\n\x1a]?)?[^\S\n])*)((?:/p)?)((?:(?:\^[\n\x1a]?)?[^\S\n])*)((?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|^=]|\^[\n\x1a]?[^"=])+)?)((?:(?:\^[\n\x1a]?)?=)?)">
166 <bygroups>
167 <token type="Keyword"/>
168 <usingself state="text"/>
169 <token type="Keyword"/>
170 <usingself state="text"/>
171 <usingself state="variable"/>
172 <token type="Punctuation"/>
173 </bygroups>
174 <push state="follow"/>
175 </rule>
176 <rule>
177 <push state="follow"/>
178 </rule>
179 </state>
180 <state name="follow">
181 <rule pattern="((?:(?<=^[^:])|^[^:]?)[\t\v\f\r ,;=\xa0]*)(:)([\t\v\f\r ,;=\xa0]*)((?:(?:[^\n\x1a&<>|\t\v\f\r ,;=\xa0+:^]|\^[\n\x1a]?[\w\W])*))(.*)">
182 <bygroups>
183 <token type="Text"/>
184 <token type="Punctuation"/>
185 <token type="Text"/>
186 <token type="NameLabel"/>
187 <token type="CommentSingle"/>
188 </bygroups>
189 </rule>
190 <rule>
191 <include state="redirect"/>
192 </rule>
193 <rule pattern="(?=[\n\x1a])">
194 <token type="Text"/>
195 <pop depth="1"/>
196 </rule>
197 <rule pattern="\|\|?|&&?">
198 <token type="Punctuation"/>
199 <pop depth="1"/>
200 </rule>
201 <rule>
202 <include state="text"/>
203 </rule>
204 </state>
205 <state name="bqstring">
206 <rule>
207 <include state="variable-or-escape"/>
208 </rule>
209 <rule pattern="[^%]+|%">
210 <token type="LiteralStringBacktick"/>
211 </rule>
212 </state>
213 <state name="for2">
214 <rule pattern="\)">
215 <token type="Punctuation"/>
216 </rule>
217 <rule pattern="((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+))(do(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))">
218 <bygroups>
219 <usingself state="text"/>
220 <token type="Keyword"/>
221 </bygroups>
222 <pop depth="1"/>
223 </rule>
224 <rule pattern="[\n\x1a]+">
225 <token type="Text"/>
226 </rule>
227 <rule>
228 <include state="follow"/>
229 </rule>
230 </state>
231 <state name="label/compound">
232 <rule pattern="(?=\))">
233 <token type="Text"/>
234 <pop depth="1"/>
235 </rule>
236 <rule pattern="((?:(?:[^\n\x1a&<>|\t\v\f\r ,;=\xa0+:^)]|\^[\n\x1a]?[^)])*)?)((?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|\^[\n\x1a]?[^)]|[^"%^\n\x1a&<>|)])*)">
237 <bygroups>
238 <token type="NameLabel"/>
239 <token type="CommentSingle"/>
240 </bygroups>
241 <pop depth="1"/>
242 </rule>
243 </state>
244 <state name="for">
245 <rule pattern="((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+))(in)((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+))(\()">
246 <bygroups>
247 <usingself state="text"/>
248 <token type="Keyword"/>
249 <usingself state="text"/>
250 <token type="Punctuation"/>
251 </bygroups>
252 <pop depth="1"/>
253 </rule>
254 <rule>
255 <include state="follow"/>
256 </rule>
257 </state>
258 <state name="redirect/compound">
259 <rule pattern="((?:(?<=[\n\x1a\t\v\f\r ,;=\xa0])\d)?)(>>?&|<&)([\n\x1a\t\v\f\r ,;=\xa0]*)(\d)">
260 <bygroups>
261 <token type="LiteralNumberInteger"/>
262 <token type="Punctuation"/>
263 <token type="Text"/>
264 <token type="LiteralNumberInteger"/>
265 </bygroups>
266 </rule>
267 <rule pattern="((?:(?<=[\n\x1a\t\v\f\r ,;=\xa0])(?<!\^[\n\x1a])\d)?)(>>?|<)((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?(?:[&<>|]+|(?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|(?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|\t\v\f\r ,;=\xa0)])+))+))">
268 <bygroups>
269 <token type="LiteralNumberInteger"/>
270 <token type="Punctuation"/>
271 <usingself state="text"/>
272 </bygroups>
273 </rule>
274 </state>
275 <state name="if">
276 <rule pattern="((?:cmdextversion|errorlevel)(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+))(\d+)">
277 <bygroups>
278 <token type="Keyword"/>
279 <usingself state="text"/>
280 <token type="LiteralNumberInteger"/>
281 </bygroups>
282 <pop depth="1"/>
283 </rule>
284 <rule pattern="(defined(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+))((?:[&<>|]+|(?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|(?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|\t\v\f\r ,;=\xa0])+))+))">
285 <bygroups>
286 <token type="Keyword"/>
287 <usingself state="text"/>
288 <usingself state="variable"/>
289 </bygroups>
290 <pop depth="1"/>
291 </rule>
292 <rule pattern="(exist(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)(?:[&<>|]+|(?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|(?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|\t\v\f\r ,;=\xa0])+))+))">
293 <bygroups>
294 <token type="Keyword"/>
295 <usingself state="text"/>
296 </bygroups>
297 <pop depth="1"/>
298 </rule>
299 <rule pattern="((?:-?(?:0[0-7]+|0x[\da-f]+|\d+)(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))(?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+))((?:equ|geq|gtr|leq|lss|neq))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)(?:-?(?:0[0-7]+|0x[\da-f]+|\d+)(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])))">
300 <bygroups>
301 <usingself state="arithmetic"/>
302 <token type="OperatorWord"/>
303 <usingself state="arithmetic"/>
304 </bygroups>
305 <pop depth="1"/>
306 </rule>
307 <rule pattern="(?:[&<>|]+|(?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|(?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|\t\v\f\r ,;=\xa0])+))+)">
308 <usingself state="text"/>
309 <push state="#pop" state="if2"/>
310 </rule>
311 </state>
312 <state name="root/compound">
313 <rule pattern="\)">
314 <token type="Punctuation"/>
315 <pop depth="1"/>
316 </rule>
317 <rule pattern="(?=((?:(?<=^[^:])|^[^:]?)[\t\v\f\r ,;=\xa0]*)(:))">
318 <token type="Text"/>
319 <push state="follow/compound"/>
320 </rule>
321 <rule pattern="(?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)">
322 <usingself state="text"/>
323 </rule>
324 <rule>
325 <include state="redirect/compound"/>
326 </rule>
327 <rule pattern="[\n\x1a]+">
328 <token type="Text"/>
329 </rule>
330 <rule pattern="\(">
331 <token type="Punctuation"/>
332 <push state="root/compound"/>
333 </rule>
334 <rule pattern="@+">
335 <token type="Punctuation"/>
336 </rule>
337 <rule pattern="((?:for|if|rem)(?:(?=(?:\^[\n\x1a]?)?/)|(?:(?!\^)|(?<=m))(?:(?=\()|(?:(?=\))|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])))))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?(?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|\t\v\f\r ,;=\xa0)])+)?(?:\^[\n\x1a]?)?/(?:\^[\n\x1a]?)?\?)">
338 <bygroups>
339 <token type="Keyword"/>
340 <usingself state="text"/>
341 </bygroups>
342 <push state="follow/compound"/>
343 </rule>
344 <rule pattern="(goto(?:(?=\))|(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(])))((?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|[^"%\n\x1a&<>|)])*(?:\^[\n\x1a]?)?/(?:\^[\n\x1a]?)?\?(?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|[^"%\n\x1a&<>|)])*)">
345 <bygroups>
346 <token type="Keyword"/>
347 <usingself state="text"/>
348 </bygroups>
349 <push state="follow/compound"/>
350 </rule>
351 <rule pattern="(setlocal|endlocal|prompt|verify|rename|mklink|rmdir|shift|start|color|dpath|title|chdir|erase|pushd|ftype|break|pause|mkdir|assoc|date|path|time|popd|keys|exit|type|copy|echo|move|dir|del|ren|ver|cls|vol|rd|md|cd)(?:(?=\))|(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(]))">
352 <token type="Keyword"/>
353 <push state="follow/compound"/>
354 </rule>
355 <rule pattern="(call)((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?)(:)">
356 <bygroups>
357 <token type="Keyword"/>
358 <usingself state="text"/>
359 <token type="Punctuation"/>
360 </bygroups>
361 <push state="call/compound"/>
362 </rule>
363 <rule pattern="call(?:(?=\))|(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(]))">
364 <token type="Keyword"/>
365 </rule>
366 <rule pattern="(for(?:(?=\))|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))(?!\^))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+))(/f(?:(?=\))|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])))">
367 <bygroups>
368 <token type="Keyword"/>
369 <usingself state="text"/>
370 <token type="Keyword"/>
371 </bygroups>
372 <push state="for/f" state="for"/>
373 </rule>
374 <rule pattern="(for(?:(?=\))|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))(?!\^))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+))(/l(?:(?=\))|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])))">
375 <bygroups>
376 <token type="Keyword"/>
377 <usingself state="text"/>
378 <token type="Keyword"/>
379 </bygroups>
380 <push state="for/l" state="for"/>
381 </rule>
382 <rule pattern="for(?:(?=\))|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a]))(?!\^)">
383 <token type="Keyword"/>
384 <push state="for2" state="for"/>
385 </rule>
386 <rule pattern="(goto(?:(?=\))|(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(])))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?)(:?)">
387 <bygroups>
388 <token type="Keyword"/>
389 <usingself state="text"/>
390 <token type="Punctuation"/>
391 </bygroups>
392 <push state="label/compound"/>
393 </rule>
394 <rule pattern="(if(?:(?=\()|(?:(?=\))|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])))(?!\^))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?)((?:/i(?:(?=\))|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])))?)((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?)((?:not(?:(?=\))|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])))?)((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?)">
395 <bygroups>
396 <token type="Keyword"/>
397 <usingself state="text"/>
398 <token type="Keyword"/>
399 <usingself state="text"/>
400 <token type="Keyword"/>
401 <usingself state="text"/>
402 </bygroups>
403 <push state="(?" state="if"/>
404 </rule>
405 <rule pattern="rem(((?=\()|(?:(?=\))|(?=\^?[\t\v\f\r ,;=\xa0]|[&<>|\n\x1a])))(?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?(?:[&<>|]+|(?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|(?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|\t\v\f\r ,;=\xa0])+))+)?.*|(?:(?=\))|(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(]))(?:(?:[^\n\x1a^)]|\^[\n\x1a]?[^)])*))">
406 <token type="CommentSingle"/>
407 <push state="follow/compound"/>
408 </rule>
409 <rule pattern="(set(?:(?=\))|(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(])))((?:(?:\^[\n\x1a]?)?[^\S\n])*)(/a)">
410 <bygroups>
411 <token type="Keyword"/>
412 <usingself state="text"/>
413 <token type="Keyword"/>
414 </bygroups>
415 <push state="arithmetic/compound"/>
416 </rule>
417 <rule pattern="(set(?:(?=\))|(?=(?:\^[\n\x1a]?)?[\t\v\f\r ,;=\xa0+./:[\\\]]|[\n\x1a&<>|(])))((?:(?:\^[\n\x1a]?)?[^\S\n])*)((?:/p)?)((?:(?:\^[\n\x1a]?)?[^\S\n])*)((?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|^=)]|\^[\n\x1a]?[^"=])+)?)((?:(?:\^[\n\x1a]?)?=)?)">
418 <bygroups>
419 <token type="Keyword"/>
420 <usingself state="text"/>
421 <token type="Keyword"/>
422 <usingself state="text"/>
423 <usingself state="variable"/>
424 <token type="Punctuation"/>
425 </bygroups>
426 <push state="follow/compound"/>
427 </rule>
428 <rule>
429 <push state="follow/compound"/>
430 </rule>
431 </state>
432 <state name="follow/compound">
433 <rule pattern="(?=\))">
434 <token type="Text"/>
435 <pop depth="1"/>
436 </rule>
437 <rule pattern="((?:(?<=^[^:])|^[^:]?)[\t\v\f\r ,;=\xa0]*)(:)([\t\v\f\r ,;=\xa0]*)((?:(?:[^\n\x1a&<>|\t\v\f\r ,;=\xa0+:^)]|\^[\n\x1a]?[^)])*))(.*)">
438 <bygroups>
439 <token type="Text"/>
440 <token type="Punctuation"/>
441 <token type="Text"/>
442 <token type="NameLabel"/>
443 <token type="CommentSingle"/>
444 </bygroups>
445 </rule>
446 <rule>
447 <include state="redirect/compound"/>
448 </rule>
449 <rule pattern="(?=[\n\x1a])">
450 <token type="Text"/>
451 <pop depth="1"/>
452 </rule>
453 <rule pattern="\|\|?|&&?">
454 <token type="Punctuation"/>
455 <pop depth="1"/>
456 </rule>
457 <rule>
458 <include state="text"/>
459 </rule>
460 </state>
461 <state name="text">
462 <rule pattern=""">
463 <token type="LiteralStringDouble"/>
464 <push state="string"/>
465 </rule>
466 <rule>
467 <include state="variable-or-escape"/>
468 </rule>
469 <rule pattern="[^"%^\n\x1a&<>|\t\v\f\r ,;=\xa0\d)]+|.">
470 <token type="Text"/>
471 </rule>
472 </state>
473 <state name="redirect">
474 <rule pattern="((?:(?<=[\n\x1a\t\v\f\r ,;=\xa0])\d)?)(>>?&|<&)([\n\x1a\t\v\f\r ,;=\xa0]*)(\d)">
475 <bygroups>
476 <token type="LiteralNumberInteger"/>
477 <token type="Punctuation"/>
478 <token type="Text"/>
479 <token type="LiteralNumberInteger"/>
480 </bygroups>
481 </rule>
482 <rule pattern="((?:(?<=[\n\x1a\t\v\f\r ,;=\xa0])(?<!\^[\n\x1a])\d)?)(>>?|<)((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?(?:[&<>|]+|(?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|(?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|\t\v\f\r ,;=\xa0])+))+))">
483 <bygroups>
484 <token type="LiteralNumberInteger"/>
485 <token type="Punctuation"/>
486 <usingself state="text"/>
487 </bygroups>
488 </rule>
489 </state>
490 <state name="label">
491 <rule pattern="((?:(?:[^\n\x1a&<>|\t\v\f\r ,;=\xa0+:^]|\^[\n\x1a]?[\w\W])*)?)((?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|\^[\n\x1a]?[\w\W]|[^"%^\n\x1a&<>|])*)">
492 <bygroups>
493 <token type="NameLabel"/>
494 <token type="CommentSingle"/>
495 </bygroups>
496 <pop depth="1"/>
497 </rule>
498 </state>
499 <state name="arithmetic/compound">
500 <rule pattern="(?=\))">
501 <token type="Text"/>
502 <pop depth="1"/>
503 </rule>
504 <rule pattern="0[0-7]+">
505 <token type="LiteralNumberOct"/>
506 </rule>
507 <rule pattern="0x[\da-f]+">
508 <token type="LiteralNumberHex"/>
509 </rule>
510 <rule pattern="\d+">
511 <token type="LiteralNumberInteger"/>
512 </rule>
513 <rule pattern="[(),]+">
514 <token type="Punctuation"/>
515 </rule>
516 <rule pattern="([=+\-*/!~]|%|\^\^)+">
517 <token type="Operator"/>
518 </rule>
519 <rule pattern="((?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|(\^[\n\x1a]?)?[^()=+\-*/!~%^"\n\x1a&<>|\t\v\f\r ,;=\xa0]|\^[\n\x1a\t\v\f\r ,;=\xa0]?[^)])+">
520 <usingself state="variable"/>
521 </rule>
522 <rule pattern="(?=[\x00|&])">
523 <token type="Text"/>
524 <pop depth="1"/>
525 </rule>
526 <rule>
527 <include state="follow"/>
528 </rule>
529 </state>
530 <state name="string">
531 <rule pattern=""">
532 <token type="LiteralStringDouble"/>
533 <pop depth="1"/>
534 </rule>
535 <rule pattern="(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))">
536 <token type="NameVariable"/>
537 </rule>
538 <rule pattern="\^!|%%">
539 <token type="LiteralStringEscape"/>
540 </rule>
541 <rule pattern="[^"%^\n\x1a]+|[%^]">
542 <token type="LiteralStringDouble"/>
543 </rule>
544 <rule>
545 <pop depth="1"/>
546 </rule>
547 </state>
548 <state name="variable">
549 <rule pattern=""">
550 <token type="LiteralStringDouble"/>
551 <push state="string"/>
552 </rule>
553 <rule>
554 <include state="variable-or-escape"/>
555 </rule>
556 <rule pattern="[^"%^\n\x1a]+|.">
557 <token type="NameVariable"/>
558 </rule>
559 </state>
560 <state name="call/compound">
561 <rule pattern="(?=\))">
562 <token type="Text"/>
563 <pop depth="1"/>
564 </rule>
565 <rule pattern="(:?)((?:(?:[^\n\x1a&<>|\t\v\f\r ,;=\xa0+:^)]|\^[\n\x1a]?[^)])*))">
566 <bygroups>
567 <token type="Punctuation"/>
568 <token type="NameLabel"/>
569 </bygroups>
570 <pop depth="1"/>
571 </rule>
572 </state>
573 <state name="for/f">
574 <rule pattern="(")((?:(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|[^"])*?")([\n\x1a\t\v\f\r ,;=\xa0]*)(\))">
575 <bygroups>
576 <token type="LiteralStringDouble"/>
577 <usingself state="string"/>
578 <token type="Text"/>
579 <token type="Punctuation"/>
580 </bygroups>
581 </rule>
582 <rule pattern=""">
583 <token type="LiteralStringDouble"/>
584 <push state="#pop" state="for2" state="string"/>
585 </rule>
586 <rule pattern="('(?:%%|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|[\w\W])*?')([\n\x1a\t\v\f\r ,;=\xa0]*)(\))">
587 <bygroups>
588 <usingself state="sqstring"/>
589 <token type="Text"/>
590 <token type="Punctuation"/>
591 </bygroups>
592 </rule>
593 <rule pattern="(`(?:%%|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|[\w\W])*?`)([\n\x1a\t\v\f\r ,;=\xa0]*)(\))">
594 <bygroups>
595 <usingself state="bqstring"/>
596 <token type="Text"/>
597 <token type="Punctuation"/>
598 </bygroups>
599 </rule>
600 <rule>
601 <include state="for2"/>
602 </rule>
603 </state>
604 <state name="for/l">
605 <rule pattern="-?\d+">
606 <token type="LiteralNumberInteger"/>
607 </rule>
608 <rule>
609 <include state="for2"/>
610 </rule>
611 </state>
612 <state name="if2">
613 <rule pattern="((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?)(==)((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)?(?:[&<>|]+|(?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|(?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|\t\v\f\r ,;=\xa0])+))+))">
614 <bygroups>
615 <usingself state="text"/>
616 <token type="Operator"/>
617 <usingself state="text"/>
618 </bygroups>
619 <pop depth="1"/>
620 </rule>
621 <rule pattern="((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+))((?:equ|geq|gtr|leq|lss|neq))((?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)(?:[&<>|]+|(?:(?:"[^\n\x1a"]*(?:"|(?=[\n\x1a])))|(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))|(?:(?:(?:\^[\n\x1a]?)?[^"\n\x1a&<>|\t\v\f\r ,;=\xa0])+))+))">
622 <bygroups>
623 <usingself state="text"/>
624 <token type="OperatorWord"/>
625 <usingself state="text"/>
626 </bygroups>
627 <pop depth="1"/>
628 </rule>
629 </state>
630 <state name="(?">
631 <rule pattern="(?:(?:(?:\^[\n\x1a])?[\t\v\f\r ,;=\xa0])+)">
632 <usingself state="text"/>
633 </rule>
634 <rule pattern="\(">
635 <token type="Punctuation"/>
636 <push state="#pop" state="else?" state="root/compound"/>
637 </rule>
638 <rule>
639 <pop depth="1"/>
640 </rule>
641 </state>
642 <state name="call">
643 <rule pattern="(:?)((?:(?:[^\n\x1a&<>|\t\v\f\r ,;=\xa0+:^]|\^[\n\x1a]?[\w\W])*))">
644 <bygroups>
645 <token type="Punctuation"/>
646 <token type="NameLabel"/>
647 </bygroups>
648 <pop depth="1"/>
649 </rule>
650 </state>
651 <state name="variable-or-escape">
652 <rule pattern="(?:(?:%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|[^%:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%\n\x1a^]|\^[^%\n\x1a])[^=\n\x1a]*=(?:[^%\n\x1a^]|\^[^%\n\x1a])*)?)?%))|(?:\^?![^!:\n\x1a]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^!\n\x1a^]|\^[^!\n\x1a])[^=\n\x1a]*=(?:[^!\n\x1a^]|\^[^!\n\x1a])*)?)?\^?!))">
653 <token type="NameVariable"/>
654 </rule>
655 <rule pattern="%%|\^[\n\x1a]?(\^!|[\w\W])">
656 <token type="LiteralStringEscape"/>
657 </rule>
658 </state>
659 </rules>
660</lexer>
View as plain text