66
|
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> |