1 | |
2 | #line 1 "Parser.rl" |
3 | /* |
4 | * Copyright (c) 2015-2017, Intel Corporation |
5 | * |
6 | * Redistribution and use in source and binary forms, with or without |
7 | * modification, are permitted provided that the following conditions are met: |
8 | * |
9 | * * Redistributions of source code must retain the above copyright notice, |
10 | * this list of conditions and the following disclaimer. |
11 | * * Redistributions in binary form must reproduce the above copyright |
12 | * notice, this list of conditions and the following disclaimer in the |
13 | * documentation and/or other materials provided with the distribution. |
14 | * * Neither the name of Intel Corporation nor the names of its contributors |
15 | * may be used to endorse or promote products derived from this software |
16 | * without specific prior written permission. |
17 | * |
18 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
19 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
20 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
21 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
22 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
23 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
24 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
25 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
26 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
27 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
28 | * POSSIBILITY OF SUCH DAMAGE. |
29 | */ |
30 | |
31 | /** \file |
32 | * \brief Parser code (generated with Ragel from Parser.rl). |
33 | */ |
34 | |
35 | #include "config.h" |
36 | |
37 | /* Parser.cpp is a built source, may not be in same dir as parser files */ |
38 | #include "parser/check_refs.h" |
39 | #include "parser/control_verbs.h" |
40 | #include "parser/ComponentAlternation.h" |
41 | #include "parser/ComponentAssertion.h" |
42 | #include "parser/ComponentAtomicGroup.h" |
43 | #include "parser/ComponentBackReference.h" |
44 | #include "parser/ComponentBoundary.h" |
45 | #include "parser/ComponentByte.h" |
46 | #include "parser/ComponentClass.h" |
47 | #include "parser/ComponentCondReference.h" |
48 | #include "parser/ComponentEmpty.h" |
49 | #include "parser/ComponentEUS.h" |
50 | #include "parser/Component.h" |
51 | #include "parser/ComponentRepeat.h" |
52 | #include "parser/ComponentSequence.h" |
53 | #include "parser/ComponentWordBoundary.h" |
54 | #include "parser/parse_error.h" |
55 | #include "parser/Parser.h" |
56 | #include "ue2common.h" |
57 | #include "util/compare.h" |
58 | #include "util/flat_containers.h" |
59 | #include "util/make_unique.h" |
60 | #include "util/unicode_def.h" |
61 | #include "util/verify_types.h" |
62 | |
63 | #include <cassert> |
64 | #include <cctype> |
65 | #include <cstring> |
66 | #include <cstdlib> |
67 | #include <map> |
68 | #include <sstream> |
69 | #include <string> |
70 | #include <vector> |
71 | |
72 | using namespace std; |
73 | |
74 | namespace ue2 { |
75 | |
76 | #define PUSH_SEQUENCE do {\ |
77 | sequences.push_back(ExprState(currentSeq, (size_t)(ts - ptr), \ |
78 | mode)); \ |
79 | } while(0) |
80 | #define POP_SEQUENCE do {\ |
81 | currentSeq = sequences.back().seq; \ |
82 | mode = sequences.back().mode; \ |
83 | sequences.pop_back(); \ |
84 | } while(0) |
85 | |
86 | namespace { |
87 | |
88 | /** \brief Structure representing current state as we're parsing (current |
89 | * sequence, current options). Stored in the 'sequences' vector. */ |
90 | struct ExprState { |
91 | ExprState(ComponentSequence *seq_in, size_t offset, |
92 | const ParseMode &mode_in) : |
93 | seq(seq_in), seqOffset(offset), mode(mode_in) {} |
94 | |
95 | ComponentSequence *seq; //!< current sequence |
96 | size_t seqOffset; //!< offset seq was entered, for error reporting |
97 | ParseMode mode; //!< current mode flags |
98 | }; |
99 | |
100 | } // namespace |
101 | |
102 | static |
103 | unsigned parseAsDecimal(unsigned oct) { |
104 | // The input was parsed as octal, but should have been parsed as decimal. |
105 | // Deconstruct the octal number and reconstruct into decimal |
106 | unsigned ret = 0; |
107 | unsigned multiplier = 1; |
108 | while (oct) { |
109 | ret += (oct & 0x7) * multiplier; |
110 | oct >>= 3; |
111 | multiplier *= 10; |
112 | } |
113 | return ret; |
114 | } |
115 | |
116 | /** \brief Maximum value for a positive integer. We use INT_MAX, as that's what |
117 | * PCRE uses. */ |
118 | static constexpr u32 MAX_NUMBER = INT_MAX; |
119 | |
120 | static |
121 | void pushDec(u32 *acc, char raw_digit) { |
122 | assert(raw_digit >= '0' && raw_digit <= '9'); |
123 | u32 digit_val = raw_digit - '0'; |
124 | |
125 | // Ensure that we don't overflow. |
126 | u64a val = ((u64a)*acc * 10) + digit_val; |
127 | if (val > MAX_NUMBER) { |
128 | throw LocatedParseError("Number is too big" ); |
129 | } |
130 | |
131 | *acc = verify_u32(val); |
132 | } |
133 | |
134 | static |
135 | void pushOct(u32 *acc, char raw_digit) { |
136 | assert(raw_digit >= '0' && raw_digit <= '7'); |
137 | u32 digit_val = raw_digit - '0'; |
138 | |
139 | // Ensure that we don't overflow. |
140 | u64a val = ((u64a)*acc * 8) + digit_val; |
141 | if (val > MAX_NUMBER) { |
142 | throw LocatedParseError("Number is too big" ); |
143 | } |
144 | |
145 | *acc = verify_u32(val); |
146 | } |
147 | |
148 | static |
149 | void throwInvalidRepeat(void) { |
150 | throw LocatedParseError("Invalid repeat" ); |
151 | } |
152 | |
153 | static |
154 | void throwInvalidUtf8(void) { |
155 | throw ParseError("Expression is not valid UTF-8." ); |
156 | } |
157 | |
158 | /** |
159 | * Adds the given child component to the parent sequence, returning a pointer |
160 | * to the new (child) "current sequence". |
161 | */ |
162 | static |
163 | ComponentSequence *enterSequence(ComponentSequence *parent, |
164 | unique_ptr<ComponentSequence> child) { |
165 | assert(parent); |
166 | assert(child); |
167 | |
168 | ComponentSequence *seq = child.get(); |
169 | parent->addComponent(move(child)); |
170 | return seq; |
171 | } |
172 | |
173 | static |
174 | void addLiteral(ComponentSequence *currentSeq, char c, const ParseMode &mode) { |
175 | if (mode.utf8 && mode.caseless) { |
176 | /* leverage ComponentClass to generate the vertices */ |
177 | auto cc = getComponentClass(mode); |
178 | assert(cc); |
179 | cc->add(c); |
180 | cc->finalize(); |
181 | currentSeq->addComponent(move(cc)); |
182 | } else { |
183 | currentSeq->addComponent(getLiteralComponentClass(c, mode.caseless)); |
184 | } |
185 | } |
186 | |
187 | static |
188 | void addEscaped(ComponentSequence *currentSeq, unichar accum, |
189 | const ParseMode &mode, const char *err_msg) { |
190 | if (mode.utf8) { |
191 | /* leverage ComponentClass to generate the vertices */ |
192 | auto cc = getComponentClass(mode); |
193 | assert(cc); |
194 | cc->add(accum); |
195 | cc->finalize(); |
196 | currentSeq->addComponent(move(cc)); |
197 | } else { |
198 | if (accum > 255) { |
199 | throw LocatedParseError(err_msg); |
200 | } |
201 | addLiteral(currentSeq, (char)accum, mode); |
202 | } |
203 | } |
204 | |
205 | static |
206 | void addEscapedOctal(ComponentSequence *currentSeq, unichar accum, |
207 | const ParseMode &mode) { |
208 | addEscaped(currentSeq, accum, mode, "Octal value is greater than \\377" ); |
209 | } |
210 | |
211 | static |
212 | void addEscapedHex(ComponentSequence *currentSeq, unichar accum, |
213 | const ParseMode &mode) { |
214 | addEscaped(currentSeq, accum, mode, |
215 | "Hexadecimal value is greater than \\xFF" ); |
216 | } |
217 | |
218 | #define SLASH_C_ERROR "\\c must be followed by an ASCII character" |
219 | |
220 | static |
221 | u8 decodeCtrl(char raw) { |
222 | if (raw & 0x80) { |
223 | throw LocatedParseError(SLASH_C_ERROR); |
224 | } |
225 | return mytoupper(raw) ^ 0x40; |
226 | } |
227 | |
228 | static |
229 | unichar readUtf8CodePoint2c(const char *s) { |
230 | auto *ts = (const u8 *)s; |
231 | assert(ts[0] >= 0xc0 && ts[0] < 0xe0); |
232 | assert(ts[1] >= 0x80 && ts[1] < 0xc0); |
233 | unichar val = ts[0] & 0x1f; |
234 | val <<= 6; |
235 | val |= ts[1] & 0x3f; |
236 | DEBUG_PRINTF("utf8 %02hhx %02hhx ->\\x{%x}\n" , ts[0], |
237 | ts[1], val); |
238 | return val; |
239 | } |
240 | |
241 | static |
242 | unichar readUtf8CodePoint3c(const char *s) { |
243 | auto *ts = (const u8 *)s; |
244 | assert(ts[0] >= 0xe0 && ts[0] < 0xf0); |
245 | assert(ts[1] >= 0x80 && ts[1] < 0xc0); |
246 | assert(ts[2] >= 0x80 && ts[2] < 0xc0); |
247 | unichar val = ts[0] & 0x0f; |
248 | val <<= 6; |
249 | val |= ts[1] & 0x3f; |
250 | val <<= 6; |
251 | val |= ts[2] & 0x3f; |
252 | DEBUG_PRINTF("utf8 %02hhx %02hhx %02hhx ->\\x{%x}\n" , ts[0], |
253 | ts[1], ts[2], val); |
254 | return val; |
255 | } |
256 | |
257 | static |
258 | unichar readUtf8CodePoint4c(const char *s) { |
259 | auto *ts = (const u8 *)s; |
260 | assert(ts[0] >= 0xf0 && ts[0] < 0xf8); |
261 | assert(ts[1] >= 0x80 && ts[1] < 0xc0); |
262 | assert(ts[2] >= 0x80 && ts[2] < 0xc0); |
263 | assert(ts[3] >= 0x80 && ts[3] < 0xc0); |
264 | unichar val = ts[0] & 0x07; |
265 | val <<= 6; |
266 | val |= ts[1] & 0x3f; |
267 | val <<= 6; |
268 | val |= ts[2] & 0x3f; |
269 | val <<= 6; |
270 | val |= ts[3] & 0x3f; |
271 | DEBUG_PRINTF("utf8 %02hhx %02hhx %02hhx %02hhx ->\\x{%x}\n" , ts[0], |
272 | ts[1], ts[2], ts[3], val); |
273 | return val; |
274 | } |
275 | |
276 | |
277 | #line 1910 "Parser.rl" |
278 | |
279 | |
280 | |
281 | #line 282 "Parser.cpp" |
282 | static const short _regex_actions[] = { |
283 | 0, 1, 0, 1, 1, 1, 2, 1, |
284 | 3, 1, 4, 1, 7, 1, 8, 1, |
285 | 9, 1, 10, 1, 11, 1, 12, 1, |
286 | 13, 1, 15, 1, 16, 1, 17, 1, |
287 | 18, 1, 19, 1, 20, 1, 21, 1, |
288 | 22, 1, 23, 1, 24, 1, 25, 1, |
289 | 26, 1, 27, 1, 28, 1, 29, 1, |
290 | 30, 1, 31, 1, 32, 1, 33, 1, |
291 | 34, 1, 35, 1, 36, 1, 37, 1, |
292 | 38, 1, 39, 1, 40, 1, 41, 1, |
293 | 42, 1, 43, 1, 44, 1, 45, 1, |
294 | 46, 1, 47, 1, 48, 1, 49, 1, |
295 | 50, 1, 51, 1, 52, 1, 53, 1, |
296 | 54, 1, 55, 1, 56, 1, 57, 1, |
297 | 58, 1, 59, 1, 60, 1, 61, 1, |
298 | 62, 1, 63, 1, 64, 1, 65, 1, |
299 | 66, 1, 67, 1, 68, 1, 69, 1, |
300 | 70, 1, 71, 1, 72, 1, 73, 1, |
301 | 74, 1, 75, 1, 76, 1, 77, 1, |
302 | 78, 1, 79, 1, 80, 1, 81, 1, |
303 | 82, 1, 83, 1, 84, 1, 85, 1, |
304 | 86, 1, 87, 1, 88, 1, 89, 1, |
305 | 90, 1, 91, 1, 92, 1, 93, 1, |
306 | 94, 1, 95, 1, 96, 1, 97, 1, |
307 | 98, 1, 99, 1, 100, 1, 101, 1, |
308 | 102, 1, 103, 1, 104, 1, 105, 1, |
309 | 106, 1, 107, 1, 108, 1, 109, 1, |
310 | 110, 1, 111, 1, 112, 1, 113, 1, |
311 | 114, 1, 115, 1, 116, 1, 117, 1, |
312 | 118, 1, 119, 1, 120, 1, 121, 1, |
313 | 122, 1, 123, 1, 124, 1, 125, 1, |
314 | 126, 1, 127, 1, 128, 1, 129, 1, |
315 | 130, 1, 131, 1, 132, 1, 133, 1, |
316 | 134, 1, 135, 1, 136, 1, 137, 1, |
317 | 138, 1, 139, 1, 140, 1, 141, 1, |
318 | 142, 1, 143, 1, 144, 1, 145, 1, |
319 | 146, 1, 147, 1, 148, 1, 149, 1, |
320 | 150, 1, 151, 1, 152, 1, 153, 1, |
321 | 154, 1, 155, 1, 156, 1, 157, 1, |
322 | 158, 1, 159, 1, 160, 1, 161, 1, |
323 | 162, 1, 163, 1, 164, 1, 165, 1, |
324 | 166, 1, 167, 1, 168, 1, 169, 1, |
325 | 170, 1, 171, 1, 172, 1, 173, 1, |
326 | 174, 1, 175, 1, 176, 1, 177, 1, |
327 | 178, 1, 179, 1, 180, 1, 181, 1, |
328 | 182, 1, 183, 1, 184, 1, 185, 1, |
329 | 186, 1, 187, 1, 188, 1, 189, 1, |
330 | 190, 1, 191, 1, 192, 1, 193, 1, |
331 | 194, 1, 195, 1, 196, 1, 197, 1, |
332 | 198, 1, 199, 1, 200, 1, 201, 1, |
333 | 202, 1, 203, 1, 204, 1, 205, 1, |
334 | 206, 1, 207, 1, 208, 1, 209, 1, |
335 | 210, 1, 211, 1, 212, 1, 213, 1, |
336 | 214, 1, 215, 1, 216, 1, 217, 1, |
337 | 218, 1, 219, 1, 220, 1, 221, 1, |
338 | 222, 1, 223, 1, 224, 1, 225, 1, |
339 | 226, 1, 227, 1, 228, 1, 229, 1, |
340 | 230, 1, 231, 1, 232, 1, 233, 1, |
341 | 234, 1, 235, 1, 236, 1, 237, 1, |
342 | 240, 1, 242, 1, 243, 1, 244, 1, |
343 | 245, 1, 246, 1, 247, 1, 248, 1, |
344 | 249, 1, 250, 1, 251, 1, 252, 1, |
345 | 253, 1, 254, 1, 255, 1, 256, 1, |
346 | 257, 1, 258, 1, 259, 1, 260, 1, |
347 | 261, 1, 262, 1, 263, 1, 264, 1, |
348 | 265, 1, 266, 1, 267, 1, 268, 1, |
349 | 269, 1, 270, 1, 271, 1, 272, 1, |
350 | 273, 1, 274, 1, 275, 1, 276, 1, |
351 | 277, 1, 278, 1, 279, 1, 280, 1, |
352 | 281, 1, 282, 1, 283, 1, 284, 1, |
353 | 285, 1, 286, 1, 287, 1, 288, 1, |
354 | 289, 1, 290, 1, 291, 1, 292, 1, |
355 | 293, 1, 294, 1, 295, 1, 296, 1, |
356 | 297, 1, 298, 1, 299, 1, 300, 1, |
357 | 301, 1, 302, 1, 303, 1, 307, 1, |
358 | 308, 1, 309, 1, 310, 1, 311, 1, |
359 | 312, 1, 313, 1, 314, 1, 315, 1, |
360 | 316, 1, 317, 1, 318, 1, 319, 1, |
361 | 320, 1, 321, 1, 322, 1, 323, 1, |
362 | 324, 1, 325, 1, 326, 1, 327, 1, |
363 | 328, 1, 329, 1, 330, 1, 331, 1, |
364 | 332, 1, 333, 1, 334, 1, 335, 1, |
365 | 336, 1, 337, 1, 338, 1, 342, 1, |
366 | 343, 1, 344, 1, 345, 1, 346, 1, |
367 | 347, 1, 348, 1, 349, 1, 350, 1, |
368 | 352, 1, 353, 1, 354, 1, 355, 1, |
369 | 356, 1, 357, 1, 358, 1, 359, 1, |
370 | 360, 1, 361, 1, 362, 1, 363, 1, |
371 | 364, 1, 365, 1, 366, 1, 367, 1, |
372 | 368, 1, 369, 1, 370, 1, 371, 1, |
373 | 372, 1, 373, 1, 374, 1, 375, 1, |
374 | 376, 1, 377, 1, 378, 1, 379, 1, |
375 | 380, 1, 381, 1, 382, 1, 383, 1, |
376 | 384, 1, 385, 1, 386, 1, 387, 1, |
377 | 388, 1, 389, 1, 390, 1, 391, 1, |
378 | 392, 1, 393, 1, 394, 1, 395, 1, |
379 | 396, 1, 397, 1, 398, 1, 399, 1, |
380 | 400, 1, 401, 1, 402, 1, 403, 1, |
381 | 404, 1, 405, 1, 406, 1, 407, 1, |
382 | 408, 1, 409, 1, 410, 1, 411, 1, |
383 | 412, 1, 413, 1, 414, 1, 415, 1, |
384 | 416, 1, 417, 1, 418, 1, 419, 1, |
385 | 420, 1, 421, 1, 422, 1, 423, 1, |
386 | 424, 1, 425, 1, 426, 1, 427, 1, |
387 | 428, 1, 429, 1, 430, 1, 431, 1, |
388 | 432, 1, 433, 1, 434, 1, 435, 1, |
389 | 436, 2, 3, 0, 2, 4, 5, 2, |
390 | 5, 1, 2, 9, 10, 2, 9, 238, |
391 | 2, 9, 239, 2, 9, 339, 2, 10, |
392 | 1, 2, 10, 340, 2, 10, 341, 2, |
393 | 11, 241, 2, 11, 351, 2, 12, 241, |
394 | 2, 12, 351, 2, 13, 241, 2, 13, |
395 | 351, 2, 14, 375, 2, 14, 376, 2, |
396 | 25, 0, 2, 25, 3, 2, 25, 6, |
397 | 2, 25, 14, 3, 25, 5, 306, 3, |
398 | 25, 10, 305, 3, 25, 14, 15, 4, |
399 | 25, 9, 304, 10 |
400 | }; |
401 | |
402 | static const char _regex_cond_offsets[] = { |
403 | 0, 0, 0, 0, 0, 0, 0, 0, |
404 | 0, 0, 0, 0, 0, 0, 0, 0, |
405 | 0, 0, 0, 0, 0, 0, 0, 0, |
406 | 0, 0, 0, 0, 0, 0, 0, 0, |
407 | 0, 0, 0, 0, 0, 0, 0, 0, |
408 | 0, 0, 0, 0, 0, 0, 0, 0, |
409 | 0, 0, 0, 0, 0, 0, 0, 0, |
410 | 0, 0, 0, 0, 0, 0, 0, 1, |
411 | 2, 3, 3, 3, 3, 3, 3, 3, |
412 | 3, 3, 3, 3, 3, 3, 3, 3, |
413 | 3, 3, 3, 3, 3, 3, 3, 3, |
414 | 3, 3, 3, 3, 3, 3, 3, 3, |
415 | 3, 3, 3, 3, 3, 3, 3, 3, |
416 | 3, 3, 3, 3, 3, 3, 3, 3, |
417 | 3, 3, 3, 3, 3, 3, 3, 3, |
418 | 3, 3, 3, 3, 3, 3, 3, 3, |
419 | 3, 3, 3, 3, 3, 3, 3, 3, |
420 | 3, 3, 3, 3, 3, 3, 3, 3, |
421 | 3, 3, 3, 3, 3, 3, 3, 3, |
422 | 3, 3, 3, 3, 3, 3, 3, 3, |
423 | 3, 3, 3, 3, 3, 3, 3, 3, |
424 | 3, 3, 3, 3, 3, 3, 3, 3, |
425 | 3, 3, 3, 3, 3, 3, 3, 3, |
426 | 3, 3, 3, 3, 3, 3, 3, 3, |
427 | 3, 3, 3, 3, 3, 3, 3, 3, |
428 | 3, 3, 3, 3, 3, 3, 3, 3, |
429 | 3, 3, 3, 3, 3, 3, 3, 3, |
430 | 3, 3, 3, 3, 3, 3, 3, 3, |
431 | 3, 3, 3, 3, 3, 3, 3, 3, |
432 | 3, 3, 3, 3, 3, 3, 3, 3, |
433 | 3, 3, 3, 3, 3, 3, 3, 3, |
434 | 3, 3, 3, 3, 3, 3, 3, 3, |
435 | 3, 3, 3, 3, 3, 3, 3, 3, |
436 | 3, 3, 3, 3, 3, 3, 3, 3, |
437 | 3, 3, 3, 3, 3, 3, 3, 3, |
438 | 3, 3, 3, 3, 3, 3, 3, 3, |
439 | 3, 3, 3, 3, 3, 3, 3, 3, |
440 | 3, 3, 3, 3, 3, 3, 3, 3, |
441 | 3, 3, 3, 3, 3, 3, 3, 3, |
442 | 3, 3, 3, 3, 3, 3, 3, 3, |
443 | 3, 3, 3, 3, 3, 3, 3, 3, |
444 | 3, 3, 3, 3, 3, 3, 3, 3, |
445 | 3, 3, 3, 3, 3, 3, 3, 3, |
446 | 3, 3, 3, 3, 3, 3, 3, 3, |
447 | 3, 3, 3, 3, 3, 3, 3, 3, |
448 | 3, 3, 3, 3, 3, 3, 3, 3, |
449 | 3, 3, 3, 3, 3, 3, 3, 3, |
450 | 3, 3, 3, 3, 3, 3, 3, 3, |
451 | 3, 3, 3, 3, 3, 3, 3, 3, |
452 | 3, 3, 3, 3, 3, 3, 3, 3, |
453 | 3, 3, 3, 3, 3, 3, 3, 3, |
454 | 3, 3, 3, 3, 3, 3, 3, 3, |
455 | 3, 3, 3, 3, 3, 3, 3, 3, |
456 | 3, 3, 3, 3, 3, 3, 3, 3, |
457 | 3, 3, 3, 3, 3, 3, 3, 3, |
458 | 3, 3, 3, 3, 3, 3, 3, 3, |
459 | 3, 3, 3, 3, 3, 3, 3, 3, |
460 | 3, 3, 3, 3, 3, 3, 3, 3, |
461 | 3, 3, 3, 3, 3, 3, 3, 3, |
462 | 3, 3, 3, 3, 3, 3, 3, 3, |
463 | 3, 3, 3, 3, 3, 3, 3, 3, |
464 | 3, 3, 3, 3, 3, 3, 3, 3, |
465 | 3, 3, 3, 3, 3, 3, 3, 3, |
466 | 3, 3, 3, 3, 3, 3, 3, 3, |
467 | 3, 3, 3, 3, 3, 3, 3, 3, |
468 | 3, 3, 3, 3, 3, 3, 3, 3, |
469 | 3, 3, 3, 3, 3, 3, 3, 3, |
470 | 3, 3, 3, 3, 3, 3, 3, 3, |
471 | 3, 3, 3, 3, 3, 3, 3, 3, |
472 | 3, 3, 3, 3, 3, 3, 3, 3, |
473 | 3, 3, 3, 3, 3, 3, 3, 3, |
474 | 3, 3, 3, 3, 3, 3, 3, 3, |
475 | 3, 3, 3, 3, 3, 3, 3, 3, |
476 | 3, 3, 3, 3, 3, 3, 3, 3, |
477 | 3, 3, 3, 3, 3, 3, 3, 3, |
478 | 3, 3, 3, 3, 3, 3, 3, 3, |
479 | 3, 3, 3, 3, 3, 3, 3, 3, |
480 | 3, 3, 3, 3, 3, 3, 3, 3, |
481 | 3, 3, 3, 3, 3, 3, 3, 3, |
482 | 3, 3, 3, 3, 3, 3, 3, 3, |
483 | 3, 3, 3, 3, 3, 3, 3, 3, |
484 | 3, 3, 3, 3, 3, 3, 3, 3, |
485 | 3, 3, 3, 3, 3, 3, 3, 3, |
486 | 3, 3, 3, 3, 3, 3, 3, 3, |
487 | 3, 3, 3, 3, 3, 3, 3, 3, |
488 | 3, 3, 3, 3, 3, 3, 3, 3, |
489 | 3, 3, 3, 3, 3, 3, 3, 3, |
490 | 3, 3, 3, 3, 3, 3, 3, 3, |
491 | 3, 3, 3, 3, 3, 3, 3, 3, |
492 | 3, 3, 3, 3, 3, 3, 3, 3, |
493 | 3, 3, 3, 3, 3, 3, 3, 3, |
494 | 3, 3, 3, 3, 3, 3, 3, 3, |
495 | 3, 3, 4, 5, 6, 7, 8, 9, |
496 | 10, 11, 12, 18, 18, 18, 18, 18, |
497 | 18, 18, 18, 18, 18, 18, 18, 18, |
498 | 18, 18, 18, 18, 18, 18, 18, 18, |
499 | 18, 18, 18, 18, 18, 18, 18, 18, |
500 | 18, 18, 18, 18, 18, 18, 18, 18, |
501 | 18, 19, 20, 21, 21, 21, 21, 21, |
502 | 21, 21, 21, 21, 21, 21, 21, 21, |
503 | 21, 21, 21, 21, 21, 21, 21, 21, |
504 | 21, 21, 21, 21, 21, 21, 21, 21, |
505 | 21, 21, 21, 21, 26, 26, 26, 26, |
506 | 26, 26, 26, 26, 26, 26, 26, 26, |
507 | 26, 26, 27, 28, 29, 31, 31, 36, |
508 | 36, 37, 38, 39, 44, 44, 45, 46, |
509 | 47, 47 |
510 | }; |
511 | |
512 | static const char _regex_cond_lengths[] = { |
513 | 0, 0, 0, 0, 0, 0, 0, 0, |
514 | 0, 0, 0, 0, 0, 0, 0, 0, |
515 | 0, 0, 0, 0, 0, 0, 0, 0, |
516 | 0, 0, 0, 0, 0, 0, 0, 0, |
517 | 0, 0, 0, 0, 0, 0, 0, 0, |
518 | 0, 0, 0, 0, 0, 0, 0, 0, |
519 | 0, 0, 0, 0, 0, 0, 0, 0, |
520 | 0, 0, 0, 0, 0, 0, 1, 1, |
521 | 1, 0, 0, 0, 0, 0, 0, 0, |
522 | 0, 0, 0, 0, 0, 0, 0, 0, |
523 | 0, 0, 0, 0, 0, 0, 0, 0, |
524 | 0, 0, 0, 0, 0, 0, 0, 0, |
525 | 0, 0, 0, 0, 0, 0, 0, 0, |
526 | 0, 0, 0, 0, 0, 0, 0, 0, |
527 | 0, 0, 0, 0, 0, 0, 0, 0, |
528 | 0, 0, 0, 0, 0, 0, 0, 0, |
529 | 0, 0, 0, 0, 0, 0, 0, 0, |
530 | 0, 0, 0, 0, 0, 0, 0, 0, |
531 | 0, 0, 0, 0, 0, 0, 0, 0, |
532 | 0, 0, 0, 0, 0, 0, 0, 0, |
533 | 0, 0, 0, 0, 0, 0, 0, 0, |
534 | 0, 0, 0, 0, 0, 0, 0, 0, |
535 | 0, 0, 0, 0, 0, 0, 0, 0, |
536 | 0, 0, 0, 0, 0, 0, 0, 0, |
537 | 0, 0, 0, 0, 0, 0, 0, 0, |
538 | 0, 0, 0, 0, 0, 0, 0, 0, |
539 | 0, 0, 0, 0, 0, 0, 0, 0, |
540 | 0, 0, 0, 0, 0, 0, 0, 0, |
541 | 0, 0, 0, 0, 0, 0, 0, 0, |
542 | 0, 0, 0, 0, 0, 0, 0, 0, |
543 | 0, 0, 0, 0, 0, 0, 0, 0, |
544 | 0, 0, 0, 0, 0, 0, 0, 0, |
545 | 0, 0, 0, 0, 0, 0, 0, 0, |
546 | 0, 0, 0, 0, 0, 0, 0, 0, |
547 | 0, 0, 0, 0, 0, 0, 0, 0, |
548 | 0, 0, 0, 0, 0, 0, 0, 0, |
549 | 0, 0, 0, 0, 0, 0, 0, 0, |
550 | 0, 0, 0, 0, 0, 0, 0, 0, |
551 | 0, 0, 0, 0, 0, 0, 0, 0, |
552 | 0, 0, 0, 0, 0, 0, 0, 0, |
553 | 0, 0, 0, 0, 0, 0, 0, 0, |
554 | 0, 0, 0, 0, 0, 0, 0, 0, |
555 | 0, 0, 0, 0, 0, 0, 0, 0, |
556 | 0, 0, 0, 0, 0, 0, 0, 0, |
557 | 0, 0, 0, 0, 0, 0, 0, 0, |
558 | 0, 0, 0, 0, 0, 0, 0, 0, |
559 | 0, 0, 0, 0, 0, 0, 0, 0, |
560 | 0, 0, 0, 0, 0, 0, 0, 0, |
561 | 0, 0, 0, 0, 0, 0, 0, 0, |
562 | 0, 0, 0, 0, 0, 0, 0, 0, |
563 | 0, 0, 0, 0, 0, 0, 0, 0, |
564 | 0, 0, 0, 0, 0, 0, 0, 0, |
565 | 0, 0, 0, 0, 0, 0, 0, 0, |
566 | 0, 0, 0, 0, 0, 0, 0, 0, |
567 | 0, 0, 0, 0, 0, 0, 0, 0, |
568 | 0, 0, 0, 0, 0, 0, 0, 0, |
569 | 0, 0, 0, 0, 0, 0, 0, 0, |
570 | 0, 0, 0, 0, 0, 0, 0, 0, |
571 | 0, 0, 0, 0, 0, 0, 0, 0, |
572 | 0, 0, 0, 0, 0, 0, 0, 0, |
573 | 0, 0, 0, 0, 0, 0, 0, 0, |
574 | 0, 0, 0, 0, 0, 0, 0, 0, |
575 | 0, 0, 0, 0, 0, 0, 0, 0, |
576 | 0, 0, 0, 0, 0, 0, 0, 0, |
577 | 0, 0, 0, 0, 0, 0, 0, 0, |
578 | 0, 0, 0, 0, 0, 0, 0, 0, |
579 | 0, 0, 0, 0, 0, 0, 0, 0, |
580 | 0, 0, 0, 0, 0, 0, 0, 0, |
581 | 0, 0, 0, 0, 0, 0, 0, 0, |
582 | 0, 0, 0, 0, 0, 0, 0, 0, |
583 | 0, 0, 0, 0, 0, 0, 0, 0, |
584 | 0, 0, 0, 0, 0, 0, 0, 0, |
585 | 0, 0, 0, 0, 0, 0, 0, 0, |
586 | 0, 0, 0, 0, 0, 0, 0, 0, |
587 | 0, 0, 0, 0, 0, 0, 0, 0, |
588 | 0, 0, 0, 0, 0, 0, 0, 0, |
589 | 0, 0, 0, 0, 0, 0, 0, 0, |
590 | 0, 0, 0, 0, 0, 0, 0, 0, |
591 | 0, 0, 0, 0, 0, 0, 0, 0, |
592 | 0, 0, 0, 0, 0, 0, 0, 0, |
593 | 0, 0, 0, 0, 0, 0, 0, 0, |
594 | 0, 0, 0, 0, 0, 0, 0, 0, |
595 | 0, 0, 0, 0, 0, 0, 0, 0, |
596 | 0, 0, 0, 0, 0, 0, 0, 0, |
597 | 0, 0, 0, 0, 0, 0, 0, 0, |
598 | 0, 0, 0, 0, 0, 0, 0, 0, |
599 | 0, 0, 0, 0, 0, 0, 0, 0, |
600 | 0, 0, 0, 0, 0, 0, 0, 0, |
601 | 0, 0, 0, 0, 0, 0, 0, 0, |
602 | 0, 0, 0, 0, 0, 0, 0, 0, |
603 | 0, 0, 0, 0, 0, 0, 0, 0, |
604 | 0, 0, 0, 0, 0, 0, 0, 0, |
605 | 0, 1, 1, 1, 1, 1, 1, 1, |
606 | 1, 1, 6, 0, 0, 0, 0, 0, |
607 | 0, 0, 0, 0, 0, 0, 0, 0, |
608 | 0, 0, 0, 0, 0, 0, 0, 0, |
609 | 0, 0, 0, 0, 0, 0, 0, 0, |
610 | 0, 0, 0, 0, 0, 0, 0, 0, |
611 | 1, 1, 1, 0, 0, 0, 0, 0, |
612 | 0, 0, 0, 0, 0, 0, 0, 0, |
613 | 0, 0, 0, 0, 0, 0, 0, 0, |
614 | 0, 0, 0, 0, 0, 0, 0, 0, |
615 | 0, 0, 0, 5, 0, 0, 0, 0, |
616 | 0, 0, 0, 0, 0, 0, 0, 0, |
617 | 0, 1, 1, 1, 2, 0, 5, 0, |
618 | 1, 1, 1, 5, 0, 1, 1, 1, |
619 | 0, 0 |
620 | }; |
621 | |
622 | static const short _regex_cond_keys[] = { |
623 | -128, -65, -128, -65, -128, -65, -128, -65, |
624 | -128, -65, -128, -65, -128, -65, -128, -65, |
625 | -128, -65, -128, -65, -128, -65, -128, -65, |
626 | -128, -65, -64, -33, -32, -17, -16, -9, |
627 | -8, -1, 35, 35, -128, -65, -128, -65, |
628 | -128, -65, -128, -65, -64, -33, -32, -17, |
629 | -16, -9, -8, -1, -128, -65, -128, -65, |
630 | -128, -65, 93, 93, 94, 94, -128, -65, |
631 | -64, -33, -32, -17, -16, -9, -8, -1, |
632 | -128, -65, -128, -65, -128, -65, -128, -65, |
633 | -64, -33, -32, -17, -16, -9, -8, -1, |
634 | -128, -65, -128, -65, -128, -65, 0 |
635 | }; |
636 | |
637 | static const char _regex_cond_spaces[] = { |
638 | 0, 0, 0, 0, 0, 0, 0, 0, |
639 | 0, 0, 0, 0, 0, 0, 0, 0, |
640 | 0, 1, 0, 0, 0, 0, 0, 0, |
641 | 0, 0, 0, 0, 0, 2, 2, 0, |
642 | 0, 0, 0, 0, 0, 0, 0, 0, |
643 | 0, 0, 0, 0, 0, 0, 0, 0 |
644 | }; |
645 | |
646 | static const short _regex_key_offsets[] = { |
647 | 0, 0, 1, 23, 31, 39, 46, 54, |
648 | 55, 63, 71, 79, 86, 94, 97, 99, |
649 | 108, 115, 123, 131, 134, 140, 148, 151, |
650 | 158, 165, 173, 180, 184, 191, 194, 197, |
651 | 199, 202, 205, 207, 210, 213, 215, 216, |
652 | 218, 219, 227, 229, 232, 235, 236, 244, |
653 | 252, 260, 268, 275, 283, 290, 298, 305, |
654 | 313, 315, 318, 325, 329, 332, 335, 337, |
655 | 339, 341, 342, 344, 345, 347, 349, 350, |
656 | 351, 353, 354, 355, 356, 357, 358, 359, |
657 | 360, 361, 362, 363, 364, 365, 366, 369, |
658 | 370, 371, 372, 373, 374, 375, 376, 377, |
659 | 378, 379, 380, 381, 382, 383, 384, 385, |
660 | 386, 387, 388, 389, 390, 392, 393, 394, |
661 | 395, 396, 397, 399, 400, 401, 402, 403, |
662 | 404, 405, 406, 408, 409, 410, 411, 412, |
663 | 413, 414, 415, 416, 417, 418, 419, 420, |
664 | 421, 422, 423, 424, 425, 426, 427, 429, |
665 | 430, 431, 432, 433, 434, 435, 436, 437, |
666 | 438, 439, 440, 441, 442, 443, 444, 445, |
667 | 446, 447, 448, 450, 451, 452, 453, 454, |
668 | 455, 456, 457, 458, 459, 461, 462, 463, |
669 | 464, 465, 466, 467, 468, 469, 470, 471, |
670 | 472, 473, 474, 475, 476, 477, 478, 479, |
671 | 480, 481, 482, 483, 484, 485, 486, 487, |
672 | 488, 489, 490, 491, 492, 493, 494, 495, |
673 | 496, 497, 498, 499, 500, 501, 502, 503, |
674 | 504, 505, 506, 507, 508, 509, 510, 511, |
675 | 512, 513, 514, 515, 516, 517, 519, 520, |
676 | 521, 522, 523, 524, 525, 526, 527, 528, |
677 | 529, 530, 531, 532, 533, 534, 535, 536, |
678 | 537, 538, 539, 540, 541, 542, 543, 544, |
679 | 545, 546, 547, 548, 549, 550, 551, 552, |
680 | 553, 554, 555, 556, 557, 558, 559, 561, |
681 | 562, 563, 564, 565, 566, 567, 568, 569, |
682 | 570, 571, 572, 573, 574, 575, 576, 577, |
683 | 578, 579, 580, 582, 583, 584, 585, 586, |
684 | 587, 588, 589, 590, 591, 592, 593, 594, |
685 | 595, 596, 597, 601, 602, 603, 604, 605, |
686 | 606, 607, 608, 609, 610, 611, 612, 613, |
687 | 614, 615, 616, 617, 618, 620, 621, 622, |
688 | 623, 624, 625, 626, 627, 628, 629, 631, |
689 | 632, 633, 634, 635, 636, 637, 640, 641, |
690 | 642, 643, 644, 645, 646, 647, 648, 650, |
691 | 651, 652, 653, 654, 655, 656, 658, 659, |
692 | 660, 661, 662, 663, 664, 665, 666, 667, |
693 | 668, 669, 670, 671, 672, 673, 674, 675, |
694 | 676, 677, 678, 679, 680, 681, 682, 683, |
695 | 684, 685, 686, 687, 688, 689, 690, 691, |
696 | 692, 693, 694, 695, 696, 697, 698, 699, |
697 | 700, 701, 702, 704, 705, 706, 707, 708, |
698 | 709, 710, 714, 715, 716, 717, 718, 719, |
699 | 720, 721, 722, 723, 724, 725, 726, 727, |
700 | 728, 729, 730, 731, 732, 733, 734, 735, |
701 | 736, 737, 738, 739, 740, 741, 742, 743, |
702 | 744, 745, 746, 747, 748, 749, 750, 752, |
703 | 753, 754, 755, 756, 757, 758, 759, 760, |
704 | 761, 762, 763, 764, 765, 766, 767, 768, |
705 | 769, 770, 771, 773, 774, 775, 776, 777, |
706 | 778, 779, 780, 781, 782, 783, 784, 785, |
707 | 786, 787, 788, 789, 790, 791, 792, 793, |
708 | 794, 795, 796, 797, 798, 799, 800, 801, |
709 | 802, 803, 805, 806, 807, 808, 809, 810, |
710 | 811, 812, 813, 814, 815, 816, 817, 820, |
711 | 822, 823, 824, 825, 826, 827, 828, 829, |
712 | 830, 833, 834, 835, 836, 837, 838, 839, |
713 | 840, 841, 842, 843, 844, 845, 846, 847, |
714 | 849, 850, 851, 853, 854, 855, 856, 857, |
715 | 858, 859, 860, 861, 862, 863, 864, 865, |
716 | 866, 867, 868, 869, 870, 871, 872, 873, |
717 | 874, 875, 876, 877, 880, 883, 885, 900, |
718 | 903, 906, 908, 922, 927, 932, 936, 940, |
719 | 943, 946, 950, 954, 957, 960, 964, 968, |
720 | 972, 975, 978, 982, 986, 990, 994, 997, |
721 | 1000, 1004, 1008, 1012, 1016, 1019, 1022, 1026, |
722 | 1030, 1034, 1038, 1041, 1044, 1048, 1052, 1056, |
723 | 1060, 1063, 1066, 1070, 1074, 1078, 1082, 1085, |
724 | 1088, 1093, 1097, 1101, 1105, 1108, 1111, 1115, |
725 | 1119, 1123, 1126, 1129, 1133, 1137, 1141, 1145, |
726 | 1148, 1151, 1155, 1159, 1163, 1167, 1170, 1173, |
727 | 1177, 1181, 1185, 1188, 1191, 1195, 1199, 1203, |
728 | 1207, 1211, 1214, 1217, 1222, 1227, 1231, 1235, |
729 | 1238, 1241, 1245, 1249, 1252, 1255, 1259, 1263, |
730 | 1267, 1270, 1273, 1277, 1281, 1285, 1289, 1292, |
731 | 1295, 1299, 1303, 1307, 1311, 1314, 1317, 1321, |
732 | 1325, 1329, 1333, 1336, 1339, 1343, 1347, 1351, |
733 | 1355, 1358, 1361, 1365, 1369, 1373, 1377, 1380, |
734 | 1383, 1388, 1392, 1396, 1400, 1403, 1406, 1410, |
735 | 1414, 1418, 1421, 1424, 1428, 1432, 1436, 1440, |
736 | 1443, 1446, 1450, 1454, 1458, 1462, 1465, 1468, |
737 | 1472, 1476, 1480, 1483, 1486, 1490, 1494, 1498, |
738 | 1502, 1506, 1509, 1512, 1515, 1518, 1520, 1522, |
739 | 1525, 1532, 1534, 1536, 1538, 1540, 1542, 1544, |
740 | 1546, 1548, 1550, 1584, 1586, 1593, 1600, 1614, |
741 | 1616, 1622, 1625, 1634, 1635, 1638, 1641, 1648, |
742 | 1650, 1652, 1654, 1657, 1702, 1704, 1706, 1710, |
743 | 1714, 1716, 1717, 1717, 1723, 1725, 1727, 1729, |
744 | 1731, 1734, 1735, 1736, 1743, 1749, 1755, 1757, |
745 | 1759, 1761, 1763, 1765, 1767, 1768, 1771, 1794, |
746 | 1797, 1802, 1811, 1813, 1814, 1816, 1821, 1824, |
747 | 1826, 1828, 1829, 1831, 1841, 1847, 1848, 1853, |
748 | 1857, 1865, 1867, 1876, 1880, 1881, 1882, 1886, |
749 | 1887, 1890, 1890, 1897, 1913, 1916, 1955, 1957, |
750 | 1959, 1961, 1963, 1964, 1964, 1965, 1966, 1973, |
751 | 1979, 1985, 1987, 1989, 1991, 2000, 2002, 2015, |
752 | 2016, 2018, 2020, 2022, 2035, 2036, 2038, 2040, |
753 | 2042, 2043 |
754 | }; |
755 | |
756 | static const short _regex_trans_keys[] = { |
757 | 41, 33, 35, 38, 39, 40, 41, 43, |
758 | 45, 58, 60, 61, 62, 63, 67, 80, |
759 | 105, 109, 115, 120, 123, 48, 57, 41, |
760 | 95, 48, 57, 65, 90, 97, 122, 39, |
761 | 95, 48, 57, 65, 90, 97, 122, 95, |
762 | 48, 57, 65, 90, 97, 122, 39, 95, |
763 | 48, 57, 65, 90, 97, 122, 41, 41, |
764 | 95, 48, 57, 65, 90, 97, 122, 41, |
765 | 95, 48, 57, 65, 90, 97, 122, 41, |
766 | 95, 48, 57, 65, 90, 97, 122, 95, |
767 | 48, 57, 65, 90, 97, 122, 62, 95, |
768 | 48, 57, 65, 90, 97, 122, 33, 60, |
769 | 61, 33, 61, 38, 41, 95, 48, 57, |
770 | 65, 90, 97, 122, 95, 48, 57, 65, |
771 | 90, 97, 122, 41, 95, 48, 57, 65, |
772 | 90, 97, 122, 41, 95, 48, 57, 65, |
773 | 90, 97, 122, 41, 48, 57, 41, 58, |
774 | 105, 109, 115, 120, 62, 95, 48, 57, |
775 | 65, 90, 97, 122, 41, 48, 57, 95, |
776 | 48, 57, 65, 90, 97, 122, 95, 48, |
777 | 57, 65, 90, 97, 122, 41, 95, 48, |
778 | 57, 65, 90, 97, 122, 95, 48, 57, |
779 | 65, 90, 97, 122, 105, 109, 115, 120, |
780 | 41, 45, 58, 105, 109, 115, 120, 46, |
781 | 92, 93, 46, 92, 93, 46, 92, 58, |
782 | 92, 93, 58, 92, 93, 58, 92, 61, |
783 | 92, 93, 61, 92, 93, 61, 92, 39, |
784 | 48, 57, 62, 45, 95, 48, 57, 65, |
785 | 90, 97, 122, 48, 57, 125, 48, 57, |
786 | 125, 48, 57, 125, 95, 125, 48, 57, |
787 | 65, 90, 97, 122, 95, 125, 48, 57, |
788 | 65, 90, 97, 122, 95, 125, 48, 57, |
789 | 65, 90, 97, 122, 95, 125, 48, 57, |
790 | 65, 90, 97, 122, 95, 48, 57, 65, |
791 | 90, 97, 122, 39, 95, 48, 57, 65, |
792 | 90, 97, 122, 95, 48, 57, 65, 90, |
793 | 97, 122, 62, 95, 48, 57, 65, 90, |
794 | 97, 122, 95, 48, 57, 65, 90, 97, |
795 | 122, 95, 125, 48, 57, 65, 90, 97, |
796 | 122, 48, 55, 125, 48, 55, 125, 48, |
797 | 57, 65, 70, 97, 102, 44, 125, 48, |
798 | 57, 125, 48, 57, 125, 48, 57, 384, |
799 | 447, 384, 447, 384, 447, 41, 41, 80, |
800 | 41, 41, 70, 41, 56, 41, 121, 97, |
801 | 109, 98, 105, 99, 101, 110, 105, 97, |
802 | 110, 101, 115, 116, 97, 110, 108, 109, |
803 | 116, 105, 110, 101, 115, 101, 117, 109, |
804 | 97, 107, 110, 103, 97, 108, 105, 112, |
805 | 111, 109, 111, 102, 111, 97, 104, 105, |
806 | 109, 105, 108, 108, 101, 103, 104, 105, |
807 | 110, 101, 115, 101, 105, 100, 110, 114, |
808 | 97, 100, 105, 97, 110, 95, 65, 98, |
809 | 111, 114, 105, 103, 105, 110, 97, 108, |
810 | 105, 97, 110, 97, 101, 109, 114, 111, |
811 | 107, 101, 101, 109, 111, 110, 116, 105, |
812 | 99, 110, 101, 105, 102, 111, 114, 109, |
813 | 112, 114, 114, 105, 111, 116, 105, 108, |
814 | 108, 105, 99, 115, 118, 101, 114, 101, |
815 | 116, 97, 110, 97, 103, 97, 114, 105, |
816 | 121, 112, 116, 105, 97, 110, 95, 72, |
817 | 105, 101, 114, 111, 103, 108, 121, 112, |
818 | 104, 115, 104, 105, 111, 112, 105, 99, |
819 | 111, 114, 103, 105, 97, 110, 97, 103, |
820 | 111, 108, 105, 116, 105, 99, 116, 104, |
821 | 105, 99, 101, 101, 107, 106, 114, 97, |
822 | 114, 97, 116, 105, 109, 117, 107, 104, |
823 | 105, 110, 117, 108, 110, 111, 111, 98, |
824 | 114, 101, 119, 114, 97, 103, 97, 110, |
825 | 97, 112, 101, 114, 105, 97, 108, 95, |
826 | 65, 114, 97, 109, 97, 105, 99, 104, |
827 | 115, 101, 114, 105, 116, 101, 100, 99, |
828 | 114, 105, 112, 116, 105, 111, 110, 97, |
829 | 108, 95, 80, 97, 104, 114, 108, 97, |
830 | 118, 105, 116, 104, 105, 97, 110, 118, |
831 | 97, 110, 101, 115, 101, 105, 110, 116, |
832 | 121, 116, 104, 105, 110, 97, 100, 97, |
833 | 97, 107, 97, 110, 97, 97, 104, 95, |
834 | 76, 105, 97, 109, 114, 111, 115, 104, |
835 | 116, 104, 105, 101, 114, 111, 116, 105, |
836 | 110, 112, 99, 104, 97, 109, 110, 115, |
837 | 98, 117, 101, 97, 114, 95, 66, 117, |
838 | 99, 100, 105, 97, 110, 105, 97, 110, |
839 | 108, 110, 97, 121, 97, 108, 97, 109, |
840 | 100, 97, 105, 99, 116, 101, 105, 95, |
841 | 77, 97, 121, 101, 107, 110, 103, 111, |
842 | 108, 105, 97, 110, 97, 110, 109, 97, |
843 | 114, 119, 95, 84, 97, 105, 95, 76, |
844 | 117, 101, 111, 104, 97, 109, 95, 100, |
845 | 67, 104, 105, 107, 105, 95, 73, 80, |
846 | 83, 84, 116, 97, 108, 105, 99, 101, |
847 | 114, 115, 105, 97, 110, 111, 117, 116, |
848 | 104, 95, 65, 114, 97, 98, 105, 97, |
849 | 110, 117, 114, 107, 105, 99, 105, 121, |
850 | 97, 109, 97, 110, 121, 97, 97, 111, |
851 | 103, 115, 95, 80, 97, 101, 110, 105, |
852 | 99, 105, 97, 110, 106, 97, 110, 103, |
853 | 110, 105, 99, 109, 117, 97, 114, 105, |
854 | 116, 97, 110, 114, 97, 115, 104, 116, |
855 | 114, 97, 97, 118, 105, 97, 110, 110, |
856 | 104, 97, 108, 97, 110, 100, 97, 110, |
857 | 101, 115, 101, 108, 114, 111, 116, 105, |
858 | 95, 78, 97, 103, 114, 105, 105, 97, |
859 | 99, 103, 105, 109, 97, 98, 108, 111, |
860 | 103, 97, 110, 119, 97, 95, 76, 84, |
861 | 86, 101, 104, 97, 109, 105, 101, 116, |
862 | 105, 108, 108, 117, 103, 117, 97, 97, |
863 | 105, 110, 97, 98, 102, 101, 116, 97, |
864 | 110, 105, 110, 97, 103, 104, 97, 114, |
865 | 105, 116, 105, 99, 105, 110, 115, 112, |
866 | 100, 123, 94, 125, 94, 46, 92, 93, |
867 | 46, 92, 93, 46, 92, 58, 92, 93, |
868 | 94, 97, 98, 99, 100, 103, 108, 112, |
869 | 115, 117, 119, 120, 58, 92, 93, 58, |
870 | 92, 93, 58, 92, 58, 92, 93, 97, |
871 | 98, 99, 100, 103, 108, 112, 115, 117, |
872 | 119, 120, 58, 92, 93, 108, 115, 58, |
873 | 92, 93, 110, 112, 58, 92, 93, 117, |
874 | 58, 92, 93, 109, 58, 92, 93, 58, |
875 | 92, 93, 58, 92, 93, 104, 58, 92, |
876 | 93, 97, 58, 92, 93, 58, 92, 93, |
877 | 58, 92, 93, 99, 58, 92, 93, 105, |
878 | 58, 92, 93, 105, 58, 92, 93, 58, |
879 | 92, 93, 58, 92, 93, 108, 58, 92, |
880 | 93, 97, 58, 92, 93, 110, 58, 92, |
881 | 93, 107, 58, 92, 93, 58, 92, 93, |
882 | 58, 92, 93, 110, 58, 92, 93, 116, |
883 | 58, 92, 93, 114, 58, 92, 93, 108, |
884 | 58, 92, 93, 58, 92, 93, 58, 92, |
885 | 93, 105, 58, 92, 93, 103, 58, 92, |
886 | 93, 105, 58, 92, 93, 116, 58, 92, |
887 | 93, 58, 92, 93, 58, 92, 93, 114, |
888 | 58, 92, 93, 97, 58, 92, 93, 112, |
889 | 58, 92, 93, 104, 58, 92, 93, 58, |
890 | 92, 93, 58, 92, 93, 111, 58, 92, |
891 | 93, 119, 58, 92, 93, 101, 58, 92, |
892 | 93, 114, 58, 92, 93, 58, 92, 93, |
893 | 58, 92, 93, 114, 117, 58, 92, 93, |
894 | 105, 58, 92, 93, 110, 58, 92, 93, |
895 | 116, 58, 92, 93, 58, 92, 93, 58, |
896 | 92, 93, 110, 58, 92, 93, 99, 58, |
897 | 92, 93, 116, 58, 92, 93, 58, 92, |
898 | 93, 58, 92, 93, 112, 58, 92, 93, |
899 | 97, 58, 92, 93, 99, 58, 92, 93, |
900 | 101, 58, 92, 93, 58, 92, 93, 58, |
901 | 92, 93, 112, 58, 92, 93, 112, 58, |
902 | 92, 93, 101, 58, 92, 93, 114, 58, |
903 | 92, 93, 58, 92, 93, 58, 92, 93, |
904 | 111, 58, 92, 93, 114, 58, 92, 93, |
905 | 100, 58, 92, 93, 58, 92, 93, 58, |
906 | 92, 93, 100, 58, 92, 93, 105, 58, |
907 | 92, 93, 103, 58, 92, 93, 105, 58, |
908 | 92, 93, 116, 58, 92, 93, 58, 92, |
909 | 93, 58, 92, 93, 108, 115, 58, 92, |
910 | 93, 110, 112, 58, 92, 93, 117, 58, |
911 | 92, 93, 109, 58, 92, 93, 58, 92, |
912 | 93, 58, 92, 93, 104, 58, 92, 93, |
913 | 97, 58, 92, 93, 58, 92, 93, 58, |
914 | 92, 93, 99, 58, 92, 93, 105, 58, |
915 | 92, 93, 105, 58, 92, 93, 58, 92, |
916 | 93, 58, 92, 93, 108, 58, 92, 93, |
917 | 97, 58, 92, 93, 110, 58, 92, 93, |
918 | 107, 58, 92, 93, 58, 92, 93, 58, |
919 | 92, 93, 110, 58, 92, 93, 116, 58, |
920 | 92, 93, 114, 58, 92, 93, 108, 58, |
921 | 92, 93, 58, 92, 93, 58, 92, 93, |
922 | 105, 58, 92, 93, 103, 58, 92, 93, |
923 | 105, 58, 92, 93, 116, 58, 92, 93, |
924 | 58, 92, 93, 58, 92, 93, 114, 58, |
925 | 92, 93, 97, 58, 92, 93, 112, 58, |
926 | 92, 93, 104, 58, 92, 93, 58, 92, |
927 | 93, 58, 92, 93, 111, 58, 92, 93, |
928 | 119, 58, 92, 93, 101, 58, 92, 93, |
929 | 114, 58, 92, 93, 58, 92, 93, 58, |
930 | 92, 93, 114, 117, 58, 92, 93, 105, |
931 | 58, 92, 93, 110, 58, 92, 93, 116, |
932 | 58, 92, 93, 58, 92, 93, 58, 92, |
933 | 93, 110, 58, 92, 93, 99, 58, 92, |
934 | 93, 116, 58, 92, 93, 58, 92, 93, |
935 | 58, 92, 93, 112, 58, 92, 93, 97, |
936 | 58, 92, 93, 99, 58, 92, 93, 101, |
937 | 58, 92, 93, 58, 92, 93, 58, 92, |
938 | 93, 112, 58, 92, 93, 112, 58, 92, |
939 | 93, 101, 58, 92, 93, 114, 58, 92, |
940 | 93, 58, 92, 93, 58, 92, 93, 111, |
941 | 58, 92, 93, 114, 58, 92, 93, 100, |
942 | 58, 92, 93, 58, 92, 93, 58, 92, |
943 | 93, 100, 58, 92, 93, 105, 58, 92, |
944 | 93, 103, 58, 92, 93, 105, 58, 92, |
945 | 93, 116, 58, 92, 93, 58, 92, 93, |
946 | 61, 92, 93, 61, 92, 93, 61, 92, |
947 | 48, 55, 125, 48, 55, 125, 48, 57, |
948 | 65, 70, 97, 102, 384, 447, 384, 447, |
949 | 384, 447, 384, 447, 384, 447, 384, 447, |
950 | 384, 447, 384, 447, 384, 447, 0, 32, |
951 | 36, 40, 41, 42, 43, 46, 63, 91, |
952 | 92, 94, 123, 124, 1315, 1571, 1, 8, |
953 | 9, 13, 14, 34, 37, 255, 384, 447, |
954 | 448, 479, 480, 495, 496, 503, 504, 511, |
955 | 42, 63, 95, 48, 57, 65, 90, 97, |
956 | 122, 95, 48, 57, 65, 90, 97, 122, |
957 | 39, 48, 60, 63, 82, 95, 49, 55, |
958 | 56, 57, 65, 90, 97, 122, 48, 57, |
959 | 105, 109, 115, 120, 48, 57, 41, 48, |
960 | 57, 33, 61, 95, 48, 57, 65, 90, |
961 | 97, 122, 123, 41, 48, 57, 60, 61, |
962 | 62, 41, 45, 58, 105, 109, 115, 120, |
963 | 43, 63, 43, 63, 43, 63, 46, 58, |
964 | 61, 48, 65, 66, 67, 68, 69, 71, |
965 | 72, 75, 76, 78, 80, 81, 82, 83, |
966 | 85, 86, 87, 88, 90, 97, 98, 99, |
967 | 100, 101, 102, 103, 104, 107, 108, 110, |
968 | 111, 112, 114, 115, 116, 117, 118, 119, |
969 | 120, 122, 49, 55, 56, 57, 48, 55, |
970 | 48, 55, 48, 55, 56, 57, 48, 55, |
971 | 56, 57, 48, 57, 123, 39, 45, 60, |
972 | 123, 48, 57, 48, 57, 48, 57, 48, |
973 | 57, 48, 57, 39, 60, 123, 123, 123, |
974 | 123, 48, 57, 65, 70, 97, 102, 48, |
975 | 57, 65, 70, 97, 102, 48, 57, 65, |
976 | 70, 97, 102, 48, 57, 43, 63, 384, |
977 | 447, 384, 447, 384, 447, 41, 85, 41, |
978 | 41, 67, 84, 65, 66, 67, 68, 69, |
979 | 71, 72, 73, 74, 75, 76, 77, 78, |
980 | 79, 80, 82, 83, 84, 85, 86, 88, |
981 | 89, 90, 110, 114, 118, 97, 101, 111, |
982 | 114, 117, 97, 99, 102, 104, 110, 111, |
983 | 115, 117, 121, 109, 112, 101, 103, 116, |
984 | 101, 108, 111, 114, 117, 97, 101, 105, |
985 | 103, 117, 109, 110, 97, 97, 104, 38, |
986 | 97, 101, 105, 108, 109, 111, 116, 117, |
987 | 121, 97, 99, 101, 110, 111, 121, 101, |
988 | 100, 101, 107, 108, 111, 103, 108, 114, |
989 | 115, 99, 100, 101, 102, 104, 105, 111, |
990 | 115, 101, 117, 97, 99, 104, 105, 107, |
991 | 109, 111, 117, 121, 97, 101, 104, 105, |
992 | 103, 97, 97, 112, 115, 119, 105, 108, |
993 | 112, 115, 67, 76, 77, 78, 80, 83, |
994 | 90, 45, 91, 92, 93, 0, 255, 384, |
995 | 447, 448, 479, 480, 495, 496, 503, 504, |
996 | 511, 46, 58, 61, 48, 68, 69, 72, |
997 | 76, 78, 80, 81, 83, 85, 86, 87, |
998 | 97, 98, 99, 100, 101, 102, 103, 104, |
999 | 108, 110, 111, 112, 114, 115, 116, 117, |
1000 | 118, 119, 120, 49, 55, 56, 57, 65, |
1001 | 90, 105, 122, 48, 55, 48, 55, 48, |
1002 | 55, 48, 55, 123, 123, 123, 123, 48, |
1003 | 57, 65, 70, 97, 102, 48, 57, 65, |
1004 | 70, 97, 102, 48, 57, 65, 70, 97, |
1005 | 102, 384, 447, 384, 447, 384, 447, 92, |
1006 | 1117, 1118, -128, 91, 95, 127, 861, 862, |
1007 | 69, 81, 92, 0, 255, 384, 447, 448, |
1008 | 479, 480, 495, 496, 503, 504, 511, 69, |
1009 | 384, 447, 384, 447, 384, 447, 92, 0, |
1010 | 255, 384, 447, 448, 479, 480, 495, 496, |
1011 | 503, 504, 511, 69, 384, 447, 384, 447, |
1012 | 384, 447, 41, 10, 0 |
1013 | }; |
1014 | |
1015 | static const char _regex_single_lengths[] = { |
1016 | 0, 1, 20, 2, 2, 1, 2, 1, |
1017 | 2, 2, 2, 1, 2, 3, 2, 3, |
1018 | 1, 2, 2, 1, 6, 2, 1, 1, |
1019 | 1, 2, 1, 4, 7, 3, 3, 2, |
1020 | 3, 3, 2, 3, 3, 2, 1, 0, |
1021 | 1, 2, 0, 1, 1, 1, 2, 2, |
1022 | 2, 2, 1, 2, 1, 2, 1, 2, |
1023 | 0, 1, 1, 2, 1, 1, 0, 0, |
1024 | 0, 1, 2, 1, 2, 2, 1, 1, |
1025 | 2, 1, 1, 1, 1, 1, 1, 1, |
1026 | 1, 1, 1, 1, 1, 1, 3, 1, |
1027 | 1, 1, 1, 1, 1, 1, 1, 1, |
1028 | 1, 1, 1, 1, 1, 1, 1, 1, |
1029 | 1, 1, 1, 1, 2, 1, 1, 1, |
1030 | 1, 1, 2, 1, 1, 1, 1, 1, |
1031 | 1, 1, 2, 1, 1, 1, 1, 1, |
1032 | 1, 1, 1, 1, 1, 1, 1, 1, |
1033 | 1, 1, 1, 1, 1, 1, 2, 1, |
1034 | 1, 1, 1, 1, 1, 1, 1, 1, |
1035 | 1, 1, 1, 1, 1, 1, 1, 1, |
1036 | 1, 1, 2, 1, 1, 1, 1, 1, |
1037 | 1, 1, 1, 1, 2, 1, 1, 1, |
1038 | 1, 1, 1, 1, 1, 1, 1, 1, |
1039 | 1, 1, 1, 1, 1, 1, 1, 1, |
1040 | 1, 1, 1, 1, 1, 1, 1, 1, |
1041 | 1, 1, 1, 1, 1, 1, 1, 1, |
1042 | 1, 1, 1, 1, 1, 1, 1, 1, |
1043 | 1, 1, 1, 1, 1, 1, 1, 1, |
1044 | 1, 1, 1, 1, 1, 2, 1, 1, |
1045 | 1, 1, 1, 1, 1, 1, 1, 1, |
1046 | 1, 1, 1, 1, 1, 1, 1, 1, |
1047 | 1, 1, 1, 1, 1, 1, 1, 1, |
1048 | 1, 1, 1, 1, 1, 1, 1, 1, |
1049 | 1, 1, 1, 1, 1, 1, 2, 1, |
1050 | 1, 1, 1, 1, 1, 1, 1, 1, |
1051 | 1, 1, 1, 1, 1, 1, 1, 1, |
1052 | 1, 1, 2, 1, 1, 1, 1, 1, |
1053 | 1, 1, 1, 1, 1, 1, 1, 1, |
1054 | 1, 1, 4, 1, 1, 1, 1, 1, |
1055 | 1, 1, 1, 1, 1, 1, 1, 1, |
1056 | 1, 1, 1, 1, 2, 1, 1, 1, |
1057 | 1, 1, 1, 1, 1, 1, 2, 1, |
1058 | 1, 1, 1, 1, 1, 3, 1, 1, |
1059 | 1, 1, 1, 1, 1, 1, 2, 1, |
1060 | 1, 1, 1, 1, 1, 2, 1, 1, |
1061 | 1, 1, 1, 1, 1, 1, 1, 1, |
1062 | 1, 1, 1, 1, 1, 1, 1, 1, |
1063 | 1, 1, 1, 1, 1, 1, 1, 1, |
1064 | 1, 1, 1, 1, 1, 1, 1, 1, |
1065 | 1, 1, 1, 1, 1, 1, 1, 1, |
1066 | 1, 1, 2, 1, 1, 1, 1, 1, |
1067 | 1, 4, 1, 1, 1, 1, 1, 1, |
1068 | 1, 1, 1, 1, 1, 1, 1, 1, |
1069 | 1, 1, 1, 1, 1, 1, 1, 1, |
1070 | 1, 1, 1, 1, 1, 1, 1, 1, |
1071 | 1, 1, 1, 1, 1, 1, 2, 1, |
1072 | 1, 1, 1, 1, 1, 1, 1, 1, |
1073 | 1, 1, 1, 1, 1, 1, 1, 1, |
1074 | 1, 1, 2, 1, 1, 1, 1, 1, |
1075 | 1, 1, 1, 1, 1, 1, 1, 1, |
1076 | 1, 1, 1, 1, 1, 1, 1, 1, |
1077 | 1, 1, 1, 1, 1, 1, 1, 1, |
1078 | 1, 2, 1, 1, 1, 1, 1, 1, |
1079 | 1, 1, 1, 1, 1, 1, 3, 2, |
1080 | 1, 1, 1, 1, 1, 1, 1, 1, |
1081 | 3, 1, 1, 1, 1, 1, 1, 1, |
1082 | 1, 1, 1, 1, 1, 1, 1, 2, |
1083 | 1, 1, 2, 1, 1, 1, 1, 1, |
1084 | 1, 1, 1, 1, 1, 1, 1, 1, |
1085 | 1, 1, 1, 1, 1, 1, 1, 1, |
1086 | 1, 1, 1, 3, 3, 2, 15, 3, |
1087 | 3, 2, 14, 5, 5, 4, 4, 3, |
1088 | 3, 4, 4, 3, 3, 4, 4, 4, |
1089 | 3, 3, 4, 4, 4, 4, 3, 3, |
1090 | 4, 4, 4, 4, 3, 3, 4, 4, |
1091 | 4, 4, 3, 3, 4, 4, 4, 4, |
1092 | 3, 3, 4, 4, 4, 4, 3, 3, |
1093 | 5, 4, 4, 4, 3, 3, 4, 4, |
1094 | 4, 3, 3, 4, 4, 4, 4, 3, |
1095 | 3, 4, 4, 4, 4, 3, 3, 4, |
1096 | 4, 4, 3, 3, 4, 4, 4, 4, |
1097 | 4, 3, 3, 5, 5, 4, 4, 3, |
1098 | 3, 4, 4, 3, 3, 4, 4, 4, |
1099 | 3, 3, 4, 4, 4, 4, 3, 3, |
1100 | 4, 4, 4, 4, 3, 3, 4, 4, |
1101 | 4, 4, 3, 3, 4, 4, 4, 4, |
1102 | 3, 3, 4, 4, 4, 4, 3, 3, |
1103 | 5, 4, 4, 4, 3, 3, 4, 4, |
1104 | 4, 3, 3, 4, 4, 4, 4, 3, |
1105 | 3, 4, 4, 4, 4, 3, 3, 4, |
1106 | 4, 4, 3, 3, 4, 4, 4, 4, |
1107 | 4, 3, 3, 3, 3, 2, 0, 1, |
1108 | 1, 0, 0, 0, 0, 0, 0, 0, |
1109 | 0, 0, 16, 2, 1, 1, 6, 0, |
1110 | 4, 1, 3, 1, 1, 3, 7, 2, |
1111 | 2, 2, 3, 41, 0, 0, 0, 0, |
1112 | 0, 1, 0, 4, 0, 0, 0, 0, |
1113 | 3, 1, 1, 1, 0, 0, 0, 2, |
1114 | 0, 0, 0, 2, 1, 3, 23, 3, |
1115 | 5, 9, 2, 1, 2, 5, 3, 2, |
1116 | 2, 1, 2, 10, 6, 1, 5, 4, |
1117 | 8, 2, 9, 4, 1, 1, 4, 1, |
1118 | 3, 0, 7, 4, 3, 31, 0, 0, |
1119 | 0, 0, 1, 0, 1, 1, 1, 0, |
1120 | 0, 0, 0, 0, 3, 2, 1, 1, |
1121 | 0, 0, 0, 1, 1, 0, 0, 0, |
1122 | 1, 1 |
1123 | }; |
1124 | |
1125 | static const char _regex_range_lengths[] = { |
1126 | 0, 0, 1, 3, 3, 3, 3, 0, |
1127 | 3, 3, 3, 3, 3, 0, 0, 3, |
1128 | 3, 3, 3, 1, 0, 3, 1, 3, |
1129 | 3, 3, 3, 0, 0, 0, 0, 0, |
1130 | 0, 0, 0, 0, 0, 0, 0, 1, |
1131 | 0, 3, 1, 1, 1, 0, 3, 3, |
1132 | 3, 3, 3, 3, 3, 3, 3, 3, |
1133 | 1, 1, 3, 1, 1, 1, 1, 1, |
1134 | 1, 0, 0, 0, 0, 0, 0, 0, |
1135 | 0, 0, 0, 0, 0, 0, 0, 0, |
1136 | 0, 0, 0, 0, 0, 0, 0, 0, |
1137 | 0, 0, 0, 0, 0, 0, 0, 0, |
1138 | 0, 0, 0, 0, 0, 0, 0, 0, |
1139 | 0, 0, 0, 0, 0, 0, 0, 0, |
1140 | 0, 0, 0, 0, 0, 0, 0, 0, |
1141 | 0, 0, 0, 0, 0, 0, 0, 0, |
1142 | 0, 0, 0, 0, 0, 0, 0, 0, |
1143 | 0, 0, 0, 0, 0, 0, 0, 0, |
1144 | 0, 0, 0, 0, 0, 0, 0, 0, |
1145 | 0, 0, 0, 0, 0, 0, 0, 0, |
1146 | 0, 0, 0, 0, 0, 0, 0, 0, |
1147 | 0, 0, 0, 0, 0, 0, 0, 0, |
1148 | 0, 0, 0, 0, 0, 0, 0, 0, |
1149 | 0, 0, 0, 0, 0, 0, 0, 0, |
1150 | 0, 0, 0, 0, 0, 0, 0, 0, |
1151 | 0, 0, 0, 0, 0, 0, 0, 0, |
1152 | 0, 0, 0, 0, 0, 0, 0, 0, |
1153 | 0, 0, 0, 0, 0, 0, 0, 0, |
1154 | 0, 0, 0, 0, 0, 0, 0, 0, |
1155 | 0, 0, 0, 0, 0, 0, 0, 0, |
1156 | 0, 0, 0, 0, 0, 0, 0, 0, |
1157 | 0, 0, 0, 0, 0, 0, 0, 0, |
1158 | 0, 0, 0, 0, 0, 0, 0, 0, |
1159 | 0, 0, 0, 0, 0, 0, 0, 0, |
1160 | 0, 0, 0, 0, 0, 0, 0, 0, |
1161 | 0, 0, 0, 0, 0, 0, 0, 0, |
1162 | 0, 0, 0, 0, 0, 0, 0, 0, |
1163 | 0, 0, 0, 0, 0, 0, 0, 0, |
1164 | 0, 0, 0, 0, 0, 0, 0, 0, |
1165 | 0, 0, 0, 0, 0, 0, 0, 0, |
1166 | 0, 0, 0, 0, 0, 0, 0, 0, |
1167 | 0, 0, 0, 0, 0, 0, 0, 0, |
1168 | 0, 0, 0, 0, 0, 0, 0, 0, |
1169 | 0, 0, 0, 0, 0, 0, 0, 0, |
1170 | 0, 0, 0, 0, 0, 0, 0, 0, |
1171 | 0, 0, 0, 0, 0, 0, 0, 0, |
1172 | 0, 0, 0, 0, 0, 0, 0, 0, |
1173 | 0, 0, 0, 0, 0, 0, 0, 0, |
1174 | 0, 0, 0, 0, 0, 0, 0, 0, |
1175 | 0, 0, 0, 0, 0, 0, 0, 0, |
1176 | 0, 0, 0, 0, 0, 0, 0, 0, |
1177 | 0, 0, 0, 0, 0, 0, 0, 0, |
1178 | 0, 0, 0, 0, 0, 0, 0, 0, |
1179 | 0, 0, 0, 0, 0, 0, 0, 0, |
1180 | 0, 0, 0, 0, 0, 0, 0, 0, |
1181 | 0, 0, 0, 0, 0, 0, 0, 0, |
1182 | 0, 0, 0, 0, 0, 0, 0, 0, |
1183 | 0, 0, 0, 0, 0, 0, 0, 0, |
1184 | 0, 0, 0, 0, 0, 0, 0, 0, |
1185 | 0, 0, 0, 0, 0, 0, 0, 0, |
1186 | 0, 0, 0, 0, 0, 0, 0, 0, |
1187 | 0, 0, 0, 0, 0, 0, 0, 0, |
1188 | 0, 0, 0, 0, 0, 0, 0, 0, |
1189 | 0, 0, 0, 0, 0, 0, 0, 0, |
1190 | 0, 0, 0, 0, 0, 0, 0, 0, |
1191 | 0, 0, 0, 0, 0, 0, 0, 0, |
1192 | 0, 0, 0, 0, 0, 0, 0, 0, |
1193 | 0, 0, 0, 0, 0, 0, 0, 0, |
1194 | 0, 0, 0, 0, 0, 0, 0, 0, |
1195 | 0, 0, 0, 0, 0, 0, 0, 0, |
1196 | 0, 0, 0, 0, 0, 0, 0, 0, |
1197 | 0, 0, 0, 0, 0, 0, 0, 0, |
1198 | 0, 0, 0, 0, 0, 0, 0, 0, |
1199 | 0, 0, 0, 0, 0, 0, 0, 0, |
1200 | 0, 0, 0, 0, 0, 0, 0, 0, |
1201 | 0, 0, 0, 0, 0, 0, 0, 0, |
1202 | 0, 0, 0, 0, 0, 0, 0, 0, |
1203 | 0, 0, 0, 0, 0, 0, 0, 0, |
1204 | 0, 0, 0, 0, 0, 0, 0, 0, |
1205 | 0, 0, 0, 0, 0, 0, 0, 0, |
1206 | 0, 0, 0, 0, 0, 0, 0, 0, |
1207 | 0, 0, 0, 0, 0, 0, 0, 0, |
1208 | 0, 0, 0, 0, 0, 0, 0, 0, |
1209 | 0, 0, 0, 0, 0, 0, 0, 0, |
1210 | 0, 0, 0, 0, 0, 0, 0, 0, |
1211 | 0, 0, 0, 0, 0, 0, 0, 0, |
1212 | 0, 0, 0, 0, 0, 0, 0, 0, |
1213 | 0, 0, 0, 0, 0, 0, 0, 0, |
1214 | 0, 0, 0, 0, 0, 0, 0, 0, |
1215 | 0, 0, 0, 0, 0, 0, 0, 0, |
1216 | 0, 0, 0, 0, 0, 0, 0, 0, |
1217 | 0, 0, 0, 0, 0, 0, 1, 1, |
1218 | 3, 1, 1, 1, 1, 1, 1, 1, |
1219 | 1, 1, 9, 0, 3, 3, 4, 1, |
1220 | 1, 1, 3, 0, 1, 0, 0, 0, |
1221 | 0, 0, 0, 2, 1, 1, 2, 2, |
1222 | 1, 0, 0, 1, 1, 1, 1, 1, |
1223 | 0, 0, 0, 3, 3, 3, 1, 0, |
1224 | 1, 1, 1, 0, 0, 0, 0, 0, |
1225 | 0, 0, 0, 0, 0, 0, 0, 0, |
1226 | 0, 0, 0, 0, 0, 0, 0, 0, |
1227 | 0, 0, 0, 0, 0, 0, 0, 0, |
1228 | 0, 0, 0, 6, 0, 4, 1, 1, |
1229 | 1, 1, 0, 0, 0, 0, 3, 3, |
1230 | 3, 1, 1, 1, 3, 0, 6, 0, |
1231 | 1, 1, 1, 6, 0, 1, 1, 1, |
1232 | 0, 0 |
1233 | }; |
1234 | |
1235 | static const short _regex_index_offsets[] = { |
1236 | 0, 0, 2, 24, 30, 36, 41, 47, |
1237 | 49, 55, 61, 67, 72, 78, 82, 85, |
1238 | 92, 97, 103, 109, 112, 119, 125, 128, |
1239 | 133, 138, 144, 149, 154, 162, 166, 170, |
1240 | 173, 177, 181, 184, 188, 192, 195, 197, |
1241 | 199, 201, 207, 209, 212, 215, 217, 223, |
1242 | 229, 235, 241, 246, 252, 257, 263, 268, |
1243 | 274, 276, 279, 284, 288, 291, 294, 296, |
1244 | 298, 300, 302, 305, 307, 310, 313, 315, |
1245 | 317, 320, 322, 324, 326, 328, 330, 332, |
1246 | 334, 336, 338, 340, 342, 344, 346, 350, |
1247 | 352, 354, 356, 358, 360, 362, 364, 366, |
1248 | 368, 370, 372, 374, 376, 378, 380, 382, |
1249 | 384, 386, 388, 390, 392, 395, 397, 399, |
1250 | 401, 403, 405, 408, 410, 412, 414, 416, |
1251 | 418, 420, 422, 425, 427, 429, 431, 433, |
1252 | 435, 437, 439, 441, 443, 445, 447, 449, |
1253 | 451, 453, 455, 457, 459, 461, 463, 466, |
1254 | 468, 470, 472, 474, 476, 478, 480, 482, |
1255 | 484, 486, 488, 490, 492, 494, 496, 498, |
1256 | 500, 502, 504, 507, 509, 511, 513, 515, |
1257 | 517, 519, 521, 523, 525, 528, 530, 532, |
1258 | 534, 536, 538, 540, 542, 544, 546, 548, |
1259 | 550, 552, 554, 556, 558, 560, 562, 564, |
1260 | 566, 568, 570, 572, 574, 576, 578, 580, |
1261 | 582, 584, 586, 588, 590, 592, 594, 596, |
1262 | 598, 600, 602, 604, 606, 608, 610, 612, |
1263 | 614, 616, 618, 620, 622, 624, 626, 628, |
1264 | 630, 632, 634, 636, 638, 640, 643, 645, |
1265 | 647, 649, 651, 653, 655, 657, 659, 661, |
1266 | 663, 665, 667, 669, 671, 673, 675, 677, |
1267 | 679, 681, 683, 685, 687, 689, 691, 693, |
1268 | 695, 697, 699, 701, 703, 705, 707, 709, |
1269 | 711, 713, 715, 717, 719, 721, 723, 726, |
1270 | 728, 730, 732, 734, 736, 738, 740, 742, |
1271 | 744, 746, 748, 750, 752, 754, 756, 758, |
1272 | 760, 762, 764, 767, 769, 771, 773, 775, |
1273 | 777, 779, 781, 783, 785, 787, 789, 791, |
1274 | 793, 795, 797, 802, 804, 806, 808, 810, |
1275 | 812, 814, 816, 818, 820, 822, 824, 826, |
1276 | 828, 830, 832, 834, 836, 839, 841, 843, |
1277 | 845, 847, 849, 851, 853, 855, 857, 860, |
1278 | 862, 864, 866, 868, 870, 872, 876, 878, |
1279 | 880, 882, 884, 886, 888, 890, 892, 895, |
1280 | 897, 899, 901, 903, 905, 907, 910, 912, |
1281 | 914, 916, 918, 920, 922, 924, 926, 928, |
1282 | 930, 932, 934, 936, 938, 940, 942, 944, |
1283 | 946, 948, 950, 952, 954, 956, 958, 960, |
1284 | 962, 964, 966, 968, 970, 972, 974, 976, |
1285 | 978, 980, 982, 984, 986, 988, 990, 992, |
1286 | 994, 996, 998, 1001, 1003, 1005, 1007, 1009, |
1287 | 1011, 1013, 1018, 1020, 1022, 1024, 1026, 1028, |
1288 | 1030, 1032, 1034, 1036, 1038, 1040, 1042, 1044, |
1289 | 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060, |
1290 | 1062, 1064, 1066, 1068, 1070, 1072, 1074, 1076, |
1291 | 1078, 1080, 1082, 1084, 1086, 1088, 1090, 1093, |
1292 | 1095, 1097, 1099, 1101, 1103, 1105, 1107, 1109, |
1293 | 1111, 1113, 1115, 1117, 1119, 1121, 1123, 1125, |
1294 | 1127, 1129, 1131, 1134, 1136, 1138, 1140, 1142, |
1295 | 1144, 1146, 1148, 1150, 1152, 1154, 1156, 1158, |
1296 | 1160, 1162, 1164, 1166, 1168, 1170, 1172, 1174, |
1297 | 1176, 1178, 1180, 1182, 1184, 1186, 1188, 1190, |
1298 | 1192, 1194, 1197, 1199, 1201, 1203, 1205, 1207, |
1299 | 1209, 1211, 1213, 1215, 1217, 1219, 1221, 1225, |
1300 | 1228, 1230, 1232, 1234, 1236, 1238, 1240, 1242, |
1301 | 1244, 1248, 1250, 1252, 1254, 1256, 1258, 1260, |
1302 | 1262, 1264, 1266, 1268, 1270, 1272, 1274, 1276, |
1303 | 1279, 1281, 1283, 1286, 1288, 1290, 1292, 1294, |
1304 | 1296, 1298, 1300, 1302, 1304, 1306, 1308, 1310, |
1305 | 1312, 1314, 1316, 1318, 1320, 1322, 1324, 1326, |
1306 | 1328, 1330, 1332, 1334, 1338, 1342, 1345, 1361, |
1307 | 1365, 1369, 1372, 1387, 1393, 1399, 1404, 1409, |
1308 | 1413, 1417, 1422, 1427, 1431, 1435, 1440, 1445, |
1309 | 1450, 1454, 1458, 1463, 1468, 1473, 1478, 1482, |
1310 | 1486, 1491, 1496, 1501, 1506, 1510, 1514, 1519, |
1311 | 1524, 1529, 1534, 1538, 1542, 1547, 1552, 1557, |
1312 | 1562, 1566, 1570, 1575, 1580, 1585, 1590, 1594, |
1313 | 1598, 1604, 1609, 1614, 1619, 1623, 1627, 1632, |
1314 | 1637, 1642, 1646, 1650, 1655, 1660, 1665, 1670, |
1315 | 1674, 1678, 1683, 1688, 1693, 1698, 1702, 1706, |
1316 | 1711, 1716, 1721, 1725, 1729, 1734, 1739, 1744, |
1317 | 1749, 1754, 1758, 1762, 1768, 1774, 1779, 1784, |
1318 | 1788, 1792, 1797, 1802, 1806, 1810, 1815, 1820, |
1319 | 1825, 1829, 1833, 1838, 1843, 1848, 1853, 1857, |
1320 | 1861, 1866, 1871, 1876, 1881, 1885, 1889, 1894, |
1321 | 1899, 1904, 1909, 1913, 1917, 1922, 1927, 1932, |
1322 | 1937, 1941, 1945, 1950, 1955, 1960, 1965, 1969, |
1323 | 1973, 1979, 1984, 1989, 1994, 1998, 2002, 2007, |
1324 | 2012, 2017, 2021, 2025, 2030, 2035, 2040, 2045, |
1325 | 2049, 2053, 2058, 2063, 2068, 2073, 2077, 2081, |
1326 | 2086, 2091, 2096, 2100, 2104, 2109, 2114, 2119, |
1327 | 2124, 2129, 2133, 2137, 2141, 2145, 2148, 2150, |
1328 | 2153, 2158, 2160, 2162, 2164, 2166, 2168, 2170, |
1329 | 2172, 2174, 2176, 2202, 2205, 2210, 2215, 2226, |
1330 | 2228, 2234, 2237, 2244, 2246, 2249, 2253, 2261, |
1331 | 2264, 2267, 2270, 2274, 2318, 2320, 2322, 2325, |
1332 | 2328, 2330, 2332, 2333, 2339, 2341, 2343, 2345, |
1333 | 2347, 2351, 2353, 2355, 2360, 2364, 2368, 2370, |
1334 | 2373, 2375, 2377, 2379, 2382, 2384, 2388, 2412, |
1335 | 2416, 2422, 2432, 2435, 2437, 2440, 2446, 2450, |
1336 | 2453, 2456, 2458, 2461, 2472, 2479, 2481, 2487, |
1337 | 2492, 2501, 2504, 2514, 2519, 2521, 2523, 2528, |
1338 | 2530, 2534, 2535, 2543, 2554, 2558, 2594, 2596, |
1339 | 2598, 2600, 2602, 2604, 2605, 2607, 2609, 2614, |
1340 | 2618, 2622, 2624, 2626, 2628, 2635, 2638, 2646, |
1341 | 2648, 2650, 2652, 2654, 2662, 2664, 2666, 2668, |
1342 | 2670, 2672 |
1343 | }; |
1344 | |
1345 | static const short _regex_indicies[] = { |
1346 | 0, 1, 3, 4, 5, 6, 7, 8, |
1347 | 9, 10, 12, 13, 14, 15, 16, 17, |
1348 | 18, 19, 19, 19, 19, 20, 11, 2, |
1349 | 22, 23, 23, 23, 23, 21, 24, 25, |
1350 | 25, 25, 25, 21, 27, 27, 27, 27, |
1351 | 26, 28, 27, 27, 27, 27, 26, 29, |
1352 | 26, 29, 30, 30, 30, 30, 26, 31, |
1353 | 30, 32, 30, 30, 26, 29, 30, 32, |
1354 | 30, 30, 26, 33, 33, 33, 33, 26, |
1355 | 28, 33, 33, 33, 33, 26, 34, 35, |
1356 | 36, 26, 37, 38, 26, 39, 40, 30, |
1357 | 41, 30, 30, 26, 42, 42, 42, 42, |
1358 | 26, 40, 42, 42, 42, 42, 26, 40, |
1359 | 30, 41, 30, 30, 26, 43, 44, 21, |
1360 | 45, 46, 47, 47, 47, 47, 21, 24, |
1361 | 48, 48, 48, 48, 21, 49, 50, 21, |
1362 | 48, 48, 48, 48, 21, 51, 51, 51, |
1363 | 51, 21, 52, 51, 51, 51, 51, 21, |
1364 | 23, 23, 23, 23, 21, 47, 47, 47, |
1365 | 47, 21, 45, 53, 46, 54, 54, 54, |
1366 | 54, 21, 57, 58, 55, 56, 57, 58, |
1367 | 59, 56, 57, 58, 56, 61, 62, 55, |
1368 | 60, 61, 62, 63, 60, 61, 62, 60, |
1369 | 65, 66, 55, 64, 65, 66, 59, 64, |
1370 | 65, 66, 64, 69, 68, 70, 67, 69, |
1371 | 71, 72, 74, 73, 74, 74, 67, 75, |
1372 | 67, 77, 76, 67, 77, 78, 67, 77, |
1373 | 67, 74, 80, 79, 74, 74, 67, 74, |
1374 | 80, 81, 74, 74, 67, 74, 80, 74, |
1375 | 74, 74, 67, 74, 82, 74, 74, 74, |
1376 | 67, 84, 84, 84, 84, 83, 85, 84, |
1377 | 84, 84, 84, 83, 86, 86, 86, 86, |
1378 | 83, 87, 86, 86, 86, 86, 83, 88, |
1379 | 88, 88, 88, 83, 88, 89, 88, 88, |
1380 | 88, 83, 91, 90, 92, 91, 90, 95, |
1381 | 94, 94, 94, 93, 97, 99, 98, 96, |
1382 | 101, 100, 96, 102, 100, 96, 104, 103, |
1383 | 105, 103, 106, 103, 109, 108, 109, 110, |
1384 | 108, 111, 108, 109, 112, 108, 113, 114, |
1385 | 108, 115, 108, 117, 116, 118, 119, 116, |
1386 | 120, 116, 121, 116, 122, 116, 123, 116, |
1387 | 124, 116, 125, 116, 126, 116, 127, 116, |
1388 | 128, 116, 129, 116, 130, 116, 131, 116, |
1389 | 132, 116, 133, 134, 135, 116, 136, 116, |
1390 | 137, 116, 138, 116, 139, 116, 140, 116, |
1391 | 141, 116, 142, 116, 143, 116, 144, 116, |
1392 | 145, 116, 146, 116, 147, 116, 148, 116, |
1393 | 149, 116, 150, 116, 151, 116, 152, 116, |
1394 | 153, 116, 154, 116, 155, 116, 156, 116, |
1395 | 157, 158, 116, 159, 116, 160, 116, 161, |
1396 | 116, 162, 116, 163, 116, 164, 165, 116, |
1397 | 166, 116, 167, 116, 168, 116, 169, 116, |
1398 | 170, 116, 171, 116, 172, 116, 174, 175, |
1399 | 173, 176, 173, 177, 173, 178, 173, 179, |
1400 | 173, 180, 173, 181, 173, 182, 173, 183, |
1401 | 173, 184, 173, 185, 173, 186, 173, 187, |
1402 | 173, 188, 173, 189, 173, 190, 173, 191, |
1403 | 173, 192, 173, 193, 173, 194, 173, 195, |
1404 | 196, 173, 197, 173, 198, 173, 199, 173, |
1405 | 200, 173, 201, 173, 202, 173, 204, 203, |
1406 | 205, 203, 206, 203, 207, 203, 208, 203, |
1407 | 209, 203, 210, 173, 211, 173, 212, 173, |
1408 | 213, 173, 214, 173, 215, 173, 216, 173, |
1409 | 217, 218, 173, 219, 173, 220, 173, 221, |
1410 | 173, 222, 173, 223, 173, 224, 173, 225, |
1411 | 173, 226, 173, 227, 173, 228, 229, 116, |
1412 | 230, 116, 231, 116, 232, 116, 233, 116, |
1413 | 234, 116, 235, 116, 236, 116, 237, 116, |
1414 | 238, 116, 239, 116, 240, 116, 241, 116, |
1415 | 242, 116, 243, 116, 244, 116, 245, 116, |
1416 | 246, 116, 247, 116, 248, 116, 249, 116, |
1417 | 250, 116, 251, 116, 252, 116, 253, 116, |
1418 | 254, 116, 255, 116, 256, 116, 257, 116, |
1419 | 258, 116, 259, 116, 260, 116, 261, 116, |
1420 | 262, 116, 263, 116, 264, 116, 265, 116, |
1421 | 266, 116, 267, 116, 268, 116, 269, 116, |
1422 | 270, 116, 271, 116, 272, 116, 273, 116, |
1423 | 274, 116, 275, 116, 276, 116, 277, 116, |
1424 | 278, 116, 279, 116, 280, 116, 281, 116, |
1425 | 282, 116, 283, 116, 284, 116, 285, 116, |
1426 | 286, 287, 116, 288, 116, 289, 116, 290, |
1427 | 116, 291, 116, 292, 116, 293, 116, 294, |
1428 | 116, 295, 116, 296, 116, 297, 116, 298, |
1429 | 116, 300, 299, 301, 299, 302, 299, 303, |
1430 | 299, 304, 299, 305, 116, 306, 116, 307, |
1431 | 116, 308, 116, 309, 116, 310, 116, 311, |
1432 | 116, 312, 116, 313, 116, 314, 116, 315, |
1433 | 116, 316, 116, 317, 116, 318, 116, 319, |
1434 | 116, 320, 116, 321, 116, 322, 116, 323, |
1435 | 116, 324, 116, 325, 116, 326, 116, 327, |
1436 | 116, 328, 116, 329, 330, 116, 331, 116, |
1437 | 332, 116, 333, 116, 334, 116, 335, 116, |
1438 | 336, 116, 337, 116, 338, 116, 339, 116, |
1439 | 340, 116, 341, 116, 342, 116, 343, 116, |
1440 | 344, 116, 345, 116, 346, 116, 347, 116, |
1441 | 348, 116, 349, 116, 350, 351, 116, 352, |
1442 | 116, 353, 116, 354, 116, 355, 116, 356, |
1443 | 116, 357, 116, 358, 116, 359, 116, 360, |
1444 | 116, 361, 116, 362, 116, 363, 116, 364, |
1445 | 116, 365, 116, 366, 116, 367, 368, 369, |
1446 | 370, 116, 371, 116, 372, 116, 373, 116, |
1447 | 374, 116, 375, 116, 376, 116, 377, 116, |
1448 | 378, 116, 379, 116, 380, 116, 381, 116, |
1449 | 382, 116, 383, 116, 384, 116, 385, 116, |
1450 | 386, 116, 387, 116, 388, 389, 116, 390, |
1451 | 116, 391, 116, 392, 116, 393, 116, 394, |
1452 | 116, 395, 116, 396, 116, 397, 116, 398, |
1453 | 116, 400, 401, 399, 402, 399, 403, 399, |
1454 | 404, 399, 405, 399, 406, 399, 407, 399, |
1455 | 408, 409, 410, 399, 411, 399, 412, 399, |
1456 | 413, 399, 414, 399, 415, 399, 416, 399, |
1457 | 417, 399, 418, 399, 419, 420, 399, 421, |
1458 | 399, 422, 399, 423, 399, 424, 399, 425, |
1459 | 399, 426, 399, 428, 429, 427, 430, 427, |
1460 | 431, 427, 432, 427, 433, 427, 434, 427, |
1461 | 435, 427, 436, 427, 437, 427, 438, 427, |
1462 | 439, 427, 441, 440, 442, 440, 443, 440, |
1463 | 444, 440, 445, 440, 446, 440, 447, 440, |
1464 | 448, 440, 449, 440, 450, 427, 451, 427, |
1465 | 452, 427, 453, 427, 454, 427, 455, 427, |
1466 | 456, 427, 457, 427, 458, 427, 459, 427, |
1467 | 460, 427, 461, 427, 463, 462, 464, 462, |
1468 | 465, 462, 466, 462, 467, 462, 468, 462, |
1469 | 469, 462, 470, 462, 471, 462, 472, 462, |
1470 | 473, 116, 474, 116, 475, 116, 476, 477, |
1471 | 116, 478, 116, 479, 116, 480, 116, 481, |
1472 | 116, 482, 116, 483, 116, 484, 485, 486, |
1473 | 487, 116, 488, 116, 489, 116, 490, 116, |
1474 | 491, 116, 492, 116, 493, 116, 494, 116, |
1475 | 495, 116, 496, 116, 497, 116, 498, 116, |
1476 | 499, 116, 500, 116, 501, 116, 502, 116, |
1477 | 503, 116, 504, 116, 505, 116, 506, 116, |
1478 | 507, 116, 508, 116, 509, 116, 510, 116, |
1479 | 511, 116, 512, 116, 513, 116, 514, 116, |
1480 | 515, 116, 516, 116, 517, 116, 518, 116, |
1481 | 519, 116, 520, 116, 521, 116, 522, 116, |
1482 | 523, 116, 525, 526, 524, 527, 524, 528, |
1483 | 524, 529, 524, 530, 524, 531, 524, 532, |
1484 | 524, 533, 524, 534, 524, 535, 524, 536, |
1485 | 524, 537, 524, 538, 524, 539, 116, 540, |
1486 | 116, 541, 116, 542, 116, 543, 116, 544, |
1487 | 116, 545, 116, 547, 548, 546, 549, 546, |
1488 | 550, 546, 551, 546, 552, 546, 553, 546, |
1489 | 554, 546, 555, 546, 556, 546, 557, 546, |
1490 | 558, 546, 559, 546, 560, 546, 561, 546, |
1491 | 562, 546, 563, 546, 564, 546, 565, 546, |
1492 | 566, 546, 567, 546, 568, 546, 569, 546, |
1493 | 570, 546, 571, 546, 572, 546, 573, 546, |
1494 | 574, 546, 575, 546, 576, 546, 577, 546, |
1495 | 578, 546, 579, 580, 546, 581, 546, 582, |
1496 | 546, 583, 546, 584, 546, 585, 546, 586, |
1497 | 546, 587, 546, 588, 546, 589, 546, 590, |
1498 | 546, 591, 546, 592, 546, 593, 594, 595, |
1499 | 116, 596, 597, 116, 598, 116, 599, 116, |
1500 | 600, 116, 601, 116, 602, 116, 603, 116, |
1501 | 604, 116, 605, 116, 606, 607, 608, 116, |
1502 | 609, 116, 610, 116, 611, 116, 612, 116, |
1503 | 613, 116, 614, 116, 615, 116, 616, 116, |
1504 | 617, 116, 618, 116, 619, 116, 620, 116, |
1505 | 621, 116, 622, 116, 623, 624, 116, 625, |
1506 | 116, 626, 116, 627, 628, 116, 629, 116, |
1507 | 630, 116, 631, 116, 632, 116, 633, 116, |
1508 | 634, 116, 635, 116, 636, 116, 637, 116, |
1509 | 638, 116, 639, 116, 640, 116, 641, 116, |
1510 | 642, 116, 643, 116, 644, 116, 645, 116, |
1511 | 646, 116, 647, 116, 648, 116, 650, 649, |
1512 | 652, 651, 653, 649, 649, 651, 656, 657, |
1513 | 654, 655, 656, 657, 658, 655, 656, 657, |
1514 | 655, 660, 661, 654, 662, 663, 664, 665, |
1515 | 666, 667, 668, 669, 670, 671, 672, 673, |
1516 | 659, 660, 661, 654, 659, 660, 661, 674, |
1517 | 659, 660, 661, 659, 660, 661, 654, 675, |
1518 | 676, 677, 678, 679, 680, 681, 682, 683, |
1519 | 684, 685, 659, 660, 661, 654, 686, 687, |
1520 | 659, 660, 661, 654, 688, 689, 659, 660, |
1521 | 661, 654, 690, 659, 660, 661, 654, 691, |
1522 | 659, 692, 661, 654, 659, 660, 661, 693, |
1523 | 659, 660, 661, 654, 694, 659, 660, 661, |
1524 | 654, 695, 659, 696, 661, 654, 659, 660, |
1525 | 661, 697, 659, 660, 661, 654, 698, 659, |
1526 | 660, 661, 654, 699, 659, 660, 661, 654, |
1527 | 700, 659, 701, 661, 654, 659, 660, 661, |
1528 | 702, 659, 660, 661, 654, 703, 659, 660, |
1529 | 661, 654, 704, 659, 660, 661, 654, 705, |
1530 | 659, 660, 661, 654, 706, 659, 707, 661, |
1531 | 654, 659, 660, 661, 708, 659, 660, 661, |
1532 | 654, 709, 659, 660, 661, 654, 710, 659, |
1533 | 660, 661, 654, 711, 659, 660, 661, 654, |
1534 | 712, 659, 713, 661, 654, 659, 660, 661, |
1535 | 714, 659, 660, 661, 654, 715, 659, 660, |
1536 | 661, 654, 716, 659, 660, 661, 654, 717, |
1537 | 659, 660, 661, 654, 718, 659, 719, 661, |
1538 | 654, 659, 660, 661, 720, 659, 660, 661, |
1539 | 654, 721, 659, 660, 661, 654, 722, 659, |
1540 | 660, 661, 654, 723, 659, 660, 661, 654, |
1541 | 724, 659, 725, 661, 654, 659, 660, 661, |
1542 | 726, 659, 660, 661, 654, 727, 659, 660, |
1543 | 661, 654, 728, 659, 660, 661, 654, 729, |
1544 | 659, 660, 661, 654, 730, 659, 731, 661, |
1545 | 654, 659, 660, 661, 732, 659, 660, 661, |
1546 | 654, 733, 734, 659, 660, 661, 654, 735, |
1547 | 659, 660, 661, 654, 736, 659, 660, 661, |
1548 | 654, 737, 659, 738, 661, 654, 659, 660, |
1549 | 661, 739, 659, 660, 661, 654, 740, 659, |
1550 | 660, 661, 654, 741, 659, 660, 661, 654, |
1551 | 742, 659, 743, 661, 654, 659, 660, 661, |
1552 | 744, 659, 660, 661, 654, 745, 659, 660, |
1553 | 661, 654, 746, 659, 660, 661, 654, 747, |
1554 | 659, 660, 661, 654, 748, 659, 749, 661, |
1555 | 654, 659, 660, 661, 750, 659, 660, 661, |
1556 | 654, 751, 659, 660, 661, 654, 752, 659, |
1557 | 660, 661, 654, 753, 659, 660, 661, 654, |
1558 | 754, 659, 755, 661, 654, 659, 660, 661, |
1559 | 756, 659, 660, 661, 654, 757, 659, 660, |
1560 | 661, 654, 758, 659, 660, 661, 654, 759, |
1561 | 659, 760, 661, 654, 659, 660, 661, 761, |
1562 | 659, 660, 661, 654, 762, 659, 660, 661, |
1563 | 654, 763, 659, 660, 661, 654, 764, 659, |
1564 | 660, 661, 654, 765, 659, 660, 661, 654, |
1565 | 766, 659, 767, 661, 654, 659, 660, 661, |
1566 | 768, 659, 660, 661, 654, 769, 770, 659, |
1567 | 660, 661, 654, 771, 772, 659, 660, 661, |
1568 | 654, 773, 659, 660, 661, 654, 774, 659, |
1569 | 775, 661, 654, 659, 660, 661, 776, 659, |
1570 | 660, 661, 654, 777, 659, 660, 661, 654, |
1571 | 778, 659, 779, 661, 654, 659, 660, 661, |
1572 | 780, 659, 660, 661, 654, 781, 659, 660, |
1573 | 661, 654, 782, 659, 660, 661, 654, 783, |
1574 | 659, 784, 661, 654, 659, 660, 661, 785, |
1575 | 659, 660, 661, 654, 786, 659, 660, 661, |
1576 | 654, 787, 659, 660, 661, 654, 788, 659, |
1577 | 660, 661, 654, 789, 659, 790, 661, 654, |
1578 | 659, 660, 661, 791, 659, 660, 661, 654, |
1579 | 792, 659, 660, 661, 654, 793, 659, 660, |
1580 | 661, 654, 794, 659, 660, 661, 654, 795, |
1581 | 659, 796, 661, 654, 659, 660, 661, 797, |
1582 | 659, 660, 661, 654, 798, 659, 660, 661, |
1583 | 654, 799, 659, 660, 661, 654, 800, 659, |
1584 | 660, 661, 654, 801, 659, 802, 661, 654, |
1585 | 659, 660, 661, 803, 659, 660, 661, 654, |
1586 | 804, 659, 660, 661, 654, 805, 659, 660, |
1587 | 661, 654, 806, 659, 660, 661, 654, 807, |
1588 | 659, 808, 661, 654, 659, 660, 661, 809, |
1589 | 659, 660, 661, 654, 810, 659, 660, 661, |
1590 | 654, 811, 659, 660, 661, 654, 812, 659, |
1591 | 660, 661, 654, 813, 659, 814, 661, 654, |
1592 | 659, 660, 661, 815, 659, 660, 661, 654, |
1593 | 816, 817, 659, 660, 661, 654, 818, 659, |
1594 | 660, 661, 654, 819, 659, 660, 661, 654, |
1595 | 820, 659, 821, 661, 654, 659, 660, 661, |
1596 | 822, 659, 660, 661, 654, 823, 659, 660, |
1597 | 661, 654, 824, 659, 660, 661, 654, 825, |
1598 | 659, 826, 661, 654, 659, 660, 661, 827, |
1599 | 659, 660, 661, 654, 828, 659, 660, 661, |
1600 | 654, 829, 659, 660, 661, 654, 830, 659, |
1601 | 660, 661, 654, 831, 659, 832, 661, 654, |
1602 | 659, 660, 661, 833, 659, 660, 661, 654, |
1603 | 834, 659, 660, 661, 654, 835, 659, 660, |
1604 | 661, 654, 836, 659, 660, 661, 654, 837, |
1605 | 659, 838, 661, 654, 659, 660, 661, 839, |
1606 | 659, 660, 661, 654, 840, 659, 660, 661, |
1607 | 654, 841, 659, 660, 661, 654, 842, 659, |
1608 | 843, 661, 654, 659, 660, 661, 844, 659, |
1609 | 660, 661, 654, 845, 659, 660, 661, 654, |
1610 | 846, 659, 660, 661, 654, 847, 659, 660, |
1611 | 661, 654, 848, 659, 660, 661, 654, 849, |
1612 | 659, 850, 661, 654, 659, 660, 661, 851, |
1613 | 659, 853, 854, 654, 852, 853, 854, 658, |
1614 | 852, 853, 854, 852, 856, 855, 857, 856, |
1615 | 855, 860, 859, 859, 859, 858, 862, 861, |
1616 | 863, 861, 864, 861, 866, 865, 867, 865, |
1617 | 868, 865, 870, 869, 871, 869, 872, 869, |
1618 | 873, 876, 877, 878, 879, 880, 881, 882, |
1619 | 883, 884, 885, 886, 887, 888, 875, 893, |
1620 | 875, 876, 875, 875, 889, 890, 891, 892, |
1621 | 889, 874, 895, 896, 894, 23, 23, 23, |
1622 | 23, 897, 25, 25, 25, 25, 897, 899, |
1623 | 30, 902, 903, 904, 30, 900, 901, 30, |
1624 | 30, 898, 44, 897, 47, 47, 47, 47, |
1625 | 44, 897, 43, 44, 897, 905, 906, 48, |
1626 | 48, 48, 48, 897, 907, 897, 49, 50, |
1627 | 897, 908, 909, 910, 897, 45, 53, 46, |
1628 | 54, 54, 54, 54, 897, 912, 913, 911, |
1629 | 915, 916, 914, 918, 919, 917, 56, 60, |
1630 | 64, 920, 923, 926, 927, 928, 929, 930, |
1631 | 931, 932, 933, 934, 934, 935, 936, 937, |
1632 | 938, 934, 939, 940, 941, 942, 943, 944, |
1633 | 945, 946, 947, 948, 949, 950, 951, 934, |
1634 | 952, 953, 954, 955, 956, 957, 934, 958, |
1635 | 959, 960, 961, 924, 925, 922, 963, 962, |
1636 | 964, 962, 966, 967, 965, 969, 967, 968, |
1637 | 967, 970, 973, 972, 975, 68, 977, 71, |
1638 | 979, 978, 976, 981, 980, 982, 980, 984, |
1639 | 983, 985, 983, 987, 988, 989, 986, 991, |
1640 | 990, 994, 993, 999, 996, 997, 998, 995, |
1641 | 1000, 1001, 1002, 995, 94, 94, 94, 1003, |
1642 | 98, 1004, 1006, 1007, 1005, 1009, 1008, 1010, |
1643 | 1008, 1011, 1008, 1013, 1014, 1012, 109, 108, |
1644 | 109, 1016, 1017, 108, 1019, 1020, 1021, 1022, |
1645 | 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, |
1646 | 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, |
1647 | 1039, 1040, 1041, 1018, 1043, 1044, 1045, 1042, |
1648 | 1046, 1047, 1048, 1049, 1050, 1042, 1052, 1053, |
1649 | 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1051, |
1650 | 1062, 1063, 1061, 1064, 1042, 1065, 1066, 1042, |
1651 | 1067, 1068, 1069, 1070, 1071, 1042, 1072, 1073, |
1652 | 1074, 1042, 1076, 1077, 1075, 1078, 1079, 1042, |
1653 | 1080, 1042, 1081, 1082, 1042, 1084, 1085, 1086, |
1654 | 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1083, |
1655 | 1095, 1096, 1097, 1098, 1099, 1100, 1094, 1102, |
1656 | 1101, 1104, 1105, 1106, 1107, 1108, 1103, 1109, |
1657 | 1110, 1111, 1112, 1042, 1114, 1115, 1116, 1117, |
1658 | 1118, 1119, 1120, 1121, 1113, 1122, 1123, 1042, |
1659 | 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, |
1660 | 1133, 1124, 1134, 1135, 1136, 1137, 1042, 1138, |
1661 | 1042, 1139, 1042, 1140, 1141, 1142, 1143, 1042, |
1662 | 1144, 1042, 1146, 1147, 1148, 1145, 649, 1150, |
1663 | 1151, 1152, 1153, 1154, 1155, 1156, 1149, 1158, |
1664 | 1159, 1160, 1161, 1157, 1162, 1163, 1164, 1165, |
1665 | 1162, 874, 655, 1167, 852, 1166, 1169, 1173, |
1666 | 1174, 1175, 1176, 1176, 1177, 1178, 1179, 1176, |
1667 | 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, |
1668 | 1188, 1189, 1176, 1190, 1191, 1192, 1193, 1194, |
1669 | 1195, 1176, 1196, 1197, 1198, 1170, 1171, 1172, |
1670 | 1172, 1168, 1200, 1199, 1201, 1199, 1203, 1202, |
1671 | 1204, 1202, 1207, 1206, 1209, 1211, 1210, 1214, |
1672 | 1213, 1219, 1216, 1217, 1218, 1215, 1220, 1221, |
1673 | 1222, 1215, 859, 859, 859, 1223, 1225, 1224, |
1674 | 1226, 1224, 1227, 1224, 1229, 1230, 1231, 1228, |
1675 | 1228, 1228, 874, 1233, 1234, 1232, 1236, 1235, |
1676 | 1237, 1238, 1239, 1240, 1237, 874, 1242, 1241, |
1677 | 1244, 1243, 1245, 1243, 1246, 1243, 1248, 1247, |
1678 | 1249, 1250, 1251, 1252, 1249, 874, 1254, 1253, |
1679 | 1256, 1255, 1257, 1255, 1258, 1255, 1260, 1259, |
1680 | 1262, 1261, 0 |
1681 | }; |
1682 | |
1683 | static const short _regex_trans_targs[] = { |
1684 | 746, 746, 746, 746, 746, 748, 749, 750, |
1685 | 746, 751, 752, 753, 746, 754, 746, 746, |
1686 | 755, 756, 757, 758, 746, 746, 746, 3, |
1687 | 746, 4, 746, 6, 7, 746, 8, 746, |
1688 | 9, 12, 746, 14, 746, 746, 746, 16, |
1689 | 746, 18, 17, 746, 19, 746, 746, 20, |
1690 | 21, 746, 22, 25, 746, 27, 28, 746, |
1691 | 29, 30, 31, 746, 32, 33, 34, 746, |
1692 | 35, 36, 37, 746, 38, 746, 772, 40, |
1693 | 42, 46, 49, 43, 44, 746, 45, 47, |
1694 | 746, 48, 746, 746, 51, 746, 53, 746, |
1695 | 55, 746, 746, 57, 746, 746, 58, 746, |
1696 | 746, 60, 59, 783, 61, 783, 783, 746, |
1697 | 746, 64, 746, 787, 65, 787, 67, 787, |
1698 | 69, 787, 70, 787, 790, 790, 73, 76, |
1699 | 74, 75, 790, 77, 78, 79, 80, 790, |
1700 | 82, 83, 84, 85, 790, 87, 92, 94, |
1701 | 88, 89, 90, 91, 790, 93, 790, 95, |
1702 | 790, 97, 98, 99, 100, 790, 102, 103, |
1703 | 104, 105, 106, 790, 108, 109, 111, 110, |
1704 | 790, 112, 113, 790, 115, 120, 116, 117, |
1705 | 118, 119, 790, 121, 790, 790, 123, 139, |
1706 | 124, 125, 126, 127, 128, 129, 130, 131, |
1707 | 132, 133, 134, 135, 136, 137, 138, 790, |
1708 | 140, 141, 790, 143, 144, 790, 145, 146, |
1709 | 147, 148, 790, 790, 150, 151, 790, 153, |
1710 | 154, 790, 156, 157, 158, 159, 160, 161, |
1711 | 790, 163, 167, 164, 165, 166, 790, 168, |
1712 | 169, 170, 171, 790, 173, 177, 174, 175, |
1713 | 176, 790, 178, 179, 180, 181, 182, 183, |
1714 | 790, 185, 186, 187, 188, 189, 190, 191, |
1715 | 192, 193, 194, 195, 196, 197, 198, 199, |
1716 | 200, 201, 790, 203, 204, 205, 206, 207, |
1717 | 790, 209, 210, 211, 212, 213, 790, 215, |
1718 | 216, 217, 218, 219, 220, 221, 790, 223, |
1719 | 224, 225, 790, 227, 228, 790, 230, 235, |
1720 | 231, 232, 233, 234, 790, 236, 237, 238, |
1721 | 239, 790, 799, 790, 242, 790, 244, 245, |
1722 | 790, 247, 248, 249, 790, 251, 252, 253, |
1723 | 254, 255, 790, 257, 258, 259, 260, 261, |
1724 | 262, 263, 264, 265, 266, 267, 268, 269, |
1725 | 790, 271, 277, 272, 273, 274, 275, 276, |
1726 | 790, 278, 279, 280, 281, 282, 283, 284, |
1727 | 285, 286, 287, 288, 289, 290, 291, 295, |
1728 | 292, 293, 294, 790, 296, 297, 298, 299, |
1729 | 790, 301, 302, 303, 304, 305, 790, 307, |
1730 | 310, 314, 319, 308, 309, 790, 311, 312, |
1731 | 313, 790, 315, 316, 317, 318, 790, 320, |
1732 | 321, 322, 323, 790, 325, 332, 326, 327, |
1733 | 328, 329, 330, 331, 790, 333, 790, 790, |
1734 | 790, 335, 336, 790, 338, 339, 340, 790, |
1735 | 342, 344, 349, 343, 790, 345, 346, 347, |
1736 | 348, 790, 790, 351, 354, 352, 353, 790, |
1737 | 355, 356, 790, 790, 358, 364, 359, 360, |
1738 | 361, 362, 363, 790, 365, 366, 367, 790, |
1739 | 790, 369, 370, 371, 372, 373, 374, 375, |
1740 | 376, 790, 378, 379, 380, 381, 382, 383, |
1741 | 790, 385, 386, 387, 388, 790, 790, 390, |
1742 | 391, 392, 393, 394, 395, 396, 397, 790, |
1743 | 790, 400, 401, 790, 403, 408, 404, 405, |
1744 | 406, 407, 790, 409, 410, 415, 421, 433, |
1745 | 411, 412, 413, 414, 790, 416, 417, 418, |
1746 | 419, 420, 790, 422, 423, 424, 425, 426, |
1747 | 427, 428, 429, 430, 431, 432, 790, 434, |
1748 | 435, 436, 437, 790, 439, 440, 790, 442, |
1749 | 443, 444, 445, 790, 790, 447, 452, 448, |
1750 | 449, 450, 451, 790, 453, 454, 455, 456, |
1751 | 457, 458, 790, 460, 461, 462, 790, 464, |
1752 | 465, 790, 790, 467, 473, 468, 469, 470, |
1753 | 471, 472, 790, 474, 475, 476, 477, 478, |
1754 | 479, 790, 481, 482, 483, 484, 790, 486, |
1755 | 487, 488, 489, 790, 491, 492, 493, 494, |
1756 | 495, 496, 790, 498, 507, 499, 500, 501, |
1757 | 502, 503, 504, 505, 506, 790, 508, 509, |
1758 | 790, 511, 519, 528, 512, 515, 513, 514, |
1759 | 790, 516, 517, 518, 790, 520, 521, 522, |
1760 | 525, 790, 523, 524, 790, 526, 527, 790, |
1761 | 529, 790, 531, 532, 533, 790, 535, 536, |
1762 | 790, 537, 790, 539, 543, 540, 541, 542, |
1763 | 790, 544, 545, 546, 547, 790, 549, 550, |
1764 | 551, 552, 553, 790, 790, 790, 790, 790, |
1765 | 790, 0, 560, 561, 562, 817, 819, 563, |
1766 | 564, 565, 819, 567, 568, 569, 570, 651, |
1767 | 666, 672, 678, 684, 690, 696, 707, 713, |
1768 | 719, 724, 819, 571, 586, 592, 598, 604, |
1769 | 610, 616, 627, 633, 639, 644, 572, 581, |
1770 | 573, 577, 574, 575, 576, 819, 578, 579, |
1771 | 580, 819, 582, 583, 584, 585, 819, 587, |
1772 | 588, 589, 590, 591, 819, 593, 594, 595, |
1773 | 596, 597, 819, 599, 600, 601, 602, 603, |
1774 | 819, 605, 606, 607, 608, 609, 819, 611, |
1775 | 612, 613, 614, 615, 819, 617, 622, 618, |
1776 | 619, 620, 621, 819, 623, 624, 625, 626, |
1777 | 819, 628, 629, 630, 631, 632, 819, 634, |
1778 | 635, 636, 637, 638, 819, 640, 641, 642, |
1779 | 643, 819, 645, 646, 647, 648, 649, 650, |
1780 | 819, 652, 661, 653, 657, 654, 655, 656, |
1781 | 819, 658, 659, 660, 819, 662, 663, 664, |
1782 | 665, 819, 667, 668, 669, 670, 671, 819, |
1783 | 673, 674, 675, 676, 677, 819, 679, 680, |
1784 | 681, 682, 683, 819, 685, 686, 687, 688, |
1785 | 689, 819, 691, 692, 693, 694, 695, 819, |
1786 | 697, 702, 698, 699, 700, 701, 819, 703, |
1787 | 704, 705, 706, 819, 708, 709, 710, 711, |
1788 | 712, 819, 714, 715, 716, 717, 718, 819, |
1789 | 720, 721, 722, 723, 819, 725, 726, 727, |
1790 | 728, 729, 730, 819, 731, 732, 733, 819, |
1791 | 735, 819, 819, 736, 819, 819, 819, 739, |
1792 | 819, 838, 838, 742, 838, 843, 843, 745, |
1793 | 843, 746, 0, 746, 746, 746, 747, 746, |
1794 | 759, 760, 746, 761, 762, 763, 746, 782, |
1795 | 746, 746, 784, 785, 786, 746, 746, 1, |
1796 | 2, 746, 746, 5, 9, 10, 11, 13, |
1797 | 15, 746, 746, 746, 23, 24, 26, 746, |
1798 | 746, 746, 746, 746, 746, 746, 746, 746, |
1799 | 746, 746, 746, 764, 766, 768, 746, 746, |
1800 | 746, 746, 746, 746, 746, 746, 746, 769, |
1801 | 746, 746, 746, 746, 746, 746, 746, 746, |
1802 | 746, 770, 746, 746, 746, 771, 746, 776, |
1803 | 746, 777, 778, 746, 746, 746, 746, 746, |
1804 | 779, 746, 746, 765, 746, 746, 767, 768, |
1805 | 746, 768, 746, 746, 746, 746, 746, 746, |
1806 | 746, 39, 774, 41, 746, 773, 746, 746, |
1807 | 775, 746, 746, 50, 52, 54, 746, 56, |
1808 | 746, 746, 746, 746, 780, 780, 780, 781, |
1809 | 746, 746, 746, 746, 746, 746, 746, 746, |
1810 | 746, 746, 62, 63, 788, 787, 789, 787, |
1811 | 66, 68, 790, 791, 792, 793, 795, 796, |
1812 | 797, 798, 800, 801, 802, 803, 804, 806, |
1813 | 807, 808, 809, 810, 811, 812, 813, 814, |
1814 | 815, 816, 790, 71, 72, 81, 86, 96, |
1815 | 101, 107, 114, 790, 122, 790, 790, 142, |
1816 | 790, 794, 790, 155, 162, 790, 149, 152, |
1817 | 172, 184, 202, 208, 214, 222, 226, 229, |
1818 | 240, 246, 250, 790, 241, 243, 256, 270, |
1819 | 300, 306, 324, 790, 790, 334, 337, 341, |
1820 | 790, 790, 790, 790, 790, 350, 790, 357, |
1821 | 790, 805, 790, 377, 384, 790, 368, 790, |
1822 | 790, 389, 398, 790, 790, 399, 402, 438, |
1823 | 441, 790, 790, 790, 790, 790, 446, 790, |
1824 | 790, 790, 459, 463, 790, 466, 790, 480, |
1825 | 485, 790, 790, 790, 490, 497, 510, 530, |
1826 | 534, 538, 548, 554, 555, 556, 557, 558, |
1827 | 790, 790, 790, 790, 790, 818, 818, 818, |
1828 | 818, 818, 818, 818, 818, 819, 819, 820, |
1829 | 821, 819, 819, 833, 834, 835, 819, 566, |
1830 | 819, 822, 824, 819, 819, 819, 819, 819, |
1831 | 819, 826, 819, 819, 819, 819, 819, 819, |
1832 | 827, 819, 819, 819, 819, 819, 819, 828, |
1833 | 829, 819, 819, 819, 819, 819, 830, 819, |
1834 | 823, 819, 819, 825, 819, 819, 819, 819, |
1835 | 819, 819, 819, 734, 819, 819, 819, 819, |
1836 | 831, 831, 831, 832, 819, 819, 819, 819, |
1837 | 819, 819, 737, 738, 836, 837, 836, 836, |
1838 | 836, 836, 836, 838, 839, 838, 840, 841, |
1839 | 842, 838, 838, 838, 838, 740, 741, 843, |
1840 | 844, 843, 845, 846, 847, 843, 843, 843, |
1841 | 843, 743, 744, 848, 848, 849, 849 |
1842 | }; |
1843 | |
1844 | static const short _regex_trans_actions[] = { |
1845 | 827, 631, 765, 731, 723, 45, 903, 903, |
1846 | 897, 45, 912, 45, 900, 903, 729, 741, |
1847 | 0, 45, 45, 923, 737, 841, 747, 0, |
1848 | 743, 3, 839, 3, 0, 761, 3, 759, |
1849 | 870, 3, 751, 0, 749, 755, 753, 0, |
1850 | 757, 3, 0, 745, 0, 725, 727, 27, |
1851 | 3, 763, 0, 3, 673, 0, 25, 829, |
1852 | 0, 0, 0, 603, 0, 0, 0, 601, |
1853 | 0, 0, 0, 831, 0, 675, 17, 0, |
1854 | 7, 870, 3, 17, 17, 663, 17, 870, |
1855 | 661, 870, 665, 837, 3, 671, 3, 669, |
1856 | 3, 667, 833, 0, 677, 835, 0, 679, |
1857 | 845, 0, 11, 29, 13, 31, 0, 843, |
1858 | 769, 0, 771, 59, 0, 53, 0, 51, |
1859 | 0, 49, 0, 47, 359, 315, 0, 0, |
1860 | 0, 0, 127, 0, 0, 0, 0, 129, |
1861 | 0, 0, 0, 0, 131, 0, 0, 0, |
1862 | 0, 0, 0, 0, 133, 0, 135, 0, |
1863 | 137, 0, 0, 0, 0, 139, 0, 0, |
1864 | 0, 0, 0, 141, 0, 0, 0, 0, |
1865 | 143, 0, 0, 145, 0, 0, 0, 0, |
1866 | 0, 0, 147, 0, 149, 341, 0, 0, |
1867 | 0, 0, 0, 0, 0, 0, 0, 0, |
1868 | 0, 0, 0, 0, 0, 0, 0, 151, |
1869 | 0, 0, 153, 0, 0, 155, 0, 0, |
1870 | 0, 0, 157, 343, 0, 0, 159, 0, |
1871 | 0, 161, 0, 0, 0, 0, 0, 0, |
1872 | 163, 0, 0, 0, 0, 0, 165, 0, |
1873 | 0, 0, 0, 167, 0, 0, 0, 0, |
1874 | 0, 169, 0, 0, 0, 0, 0, 0, |
1875 | 171, 0, 0, 0, 0, 0, 0, 0, |
1876 | 0, 0, 0, 0, 0, 0, 0, 0, |
1877 | 0, 0, 173, 0, 0, 0, 0, 0, |
1878 | 175, 0, 0, 0, 0, 0, 177, 0, |
1879 | 0, 0, 0, 0, 0, 0, 179, 0, |
1880 | 0, 0, 181, 0, 0, 183, 0, 0, |
1881 | 0, 0, 0, 0, 185, 0, 0, 0, |
1882 | 0, 187, 45, 357, 0, 189, 0, 0, |
1883 | 191, 0, 0, 0, 193, 0, 0, 0, |
1884 | 0, 0, 195, 0, 0, 0, 0, 0, |
1885 | 0, 0, 0, 0, 0, 0, 0, 0, |
1886 | 197, 0, 0, 0, 0, 0, 0, 0, |
1887 | 199, 0, 0, 0, 0, 0, 0, 0, |
1888 | 0, 0, 0, 0, 0, 0, 0, 0, |
1889 | 0, 0, 0, 201, 0, 0, 0, 0, |
1890 | 203, 0, 0, 0, 0, 0, 205, 0, |
1891 | 0, 0, 0, 0, 0, 207, 0, 0, |
1892 | 0, 209, 0, 0, 0, 0, 211, 0, |
1893 | 0, 0, 0, 213, 0, 0, 0, 0, |
1894 | 0, 0, 0, 0, 215, 0, 217, 345, |
1895 | 219, 0, 0, 221, 0, 0, 0, 223, |
1896 | 0, 0, 0, 0, 225, 0, 0, 0, |
1897 | 0, 227, 229, 0, 0, 0, 0, 231, |
1898 | 0, 0, 233, 347, 0, 0, 0, 0, |
1899 | 0, 0, 0, 235, 0, 0, 0, 237, |
1900 | 349, 0, 0, 0, 0, 0, 0, 0, |
1901 | 0, 239, 0, 0, 0, 0, 0, 0, |
1902 | 241, 0, 0, 0, 0, 243, 351, 0, |
1903 | 0, 0, 0, 0, 0, 0, 0, 245, |
1904 | 247, 0, 0, 249, 0, 0, 0, 0, |
1905 | 0, 0, 251, 0, 0, 0, 0, 0, |
1906 | 0, 0, 0, 0, 253, 0, 0, 0, |
1907 | 0, 0, 255, 0, 0, 0, 0, 0, |
1908 | 0, 0, 0, 0, 0, 0, 257, 0, |
1909 | 0, 0, 0, 259, 0, 0, 261, 0, |
1910 | 0, 0, 0, 263, 353, 0, 0, 0, |
1911 | 0, 0, 0, 265, 0, 0, 0, 0, |
1912 | 0, 0, 267, 0, 0, 0, 269, 0, |
1913 | 0, 271, 355, 0, 0, 0, 0, 0, |
1914 | 0, 0, 273, 0, 0, 0, 0, 0, |
1915 | 0, 275, 0, 0, 0, 0, 277, 0, |
1916 | 0, 0, 0, 279, 0, 0, 0, 0, |
1917 | 0, 0, 281, 0, 0, 0, 0, 0, |
1918 | 0, 0, 0, 0, 0, 283, 0, 0, |
1919 | 285, 0, 0, 0, 0, 0, 0, 0, |
1920 | 287, 0, 0, 0, 289, 0, 0, 0, |
1921 | 0, 291, 0, 0, 293, 0, 0, 295, |
1922 | 0, 297, 0, 0, 0, 299, 0, 0, |
1923 | 303, 0, 301, 0, 0, 0, 0, 0, |
1924 | 305, 0, 0, 0, 0, 307, 0, 0, |
1925 | 0, 0, 0, 309, 311, 119, 121, 123, |
1926 | 125, 39, 0, 35, 33, 37, 539, 0, |
1927 | 0, 0, 377, 0, 0, 0, 0, 0, |
1928 | 0, 0, 0, 0, 0, 0, 0, 0, |
1929 | 0, 0, 435, 0, 0, 0, 0, 0, |
1930 | 0, 0, 0, 0, 0, 0, 0, 0, |
1931 | 0, 0, 0, 0, 0, 381, 0, 0, |
1932 | 0, 385, 0, 0, 0, 0, 389, 0, |
1933 | 0, 0, 0, 0, 393, 0, 0, 0, |
1934 | 0, 0, 397, 0, 0, 0, 0, 0, |
1935 | 401, 0, 0, 0, 0, 0, 405, 0, |
1936 | 0, 0, 0, 0, 409, 0, 0, 0, |
1937 | 0, 0, 0, 413, 0, 0, 0, 0, |
1938 | 417, 0, 0, 0, 0, 0, 421, 0, |
1939 | 0, 0, 0, 0, 425, 0, 0, 0, |
1940 | 0, 429, 0, 0, 0, 0, 0, 0, |
1941 | 433, 0, 0, 0, 0, 0, 0, 0, |
1942 | 379, 0, 0, 0, 383, 0, 0, 0, |
1943 | 0, 387, 0, 0, 0, 0, 0, 391, |
1944 | 0, 0, 0, 0, 0, 395, 0, 0, |
1945 | 0, 0, 0, 399, 0, 0, 0, 0, |
1946 | 0, 403, 0, 0, 0, 0, 0, 407, |
1947 | 0, 0, 0, 0, 0, 0, 411, 0, |
1948 | 0, 0, 0, 415, 0, 0, 0, 0, |
1949 | 0, 419, 0, 0, 0, 0, 0, 423, |
1950 | 0, 0, 0, 0, 427, 0, 0, 0, |
1951 | 0, 0, 0, 431, 0, 0, 0, 533, |
1952 | 0, 471, 535, 0, 475, 537, 503, 0, |
1953 | 505, 569, 557, 0, 559, 587, 575, 0, |
1954 | 577, 633, 0, 777, 775, 637, 45, 597, |
1955 | 0, 0, 609, 0, 45, 0, 635, 909, |
1956 | 599, 773, 0, 45, 45, 629, 779, 0, |
1957 | 0, 821, 819, 1, 855, 855, 1, 0, |
1958 | 3, 735, 733, 739, 1, 1, 0, 783, |
1959 | 615, 613, 785, 619, 617, 787, 623, 621, |
1960 | 781, 817, 721, 5, 852, 915, 639, 647, |
1961 | 611, 695, 607, 717, 699, 715, 683, 0, |
1962 | 605, 713, 691, 703, 687, 719, 641, 657, |
1963 | 645, 0, 693, 659, 655, 906, 697, 45, |
1964 | 651, 45, 0, 653, 689, 649, 701, 685, |
1965 | 7, 643, 791, 15, 867, 795, 858, 919, |
1966 | 793, 927, 847, 811, 711, 709, 809, 681, |
1967 | 801, 7, 17, 849, 799, 17, 876, 797, |
1968 | 17, 873, 815, 1, 1, 1, 803, 0, |
1969 | 813, 707, 705, 805, 19, 23, 21, 45, |
1970 | 882, 894, 888, 807, 825, 789, 627, 625, |
1971 | 823, 767, 0, 0, 45, 55, 45, 57, |
1972 | 0, 0, 317, 45, 45, 45, 45, 45, |
1973 | 45, 45, 45, 45, 45, 45, 45, 45, |
1974 | 45, 45, 45, 45, 45, 45, 45, 45, |
1975 | 0, 0, 339, 0, 0, 0, 0, 0, |
1976 | 0, 0, 0, 319, 0, 61, 63, 0, |
1977 | 65, 45, 67, 0, 0, 321, 0, 0, |
1978 | 0, 0, 0, 0, 0, 0, 0, 0, |
1979 | 0, 0, 0, 337, 0, 0, 0, 0, |
1980 | 0, 0, 0, 323, 79, 0, 0, 0, |
1981 | 69, 71, 73, 75, 77, 0, 325, 0, |
1982 | 81, 45, 83, 0, 0, 327, 0, 329, |
1983 | 85, 0, 0, 87, 89, 0, 0, 0, |
1984 | 0, 331, 91, 93, 95, 97, 0, 99, |
1985 | 101, 103, 0, 0, 333, 0, 105, 0, |
1986 | 0, 107, 109, 111, 0, 0, 0, 0, |
1987 | 0, 0, 0, 0, 0, 0, 0, 0, |
1988 | 313, 335, 113, 115, 117, 375, 361, 363, |
1989 | 365, 367, 369, 371, 373, 509, 491, 45, |
1990 | 0, 511, 507, 0, 45, 45, 531, 0, |
1991 | 499, 5, 9, 473, 497, 489, 439, 457, |
1992 | 493, 0, 437, 485, 461, 481, 451, 441, |
1993 | 0, 487, 453, 449, 495, 455, 445, 45, |
1994 | 0, 447, 483, 443, 459, 479, 7, 517, |
1995 | 15, 861, 519, 15, 864, 513, 469, 467, |
1996 | 527, 477, 521, 0, 515, 465, 463, 523, |
1997 | 19, 23, 21, 45, 879, 891, 885, 525, |
1998 | 529, 501, 0, 0, 549, 0, 543, 541, |
1999 | 551, 547, 545, 563, 0, 561, 0, 45, |
2000 | 45, 567, 553, 565, 555, 0, 0, 581, |
2001 | 0, 579, 0, 45, 45, 585, 571, 583, |
2002 | 573, 0, 0, 591, 589, 595, 593 |
2003 | }; |
2004 | |
2005 | static const short _regex_to_state_actions[] = { |
2006 | 0, 0, 0, 0, 0, 0, 0, 0, |
2007 | 0, 0, 0, 0, 0, 0, 0, 0, |
2008 | 0, 0, 0, 0, 0, 0, 0, 0, |
2009 | 0, 0, 0, 0, 0, 0, 0, 0, |
2010 | 0, 0, 0, 0, 0, 0, 0, 0, |
2011 | 0, 0, 0, 0, 0, 0, 0, 0, |
2012 | 0, 0, 0, 0, 0, 0, 0, 0, |
2013 | 0, 0, 0, 0, 0, 0, 0, 0, |
2014 | 0, 0, 0, 0, 0, 0, 0, 0, |
2015 | 0, 0, 0, 0, 0, 0, 0, 0, |
2016 | 0, 0, 0, 0, 0, 0, 0, 0, |
2017 | 0, 0, 0, 0, 0, 0, 0, 0, |
2018 | 0, 0, 0, 0, 0, 0, 0, 0, |
2019 | 0, 0, 0, 0, 0, 0, 0, 0, |
2020 | 0, 0, 0, 0, 0, 0, 0, 0, |
2021 | 0, 0, 0, 0, 0, 0, 0, 0, |
2022 | 0, 0, 0, 0, 0, 0, 0, 0, |
2023 | 0, 0, 0, 0, 0, 0, 0, 0, |
2024 | 0, 0, 0, 0, 0, 0, 0, 0, |
2025 | 0, 0, 0, 0, 0, 0, 0, 0, |
2026 | 0, 0, 0, 0, 0, 0, 0, 0, |
2027 | 0, 0, 0, 0, 0, 0, 0, 0, |
2028 | 0, 0, 0, 0, 0, 0, 0, 0, |
2029 | 0, 0, 0, 0, 0, 0, 0, 0, |
2030 | 0, 0, 0, 0, 0, 0, 0, 0, |
2031 | 0, 0, 0, 0, 0, 0, 0, 0, |
2032 | 0, 0, 0, 0, 0, 0, 0, 0, |
2033 | 0, 0, 0, 0, 0, 0, 0, 0, |
2034 | 0, 0, 0, 0, 0, 0, 0, 0, |
2035 | 0, 0, 0, 0, 0, 0, 0, 0, |
2036 | 0, 0, 0, 0, 0, 0, 0, 0, |
2037 | 0, 0, 0, 0, 0, 0, 0, 0, |
2038 | 0, 0, 0, 0, 0, 0, 0, 0, |
2039 | 0, 0, 0, 0, 0, 0, 0, 0, |
2040 | 0, 0, 0, 0, 0, 0, 0, 0, |
2041 | 0, 0, 0, 0, 0, 0, 0, 0, |
2042 | 0, 0, 0, 0, 0, 0, 0, 0, |
2043 | 0, 0, 0, 0, 0, 0, 0, 0, |
2044 | 0, 0, 0, 0, 0, 0, 0, 0, |
2045 | 0, 0, 0, 0, 0, 0, 0, 0, |
2046 | 0, 0, 0, 0, 0, 0, 0, 0, |
2047 | 0, 0, 0, 0, 0, 0, 0, 0, |
2048 | 0, 0, 0, 0, 0, 0, 0, 0, |
2049 | 0, 0, 0, 0, 0, 0, 0, 0, |
2050 | 0, 0, 0, 0, 0, 0, 0, 0, |
2051 | 0, 0, 0, 0, 0, 0, 0, 0, |
2052 | 0, 0, 0, 0, 0, 0, 0, 0, |
2053 | 0, 0, 0, 0, 0, 0, 0, 0, |
2054 | 0, 0, 0, 0, 0, 0, 0, 0, |
2055 | 0, 0, 0, 0, 0, 0, 0, 0, |
2056 | 0, 0, 0, 0, 0, 0, 0, 0, |
2057 | 0, 0, 0, 0, 0, 0, 0, 0, |
2058 | 0, 0, 0, 0, 0, 0, 0, 0, |
2059 | 0, 0, 0, 0, 0, 0, 0, 0, |
2060 | 0, 0, 0, 0, 0, 0, 0, 0, |
2061 | 0, 0, 0, 0, 0, 0, 0, 0, |
2062 | 0, 0, 0, 0, 0, 0, 0, 0, |
2063 | 0, 0, 0, 0, 0, 0, 0, 0, |
2064 | 0, 0, 0, 0, 0, 0, 0, 0, |
2065 | 0, 0, 0, 0, 0, 0, 0, 0, |
2066 | 0, 0, 0, 0, 0, 0, 0, 0, |
2067 | 0, 0, 0, 0, 0, 0, 0, 0, |
2068 | 0, 0, 0, 0, 0, 0, 0, 0, |
2069 | 0, 0, 0, 0, 0, 0, 0, 0, |
2070 | 0, 0, 0, 0, 0, 0, 0, 0, |
2071 | 0, 0, 0, 0, 0, 0, 0, 0, |
2072 | 0, 0, 0, 0, 0, 0, 0, 0, |
2073 | 0, 0, 0, 0, 0, 0, 0, 0, |
2074 | 0, 0, 0, 0, 0, 0, 0, 0, |
2075 | 0, 0, 0, 0, 0, 0, 0, 41, |
2076 | 0, 41, 0, 0, 0, 0, 0, 0, |
2077 | 0, 0, 0, 0, 0, 0, 0, 0, |
2078 | 0, 0, 0, 0, 0, 0, 0, 0, |
2079 | 0, 0, 0, 0, 0, 0, 0, 0, |
2080 | 0, 0, 0, 0, 0, 0, 0, 0, |
2081 | 0, 0, 0, 0, 0, 0, 0, 0, |
2082 | 0, 0, 0, 0, 0, 0, 0, 0, |
2083 | 0, 0, 0, 0, 0, 0, 0, 0, |
2084 | 0, 0, 0, 0, 0, 0, 0, 0, |
2085 | 0, 0, 0, 0, 0, 0, 0, 0, |
2086 | 0, 0, 0, 0, 0, 0, 0, 0, |
2087 | 0, 0, 0, 0, 0, 0, 0, 0, |
2088 | 0, 0, 0, 0, 0, 0, 0, 0, |
2089 | 0, 0, 0, 0, 0, 0, 0, 0, |
2090 | 0, 0, 0, 0, 0, 0, 0, 0, |
2091 | 0, 0, 0, 0, 0, 0, 0, 0, |
2092 | 0, 0, 0, 0, 0, 0, 0, 0, |
2093 | 0, 0, 0, 0, 0, 0, 0, 0, |
2094 | 0, 0, 0, 0, 0, 0, 0, 0, |
2095 | 0, 0, 0, 0, 0, 0, 0, 0, |
2096 | 0, 0, 0, 0, 0, 0, 0, 0, |
2097 | 0, 0, 0, 0, 0, 0, 0, 0, |
2098 | 0, 0, 0, 0, 0, 0, 0, 0, |
2099 | 0, 0, 41, 0, 0, 0, 0, 0, |
2100 | 0, 0, 0, 0, 0, 0, 0, 0, |
2101 | 0, 0, 0, 0, 0, 0, 0, 0, |
2102 | 0, 0, 0, 0, 0, 0, 0, 0, |
2103 | 0, 0, 0, 0, 0, 0, 0, 0, |
2104 | 0, 0, 0, 41, 0, 0, 41, 0, |
2105 | 0, 0, 0, 0, 0, 0, 0, 0, |
2106 | 0, 0, 0, 0, 0, 0, 0, 0, |
2107 | 0, 0, 0, 0, 0, 0, 0, 0, |
2108 | 0, 0, 41, 41, 0, 0, 0, 0, |
2109 | 0, 0, 0, 0, 0, 0, 0, 0, |
2110 | 0, 0, 0, 0, 41, 0, 41, 0, |
2111 | 0, 0, 0, 41, 0, 0, 0, 0, |
2112 | 41, 41 |
2113 | }; |
2114 | |
2115 | static const short _regex_from_state_actions[] = { |
2116 | 0, 0, 0, 0, 0, 0, 0, 0, |
2117 | 0, 0, 0, 0, 0, 0, 0, 0, |
2118 | 0, 0, 0, 0, 0, 0, 0, 0, |
2119 | 0, 0, 0, 0, 0, 0, 0, 0, |
2120 | 0, 0, 0, 0, 0, 0, 0, 0, |
2121 | 0, 0, 0, 0, 0, 0, 0, 0, |
2122 | 0, 0, 0, 0, 0, 0, 0, 0, |
2123 | 0, 0, 0, 0, 0, 0, 0, 0, |
2124 | 0, 0, 0, 0, 0, 0, 0, 0, |
2125 | 0, 0, 0, 0, 0, 0, 0, 0, |
2126 | 0, 0, 0, 0, 0, 0, 0, 0, |
2127 | 0, 0, 0, 0, 0, 0, 0, 0, |
2128 | 0, 0, 0, 0, 0, 0, 0, 0, |
2129 | 0, 0, 0, 0, 0, 0, 0, 0, |
2130 | 0, 0, 0, 0, 0, 0, 0, 0, |
2131 | 0, 0, 0, 0, 0, 0, 0, 0, |
2132 | 0, 0, 0, 0, 0, 0, 0, 0, |
2133 | 0, 0, 0, 0, 0, 0, 0, 0, |
2134 | 0, 0, 0, 0, 0, 0, 0, 0, |
2135 | 0, 0, 0, 0, 0, 0, 0, 0, |
2136 | 0, 0, 0, 0, 0, 0, 0, 0, |
2137 | 0, 0, 0, 0, 0, 0, 0, 0, |
2138 | 0, 0, 0, 0, 0, 0, 0, 0, |
2139 | 0, 0, 0, 0, 0, 0, 0, 0, |
2140 | 0, 0, 0, 0, 0, 0, 0, 0, |
2141 | 0, 0, 0, 0, 0, 0, 0, 0, |
2142 | 0, 0, 0, 0, 0, 0, 0, 0, |
2143 | 0, 0, 0, 0, 0, 0, 0, 0, |
2144 | 0, 0, 0, 0, 0, 0, 0, 0, |
2145 | 0, 0, 0, 0, 0, 0, 0, 0, |
2146 | 0, 0, 0, 0, 0, 0, 0, 0, |
2147 | 0, 0, 0, 0, 0, 0, 0, 0, |
2148 | 0, 0, 0, 0, 0, 0, 0, 0, |
2149 | 0, 0, 0, 0, 0, 0, 0, 0, |
2150 | 0, 0, 0, 0, 0, 0, 0, 0, |
2151 | 0, 0, 0, 0, 0, 0, 0, 0, |
2152 | 0, 0, 0, 0, 0, 0, 0, 0, |
2153 | 0, 0, 0, 0, 0, 0, 0, 0, |
2154 | 0, 0, 0, 0, 0, 0, 0, 0, |
2155 | 0, 0, 0, 0, 0, 0, 0, 0, |
2156 | 0, 0, 0, 0, 0, 0, 0, 0, |
2157 | 0, 0, 0, 0, 0, 0, 0, 0, |
2158 | 0, 0, 0, 0, 0, 0, 0, 0, |
2159 | 0, 0, 0, 0, 0, 0, 0, 0, |
2160 | 0, 0, 0, 0, 0, 0, 0, 0, |
2161 | 0, 0, 0, 0, 0, 0, 0, 0, |
2162 | 0, 0, 0, 0, 0, 0, 0, 0, |
2163 | 0, 0, 0, 0, 0, 0, 0, 0, |
2164 | 0, 0, 0, 0, 0, 0, 0, 0, |
2165 | 0, 0, 0, 0, 0, 0, 0, 0, |
2166 | 0, 0, 0, 0, 0, 0, 0, 0, |
2167 | 0, 0, 0, 0, 0, 0, 0, 0, |
2168 | 0, 0, 0, 0, 0, 0, 0, 0, |
2169 | 0, 0, 0, 0, 0, 0, 0, 0, |
2170 | 0, 0, 0, 0, 0, 0, 0, 0, |
2171 | 0, 0, 0, 0, 0, 0, 0, 0, |
2172 | 0, 0, 0, 0, 0, 0, 0, 0, |
2173 | 0, 0, 0, 0, 0, 0, 0, 0, |
2174 | 0, 0, 0, 0, 0, 0, 0, 0, |
2175 | 0, 0, 0, 0, 0, 0, 0, 0, |
2176 | 0, 0, 0, 0, 0, 0, 0, 0, |
2177 | 0, 0, 0, 0, 0, 0, 0, 0, |
2178 | 0, 0, 0, 0, 0, 0, 0, 0, |
2179 | 0, 0, 0, 0, 0, 0, 0, 0, |
2180 | 0, 0, 0, 0, 0, 0, 0, 0, |
2181 | 0, 0, 0, 0, 0, 0, 0, 0, |
2182 | 0, 0, 0, 0, 0, 0, 0, 0, |
2183 | 0, 0, 0, 0, 0, 0, 0, 0, |
2184 | 0, 0, 0, 0, 0, 0, 0, 0, |
2185 | 0, 0, 0, 0, 0, 0, 0, 0, |
2186 | 0, 0, 0, 0, 0, 0, 0, 0, |
2187 | 0, 0, 0, 0, 0, 0, 0, 0, |
2188 | 0, 0, 0, 0, 0, 0, 0, 0, |
2189 | 0, 0, 0, 0, 0, 0, 0, 0, |
2190 | 0, 0, 0, 0, 0, 0, 0, 0, |
2191 | 0, 0, 0, 0, 0, 0, 0, 0, |
2192 | 0, 0, 0, 0, 0, 0, 0, 0, |
2193 | 0, 0, 0, 0, 0, 0, 0, 0, |
2194 | 0, 0, 0, 0, 0, 0, 0, 0, |
2195 | 0, 0, 0, 0, 0, 0, 0, 0, |
2196 | 0, 0, 0, 0, 0, 0, 0, 0, |
2197 | 0, 0, 0, 0, 0, 0, 0, 0, |
2198 | 0, 0, 0, 0, 0, 0, 0, 0, |
2199 | 0, 0, 0, 0, 0, 0, 0, 0, |
2200 | 0, 0, 0, 0, 0, 0, 0, 0, |
2201 | 0, 0, 0, 0, 0, 0, 0, 0, |
2202 | 0, 0, 0, 0, 0, 0, 0, 0, |
2203 | 0, 0, 0, 0, 0, 0, 0, 0, |
2204 | 0, 0, 0, 0, 0, 0, 0, 0, |
2205 | 0, 0, 0, 0, 0, 0, 0, 0, |
2206 | 0, 0, 0, 0, 0, 0, 0, 0, |
2207 | 0, 0, 0, 0, 0, 0, 0, 0, |
2208 | 0, 0, 0, 0, 0, 0, 0, 0, |
2209 | 0, 0, 43, 0, 0, 0, 0, 0, |
2210 | 0, 0, 0, 0, 0, 0, 0, 0, |
2211 | 0, 0, 0, 0, 0, 0, 0, 0, |
2212 | 0, 0, 0, 0, 0, 0, 0, 0, |
2213 | 0, 0, 0, 0, 0, 0, 0, 0, |
2214 | 0, 0, 0, 43, 0, 0, 43, 0, |
2215 | 0, 0, 0, 0, 0, 0, 0, 0, |
2216 | 0, 0, 0, 0, 0, 0, 0, 0, |
2217 | 0, 0, 0, 0, 0, 0, 0, 0, |
2218 | 0, 0, 43, 43, 0, 0, 0, 0, |
2219 | 0, 0, 0, 0, 0, 0, 0, 0, |
2220 | 0, 0, 0, 0, 43, 0, 43, 0, |
2221 | 0, 0, 0, 43, 0, 0, 0, 0, |
2222 | 43, 43 |
2223 | }; |
2224 | |
2225 | static const short _regex_eof_actions[] = { |
2226 | 0, 0, 0, 0, 0, 0, 0, 0, |
2227 | 0, 0, 0, 0, 0, 0, 0, 0, |
2228 | 0, 0, 0, 0, 0, 0, 0, 0, |
2229 | 0, 0, 0, 0, 0, 0, 0, 0, |
2230 | 0, 0, 0, 0, 0, 0, 0, 0, |
2231 | 0, 0, 0, 0, 0, 0, 0, 0, |
2232 | 0, 0, 0, 0, 0, 0, 0, 0, |
2233 | 0, 0, 0, 0, 0, 0, 0, 0, |
2234 | 0, 0, 0, 0, 0, 0, 0, 0, |
2235 | 0, 0, 0, 0, 0, 0, 0, 0, |
2236 | 0, 0, 0, 0, 0, 0, 0, 0, |
2237 | 0, 0, 0, 0, 0, 0, 0, 0, |
2238 | 0, 0, 0, 0, 0, 0, 0, 0, |
2239 | 0, 0, 0, 0, 0, 0, 0, 0, |
2240 | 0, 0, 0, 0, 0, 0, 0, 0, |
2241 | 0, 0, 0, 0, 0, 0, 0, 0, |
2242 | 0, 0, 0, 0, 0, 0, 0, 0, |
2243 | 0, 0, 0, 0, 0, 0, 0, 0, |
2244 | 0, 0, 0, 0, 0, 0, 0, 0, |
2245 | 0, 0, 0, 0, 0, 0, 0, 0, |
2246 | 0, 0, 0, 0, 0, 0, 0, 0, |
2247 | 0, 0, 0, 0, 0, 0, 0, 0, |
2248 | 0, 0, 0, 0, 0, 0, 0, 0, |
2249 | 0, 0, 0, 0, 0, 0, 0, 0, |
2250 | 0, 0, 0, 0, 0, 0, 0, 0, |
2251 | 0, 0, 0, 0, 0, 0, 0, 0, |
2252 | 0, 0, 0, 0, 0, 0, 0, 0, |
2253 | 0, 0, 0, 0, 0, 0, 0, 0, |
2254 | 0, 0, 0, 0, 0, 0, 0, 0, |
2255 | 0, 0, 0, 0, 0, 0, 0, 0, |
2256 | 0, 0, 0, 0, 0, 0, 0, 0, |
2257 | 0, 0, 0, 0, 0, 0, 0, 0, |
2258 | 0, 0, 0, 0, 0, 0, 0, 0, |
2259 | 0, 0, 0, 0, 0, 0, 0, 0, |
2260 | 0, 0, 0, 0, 0, 0, 0, 0, |
2261 | 0, 0, 0, 0, 0, 0, 0, 0, |
2262 | 0, 0, 0, 0, 0, 0, 0, 0, |
2263 | 0, 0, 0, 0, 0, 0, 0, 0, |
2264 | 0, 0, 0, 0, 0, 0, 0, 0, |
2265 | 0, 0, 0, 0, 0, 0, 0, 0, |
2266 | 0, 0, 0, 0, 0, 0, 0, 0, |
2267 | 0, 0, 0, 0, 0, 0, 0, 0, |
2268 | 0, 0, 0, 0, 0, 0, 0, 0, |
2269 | 0, 0, 0, 0, 0, 0, 0, 0, |
2270 | 0, 0, 0, 0, 0, 0, 0, 0, |
2271 | 0, 0, 0, 0, 0, 0, 0, 0, |
2272 | 0, 0, 0, 0, 0, 0, 0, 0, |
2273 | 0, 0, 0, 0, 0, 0, 0, 0, |
2274 | 0, 0, 0, 0, 0, 0, 0, 0, |
2275 | 0, 0, 0, 0, 0, 0, 0, 0, |
2276 | 0, 0, 0, 0, 0, 0, 0, 0, |
2277 | 0, 0, 0, 0, 0, 0, 0, 0, |
2278 | 0, 0, 0, 0, 0, 0, 0, 0, |
2279 | 0, 0, 0, 0, 0, 0, 0, 0, |
2280 | 0, 0, 0, 0, 0, 0, 0, 0, |
2281 | 0, 0, 0, 0, 0, 0, 0, 0, |
2282 | 0, 0, 0, 0, 0, 0, 0, 0, |
2283 | 0, 0, 0, 0, 0, 0, 0, 0, |
2284 | 0, 0, 0, 0, 0, 0, 0, 0, |
2285 | 0, 0, 0, 0, 0, 0, 0, 0, |
2286 | 0, 0, 0, 0, 0, 0, 0, 0, |
2287 | 0, 0, 0, 0, 0, 0, 0, 0, |
2288 | 0, 0, 0, 0, 0, 0, 0, 0, |
2289 | 0, 0, 0, 0, 0, 0, 0, 0, |
2290 | 0, 0, 0, 0, 0, 0, 0, 0, |
2291 | 0, 0, 0, 0, 0, 0, 0, 0, |
2292 | 0, 0, 0, 0, 0, 0, 0, 0, |
2293 | 0, 0, 0, 0, 0, 0, 0, 0, |
2294 | 0, 0, 0, 0, 0, 0, 0, 0, |
2295 | 0, 0, 0, 0, 0, 0, 0, 39, |
2296 | 39, 39, 39, 0, 0, 0, 0, 0, |
2297 | 0, 0, 0, 0, 0, 0, 0, 0, |
2298 | 0, 0, 0, 0, 0, 0, 0, 0, |
2299 | 0, 0, 0, 0, 0, 0, 0, 0, |
2300 | 0, 0, 0, 0, 0, 0, 0, 0, |
2301 | 0, 0, 0, 0, 0, 0, 0, 0, |
2302 | 0, 0, 0, 0, 0, 0, 0, 0, |
2303 | 0, 0, 0, 0, 0, 0, 0, 0, |
2304 | 0, 0, 0, 0, 0, 0, 0, 0, |
2305 | 0, 0, 0, 0, 0, 0, 0, 0, |
2306 | 0, 0, 0, 0, 0, 0, 0, 0, |
2307 | 0, 0, 0, 0, 0, 0, 0, 0, |
2308 | 0, 0, 0, 0, 0, 0, 0, 0, |
2309 | 0, 0, 0, 0, 0, 0, 0, 0, |
2310 | 0, 0, 0, 0, 0, 0, 0, 0, |
2311 | 0, 0, 0, 0, 0, 0, 0, 0, |
2312 | 0, 0, 0, 0, 0, 0, 0, 0, |
2313 | 0, 0, 0, 0, 0, 0, 0, 0, |
2314 | 0, 0, 0, 0, 0, 0, 0, 0, |
2315 | 0, 0, 0, 0, 0, 0, 0, 0, |
2316 | 0, 0, 0, 0, 0, 0, 0, 0, |
2317 | 0, 0, 0, 0, 0, 0, 0, 0, |
2318 | 0, 0, 0, 0, 0, 0, 0, 0, |
2319 | 0, 0, 0, 0, 0, 0, 0, 0, |
2320 | 0, 0, 0, 0, 0, 0, 0, 0, |
2321 | 0, 0, 0, 0, 0, 0, 0, 0, |
2322 | 0, 0, 0, 0, 0, 0, 0, 0, |
2323 | 0, 0, 0, 0, 0, 0, 0, 0, |
2324 | 0, 0, 0, 0, 0, 0, 0, 0, |
2325 | 0, 0, 0, 0, 0, 0, 0, 0, |
2326 | 0, 0, 0, 0, 0, 0, 0, 0, |
2327 | 0, 0, 0, 0, 0, 0, 0, 0, |
2328 | 0, 0, 0, 0, 0, 0, 0, 0, |
2329 | 0, 0, 0, 0, 0, 0, 0, 0, |
2330 | 0, 0, 0, 0, 0, 0, 0, 0, |
2331 | 0, 0, 0, 0, 0, 0, 0, 0, |
2332 | 0, 0 |
2333 | }; |
2334 | |
2335 | static const short _regex_eof_trans[] = { |
2336 | 0, 1, 1, 22, 22, 27, 27, 27, |
2337 | 27, 27, 27, 27, 27, 27, 27, 27, |
2338 | 27, 27, 27, 22, 22, 22, 22, 22, |
2339 | 22, 22, 22, 22, 22, 56, 56, 56, |
2340 | 56, 56, 56, 56, 56, 56, 68, 68, |
2341 | 68, 68, 68, 68, 68, 68, 68, 68, |
2342 | 68, 68, 84, 84, 84, 84, 84, 84, |
2343 | 91, 91, 94, 97, 97, 97, 104, 104, |
2344 | 104, 108, 108, 108, 108, 108, 108, 117, |
2345 | 117, 117, 117, 117, 117, 117, 117, 117, |
2346 | 117, 117, 117, 117, 117, 117, 117, 117, |
2347 | 117, 117, 117, 117, 117, 117, 117, 117, |
2348 | 117, 117, 117, 117, 117, 117, 117, 117, |
2349 | 117, 117, 117, 117, 117, 117, 117, 117, |
2350 | 117, 117, 117, 117, 117, 117, 117, 117, |
2351 | 117, 117, 174, 174, 174, 174, 174, 174, |
2352 | 174, 174, 174, 174, 174, 174, 174, 174, |
2353 | 174, 174, 174, 174, 174, 174, 174, 174, |
2354 | 174, 174, 174, 174, 174, 204, 204, 204, |
2355 | 204, 204, 204, 174, 174, 174, 174, 174, |
2356 | 174, 174, 174, 174, 174, 174, 174, 174, |
2357 | 174, 174, 174, 174, 117, 117, 117, 117, |
2358 | 117, 117, 117, 117, 117, 117, 117, 117, |
2359 | 117, 117, 117, 117, 117, 117, 117, 117, |
2360 | 117, 117, 117, 117, 117, 117, 117, 117, |
2361 | 117, 117, 117, 117, 117, 117, 117, 117, |
2362 | 117, 117, 117, 117, 117, 117, 117, 117, |
2363 | 117, 117, 117, 117, 117, 117, 117, 117, |
2364 | 117, 117, 117, 117, 117, 117, 117, 117, |
2365 | 117, 117, 117, 117, 117, 117, 117, 117, |
2366 | 117, 300, 300, 300, 300, 300, 117, 117, |
2367 | 117, 117, 117, 117, 117, 117, 117, 117, |
2368 | 117, 117, 117, 117, 117, 117, 117, 117, |
2369 | 117, 117, 117, 117, 117, 117, 117, 117, |
2370 | 117, 117, 117, 117, 117, 117, 117, 117, |
2371 | 117, 117, 117, 117, 117, 117, 117, 117, |
2372 | 117, 117, 117, 117, 117, 117, 117, 117, |
2373 | 117, 117, 117, 117, 117, 117, 117, 117, |
2374 | 117, 117, 117, 117, 117, 117, 117, 117, |
2375 | 117, 117, 117, 117, 117, 117, 117, 117, |
2376 | 117, 117, 117, 117, 117, 117, 117, 117, |
2377 | 117, 117, 117, 117, 117, 117, 400, 400, |
2378 | 400, 400, 400, 400, 400, 400, 400, 400, |
2379 | 400, 400, 400, 400, 400, 400, 400, 400, |
2380 | 400, 400, 400, 400, 400, 428, 428, 428, |
2381 | 428, 428, 428, 428, 428, 428, 428, 428, |
2382 | 441, 441, 441, 441, 441, 441, 441, 441, |
2383 | 441, 428, 428, 428, 428, 428, 428, 428, |
2384 | 428, 428, 428, 428, 428, 463, 463, 463, |
2385 | 463, 463, 463, 463, 463, 463, 463, 117, |
2386 | 117, 117, 117, 117, 117, 117, 117, 117, |
2387 | 117, 117, 117, 117, 117, 117, 117, 117, |
2388 | 117, 117, 117, 117, 117, 117, 117, 117, |
2389 | 117, 117, 117, 117, 117, 117, 117, 117, |
2390 | 117, 117, 117, 117, 117, 117, 117, 117, |
2391 | 117, 117, 117, 117, 117, 117, 525, 525, |
2392 | 525, 525, 525, 525, 525, 525, 525, 525, |
2393 | 525, 525, 525, 117, 117, 117, 117, 117, |
2394 | 117, 117, 547, 547, 547, 547, 547, 547, |
2395 | 547, 547, 547, 547, 547, 547, 547, 547, |
2396 | 547, 547, 547, 547, 547, 547, 547, 547, |
2397 | 547, 547, 547, 547, 547, 547, 547, 547, |
2398 | 547, 547, 547, 547, 547, 547, 547, 547, |
2399 | 547, 547, 547, 547, 547, 547, 117, 117, |
2400 | 117, 117, 117, 117, 117, 117, 117, 117, |
2401 | 117, 117, 117, 117, 117, 117, 117, 117, |
2402 | 117, 117, 117, 117, 117, 117, 117, 117, |
2403 | 117, 117, 117, 117, 117, 117, 117, 117, |
2404 | 117, 117, 117, 117, 117, 117, 117, 117, |
2405 | 117, 117, 117, 117, 117, 117, 117, 0, |
2406 | 0, 0, 0, 655, 655, 655, 655, 655, |
2407 | 655, 655, 655, 655, 655, 655, 655, 655, |
2408 | 655, 655, 655, 655, 655, 655, 655, 655, |
2409 | 655, 655, 655, 655, 655, 655, 655, 655, |
2410 | 655, 655, 655, 655, 655, 655, 655, 655, |
2411 | 655, 655, 655, 655, 655, 655, 655, 655, |
2412 | 655, 655, 655, 655, 655, 655, 655, 655, |
2413 | 655, 655, 655, 655, 655, 655, 655, 655, |
2414 | 655, 655, 655, 655, 655, 655, 655, 655, |
2415 | 655, 655, 655, 655, 655, 655, 655, 655, |
2416 | 655, 655, 655, 655, 655, 655, 655, 655, |
2417 | 655, 655, 655, 655, 655, 655, 655, 655, |
2418 | 655, 655, 655, 655, 655, 655, 655, 655, |
2419 | 655, 655, 655, 655, 655, 655, 655, 655, |
2420 | 655, 655, 655, 655, 655, 655, 655, 655, |
2421 | 655, 655, 655, 655, 655, 655, 655, 655, |
2422 | 655, 655, 655, 655, 655, 655, 655, 655, |
2423 | 655, 655, 655, 655, 655, 655, 655, 655, |
2424 | 655, 655, 655, 655, 655, 655, 655, 655, |
2425 | 655, 655, 655, 655, 655, 655, 655, 655, |
2426 | 655, 655, 655, 655, 655, 655, 655, 655, |
2427 | 655, 655, 655, 655, 655, 655, 856, 856, |
2428 | 859, 862, 862, 862, 866, 866, 866, 870, |
2429 | 870, 870, 0, 895, 898, 898, 899, 898, |
2430 | 898, 898, 898, 898, 898, 898, 898, 912, |
2431 | 915, 918, 921, 922, 963, 963, 966, 969, |
2432 | 971, 972, 975, 977, 981, 981, 984, 984, |
2433 | 987, 991, 993, 996, 996, 1004, 1005, 1006, |
2434 | 1009, 1009, 1009, 0, 1016, 1016, 0, 1043, |
2435 | 1043, 1052, 1062, 1043, 1043, 1043, 1043, 1076, |
2436 | 1043, 1043, 1043, 1084, 1095, 1102, 1104, 1043, |
2437 | 1114, 1043, 1125, 1043, 1043, 1043, 1043, 1043, |
2438 | 1146, 0, 0, 0, 1167, 1167, 1200, 1200, |
2439 | 1203, 1203, 1206, 1209, 1211, 1213, 1216, 1216, |
2440 | 1224, 1225, 1225, 1225, 0, 1233, 0, 1242, |
2441 | 1244, 1244, 1244, 0, 1254, 1256, 1256, 1256, |
2442 | 0, 0 |
2443 | }; |
2444 | |
2445 | static const int regex_start = 746; |
2446 | static const int regex_error = 0; |
2447 | |
2448 | static const int regex_en_readVerb = 787; |
2449 | static const int regex_en_readUCP = 790; |
2450 | static const int regex_en_readBracedUCP = 559; |
2451 | static const int regex_en_readUCPSingle = 818; |
2452 | static const int regex_en_charClassGuts = 819; |
2453 | static const int regex_en_readClass = 836; |
2454 | static const int regex_en_readQuotedLiteral = 838; |
2455 | static const int regex_en_readQuotedClass = 843; |
2456 | static const int = 848; |
2457 | static const int = 849; |
2458 | static const int regex_en_main = 746; |
2459 | |
2460 | |
2461 | #line 1913 "Parser.rl" |
2462 | |
2463 | /** \brief Main parser call, returns root Component or nullptr. */ |
2464 | unique_ptr<Component> parse(const char *ptr, ParseMode &globalMode) { |
2465 | assert(ptr); |
2466 | |
2467 | const char *p = ptr; |
2468 | const char *pe = ptr + strlen(ptr); |
2469 | |
2470 | // First, read the control verbs, set any global mode flags and move the |
2471 | // ptr forward. |
2472 | p = read_control_verbs(p, pe, 0, globalMode); |
2473 | |
2474 | const char *eof = pe; |
2475 | int cs; |
2476 | UNUSED int act; |
2477 | int top; |
2478 | vector<int> stack; |
2479 | const char *ts, *te; |
2480 | unichar accumulator = 0; |
2481 | unichar octAccumulator = 0; /* required as we are also accumulating for |
2482 | * back ref when looking for octals */ |
2483 | unsigned repeatN = 0; |
2484 | unsigned repeatM = 0; |
2485 | string label; |
2486 | |
2487 | ParseMode mode = globalMode; |
2488 | ParseMode newMode; |
2489 | |
2490 | bool negated = false; |
2491 | bool = false; |
2492 | |
2493 | // Stack of sequences and flags used to store state when we enter |
2494 | // sub-sequences. |
2495 | vector<ExprState> sequences; |
2496 | |
2497 | // Index of the next capturing group. Note that zero is reserved for the |
2498 | // root sequence. |
2499 | unsigned groupIndex = 1; |
2500 | |
2501 | // Set storing group names that are currently in use. |
2502 | flat_set<string> groupNames; |
2503 | |
2504 | // Root sequence. |
2505 | unique_ptr<ComponentSequence> rootSeq = ue2::make_unique<ComponentSequence>(); |
2506 | rootSeq->setCaptureIndex(0); |
2507 | |
2508 | // Current sequence being appended to |
2509 | ComponentSequence *currentSeq = rootSeq.get(); |
2510 | |
2511 | // The current character class being appended to. This is used as the |
2512 | // accumulator for both character class and UCP properties. |
2513 | unique_ptr<ComponentClass> currentCls; |
2514 | |
2515 | // True if the machine is currently inside a character class, i.e. square |
2516 | // brackets [..]. |
2517 | bool inCharClass = false; |
2518 | |
2519 | // True if the machine is inside a character class but it has not processed |
2520 | // any "real" elements yet, i.e. it's still processing meta-characters like |
2521 | // '^'. |
2522 | bool inCharClassEarly = false; |
2523 | |
2524 | // Location at which the current character class began. |
2525 | const char *currentClsBegin = p; |
2526 | |
2527 | // We throw exceptions on various parsing failures beyond this point: we |
2528 | // use a try/catch block here to clean up our allocated memory before we |
2529 | // re-throw the exception to the caller. |
2530 | try { |
2531 | // Embed the Ragel machine here |
2532 | |
2533 | #line 2534 "Parser.cpp" |
2534 | { |
2535 | cs = regex_start; |
2536 | top = 0; |
2537 | ts = 0; |
2538 | te = 0; |
2539 | act = 0; |
2540 | } |
2541 | |
2542 | #line 1984 "Parser.rl" |
2543 | |
2544 | #line 2545 "Parser.cpp" |
2545 | { |
2546 | int _klen; |
2547 | unsigned int _trans; |
2548 | short _widec; |
2549 | const short *_acts; |
2550 | unsigned int _nacts; |
2551 | const short *_keys; |
2552 | |
2553 | if ( p == pe ) |
2554 | goto _test_eof; |
2555 | if ( cs == 0 ) |
2556 | goto _out; |
2557 | _resume: |
2558 | _acts = _regex_actions + _regex_from_state_actions[cs]; |
2559 | _nacts = (unsigned int) *_acts++; |
2560 | while ( _nacts-- > 0 ) { |
2561 | switch ( *_acts++ ) { |
2562 | case 24: |
2563 | #line 1 "NONE" |
2564 | {ts = p;} |
2565 | break; |
2566 | #line 2567 "Parser.cpp" |
2567 | } |
2568 | } |
2569 | |
2570 | _widec = (*p); |
2571 | _klen = _regex_cond_lengths[cs]; |
2572 | _keys = _regex_cond_keys + (_regex_cond_offsets[cs]*2); |
2573 | if ( _klen > 0 ) { |
2574 | const short *_lower = _keys; |
2575 | const short *_mid; |
2576 | const short *_upper = _keys + (_klen<<1) - 2; |
2577 | while (1) { |
2578 | if ( _upper < _lower ) |
2579 | break; |
2580 | |
2581 | _mid = _lower + (((_upper-_lower) >> 1) & ~1); |
2582 | if ( _widec < _mid[0] ) |
2583 | _upper = _mid - 2; |
2584 | else if ( _widec > _mid[1] ) |
2585 | _lower = _mid + 2; |
2586 | else { |
2587 | switch ( _regex_cond_spaces[_regex_cond_offsets[cs] + ((_mid - _keys)>>1)] ) { |
2588 | case 0: { |
2589 | _widec = (short)(128 + ((*p) - -128)); |
2590 | if ( |
2591 | #line 476 "Parser.rl" |
2592 | mode.utf8 ) _widec += 256; |
2593 | break; |
2594 | } |
2595 | case 1: { |
2596 | _widec = (short)(1152 + ((*p) - -128)); |
2597 | if ( |
2598 | #line 477 "Parser.rl" |
2599 | mode.ignore_space ) _widec += 256; |
2600 | break; |
2601 | } |
2602 | case 2: { |
2603 | _widec = (short)(640 + ((*p) - -128)); |
2604 | if ( |
2605 | #line 478 "Parser.rl" |
2606 | inCharClassEarly ) _widec += 256; |
2607 | break; |
2608 | } |
2609 | } |
2610 | break; |
2611 | } |
2612 | } |
2613 | } |
2614 | |
2615 | _keys = _regex_trans_keys + _regex_key_offsets[cs]; |
2616 | _trans = _regex_index_offsets[cs]; |
2617 | |
2618 | _klen = _regex_single_lengths[cs]; |
2619 | if ( _klen > 0 ) { |
2620 | const short *_lower = _keys; |
2621 | const short *_mid; |
2622 | const short *_upper = _keys + _klen - 1; |
2623 | while (1) { |
2624 | if ( _upper < _lower ) |
2625 | break; |
2626 | |
2627 | _mid = _lower + ((_upper-_lower) >> 1); |
2628 | if ( _widec < *_mid ) |
2629 | _upper = _mid - 1; |
2630 | else if ( _widec > *_mid ) |
2631 | _lower = _mid + 1; |
2632 | else { |
2633 | _trans += (unsigned int)(_mid - _keys); |
2634 | goto _match; |
2635 | } |
2636 | } |
2637 | _keys += _klen; |
2638 | _trans += _klen; |
2639 | } |
2640 | |
2641 | _klen = _regex_range_lengths[cs]; |
2642 | if ( _klen > 0 ) { |
2643 | const short *_lower = _keys; |
2644 | const short *_mid; |
2645 | const short *_upper = _keys + (_klen<<1) - 2; |
2646 | while (1) { |
2647 | if ( _upper < _lower ) |
2648 | break; |
2649 | |
2650 | _mid = _lower + (((_upper-_lower) >> 1) & ~1); |
2651 | if ( _widec < _mid[0] ) |
2652 | _upper = _mid - 2; |
2653 | else if ( _widec > _mid[1] ) |
2654 | _lower = _mid + 2; |
2655 | else { |
2656 | _trans += (unsigned int)((_mid - _keys)>>1); |
2657 | goto _match; |
2658 | } |
2659 | } |
2660 | _trans += _klen; |
2661 | } |
2662 | |
2663 | _match: |
2664 | _trans = _regex_indicies[_trans]; |
2665 | _eof_trans: |
2666 | cs = _regex_trans_targs[_trans]; |
2667 | |
2668 | if ( _regex_trans_actions[_trans] == 0 ) |
2669 | goto _again; |
2670 | |
2671 | _acts = _regex_actions + _regex_trans_actions[_trans]; |
2672 | _nacts = (unsigned int) *_acts++; |
2673 | while ( _nacts-- > 0 ) |
2674 | { |
2675 | switch ( *_acts++ ) |
2676 | { |
2677 | case 0: |
2678 | #line 286 "Parser.rl" |
2679 | { label.clear();} |
2680 | break; |
2681 | case 1: |
2682 | #line 287 "Parser.rl" |
2683 | { label.push_back((*p));} |
2684 | break; |
2685 | case 2: |
2686 | #line 288 "Parser.rl" |
2687 | { octAccumulator = 0;} |
2688 | break; |
2689 | case 3: |
2690 | #line 289 "Parser.rl" |
2691 | { accumulator = 0;} |
2692 | break; |
2693 | case 4: |
2694 | #line 290 "Parser.rl" |
2695 | { |
2696 | octAccumulator = 0; |
2697 | pushOct(&octAccumulator, (*p)); |
2698 | } |
2699 | break; |
2700 | case 5: |
2701 | #line 294 "Parser.rl" |
2702 | { |
2703 | accumulator = 0; |
2704 | pushDec(&accumulator, (*p)); |
2705 | } |
2706 | break; |
2707 | case 6: |
2708 | #line 298 "Parser.rl" |
2709 | { repeatN = 0; repeatM = 0; } |
2710 | break; |
2711 | case 7: |
2712 | #line 299 "Parser.rl" |
2713 | { pushDec(&repeatN, (*p)); } |
2714 | break; |
2715 | case 8: |
2716 | #line 300 "Parser.rl" |
2717 | { pushDec(&repeatM, (*p)); } |
2718 | break; |
2719 | case 9: |
2720 | #line 301 "Parser.rl" |
2721 | { pushOct(&octAccumulator, (*p)); } |
2722 | break; |
2723 | case 10: |
2724 | #line 302 "Parser.rl" |
2725 | { pushDec(&accumulator, (*p)); } |
2726 | break; |
2727 | case 11: |
2728 | #line 303 "Parser.rl" |
2729 | { |
2730 | accumulator *= 16; |
2731 | accumulator += (*p) - '0'; |
2732 | } |
2733 | break; |
2734 | case 12: |
2735 | #line 307 "Parser.rl" |
2736 | { |
2737 | accumulator *= 16; |
2738 | accumulator += 10 + (*p) - 'a'; |
2739 | } |
2740 | break; |
2741 | case 13: |
2742 | #line 311 "Parser.rl" |
2743 | { |
2744 | accumulator *= 16; |
2745 | accumulator += 10 + (*p) - 'A'; |
2746 | } |
2747 | break; |
2748 | case 14: |
2749 | #line 431 "Parser.rl" |
2750 | { |
2751 | newMode = mode; |
2752 | } |
2753 | break; |
2754 | case 15: |
2755 | #line 438 "Parser.rl" |
2756 | { |
2757 | switch ((*p)) { |
2758 | case 'i': |
2759 | newMode.caseless = true; |
2760 | break; |
2761 | case 'm': |
2762 | newMode.multiline = true; |
2763 | break; |
2764 | case 's': |
2765 | newMode.dotall = true; |
2766 | break; |
2767 | case 'x': |
2768 | newMode.ignore_space = true; |
2769 | break; |
2770 | default: |
2771 | assert(0); // this action only called for [imsx] |
2772 | break; |
2773 | } |
2774 | } |
2775 | break; |
2776 | case 16: |
2777 | #line 457 "Parser.rl" |
2778 | { |
2779 | switch ((*p)) { |
2780 | case 'i': |
2781 | newMode.caseless = false; |
2782 | break; |
2783 | case 'm': |
2784 | newMode.multiline = false; |
2785 | break; |
2786 | case 's': |
2787 | newMode.dotall = false; |
2788 | break; |
2789 | case 'x': |
2790 | newMode.ignore_space = false; |
2791 | break; |
2792 | default: |
2793 | assert(0); // this action only called for [imsx] |
2794 | break; |
2795 | } |
2796 | } |
2797 | break; |
2798 | case 17: |
2799 | #line 511 "Parser.rl" |
2800 | {repeatM = repeatN;} |
2801 | break; |
2802 | case 18: |
2803 | #line 511 "Parser.rl" |
2804 | {repeatM = ComponentRepeat::NoLimit;} |
2805 | break; |
2806 | case 19: |
2807 | #line 723 "Parser.rl" |
2808 | { negated = !negated; } |
2809 | break; |
2810 | case 20: |
2811 | #line 724 "Parser.rl" |
2812 | { p--; { |
2813 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
2814 | if ((int)stack.size() == top) { |
2815 | stack.resize(2 * (top + 1)); |
2816 | } |
2817 | {stack[top++] = cs; cs = 790; goto _again;}} } |
2818 | break; |
2819 | case 21: |
2820 | #line 725 "Parser.rl" |
2821 | { if (!inCharClass) { // not inside [..] |
2822 | currentCls->finalize(); |
2823 | currentSeq->addComponent(move(currentCls)); |
2824 | } |
2825 | {cs = stack[--top]; goto _again;} |
2826 | } |
2827 | break; |
2828 | case 22: |
2829 | #line 731 "Parser.rl" |
2830 | { throw LocatedParseError("Malformed property" ); } |
2831 | break; |
2832 | case 25: |
2833 | #line 1 "NONE" |
2834 | {te = p+1;} |
2835 | break; |
2836 | case 26: |
2837 | #line 551 "Parser.rl" |
2838 | {te = p+1;{ |
2839 | throw LocatedParseError("(*UTF8) must be at start of " |
2840 | "expression, encountered" ); |
2841 | }} |
2842 | break; |
2843 | case 27: |
2844 | #line 555 "Parser.rl" |
2845 | {te = p+1;{ |
2846 | throw LocatedParseError("(*UTF) must be at start of " |
2847 | "expression, encountered" ); |
2848 | }} |
2849 | break; |
2850 | case 28: |
2851 | #line 559 "Parser.rl" |
2852 | {te = p+1;{ |
2853 | throw LocatedParseError("(*UCP) must be at start of " |
2854 | "expression, encountered" ); |
2855 | }} |
2856 | break; |
2857 | case 29: |
2858 | #line 565 "Parser.rl" |
2859 | {te = p+1;{ |
2860 | ParseMode temp_mode; |
2861 | assert(ts - 2 >= ptr); // parser needs the '(*' at the start too. |
2862 | read_control_verbs(ts - 2, te, (ts - 2 - ptr), temp_mode); |
2863 | assert(0); // Should have thrown a parse error. |
2864 | throw LocatedParseError("Unknown control verb" ); |
2865 | }} |
2866 | break; |
2867 | case 30: |
2868 | #line 572 "Parser.rl" |
2869 | {te = p+1;{ |
2870 | throw LocatedParseError("Unknown control verb" ); |
2871 | }} |
2872 | break; |
2873 | case 31: |
2874 | #line 572 "Parser.rl" |
2875 | {te = p;p--;{ |
2876 | throw LocatedParseError("Unknown control verb" ); |
2877 | }} |
2878 | break; |
2879 | case 32: |
2880 | #line 572 "Parser.rl" |
2881 | {{p = ((te))-1;}{ |
2882 | throw LocatedParseError("Unknown control verb" ); |
2883 | }} |
2884 | break; |
2885 | case 33: |
2886 | #line 582 "Parser.rl" |
2887 | {te = p+1;{ currentCls->add(CLASS_UCP_CC, negated); {cs = stack[--top]; goto _again;} }} |
2888 | break; |
2889 | case 34: |
2890 | #line 583 "Parser.rl" |
2891 | {te = p+1;{ currentCls->add(CLASS_UCP_CF, negated); {cs = stack[--top]; goto _again;} }} |
2892 | break; |
2893 | case 35: |
2894 | #line 584 "Parser.rl" |
2895 | {te = p+1;{ currentCls->add(CLASS_UCP_CN, negated); {cs = stack[--top]; goto _again;} }} |
2896 | break; |
2897 | case 36: |
2898 | #line 586 "Parser.rl" |
2899 | {te = p+1;{ currentCls->add(CLASS_UCP_CS, negated); {cs = stack[--top]; goto _again;} }} |
2900 | break; |
2901 | case 37: |
2902 | #line 588 "Parser.rl" |
2903 | {te = p+1;{ currentCls->add(CLASS_UCP_LL, negated); {cs = stack[--top]; goto _again;} }} |
2904 | break; |
2905 | case 38: |
2906 | #line 589 "Parser.rl" |
2907 | {te = p+1;{ currentCls->add(CLASS_UCP_LM, negated); {cs = stack[--top]; goto _again;} }} |
2908 | break; |
2909 | case 39: |
2910 | #line 590 "Parser.rl" |
2911 | {te = p+1;{ currentCls->add(CLASS_UCP_LO, negated); {cs = stack[--top]; goto _again;} }} |
2912 | break; |
2913 | case 40: |
2914 | #line 591 "Parser.rl" |
2915 | {te = p+1;{ currentCls->add(CLASS_UCP_LT, negated); {cs = stack[--top]; goto _again;} }} |
2916 | break; |
2917 | case 41: |
2918 | #line 592 "Parser.rl" |
2919 | {te = p+1;{ currentCls->add(CLASS_UCP_LU, negated); {cs = stack[--top]; goto _again;} }} |
2920 | break; |
2921 | case 42: |
2922 | #line 593 "Parser.rl" |
2923 | {te = p+1;{ currentCls->add(CLASS_UCP_L_AND, negated); {cs = stack[--top]; goto _again;} }} |
2924 | break; |
2925 | case 43: |
2926 | #line 595 "Parser.rl" |
2927 | {te = p+1;{ currentCls->add(CLASS_UCP_MC, negated); {cs = stack[--top]; goto _again;} }} |
2928 | break; |
2929 | case 44: |
2930 | #line 597 "Parser.rl" |
2931 | {te = p+1;{ currentCls->add(CLASS_UCP_MN, negated); {cs = stack[--top]; goto _again;} }} |
2932 | break; |
2933 | case 45: |
2934 | #line 599 "Parser.rl" |
2935 | {te = p+1;{ currentCls->add(CLASS_UCP_ND, negated); {cs = stack[--top]; goto _again;} }} |
2936 | break; |
2937 | case 46: |
2938 | #line 600 "Parser.rl" |
2939 | {te = p+1;{ currentCls->add(CLASS_UCP_NL, negated); {cs = stack[--top]; goto _again;} }} |
2940 | break; |
2941 | case 47: |
2942 | #line 601 "Parser.rl" |
2943 | {te = p+1;{ currentCls->add(CLASS_UCP_NO, negated); {cs = stack[--top]; goto _again;} }} |
2944 | break; |
2945 | case 48: |
2946 | #line 603 "Parser.rl" |
2947 | {te = p+1;{ currentCls->add(CLASS_UCP_PC, negated); {cs = stack[--top]; goto _again;} }} |
2948 | break; |
2949 | case 49: |
2950 | #line 604 "Parser.rl" |
2951 | {te = p+1;{ currentCls->add(CLASS_UCP_PD, negated); {cs = stack[--top]; goto _again;} }} |
2952 | break; |
2953 | case 50: |
2954 | #line 605 "Parser.rl" |
2955 | {te = p+1;{ currentCls->add(CLASS_UCP_PE, negated); {cs = stack[--top]; goto _again;} }} |
2956 | break; |
2957 | case 51: |
2958 | #line 606 "Parser.rl" |
2959 | {te = p+1;{ currentCls->add(CLASS_UCP_PF, negated); {cs = stack[--top]; goto _again;} }} |
2960 | break; |
2961 | case 52: |
2962 | #line 607 "Parser.rl" |
2963 | {te = p+1;{ currentCls->add(CLASS_UCP_PI, negated); {cs = stack[--top]; goto _again;} }} |
2964 | break; |
2965 | case 53: |
2966 | #line 608 "Parser.rl" |
2967 | {te = p+1;{ currentCls->add(CLASS_UCP_PO, negated); {cs = stack[--top]; goto _again;} }} |
2968 | break; |
2969 | case 54: |
2970 | #line 609 "Parser.rl" |
2971 | {te = p+1;{ currentCls->add(CLASS_UCP_PS, negated); {cs = stack[--top]; goto _again;} }} |
2972 | break; |
2973 | case 55: |
2974 | #line 611 "Parser.rl" |
2975 | {te = p+1;{ currentCls->add(CLASS_UCP_SC, negated); {cs = stack[--top]; goto _again;} }} |
2976 | break; |
2977 | case 56: |
2978 | #line 612 "Parser.rl" |
2979 | {te = p+1;{ currentCls->add(CLASS_UCP_SK, negated); {cs = stack[--top]; goto _again;} }} |
2980 | break; |
2981 | case 57: |
2982 | #line 613 "Parser.rl" |
2983 | {te = p+1;{ currentCls->add(CLASS_UCP_SM, negated); {cs = stack[--top]; goto _again;} }} |
2984 | break; |
2985 | case 58: |
2986 | #line 614 "Parser.rl" |
2987 | {te = p+1;{ currentCls->add(CLASS_UCP_SO, negated); {cs = stack[--top]; goto _again;} }} |
2988 | break; |
2989 | case 59: |
2990 | #line 616 "Parser.rl" |
2991 | {te = p+1;{ currentCls->add(CLASS_UCP_ZL, negated); {cs = stack[--top]; goto _again;} }} |
2992 | break; |
2993 | case 60: |
2994 | #line 617 "Parser.rl" |
2995 | {te = p+1;{ currentCls->add(CLASS_UCP_ZP, negated); {cs = stack[--top]; goto _again;} }} |
2996 | break; |
2997 | case 61: |
2998 | #line 618 "Parser.rl" |
2999 | {te = p+1;{ currentCls->add(CLASS_UCP_ZS, negated); {cs = stack[--top]; goto _again;} }} |
3000 | break; |
3001 | case 62: |
3002 | #line 619 "Parser.rl" |
3003 | {te = p+1;{ currentCls->add(CLASS_UCP_XAN, negated); {cs = stack[--top]; goto _again;} }} |
3004 | break; |
3005 | case 63: |
3006 | #line 620 "Parser.rl" |
3007 | {te = p+1;{ currentCls->add(CLASS_UCP_XPS, negated); {cs = stack[--top]; goto _again;} }} |
3008 | break; |
3009 | case 64: |
3010 | #line 621 "Parser.rl" |
3011 | {te = p+1;{ currentCls->add(CLASS_UCP_XSP, negated); {cs = stack[--top]; goto _again;} }} |
3012 | break; |
3013 | case 65: |
3014 | #line 622 "Parser.rl" |
3015 | {te = p+1;{ currentCls->add(CLASS_UCP_XWD, negated); {cs = stack[--top]; goto _again;} }} |
3016 | break; |
3017 | case 66: |
3018 | #line 623 "Parser.rl" |
3019 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_ARABIC, negated); {cs = stack[--top]; goto _again;} }} |
3020 | break; |
3021 | case 67: |
3022 | #line 624 "Parser.rl" |
3023 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_ARMENIAN, negated); {cs = stack[--top]; goto _again;} }} |
3024 | break; |
3025 | case 68: |
3026 | #line 625 "Parser.rl" |
3027 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_AVESTAN, negated); {cs = stack[--top]; goto _again;} }} |
3028 | break; |
3029 | case 69: |
3030 | #line 626 "Parser.rl" |
3031 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_BALINESE, negated); {cs = stack[--top]; goto _again;} }} |
3032 | break; |
3033 | case 70: |
3034 | #line 627 "Parser.rl" |
3035 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_BAMUM, negated); {cs = stack[--top]; goto _again;} }} |
3036 | break; |
3037 | case 71: |
3038 | #line 628 "Parser.rl" |
3039 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_BATAK, negated); {cs = stack[--top]; goto _again;} }} |
3040 | break; |
3041 | case 72: |
3042 | #line 629 "Parser.rl" |
3043 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_BENGALI, negated); {cs = stack[--top]; goto _again;} }} |
3044 | break; |
3045 | case 73: |
3046 | #line 630 "Parser.rl" |
3047 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_BOPOMOFO, negated); {cs = stack[--top]; goto _again;} }} |
3048 | break; |
3049 | case 74: |
3050 | #line 631 "Parser.rl" |
3051 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_BRAHMI, negated); {cs = stack[--top]; goto _again;} }} |
3052 | break; |
3053 | case 75: |
3054 | #line 632 "Parser.rl" |
3055 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_BRAILLE, negated); {cs = stack[--top]; goto _again;} }} |
3056 | break; |
3057 | case 76: |
3058 | #line 633 "Parser.rl" |
3059 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_BUGINESE, negated); {cs = stack[--top]; goto _again;} }} |
3060 | break; |
3061 | case 77: |
3062 | #line 634 "Parser.rl" |
3063 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_BUHID, negated); {cs = stack[--top]; goto _again;} }} |
3064 | break; |
3065 | case 78: |
3066 | #line 635 "Parser.rl" |
3067 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_CANADIAN_ABORIGINAL, negated); {cs = stack[--top]; goto _again;} }} |
3068 | break; |
3069 | case 79: |
3070 | #line 636 "Parser.rl" |
3071 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_CARIAN, negated); {cs = stack[--top]; goto _again;} }} |
3072 | break; |
3073 | case 80: |
3074 | #line 637 "Parser.rl" |
3075 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_CHAM, negated); {cs = stack[--top]; goto _again;} }} |
3076 | break; |
3077 | case 81: |
3078 | #line 638 "Parser.rl" |
3079 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_CHEROKEE, negated); {cs = stack[--top]; goto _again;} }} |
3080 | break; |
3081 | case 82: |
3082 | #line 639 "Parser.rl" |
3083 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_COMMON, negated); {cs = stack[--top]; goto _again;} }} |
3084 | break; |
3085 | case 83: |
3086 | #line 640 "Parser.rl" |
3087 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_COPTIC, negated); {cs = stack[--top]; goto _again;} }} |
3088 | break; |
3089 | case 84: |
3090 | #line 641 "Parser.rl" |
3091 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_CUNEIFORM, negated); {cs = stack[--top]; goto _again;} }} |
3092 | break; |
3093 | case 85: |
3094 | #line 642 "Parser.rl" |
3095 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_CYPRIOT, negated); {cs = stack[--top]; goto _again;} }} |
3096 | break; |
3097 | case 86: |
3098 | #line 643 "Parser.rl" |
3099 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_CYRILLIC, negated); {cs = stack[--top]; goto _again;} }} |
3100 | break; |
3101 | case 87: |
3102 | #line 644 "Parser.rl" |
3103 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_DESERET, negated); {cs = stack[--top]; goto _again;} }} |
3104 | break; |
3105 | case 88: |
3106 | #line 645 "Parser.rl" |
3107 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_DEVANAGARI, negated); {cs = stack[--top]; goto _again;} }} |
3108 | break; |
3109 | case 89: |
3110 | #line 646 "Parser.rl" |
3111 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_EGYPTIAN_HIEROGLYPHS, negated); {cs = stack[--top]; goto _again;} }} |
3112 | break; |
3113 | case 90: |
3114 | #line 647 "Parser.rl" |
3115 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_ETHIOPIC, negated); {cs = stack[--top]; goto _again;} }} |
3116 | break; |
3117 | case 91: |
3118 | #line 648 "Parser.rl" |
3119 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_GEORGIAN, negated); {cs = stack[--top]; goto _again;} }} |
3120 | break; |
3121 | case 92: |
3122 | #line 649 "Parser.rl" |
3123 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_GLAGOLITIC, negated); {cs = stack[--top]; goto _again;} }} |
3124 | break; |
3125 | case 93: |
3126 | #line 650 "Parser.rl" |
3127 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_GOTHIC, negated); {cs = stack[--top]; goto _again;} }} |
3128 | break; |
3129 | case 94: |
3130 | #line 651 "Parser.rl" |
3131 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_GREEK, negated); {cs = stack[--top]; goto _again;} }} |
3132 | break; |
3133 | case 95: |
3134 | #line 652 "Parser.rl" |
3135 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_GUJARATI, negated); {cs = stack[--top]; goto _again;} }} |
3136 | break; |
3137 | case 96: |
3138 | #line 653 "Parser.rl" |
3139 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_GURMUKHI, negated); {cs = stack[--top]; goto _again;} }} |
3140 | break; |
3141 | case 97: |
3142 | #line 655 "Parser.rl" |
3143 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_HANGUL, negated); {cs = stack[--top]; goto _again;} }} |
3144 | break; |
3145 | case 98: |
3146 | #line 656 "Parser.rl" |
3147 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_HANUNOO, negated); {cs = stack[--top]; goto _again;} }} |
3148 | break; |
3149 | case 99: |
3150 | #line 657 "Parser.rl" |
3151 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_HEBREW, negated); {cs = stack[--top]; goto _again;} }} |
3152 | break; |
3153 | case 100: |
3154 | #line 658 "Parser.rl" |
3155 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_HIRAGANA, negated); {cs = stack[--top]; goto _again;} }} |
3156 | break; |
3157 | case 101: |
3158 | #line 659 "Parser.rl" |
3159 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_IMPERIAL_ARAMAIC, negated); {cs = stack[--top]; goto _again;} }} |
3160 | break; |
3161 | case 102: |
3162 | #line 660 "Parser.rl" |
3163 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_INHERITED, negated); {cs = stack[--top]; goto _again;} }} |
3164 | break; |
3165 | case 103: |
3166 | #line 661 "Parser.rl" |
3167 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_INSCRIPTIONAL_PAHLAVI, negated); {cs = stack[--top]; goto _again;} }} |
3168 | break; |
3169 | case 104: |
3170 | #line 662 "Parser.rl" |
3171 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_INSCRIPTIONAL_PARTHIAN, negated); {cs = stack[--top]; goto _again;} }} |
3172 | break; |
3173 | case 105: |
3174 | #line 663 "Parser.rl" |
3175 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_JAVANESE, negated); {cs = stack[--top]; goto _again;} }} |
3176 | break; |
3177 | case 106: |
3178 | #line 664 "Parser.rl" |
3179 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_KAITHI, negated); {cs = stack[--top]; goto _again;} }} |
3180 | break; |
3181 | case 107: |
3182 | #line 665 "Parser.rl" |
3183 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_KANNADA, negated); {cs = stack[--top]; goto _again;} }} |
3184 | break; |
3185 | case 108: |
3186 | #line 666 "Parser.rl" |
3187 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_KATAKANA, negated); {cs = stack[--top]; goto _again;} }} |
3188 | break; |
3189 | case 109: |
3190 | #line 667 "Parser.rl" |
3191 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_KAYAH_LI, negated); {cs = stack[--top]; goto _again;} }} |
3192 | break; |
3193 | case 110: |
3194 | #line 668 "Parser.rl" |
3195 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_KHAROSHTHI, negated); {cs = stack[--top]; goto _again;} }} |
3196 | break; |
3197 | case 111: |
3198 | #line 669 "Parser.rl" |
3199 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_KHMER, negated); {cs = stack[--top]; goto _again;} }} |
3200 | break; |
3201 | case 112: |
3202 | #line 670 "Parser.rl" |
3203 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_LAO, negated); {cs = stack[--top]; goto _again;} }} |
3204 | break; |
3205 | case 113: |
3206 | #line 671 "Parser.rl" |
3207 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_LATIN, negated); {cs = stack[--top]; goto _again;} }} |
3208 | break; |
3209 | case 114: |
3210 | #line 672 "Parser.rl" |
3211 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_LEPCHA, negated); {cs = stack[--top]; goto _again;} }} |
3212 | break; |
3213 | case 115: |
3214 | #line 673 "Parser.rl" |
3215 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_LIMBU, negated); {cs = stack[--top]; goto _again;} }} |
3216 | break; |
3217 | case 116: |
3218 | #line 674 "Parser.rl" |
3219 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_LINEAR_B, negated); {cs = stack[--top]; goto _again;} }} |
3220 | break; |
3221 | case 117: |
3222 | #line 675 "Parser.rl" |
3223 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_LISU, negated); {cs = stack[--top]; goto _again;} }} |
3224 | break; |
3225 | case 118: |
3226 | #line 676 "Parser.rl" |
3227 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_LYCIAN, negated); {cs = stack[--top]; goto _again;} }} |
3228 | break; |
3229 | case 119: |
3230 | #line 677 "Parser.rl" |
3231 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_LYDIAN, negated); {cs = stack[--top]; goto _again;} }} |
3232 | break; |
3233 | case 120: |
3234 | #line 678 "Parser.rl" |
3235 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_MALAYALAM, negated); {cs = stack[--top]; goto _again;} }} |
3236 | break; |
3237 | case 121: |
3238 | #line 679 "Parser.rl" |
3239 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_MANDAIC, negated); {cs = stack[--top]; goto _again;} }} |
3240 | break; |
3241 | case 122: |
3242 | #line 680 "Parser.rl" |
3243 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_MEETEI_MAYEK, negated); {cs = stack[--top]; goto _again;} }} |
3244 | break; |
3245 | case 123: |
3246 | #line 681 "Parser.rl" |
3247 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_MONGOLIAN, negated); {cs = stack[--top]; goto _again;} }} |
3248 | break; |
3249 | case 124: |
3250 | #line 682 "Parser.rl" |
3251 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_MYANMAR, negated); {cs = stack[--top]; goto _again;} }} |
3252 | break; |
3253 | case 125: |
3254 | #line 683 "Parser.rl" |
3255 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_NEW_TAI_LUE, negated); {cs = stack[--top]; goto _again;} }} |
3256 | break; |
3257 | case 126: |
3258 | #line 684 "Parser.rl" |
3259 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_NKO, negated); {cs = stack[--top]; goto _again;} }} |
3260 | break; |
3261 | case 127: |
3262 | #line 685 "Parser.rl" |
3263 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_OGHAM, negated); {cs = stack[--top]; goto _again;} }} |
3264 | break; |
3265 | case 128: |
3266 | #line 686 "Parser.rl" |
3267 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_OL_CHIKI, negated); {cs = stack[--top]; goto _again;} }} |
3268 | break; |
3269 | case 129: |
3270 | #line 687 "Parser.rl" |
3271 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_OLD_ITALIC, negated); {cs = stack[--top]; goto _again;} }} |
3272 | break; |
3273 | case 130: |
3274 | #line 688 "Parser.rl" |
3275 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_OLD_PERSIAN, negated); {cs = stack[--top]; goto _again;} }} |
3276 | break; |
3277 | case 131: |
3278 | #line 689 "Parser.rl" |
3279 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_OLD_SOUTH_ARABIAN, negated); {cs = stack[--top]; goto _again;} }} |
3280 | break; |
3281 | case 132: |
3282 | #line 690 "Parser.rl" |
3283 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_OLD_TURKIC, negated); {cs = stack[--top]; goto _again;} }} |
3284 | break; |
3285 | case 133: |
3286 | #line 691 "Parser.rl" |
3287 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_ORIYA, negated); {cs = stack[--top]; goto _again;} }} |
3288 | break; |
3289 | case 134: |
3290 | #line 692 "Parser.rl" |
3291 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_OSMANYA, negated); {cs = stack[--top]; goto _again;} }} |
3292 | break; |
3293 | case 135: |
3294 | #line 693 "Parser.rl" |
3295 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_PHAGS_PA, negated); {cs = stack[--top]; goto _again;} }} |
3296 | break; |
3297 | case 136: |
3298 | #line 694 "Parser.rl" |
3299 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_PHOENICIAN, negated); {cs = stack[--top]; goto _again;} }} |
3300 | break; |
3301 | case 137: |
3302 | #line 695 "Parser.rl" |
3303 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_REJANG, negated); {cs = stack[--top]; goto _again;} }} |
3304 | break; |
3305 | case 138: |
3306 | #line 696 "Parser.rl" |
3307 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_RUNIC, negated); {cs = stack[--top]; goto _again;} }} |
3308 | break; |
3309 | case 139: |
3310 | #line 697 "Parser.rl" |
3311 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_SAMARITAN, negated); {cs = stack[--top]; goto _again;} }} |
3312 | break; |
3313 | case 140: |
3314 | #line 698 "Parser.rl" |
3315 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_SAURASHTRA, negated); {cs = stack[--top]; goto _again;} }} |
3316 | break; |
3317 | case 141: |
3318 | #line 699 "Parser.rl" |
3319 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_SHAVIAN, negated); {cs = stack[--top]; goto _again;} }} |
3320 | break; |
3321 | case 142: |
3322 | #line 700 "Parser.rl" |
3323 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_SINHALA, negated); {cs = stack[--top]; goto _again;} }} |
3324 | break; |
3325 | case 143: |
3326 | #line 701 "Parser.rl" |
3327 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_SUNDANESE, negated); {cs = stack[--top]; goto _again;} }} |
3328 | break; |
3329 | case 144: |
3330 | #line 702 "Parser.rl" |
3331 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_SYLOTI_NAGRI, negated); {cs = stack[--top]; goto _again;} }} |
3332 | break; |
3333 | case 145: |
3334 | #line 703 "Parser.rl" |
3335 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_SYRIAC, negated); {cs = stack[--top]; goto _again;} }} |
3336 | break; |
3337 | case 146: |
3338 | #line 704 "Parser.rl" |
3339 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_TAGALOG, negated); {cs = stack[--top]; goto _again;} }} |
3340 | break; |
3341 | case 147: |
3342 | #line 705 "Parser.rl" |
3343 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_TAGBANWA, negated); {cs = stack[--top]; goto _again;} }} |
3344 | break; |
3345 | case 148: |
3346 | #line 706 "Parser.rl" |
3347 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_TAI_LE, negated); {cs = stack[--top]; goto _again;} }} |
3348 | break; |
3349 | case 149: |
3350 | #line 707 "Parser.rl" |
3351 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_TAI_THAM, negated); {cs = stack[--top]; goto _again;} }} |
3352 | break; |
3353 | case 150: |
3354 | #line 708 "Parser.rl" |
3355 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_TAI_VIET, negated); {cs = stack[--top]; goto _again;} }} |
3356 | break; |
3357 | case 151: |
3358 | #line 709 "Parser.rl" |
3359 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_TAMIL, negated); {cs = stack[--top]; goto _again;} }} |
3360 | break; |
3361 | case 152: |
3362 | #line 710 "Parser.rl" |
3363 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_TELUGU, negated); {cs = stack[--top]; goto _again;} }} |
3364 | break; |
3365 | case 153: |
3366 | #line 711 "Parser.rl" |
3367 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_THAANA, negated); {cs = stack[--top]; goto _again;} }} |
3368 | break; |
3369 | case 154: |
3370 | #line 712 "Parser.rl" |
3371 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_THAI, negated); {cs = stack[--top]; goto _again;} }} |
3372 | break; |
3373 | case 155: |
3374 | #line 713 "Parser.rl" |
3375 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_TIBETAN, negated); {cs = stack[--top]; goto _again;} }} |
3376 | break; |
3377 | case 156: |
3378 | #line 714 "Parser.rl" |
3379 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_TIFINAGH, negated); {cs = stack[--top]; goto _again;} }} |
3380 | break; |
3381 | case 157: |
3382 | #line 715 "Parser.rl" |
3383 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_UGARITIC, negated); {cs = stack[--top]; goto _again;} }} |
3384 | break; |
3385 | case 158: |
3386 | #line 716 "Parser.rl" |
3387 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_VAI, negated); {cs = stack[--top]; goto _again;} }} |
3388 | break; |
3389 | case 159: |
3390 | #line 717 "Parser.rl" |
3391 | {te = p+1;{ currentCls->add(CLASS_SCRIPT_YI, negated); {cs = stack[--top]; goto _again;} }} |
3392 | break; |
3393 | case 160: |
3394 | #line 718 "Parser.rl" |
3395 | {te = p+1;{ currentCls->add(CLASS_UCP_ANY, negated); {cs = stack[--top]; goto _again;} }} |
3396 | break; |
3397 | case 161: |
3398 | #line 719 "Parser.rl" |
3399 | {te = p+1;{ throw LocatedParseError("Unknown property" ); }} |
3400 | break; |
3401 | case 162: |
3402 | #line 581 "Parser.rl" |
3403 | {te = p;p--;{ currentCls->add(CLASS_UCP_C, negated); {cs = stack[--top]; goto _again;} }} |
3404 | break; |
3405 | case 163: |
3406 | #line 585 "Parser.rl" |
3407 | {te = p;p--;{ currentCls->add(CLASS_UCP_CO, negated); {cs = stack[--top]; goto _again;} }} |
3408 | break; |
3409 | case 164: |
3410 | #line 587 "Parser.rl" |
3411 | {te = p;p--;{ currentCls->add(CLASS_UCP_L, negated); {cs = stack[--top]; goto _again;} }} |
3412 | break; |
3413 | case 165: |
3414 | #line 594 "Parser.rl" |
3415 | {te = p;p--;{ currentCls->add(CLASS_UCP_M, negated); {cs = stack[--top]; goto _again;} }} |
3416 | break; |
3417 | case 166: |
3418 | #line 596 "Parser.rl" |
3419 | {te = p;p--;{ currentCls->add(CLASS_UCP_ME, negated); {cs = stack[--top]; goto _again;} }} |
3420 | break; |
3421 | case 167: |
3422 | #line 598 "Parser.rl" |
3423 | {te = p;p--;{ currentCls->add(CLASS_UCP_N, negated); {cs = stack[--top]; goto _again;} }} |
3424 | break; |
3425 | case 168: |
3426 | #line 602 "Parser.rl" |
3427 | {te = p;p--;{ currentCls->add(CLASS_UCP_P, negated); {cs = stack[--top]; goto _again;} }} |
3428 | break; |
3429 | case 169: |
3430 | #line 610 "Parser.rl" |
3431 | {te = p;p--;{ currentCls->add(CLASS_UCP_S, negated); {cs = stack[--top]; goto _again;} }} |
3432 | break; |
3433 | case 170: |
3434 | #line 615 "Parser.rl" |
3435 | {te = p;p--;{ currentCls->add(CLASS_UCP_Z, negated); {cs = stack[--top]; goto _again;} }} |
3436 | break; |
3437 | case 171: |
3438 | #line 654 "Parser.rl" |
3439 | {te = p;p--;{ currentCls->add(CLASS_SCRIPT_HAN, negated); {cs = stack[--top]; goto _again;} }} |
3440 | break; |
3441 | case 172: |
3442 | #line 719 "Parser.rl" |
3443 | {te = p;p--;{ throw LocatedParseError("Unknown property" ); }} |
3444 | break; |
3445 | case 173: |
3446 | #line 581 "Parser.rl" |
3447 | {{p = ((te))-1;}{ currentCls->add(CLASS_UCP_C, negated); {cs = stack[--top]; goto _again;} }} |
3448 | break; |
3449 | case 174: |
3450 | #line 585 "Parser.rl" |
3451 | {{p = ((te))-1;}{ currentCls->add(CLASS_UCP_CO, negated); {cs = stack[--top]; goto _again;} }} |
3452 | break; |
3453 | case 175: |
3454 | #line 587 "Parser.rl" |
3455 | {{p = ((te))-1;}{ currentCls->add(CLASS_UCP_L, negated); {cs = stack[--top]; goto _again;} }} |
3456 | break; |
3457 | case 176: |
3458 | #line 594 "Parser.rl" |
3459 | {{p = ((te))-1;}{ currentCls->add(CLASS_UCP_M, negated); {cs = stack[--top]; goto _again;} }} |
3460 | break; |
3461 | case 177: |
3462 | #line 596 "Parser.rl" |
3463 | {{p = ((te))-1;}{ currentCls->add(CLASS_UCP_ME, negated); {cs = stack[--top]; goto _again;} }} |
3464 | break; |
3465 | case 178: |
3466 | #line 598 "Parser.rl" |
3467 | {{p = ((te))-1;}{ currentCls->add(CLASS_UCP_N, negated); {cs = stack[--top]; goto _again;} }} |
3468 | break; |
3469 | case 179: |
3470 | #line 602 "Parser.rl" |
3471 | {{p = ((te))-1;}{ currentCls->add(CLASS_UCP_P, negated); {cs = stack[--top]; goto _again;} }} |
3472 | break; |
3473 | case 180: |
3474 | #line 610 "Parser.rl" |
3475 | {{p = ((te))-1;}{ currentCls->add(CLASS_UCP_S, negated); {cs = stack[--top]; goto _again;} }} |
3476 | break; |
3477 | case 181: |
3478 | #line 654 "Parser.rl" |
3479 | {{p = ((te))-1;}{ currentCls->add(CLASS_SCRIPT_HAN, negated); {cs = stack[--top]; goto _again;} }} |
3480 | break; |
3481 | case 182: |
3482 | #line 719 "Parser.rl" |
3483 | {{p = ((te))-1;}{ throw LocatedParseError("Unknown property" ); }} |
3484 | break; |
3485 | case 183: |
3486 | #line 734 "Parser.rl" |
3487 | {te = p+1;{ |
3488 | currentCls->add(CLASS_UCP_C, negated); |
3489 | if (!inCharClass) { |
3490 | currentCls->finalize(); |
3491 | currentSeq->addComponent(move(currentCls)); |
3492 | } |
3493 | {cs = stack[--top]; goto _again;} |
3494 | }} |
3495 | break; |
3496 | case 184: |
3497 | #line 742 "Parser.rl" |
3498 | {te = p+1;{ |
3499 | currentCls->add(CLASS_UCP_L, negated); |
3500 | if (!inCharClass) { |
3501 | currentCls->finalize(); |
3502 | currentSeq->addComponent(move(currentCls)); |
3503 | } |
3504 | {cs = stack[--top]; goto _again;} |
3505 | }} |
3506 | break; |
3507 | case 185: |
3508 | #line 750 "Parser.rl" |
3509 | {te = p+1;{ |
3510 | currentCls->add(CLASS_UCP_M, negated); |
3511 | if (!inCharClass) { |
3512 | currentCls->finalize(); |
3513 | currentSeq->addComponent(move(currentCls)); |
3514 | } |
3515 | {cs = stack[--top]; goto _again;} |
3516 | }} |
3517 | break; |
3518 | case 186: |
3519 | #line 758 "Parser.rl" |
3520 | {te = p+1;{ |
3521 | currentCls->add(CLASS_UCP_N, negated); |
3522 | if (!inCharClass) { |
3523 | currentCls->finalize(); |
3524 | currentSeq->addComponent(move(currentCls)); |
3525 | } |
3526 | {cs = stack[--top]; goto _again;} |
3527 | }} |
3528 | break; |
3529 | case 187: |
3530 | #line 766 "Parser.rl" |
3531 | {te = p+1;{ |
3532 | currentCls->add(CLASS_UCP_P, negated); |
3533 | if (!inCharClass) { |
3534 | currentCls->finalize(); |
3535 | currentSeq->addComponent(move(currentCls)); |
3536 | } |
3537 | {cs = stack[--top]; goto _again;} |
3538 | }} |
3539 | break; |
3540 | case 188: |
3541 | #line 774 "Parser.rl" |
3542 | {te = p+1;{ |
3543 | currentCls->add(CLASS_UCP_S, negated); |
3544 | if (!inCharClass) { |
3545 | currentCls->finalize(); |
3546 | currentSeq->addComponent(move(currentCls)); |
3547 | } |
3548 | {cs = stack[--top]; goto _again;} |
3549 | }} |
3550 | break; |
3551 | case 189: |
3552 | #line 782 "Parser.rl" |
3553 | {te = p+1;{ |
3554 | currentCls->add(CLASS_UCP_Z, negated); |
3555 | if (!inCharClass) { |
3556 | currentCls->finalize(); |
3557 | currentSeq->addComponent(move(currentCls)); |
3558 | } |
3559 | {cs = stack[--top]; goto _again;} |
3560 | }} |
3561 | break; |
3562 | case 190: |
3563 | #line 791 "Parser.rl" |
3564 | {te = p+1;{ throw LocatedParseError("Unknown property" ); }} |
3565 | break; |
3566 | case 191: |
3567 | #line 797 "Parser.rl" |
3568 | {te = p+1;{ |
3569 | throw LocatedParseError("Unsupported POSIX collating " |
3570 | "element" ); |
3571 | }} |
3572 | break; |
3573 | case 192: |
3574 | #line 804 "Parser.rl" |
3575 | {te = p+1;{ |
3576 | currentCls->add(CLASS_ALNUM, false); |
3577 | }} |
3578 | break; |
3579 | case 193: |
3580 | #line 807 "Parser.rl" |
3581 | {te = p+1;{ |
3582 | currentCls->add(CLASS_ALNUM, true); |
3583 | }} |
3584 | break; |
3585 | case 194: |
3586 | #line 810 "Parser.rl" |
3587 | {te = p+1;{ |
3588 | currentCls->add(CLASS_ALPHA, false); |
3589 | }} |
3590 | break; |
3591 | case 195: |
3592 | #line 813 "Parser.rl" |
3593 | {te = p+1;{ |
3594 | currentCls->add(CLASS_ALPHA, true); |
3595 | }} |
3596 | break; |
3597 | case 196: |
3598 | #line 816 "Parser.rl" |
3599 | {te = p+1;{ |
3600 | currentCls->add(CLASS_ASCII, false); |
3601 | }} |
3602 | break; |
3603 | case 197: |
3604 | #line 819 "Parser.rl" |
3605 | {te = p+1;{ |
3606 | currentCls->add(CLASS_ASCII, true); |
3607 | }} |
3608 | break; |
3609 | case 198: |
3610 | #line 822 "Parser.rl" |
3611 | {te = p+1;{ |
3612 | currentCls->add(CLASS_BLANK, false); |
3613 | }} |
3614 | break; |
3615 | case 199: |
3616 | #line 825 "Parser.rl" |
3617 | {te = p+1;{ |
3618 | currentCls->add(CLASS_BLANK, true); |
3619 | }} |
3620 | break; |
3621 | case 200: |
3622 | #line 828 "Parser.rl" |
3623 | {te = p+1;{ |
3624 | currentCls->add(CLASS_CNTRL, false); |
3625 | }} |
3626 | break; |
3627 | case 201: |
3628 | #line 831 "Parser.rl" |
3629 | {te = p+1;{ |
3630 | currentCls->add(CLASS_CNTRL, true); |
3631 | }} |
3632 | break; |
3633 | case 202: |
3634 | #line 834 "Parser.rl" |
3635 | {te = p+1;{ |
3636 | currentCls->add(CLASS_DIGIT, false); |
3637 | }} |
3638 | break; |
3639 | case 203: |
3640 | #line 837 "Parser.rl" |
3641 | {te = p+1;{ |
3642 | currentCls->add(CLASS_DIGIT, true); |
3643 | }} |
3644 | break; |
3645 | case 204: |
3646 | #line 840 "Parser.rl" |
3647 | {te = p+1;{ |
3648 | currentCls->add(CLASS_GRAPH, false); |
3649 | }} |
3650 | break; |
3651 | case 205: |
3652 | #line 843 "Parser.rl" |
3653 | {te = p+1;{ |
3654 | currentCls->add(CLASS_GRAPH, true); |
3655 | }} |
3656 | break; |
3657 | case 206: |
3658 | #line 846 "Parser.rl" |
3659 | {te = p+1;{ |
3660 | currentCls->add(CLASS_LOWER, false); |
3661 | }} |
3662 | break; |
3663 | case 207: |
3664 | #line 849 "Parser.rl" |
3665 | {te = p+1;{ |
3666 | currentCls->add(CLASS_LOWER, true); |
3667 | }} |
3668 | break; |
3669 | case 208: |
3670 | #line 852 "Parser.rl" |
3671 | {te = p+1;{ |
3672 | currentCls->add(CLASS_PRINT, false); |
3673 | }} |
3674 | break; |
3675 | case 209: |
3676 | #line 855 "Parser.rl" |
3677 | {te = p+1;{ |
3678 | currentCls->add(CLASS_PRINT, true); |
3679 | }} |
3680 | break; |
3681 | case 210: |
3682 | #line 858 "Parser.rl" |
3683 | {te = p+1;{ |
3684 | currentCls->add(CLASS_PUNCT, false); |
3685 | }} |
3686 | break; |
3687 | case 211: |
3688 | #line 861 "Parser.rl" |
3689 | {te = p+1;{ |
3690 | currentCls->add(CLASS_PUNCT, true); |
3691 | }} |
3692 | break; |
3693 | case 212: |
3694 | #line 865 "Parser.rl" |
3695 | {te = p+1;{ |
3696 | currentCls->add(CLASS_SPACE, false); |
3697 | }} |
3698 | break; |
3699 | case 213: |
3700 | #line 868 "Parser.rl" |
3701 | {te = p+1;{ |
3702 | currentCls->add(CLASS_SPACE, true); |
3703 | }} |
3704 | break; |
3705 | case 214: |
3706 | #line 871 "Parser.rl" |
3707 | {te = p+1;{ |
3708 | currentCls->add(CLASS_UPPER, false); |
3709 | }} |
3710 | break; |
3711 | case 215: |
3712 | #line 874 "Parser.rl" |
3713 | {te = p+1;{ |
3714 | currentCls->add(CLASS_UPPER, true); |
3715 | }} |
3716 | break; |
3717 | case 216: |
3718 | #line 877 "Parser.rl" |
3719 | {te = p+1;{ |
3720 | currentCls->add(CLASS_WORD, false); |
3721 | }} |
3722 | break; |
3723 | case 217: |
3724 | #line 880 "Parser.rl" |
3725 | {te = p+1;{ |
3726 | currentCls->add(CLASS_WORD, true); |
3727 | }} |
3728 | break; |
3729 | case 218: |
3730 | #line 883 "Parser.rl" |
3731 | {te = p+1;{ |
3732 | currentCls->add(CLASS_XDIGIT, false); |
3733 | }} |
3734 | break; |
3735 | case 219: |
3736 | #line 886 "Parser.rl" |
3737 | {te = p+1;{ |
3738 | currentCls->add(CLASS_XDIGIT, true); |
3739 | }} |
3740 | break; |
3741 | case 220: |
3742 | #line 891 "Parser.rl" |
3743 | {te = p+1;{ |
3744 | throw LocatedParseError("Invalid POSIX named class" ); |
3745 | }} |
3746 | break; |
3747 | case 221: |
3748 | #line 894 "Parser.rl" |
3749 | {te = p+1;{ |
3750 | { |
3751 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
3752 | if ((int)stack.size() == top) { |
3753 | stack.resize(2 * (top + 1)); |
3754 | } |
3755 | {stack[top++] = cs; cs = 843; goto _again;}} |
3756 | }} |
3757 | break; |
3758 | case 222: |
3759 | #line 897 "Parser.rl" |
3760 | {te = p+1;{ /*noop*/}} |
3761 | break; |
3762 | case 223: |
3763 | #line 899 "Parser.rl" |
3764 | {te = p+1;{ |
3765 | currentCls->add('\x08'); |
3766 | }} |
3767 | break; |
3768 | case 224: |
3769 | #line 903 "Parser.rl" |
3770 | {te = p+1;{ |
3771 | currentCls->add('\x09'); |
3772 | }} |
3773 | break; |
3774 | case 225: |
3775 | #line 907 "Parser.rl" |
3776 | {te = p+1;{ |
3777 | currentCls->add('\x0a'); |
3778 | }} |
3779 | break; |
3780 | case 226: |
3781 | #line 911 "Parser.rl" |
3782 | {te = p+1;{ |
3783 | currentCls->add('\x0d'); |
3784 | }} |
3785 | break; |
3786 | case 227: |
3787 | #line 915 "Parser.rl" |
3788 | {te = p+1;{ |
3789 | currentCls->add('\x0c'); |
3790 | }} |
3791 | break; |
3792 | case 228: |
3793 | #line 919 "Parser.rl" |
3794 | {te = p+1;{ |
3795 | currentCls->add('\x07'); |
3796 | }} |
3797 | break; |
3798 | case 229: |
3799 | #line 923 "Parser.rl" |
3800 | {te = p+1;{ |
3801 | currentCls->add('\x1b'); |
3802 | }} |
3803 | break; |
3804 | case 230: |
3805 | #line 927 "Parser.rl" |
3806 | {te = p+1;{ |
3807 | currentCls->add(CLASS_HORZ, false); |
3808 | }} |
3809 | break; |
3810 | case 231: |
3811 | #line 931 "Parser.rl" |
3812 | {te = p+1;{ |
3813 | currentCls->add(CLASS_HORZ, true); |
3814 | }} |
3815 | break; |
3816 | case 232: |
3817 | #line 935 "Parser.rl" |
3818 | {te = p+1;{ |
3819 | currentCls->add(CLASS_VERT, false); |
3820 | }} |
3821 | break; |
3822 | case 233: |
3823 | #line 939 "Parser.rl" |
3824 | {te = p+1;{ |
3825 | currentCls->add(CLASS_VERT, true); |
3826 | }} |
3827 | break; |
3828 | case 234: |
3829 | #line 943 "Parser.rl" |
3830 | {te = p+1;{ |
3831 | negated = false; |
3832 | p--; |
3833 | { |
3834 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
3835 | if ((int)stack.size() == top) { |
3836 | stack.resize(2 * (top + 1)); |
3837 | } |
3838 | {stack[top++] = cs; cs = 559; goto _again;}} |
3839 | }} |
3840 | break; |
3841 | case 235: |
3842 | #line 949 "Parser.rl" |
3843 | {te = p+1;{ |
3844 | negated = false; |
3845 | p--; |
3846 | { |
3847 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
3848 | if ((int)stack.size() == top) { |
3849 | stack.resize(2 * (top + 1)); |
3850 | } |
3851 | {stack[top++] = cs; cs = 818; goto _again;}} |
3852 | }} |
3853 | break; |
3854 | case 236: |
3855 | #line 955 "Parser.rl" |
3856 | {te = p+1;{ |
3857 | negated = true; |
3858 | p--; |
3859 | { |
3860 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
3861 | if ((int)stack.size() == top) { |
3862 | stack.resize(2 * (top + 1)); |
3863 | } |
3864 | {stack[top++] = cs; cs = 559; goto _again;}} |
3865 | }} |
3866 | break; |
3867 | case 237: |
3868 | #line 961 "Parser.rl" |
3869 | {te = p+1;{ |
3870 | negated = true; |
3871 | p--; |
3872 | { |
3873 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
3874 | if ((int)stack.size() == top) { |
3875 | stack.resize(2 * (top + 1)); |
3876 | } |
3877 | {stack[top++] = cs; cs = 818; goto _again;}} |
3878 | }} |
3879 | break; |
3880 | case 238: |
3881 | #line 971 "Parser.rl" |
3882 | {te = p+1;{ |
3883 | currentCls->add(octAccumulator); |
3884 | }} |
3885 | break; |
3886 | case 239: |
3887 | #line 974 "Parser.rl" |
3888 | {te = p+1;{ |
3889 | currentCls->add(octAccumulator); |
3890 | }} |
3891 | break; |
3892 | case 240: |
3893 | #line 978 "Parser.rl" |
3894 | {te = p+1;{ |
3895 | string oct(ts + 3, te - ts - 4); |
3896 | unsigned long val; |
3897 | try { |
3898 | val = stoul(oct, nullptr, 8); |
3899 | } catch (const std::out_of_range &) { |
3900 | val = MAX_UNICODE + 1; |
3901 | } |
3902 | if ((!mode.utf8 && val > 255) || val > MAX_UNICODE) { |
3903 | throw LocatedParseError("Value in \\o{...} sequence is too large" ); |
3904 | } |
3905 | currentCls->add((unichar)val); |
3906 | }} |
3907 | break; |
3908 | case 241: |
3909 | #line 998 "Parser.rl" |
3910 | {te = p+1;{ |
3911 | currentCls->add(accumulator); |
3912 | }} |
3913 | break; |
3914 | case 242: |
3915 | #line 1002 "Parser.rl" |
3916 | {te = p+1;{ |
3917 | // whatever we found here |
3918 | currentCls->add(*(ts + 1)); |
3919 | |
3920 | }} |
3921 | break; |
3922 | case 243: |
3923 | #line 1008 "Parser.rl" |
3924 | {te = p+1;{ |
3925 | string hex(ts + 3, te - ts - 4); |
3926 | unsigned long val; |
3927 | try { |
3928 | val = stoul(hex, nullptr, 16); |
3929 | } catch (const std::out_of_range &) { |
3930 | val = MAX_UNICODE + 1; |
3931 | } |
3932 | if (val > MAX_UNICODE) { |
3933 | throw LocatedParseError("Value in \\x{...} sequence is too large" ); |
3934 | } |
3935 | currentCls->add((unichar)val); |
3936 | }} |
3937 | break; |
3938 | case 244: |
3939 | #line 1026 "Parser.rl" |
3940 | {te = p+1;{ |
3941 | if (te - ts < 3) { |
3942 | assert(te - ts == 2); |
3943 | throw LocatedParseError(SLASH_C_ERROR); |
3944 | } else { |
3945 | assert(te - ts == 3); |
3946 | currentCls->add(decodeCtrl(ts[2])); |
3947 | } |
3948 | }} |
3949 | break; |
3950 | case 245: |
3951 | #line 1036 "Parser.rl" |
3952 | {te = p+1;{ |
3953 | currentCls->add(CLASS_WORD, false); |
3954 | }} |
3955 | break; |
3956 | case 246: |
3957 | #line 1040 "Parser.rl" |
3958 | {te = p+1;{ |
3959 | currentCls->add(CLASS_WORD, true); |
3960 | }} |
3961 | break; |
3962 | case 247: |
3963 | #line 1044 "Parser.rl" |
3964 | {te = p+1;{ |
3965 | currentCls->add(CLASS_SPACE, false); |
3966 | }} |
3967 | break; |
3968 | case 248: |
3969 | #line 1048 "Parser.rl" |
3970 | {te = p+1;{ |
3971 | currentCls->add(CLASS_SPACE, true); |
3972 | }} |
3973 | break; |
3974 | case 249: |
3975 | #line 1052 "Parser.rl" |
3976 | {te = p+1;{ |
3977 | currentCls->add(CLASS_DIGIT, false); |
3978 | }} |
3979 | break; |
3980 | case 250: |
3981 | #line 1056 "Parser.rl" |
3982 | {te = p+1;{ |
3983 | currentCls->add(CLASS_DIGIT, true); |
3984 | }} |
3985 | break; |
3986 | case 251: |
3987 | #line 1059 "Parser.rl" |
3988 | {te = p+1;{ |
3989 | currentCls->addDash(); |
3990 | }} |
3991 | break; |
3992 | case 252: |
3993 | #line 277 "Parser.rl" |
3994 | {te = p+1;{ |
3995 | ostringstream str; |
3996 | str << "'\\" << *(ts + 1) << "' at index " << ts - ptr |
3997 | << " not supported in a character class." ; |
3998 | throw ParseError(str.str()); |
3999 | }} |
4000 | break; |
4001 | case 253: |
4002 | #line 277 "Parser.rl" |
4003 | {te = p+1;{ |
4004 | ostringstream str; |
4005 | str << "'\\" << *(ts + 1) << "' at index " << ts - ptr |
4006 | << " not supported in a character class." ; |
4007 | throw ParseError(str.str()); |
4008 | }} |
4009 | break; |
4010 | case 254: |
4011 | #line 277 "Parser.rl" |
4012 | {te = p+1;{ |
4013 | ostringstream str; |
4014 | str << "'\\" << *(ts + 1) << "' at index " << ts - ptr |
4015 | << " not supported in a character class." ; |
4016 | throw ParseError(str.str()); |
4017 | }} |
4018 | break; |
4019 | case 255: |
4020 | #line 1076 "Parser.rl" |
4021 | {te = p+1;{ |
4022 | // add the literal char |
4023 | currentCls->add(*(ts + 1)); |
4024 | }} |
4025 | break; |
4026 | case 256: |
4027 | #line 1082 "Parser.rl" |
4028 | {te = p+1;{ |
4029 | assert(mode.utf8); |
4030 | currentCls->add(readUtf8CodePoint2c(ts)); |
4031 | }} |
4032 | break; |
4033 | case 257: |
4034 | #line 1087 "Parser.rl" |
4035 | {te = p+1;{ |
4036 | assert(mode.utf8); |
4037 | currentCls->add(readUtf8CodePoint3c(ts)); |
4038 | }} |
4039 | break; |
4040 | case 258: |
4041 | #line 1092 "Parser.rl" |
4042 | {te = p+1;{ |
4043 | assert(mode.utf8); |
4044 | currentCls->add(readUtf8CodePoint4c(ts)); |
4045 | }} |
4046 | break; |
4047 | case 259: |
4048 | #line 1097 "Parser.rl" |
4049 | {te = p+1;{ |
4050 | assert(mode.utf8); |
4051 | throwInvalidUtf8(); |
4052 | }} |
4053 | break; |
4054 | case 260: |
4055 | #line 1103 "Parser.rl" |
4056 | {te = p+1;{ |
4057 | currentCls->add((u8)*ts); |
4058 | }} |
4059 | break; |
4060 | case 261: |
4061 | #line 1107 "Parser.rl" |
4062 | {te = p+1;{ |
4063 | currentCls->finalize(); |
4064 | currentSeq->addComponent(move(currentCls)); |
4065 | inCharClass = false; |
4066 | {cs = 746; goto _again;} |
4067 | }} |
4068 | break; |
4069 | case 262: |
4070 | #line 967 "Parser.rl" |
4071 | {te = p;p--;{ throw LocatedParseError("Malformed property" ); }} |
4072 | break; |
4073 | case 263: |
4074 | #line 968 "Parser.rl" |
4075 | {te = p;p--;{ throw LocatedParseError("Malformed property" ); }} |
4076 | break; |
4077 | case 264: |
4078 | #line 971 "Parser.rl" |
4079 | {te = p;p--;{ |
4080 | currentCls->add(octAccumulator); |
4081 | }} |
4082 | break; |
4083 | case 265: |
4084 | #line 974 "Parser.rl" |
4085 | {te = p;p--;{ |
4086 | currentCls->add(octAccumulator); |
4087 | }} |
4088 | break; |
4089 | case 266: |
4090 | #line 993 "Parser.rl" |
4091 | {te = p;p--;{ |
4092 | throw LocatedParseError("Value in \\o{...} sequence is non-octal or missing braces" ); |
4093 | }} |
4094 | break; |
4095 | case 267: |
4096 | #line 998 "Parser.rl" |
4097 | {te = p;p--;{ |
4098 | currentCls->add(accumulator); |
4099 | }} |
4100 | break; |
4101 | case 268: |
4102 | #line 1022 "Parser.rl" |
4103 | {te = p;p--;{ |
4104 | throw LocatedParseError("Value in \\x{...} sequence is non-hex or missing }" ); |
4105 | }} |
4106 | break; |
4107 | case 269: |
4108 | #line 1026 "Parser.rl" |
4109 | {te = p;p--;{ |
4110 | if (te - ts < 3) { |
4111 | assert(te - ts == 2); |
4112 | throw LocatedParseError(SLASH_C_ERROR); |
4113 | } else { |
4114 | assert(te - ts == 3); |
4115 | currentCls->add(decodeCtrl(ts[2])); |
4116 | } |
4117 | }} |
4118 | break; |
4119 | case 270: |
4120 | #line 1097 "Parser.rl" |
4121 | {te = p;p--;{ |
4122 | assert(mode.utf8); |
4123 | throwInvalidUtf8(); |
4124 | }} |
4125 | break; |
4126 | case 271: |
4127 | #line 1103 "Parser.rl" |
4128 | {te = p;p--;{ |
4129 | currentCls->add((u8)*ts); |
4130 | }} |
4131 | break; |
4132 | case 272: |
4133 | #line 993 "Parser.rl" |
4134 | {{p = ((te))-1;}{ |
4135 | throw LocatedParseError("Value in \\o{...} sequence is non-octal or missing braces" ); |
4136 | }} |
4137 | break; |
4138 | case 273: |
4139 | #line 1022 "Parser.rl" |
4140 | {{p = ((te))-1;}{ |
4141 | throw LocatedParseError("Value in \\x{...} sequence is non-hex or missing }" ); |
4142 | }} |
4143 | break; |
4144 | case 274: |
4145 | #line 1097 "Parser.rl" |
4146 | {{p = ((te))-1;}{ |
4147 | assert(mode.utf8); |
4148 | throwInvalidUtf8(); |
4149 | }} |
4150 | break; |
4151 | case 275: |
4152 | #line 1103 "Parser.rl" |
4153 | {{p = ((te))-1;}{ |
4154 | currentCls->add((u8)*ts); |
4155 | }} |
4156 | break; |
4157 | case 276: |
4158 | #line 1121 "Parser.rl" |
4159 | {te = p+1;{ |
4160 | if (currentCls->isNegated()) { |
4161 | // Already seen a caret; the second one is not a meta-character. |
4162 | inCharClassEarly = false; |
4163 | p--; {cs = 819; goto _again;} |
4164 | } else { |
4165 | currentCls->negate(); |
4166 | // Note: we cannot switch off inCharClassEarly here, as /[^]]/ |
4167 | // needs to use the right square bracket path below. |
4168 | } |
4169 | }} |
4170 | break; |
4171 | case 277: |
4172 | #line 1134 "Parser.rl" |
4173 | {te = p+1;{ |
4174 | currentCls->add(']'); |
4175 | inCharClassEarly = false; |
4176 | }} |
4177 | break; |
4178 | case 278: |
4179 | #line 1139 "Parser.rl" |
4180 | {te = p+1;{ { |
4181 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
4182 | if ((int)stack.size() == top) { |
4183 | stack.resize(2 * (top + 1)); |
4184 | } |
4185 | {stack[top++] = cs; cs = 843; goto _again;}} }} |
4186 | break; |
4187 | case 279: |
4188 | #line 1140 "Parser.rl" |
4189 | {te = p+1;{ /*noop*/}} |
4190 | break; |
4191 | case 280: |
4192 | #line 1143 "Parser.rl" |
4193 | {te = p+1;{ |
4194 | inCharClassEarly = false; |
4195 | p--; |
4196 | {cs = 819; goto _again;} |
4197 | }} |
4198 | break; |
4199 | case 281: |
4200 | #line 1143 "Parser.rl" |
4201 | {te = p;p--;{ |
4202 | inCharClassEarly = false; |
4203 | p--; |
4204 | {cs = 819; goto _again;} |
4205 | }} |
4206 | break; |
4207 | case 282: |
4208 | #line 1155 "Parser.rl" |
4209 | {te = p+1;{ |
4210 | {cs = 746; goto _again;} |
4211 | }} |
4212 | break; |
4213 | case 283: |
4214 | #line 1160 "Parser.rl" |
4215 | {te = p+1;{ |
4216 | assert(mode.utf8); |
4217 | /* leverage ComponentClass to generate the vertices */ |
4218 | auto cc = getComponentClass(mode); |
4219 | cc->add(readUtf8CodePoint2c(ts)); |
4220 | cc->finalize(); |
4221 | currentSeq->addComponent(move(cc)); |
4222 | }} |
4223 | break; |
4224 | case 284: |
4225 | #line 1169 "Parser.rl" |
4226 | {te = p+1;{ |
4227 | assert(mode.utf8); |
4228 | /* leverage ComponentClass to generate the vertices */ |
4229 | auto cc = getComponentClass(mode); |
4230 | cc->add(readUtf8CodePoint3c(ts)); |
4231 | cc->finalize(); |
4232 | currentSeq->addComponent(move(cc)); |
4233 | }} |
4234 | break; |
4235 | case 285: |
4236 | #line 1178 "Parser.rl" |
4237 | {te = p+1;{ |
4238 | assert(mode.utf8); |
4239 | /* leverage ComponentClass to generate the vertices */ |
4240 | auto cc = getComponentClass(mode); |
4241 | cc->add(readUtf8CodePoint4c(ts)); |
4242 | cc->finalize(); |
4243 | currentSeq->addComponent(move(cc)); |
4244 | }} |
4245 | break; |
4246 | case 286: |
4247 | #line 1187 "Parser.rl" |
4248 | {te = p+1;{ |
4249 | assert(mode.utf8); |
4250 | throwInvalidUtf8(); |
4251 | }} |
4252 | break; |
4253 | case 287: |
4254 | #line 1193 "Parser.rl" |
4255 | {te = p+1;{ |
4256 | addLiteral(currentSeq, *ts, mode); |
4257 | }} |
4258 | break; |
4259 | case 288: |
4260 | #line 1187 "Parser.rl" |
4261 | {te = p;p--;{ |
4262 | assert(mode.utf8); |
4263 | throwInvalidUtf8(); |
4264 | }} |
4265 | break; |
4266 | case 289: |
4267 | #line 1193 "Parser.rl" |
4268 | {te = p;p--;{ |
4269 | addLiteral(currentSeq, *ts, mode); |
4270 | }} |
4271 | break; |
4272 | case 290: |
4273 | #line 1187 "Parser.rl" |
4274 | {{p = ((te))-1;}{ |
4275 | assert(mode.utf8); |
4276 | throwInvalidUtf8(); |
4277 | }} |
4278 | break; |
4279 | case 291: |
4280 | #line 1203 "Parser.rl" |
4281 | {te = p+1;{ |
4282 | {cs = stack[--top]; goto _again;} |
4283 | }} |
4284 | break; |
4285 | case 292: |
4286 | #line 1208 "Parser.rl" |
4287 | {te = p+1;{ |
4288 | assert(mode.utf8); |
4289 | currentCls->add(readUtf8CodePoint2c(ts)); |
4290 | inCharClassEarly = false; |
4291 | }} |
4292 | break; |
4293 | case 293: |
4294 | #line 1214 "Parser.rl" |
4295 | {te = p+1;{ |
4296 | assert(mode.utf8); |
4297 | currentCls->add(readUtf8CodePoint3c(ts)); |
4298 | inCharClassEarly = false; |
4299 | }} |
4300 | break; |
4301 | case 294: |
4302 | #line 1220 "Parser.rl" |
4303 | {te = p+1;{ |
4304 | assert(mode.utf8); |
4305 | currentCls->add(readUtf8CodePoint4c(ts)); |
4306 | inCharClassEarly = false; |
4307 | }} |
4308 | break; |
4309 | case 295: |
4310 | #line 1226 "Parser.rl" |
4311 | {te = p+1;{ |
4312 | assert(mode.utf8); |
4313 | throwInvalidUtf8(); |
4314 | }} |
4315 | break; |
4316 | case 296: |
4317 | #line 1232 "Parser.rl" |
4318 | {te = p+1;{ |
4319 | currentCls->add(*ts); |
4320 | inCharClassEarly = false; |
4321 | }} |
4322 | break; |
4323 | case 297: |
4324 | #line 1226 "Parser.rl" |
4325 | {te = p;p--;{ |
4326 | assert(mode.utf8); |
4327 | throwInvalidUtf8(); |
4328 | }} |
4329 | break; |
4330 | case 298: |
4331 | #line 1232 "Parser.rl" |
4332 | {te = p;p--;{ |
4333 | currentCls->add(*ts); |
4334 | inCharClassEarly = false; |
4335 | }} |
4336 | break; |
4337 | case 299: |
4338 | #line 1226 "Parser.rl" |
4339 | {{p = ((te))-1;}{ |
4340 | assert(mode.utf8); |
4341 | throwInvalidUtf8(); |
4342 | }} |
4343 | break; |
4344 | case 300: |
4345 | #line 1244 "Parser.rl" |
4346 | {te = p+1;{ inComment = false; {cs = 746; goto _again;} }} |
4347 | break; |
4348 | case 301: |
4349 | #line 1248 "Parser.rl" |
4350 | {te = p+1;} |
4351 | break; |
4352 | case 302: |
4353 | #line 1256 "Parser.rl" |
4354 | {te = p+1;{ inComment = false; {cs = 746; goto _again;} }} |
4355 | break; |
4356 | case 303: |
4357 | #line 1260 "Parser.rl" |
4358 | {te = p+1;} |
4359 | break; |
4360 | case 304: |
4361 | #line 1492 "Parser.rl" |
4362 | {act = 288;} |
4363 | break; |
4364 | case 305: |
4365 | #line 1509 "Parser.rl" |
4366 | {act = 290;} |
4367 | break; |
4368 | case 306: |
4369 | #line 1738 "Parser.rl" |
4370 | {act = 330;} |
4371 | break; |
4372 | case 307: |
4373 | #line 363 "Parser.rl" |
4374 | {te = p+1;{ |
4375 | if (sequences.empty()) { |
4376 | throw LocatedParseError("Unmatched parentheses" ); |
4377 | } |
4378 | currentSeq->finalize(); |
4379 | POP_SEQUENCE; |
4380 | }} |
4381 | break; |
4382 | case 308: |
4383 | #line 1275 "Parser.rl" |
4384 | {te = p+1;{ |
4385 | currentSeq->addAlternation(); |
4386 | }} |
4387 | break; |
4388 | case 309: |
4389 | #line 1280 "Parser.rl" |
4390 | {te = p+1;{ |
4391 | throw LocatedParseError("POSIX named classes are only " |
4392 | "supported inside a class" ); |
4393 | }} |
4394 | break; |
4395 | case 310: |
4396 | #line 1287 "Parser.rl" |
4397 | {te = p+1;{ |
4398 | throw LocatedParseError("Unsupported POSIX collating " |
4399 | "element" ); |
4400 | }} |
4401 | break; |
4402 | case 311: |
4403 | #line 1294 "Parser.rl" |
4404 | {te = p+1;{ |
4405 | {cs = 838; goto _again;} |
4406 | }} |
4407 | break; |
4408 | case 312: |
4409 | #line 1298 "Parser.rl" |
4410 | {te = p+1;{ /* noop */ }} |
4411 | break; |
4412 | case 313: |
4413 | #line 1300 "Parser.rl" |
4414 | {te = p+1;{ |
4415 | currentSeq->addComponent(generateComponent(CLASS_ANY, false, mode)); |
4416 | }} |
4417 | break; |
4418 | case 314: |
4419 | #line 1304 "Parser.rl" |
4420 | {te = p+1;{ |
4421 | if (mode.utf8) { |
4422 | throw LocatedParseError("\\C is unsupported in UTF8" ); |
4423 | } |
4424 | currentSeq->addComponent(ue2::make_unique<ComponentByte>()); |
4425 | }} |
4426 | break; |
4427 | case 315: |
4428 | #line 1318 "Parser.rl" |
4429 | {te = p+1;{ |
4430 | if (!currentSeq->addRepeat(0, ComponentRepeat::NoLimit, |
4431 | ComponentRepeat::REPEAT_NONGREEDY)) { |
4432 | throwInvalidRepeat(); |
4433 | } |
4434 | }} |
4435 | break; |
4436 | case 316: |
4437 | #line 1325 "Parser.rl" |
4438 | {te = p+1;{ |
4439 | if (!currentSeq->addRepeat(0, ComponentRepeat::NoLimit, |
4440 | ComponentRepeat::REPEAT_POSSESSIVE)) { |
4441 | throwInvalidRepeat(); |
4442 | } |
4443 | }} |
4444 | break; |
4445 | case 317: |
4446 | #line 1339 "Parser.rl" |
4447 | {te = p+1;{ |
4448 | if (!currentSeq->addRepeat(1, ComponentRepeat::NoLimit, |
4449 | ComponentRepeat::REPEAT_NONGREEDY)) { |
4450 | throwInvalidRepeat(); |
4451 | } |
4452 | }} |
4453 | break; |
4454 | case 318: |
4455 | #line 1346 "Parser.rl" |
4456 | {te = p+1;{ |
4457 | if (!currentSeq->addRepeat(1, ComponentRepeat::NoLimit, |
4458 | ComponentRepeat::REPEAT_POSSESSIVE)) { |
4459 | throwInvalidRepeat(); |
4460 | } |
4461 | }} |
4462 | break; |
4463 | case 319: |
4464 | #line 1360 "Parser.rl" |
4465 | {te = p+1;{ |
4466 | if (!currentSeq->addRepeat( |
4467 | 0, 1, ComponentRepeat::REPEAT_NONGREEDY)) { |
4468 | throwInvalidRepeat(); |
4469 | } |
4470 | }} |
4471 | break; |
4472 | case 320: |
4473 | #line 1367 "Parser.rl" |
4474 | {te = p+1;{ |
4475 | if (!currentSeq->addRepeat( |
4476 | 0, 1, ComponentRepeat::REPEAT_POSSESSIVE)) { |
4477 | throwInvalidRepeat(); |
4478 | } |
4479 | }} |
4480 | break; |
4481 | case 321: |
4482 | #line 1384 "Parser.rl" |
4483 | {te = p+1;{ |
4484 | if (repeatN > repeatM || repeatM == 0) { |
4485 | throwInvalidRepeat(); |
4486 | } else if (!currentSeq->addRepeat( |
4487 | repeatN, repeatM, |
4488 | ComponentRepeat::REPEAT_NONGREEDY)) { |
4489 | throwInvalidRepeat(); |
4490 | } |
4491 | }} |
4492 | break; |
4493 | case 322: |
4494 | #line 1394 "Parser.rl" |
4495 | {te = p+1;{ |
4496 | if (repeatN > repeatM || repeatM == 0) { |
4497 | throwInvalidRepeat(); |
4498 | } else if (!currentSeq->addRepeat( |
4499 | repeatN, repeatM, |
4500 | ComponentRepeat::REPEAT_POSSESSIVE)) { |
4501 | throwInvalidRepeat(); |
4502 | } |
4503 | }} |
4504 | break; |
4505 | case 323: |
4506 | #line 323 "Parser.rl" |
4507 | {te = p+1;{ |
4508 | inComment = true; |
4509 | {cs = 849; goto _again;} |
4510 | }} |
4511 | break; |
4512 | case 324: |
4513 | #line 1411 "Parser.rl" |
4514 | {te = p+1;{ p--; { |
4515 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
4516 | if ((int)stack.size() == top) { |
4517 | stack.resize(2 * (top + 1)); |
4518 | } |
4519 | {stack[top++] = cs; cs = 787; goto _again;}} }} |
4520 | break; |
4521 | case 325: |
4522 | #line 1415 "Parser.rl" |
4523 | {te = p+1;{ assert(0); {p++; goto _out; } }} |
4524 | break; |
4525 | case 326: |
4526 | #line 1422 "Parser.rl" |
4527 | {te = p+1;{ |
4528 | auto bound = mode.multiline ? ComponentBoundary::BEGIN_LINE |
4529 | : ComponentBoundary::BEGIN_STRING; |
4530 | currentSeq->addComponent(ue2::make_unique<ComponentBoundary>(bound)); |
4531 | }} |
4532 | break; |
4533 | case 327: |
4534 | #line 1429 "Parser.rl" |
4535 | {te = p+1;{ |
4536 | auto bound = mode.multiline ? ComponentBoundary::END_LINE |
4537 | : ComponentBoundary::END_STRING_OPTIONAL_LF; |
4538 | currentSeq->addComponent(ue2::make_unique<ComponentBoundary>(bound)); |
4539 | }} |
4540 | break; |
4541 | case 328: |
4542 | #line 1435 "Parser.rl" |
4543 | {te = p+1;{ |
4544 | auto bound = ComponentBoundary::BEGIN_STRING; |
4545 | currentSeq->addComponent(ue2::make_unique<ComponentBoundary>(bound)); |
4546 | }} |
4547 | break; |
4548 | case 329: |
4549 | #line 1440 "Parser.rl" |
4550 | {te = p+1;{ |
4551 | auto bound = ComponentBoundary::END_STRING_OPTIONAL_LF; |
4552 | currentSeq->addComponent(ue2::make_unique<ComponentBoundary>(bound)); |
4553 | }} |
4554 | break; |
4555 | case 330: |
4556 | #line 1445 "Parser.rl" |
4557 | {te = p+1;{ |
4558 | auto bound = ComponentBoundary::END_STRING; |
4559 | currentSeq->addComponent(ue2::make_unique<ComponentBoundary>(bound)); |
4560 | }} |
4561 | break; |
4562 | case 331: |
4563 | #line 1450 "Parser.rl" |
4564 | {te = p+1;{ |
4565 | currentSeq->addComponent( |
4566 | ue2::make_unique<ComponentWordBoundary>(ts - ptr, false, mode)); |
4567 | }} |
4568 | break; |
4569 | case 332: |
4570 | #line 1455 "Parser.rl" |
4571 | {te = p+1;{ |
4572 | currentSeq->addComponent( |
4573 | ue2::make_unique<ComponentWordBoundary>(ts - ptr, true, mode)); |
4574 | }} |
4575 | break; |
4576 | case 333: |
4577 | #line 1465 "Parser.rl" |
4578 | {te = p+1;{ |
4579 | addLiteral(currentSeq, '\x09', mode); |
4580 | }} |
4581 | break; |
4582 | case 334: |
4583 | #line 1469 "Parser.rl" |
4584 | {te = p+1;{ |
4585 | addLiteral(currentSeq, '\x0a', mode); |
4586 | }} |
4587 | break; |
4588 | case 335: |
4589 | #line 1473 "Parser.rl" |
4590 | {te = p+1;{ |
4591 | addLiteral(currentSeq, '\x0d', mode); |
4592 | }} |
4593 | break; |
4594 | case 336: |
4595 | #line 1477 "Parser.rl" |
4596 | {te = p+1;{ |
4597 | addLiteral(currentSeq, '\x0c', mode); |
4598 | }} |
4599 | break; |
4600 | case 337: |
4601 | #line 1481 "Parser.rl" |
4602 | {te = p+1;{ |
4603 | addLiteral(currentSeq, '\x07', mode); |
4604 | }} |
4605 | break; |
4606 | case 338: |
4607 | #line 1485 "Parser.rl" |
4608 | {te = p+1;{ |
4609 | addLiteral(currentSeq, '\x1b', mode); |
4610 | }} |
4611 | break; |
4612 | case 339: |
4613 | #line 1489 "Parser.rl" |
4614 | {te = p+1;{ |
4615 | addLiteral(currentSeq, octAccumulator, mode); |
4616 | }} |
4617 | break; |
4618 | case 340: |
4619 | #line 480 "Parser.rl" |
4620 | {te = p+1;{ |
4621 | if (accumulator == 0) { |
4622 | throw LocatedParseError("Numbered reference cannot be zero" ); |
4623 | } |
4624 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(accumulator)); |
4625 | }} |
4626 | break; |
4627 | case 341: |
4628 | #line 487 "Parser.rl" |
4629 | {te = p+1;{ |
4630 | // Accumulator is a negative offset. |
4631 | if (accumulator == 0) { |
4632 | throw LocatedParseError("Numbered reference cannot be zero" ); |
4633 | } |
4634 | if (accumulator >= groupIndex) { |
4635 | throw LocatedParseError("Invalid reference" ); |
4636 | } |
4637 | unsigned idx = groupIndex - accumulator; |
4638 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(idx)); |
4639 | }} |
4640 | break; |
4641 | case 342: |
4642 | #line 480 "Parser.rl" |
4643 | {te = p+1;{ |
4644 | if (accumulator == 0) { |
4645 | throw LocatedParseError("Numbered reference cannot be zero" ); |
4646 | } |
4647 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(accumulator)); |
4648 | }} |
4649 | break; |
4650 | case 343: |
4651 | #line 487 "Parser.rl" |
4652 | {te = p+1;{ |
4653 | // Accumulator is a negative offset. |
4654 | if (accumulator == 0) { |
4655 | throw LocatedParseError("Numbered reference cannot be zero" ); |
4656 | } |
4657 | if (accumulator >= groupIndex) { |
4658 | throw LocatedParseError("Invalid reference" ); |
4659 | } |
4660 | unsigned idx = groupIndex - accumulator; |
4661 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(idx)); |
4662 | }} |
4663 | break; |
4664 | case 344: |
4665 | #line 499 "Parser.rl" |
4666 | {te = p+1;{ |
4667 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(label)); |
4668 | }} |
4669 | break; |
4670 | case 345: |
4671 | #line 499 "Parser.rl" |
4672 | {te = p+1;{ |
4673 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(label)); |
4674 | }} |
4675 | break; |
4676 | case 346: |
4677 | #line 499 "Parser.rl" |
4678 | {te = p+1;{ |
4679 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(label)); |
4680 | }} |
4681 | break; |
4682 | case 347: |
4683 | #line 499 "Parser.rl" |
4684 | {te = p+1;{ |
4685 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(label)); |
4686 | }} |
4687 | break; |
4688 | case 348: |
4689 | #line 499 "Parser.rl" |
4690 | {te = p+1;{ |
4691 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(label)); |
4692 | }} |
4693 | break; |
4694 | case 349: |
4695 | #line 1550 "Parser.rl" |
4696 | {te = p+1;{ |
4697 | ostringstream str; |
4698 | str << "Onigiruma subroutine call at index " << ts - ptr << |
4699 | " not supported." ; |
4700 | throw ParseError(str.str()); |
4701 | }} |
4702 | break; |
4703 | case 350: |
4704 | #line 1561 "Parser.rl" |
4705 | {te = p+1;{ |
4706 | string oct(ts + 3, te - ts - 4); |
4707 | unsigned long val; |
4708 | try { |
4709 | val = stoul(oct, nullptr, 8); |
4710 | } catch (const std::out_of_range &) { |
4711 | val = MAX_UNICODE + 1; |
4712 | } |
4713 | if ((!mode.utf8 && val > 255) || val > MAX_UNICODE) { |
4714 | throw LocatedParseError("Value in \\o{...} sequence is too large" ); |
4715 | } |
4716 | addEscapedOctal(currentSeq, (unichar)val, mode); |
4717 | }} |
4718 | break; |
4719 | case 351: |
4720 | #line 1579 "Parser.rl" |
4721 | {te = p+1;{ |
4722 | addEscapedHex(currentSeq, accumulator, mode); |
4723 | }} |
4724 | break; |
4725 | case 352: |
4726 | #line 1583 "Parser.rl" |
4727 | {te = p+1;{ |
4728 | string hex(ts + 3, te - ts - 4); |
4729 | unsigned long val; |
4730 | try { |
4731 | val = stoul(hex, nullptr, 16); |
4732 | } catch (const std::out_of_range &) { |
4733 | val = MAX_UNICODE + 1; |
4734 | } |
4735 | if (val > MAX_UNICODE) { |
4736 | throw LocatedParseError("Value in \\x{...} sequence is too large" ); |
4737 | } |
4738 | addEscapedHex(currentSeq, (unichar)val, mode); |
4739 | }} |
4740 | break; |
4741 | case 353: |
4742 | #line 1601 "Parser.rl" |
4743 | {te = p+1;{ |
4744 | if (te - ts < 3) { |
4745 | assert(te - ts == 2); |
4746 | throw LocatedParseError(SLASH_C_ERROR); |
4747 | } else { |
4748 | assert(te - ts == 3); |
4749 | addLiteral(currentSeq, decodeCtrl(ts[2]), mode); |
4750 | } |
4751 | }} |
4752 | break; |
4753 | case 354: |
4754 | #line 1611 "Parser.rl" |
4755 | {te = p+1;{ |
4756 | ostringstream str; |
4757 | str << "'\\" << *(ts + 1) << "' at index " << ts - ptr |
4758 | << " not supported." ; |
4759 | throw ParseError(str.str()); |
4760 | }} |
4761 | break; |
4762 | case 355: |
4763 | #line 1619 "Parser.rl" |
4764 | {te = p+1;{ |
4765 | auto cc = generateComponent(CLASS_WORD, false, mode); |
4766 | currentSeq->addComponent(move(cc)); |
4767 | }} |
4768 | break; |
4769 | case 356: |
4770 | #line 1624 "Parser.rl" |
4771 | {te = p+1;{ |
4772 | auto cc = generateComponent(CLASS_WORD, true, mode); |
4773 | currentSeq->addComponent(move(cc)); |
4774 | }} |
4775 | break; |
4776 | case 357: |
4777 | #line 1629 "Parser.rl" |
4778 | {te = p+1;{ |
4779 | auto cc = generateComponent(CLASS_SPACE, false, mode); |
4780 | currentSeq->addComponent(move(cc)); |
4781 | }} |
4782 | break; |
4783 | case 358: |
4784 | #line 1634 "Parser.rl" |
4785 | {te = p+1;{ |
4786 | auto cc = generateComponent(CLASS_SPACE, true, mode); |
4787 | currentSeq->addComponent(move(cc)); |
4788 | }} |
4789 | break; |
4790 | case 359: |
4791 | #line 1639 "Parser.rl" |
4792 | {te = p+1;{ |
4793 | auto cc = generateComponent(CLASS_DIGIT, false, mode); |
4794 | currentSeq->addComponent(move(cc)); |
4795 | }} |
4796 | break; |
4797 | case 360: |
4798 | #line 1644 "Parser.rl" |
4799 | {te = p+1;{ |
4800 | auto cc = generateComponent(CLASS_DIGIT, true, mode); |
4801 | currentSeq->addComponent(move(cc)); |
4802 | }} |
4803 | break; |
4804 | case 361: |
4805 | #line 1649 "Parser.rl" |
4806 | {te = p+1;{ |
4807 | auto cc = generateComponent(CLASS_HORZ, false, mode); |
4808 | currentSeq->addComponent(move(cc)); |
4809 | }} |
4810 | break; |
4811 | case 362: |
4812 | #line 1654 "Parser.rl" |
4813 | {te = p+1;{ |
4814 | auto cc = generateComponent(CLASS_HORZ, true, mode); |
4815 | currentSeq->addComponent(move(cc)); |
4816 | }} |
4817 | break; |
4818 | case 363: |
4819 | #line 1659 "Parser.rl" |
4820 | {te = p+1;{ |
4821 | auto cc = generateComponent(CLASS_VERT, false, mode); |
4822 | currentSeq->addComponent(move(cc)); |
4823 | }} |
4824 | break; |
4825 | case 364: |
4826 | #line 1664 "Parser.rl" |
4827 | {te = p+1;{ |
4828 | auto cc = generateComponent(CLASS_VERT, true, mode); |
4829 | currentSeq->addComponent(move(cc)); |
4830 | }} |
4831 | break; |
4832 | case 365: |
4833 | #line 1669 "Parser.rl" |
4834 | {te = p+1;{ |
4835 | assert(!currentCls && !inCharClass); |
4836 | currentCls = getComponentClass(mode); |
4837 | negated = false; |
4838 | p--; |
4839 | { |
4840 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
4841 | if ((int)stack.size() == top) { |
4842 | stack.resize(2 * (top + 1)); |
4843 | } |
4844 | {stack[top++] = cs; cs = 559; goto _again;}} |
4845 | }} |
4846 | break; |
4847 | case 366: |
4848 | #line 1677 "Parser.rl" |
4849 | {te = p+1;{ |
4850 | assert(!currentCls && !inCharClass); |
4851 | currentCls = getComponentClass(mode); |
4852 | negated = false; |
4853 | p--; |
4854 | { |
4855 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
4856 | if ((int)stack.size() == top) { |
4857 | stack.resize(2 * (top + 1)); |
4858 | } |
4859 | {stack[top++] = cs; cs = 818; goto _again;}} |
4860 | }} |
4861 | break; |
4862 | case 367: |
4863 | #line 1685 "Parser.rl" |
4864 | {te = p+1;{ |
4865 | assert(!currentCls && !inCharClass); |
4866 | currentCls = getComponentClass(mode); |
4867 | negated = true; |
4868 | p--; |
4869 | { |
4870 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
4871 | if ((int)stack.size() == top) { |
4872 | stack.resize(2 * (top + 1)); |
4873 | } |
4874 | {stack[top++] = cs; cs = 559; goto _again;}} |
4875 | }} |
4876 | break; |
4877 | case 368: |
4878 | #line 1693 "Parser.rl" |
4879 | {te = p+1;{ |
4880 | assert(!currentCls && !inCharClass); |
4881 | currentCls = getComponentClass(mode); |
4882 | negated = true; |
4883 | p--; |
4884 | { |
4885 | DEBUG_PRINTF("stack %zu top %d\n" , stack.size(), top); |
4886 | if ((int)stack.size() == top) { |
4887 | stack.resize(2 * (top + 1)); |
4888 | } |
4889 | {stack[top++] = cs; cs = 818; goto _again;}} |
4890 | }} |
4891 | break; |
4892 | case 369: |
4893 | #line 1705 "Parser.rl" |
4894 | {te = p+1;{ |
4895 | ostringstream str; |
4896 | str << "\\R at index " << ts - ptr << " not supported." ; |
4897 | throw ParseError(str.str()); |
4898 | }} |
4899 | break; |
4900 | case 370: |
4901 | #line 1712 "Parser.rl" |
4902 | {te = p+1;{ |
4903 | ostringstream str; |
4904 | str << "\\K at index " << ts - ptr << " not supported." ; |
4905 | throw ParseError(str.str()); |
4906 | }} |
4907 | break; |
4908 | case 371: |
4909 | #line 1727 "Parser.rl" |
4910 | {te = p+1;{ |
4911 | ostringstream str; |
4912 | str << "\\G at index " << ts - ptr << " not supported." ; |
4913 | throw ParseError(str.str()); |
4914 | }} |
4915 | break; |
4916 | case 372: |
4917 | #line 1733 "Parser.rl" |
4918 | {te = p+1;{ |
4919 | currentSeq->addComponent(ue2::make_unique<ComponentEUS>(ts - ptr, mode)); |
4920 | }} |
4921 | break; |
4922 | case 373: |
4923 | #line 1738 "Parser.rl" |
4924 | {te = p+1;{ |
4925 | addLiteral(currentSeq, *(ts + 1), mode); |
4926 | }} |
4927 | break; |
4928 | case 374: |
4929 | #line 317 "Parser.rl" |
4930 | {te = p+1;{ |
4931 | inComment = true; |
4932 | {cs = 848; goto _again;} |
4933 | }} |
4934 | break; |
4935 | case 375: |
4936 | #line 434 "Parser.rl" |
4937 | {te = p+1;{ |
4938 | mode = newMode; |
4939 | currentSeq->addComponent(ue2::make_unique<ComponentEmpty>()); |
4940 | }} |
4941 | break; |
4942 | case 376: |
4943 | #line 356 "Parser.rl" |
4944 | {te = p+1;{ |
4945 | PUSH_SEQUENCE; |
4946 | mode = newMode; |
4947 | currentSeq = |
4948 | enterSequence(currentSeq, ue2::make_unique<ComponentSequence>()); |
4949 | }} |
4950 | break; |
4951 | case 377: |
4952 | #line 370 "Parser.rl" |
4953 | {te = p+1;{ |
4954 | PUSH_SEQUENCE; |
4955 | currentSeq = enterSequence(currentSeq, |
4956 | ue2::make_unique<ComponentAssertion>(ComponentAssertion::LOOKAHEAD, |
4957 | ComponentAssertion::POS)); |
4958 | }} |
4959 | break; |
4960 | case 378: |
4961 | #line 376 "Parser.rl" |
4962 | {te = p+1;{ |
4963 | PUSH_SEQUENCE; |
4964 | currentSeq = enterSequence(currentSeq, |
4965 | ue2::make_unique<ComponentAssertion>(ComponentAssertion::LOOKAHEAD, |
4966 | ComponentAssertion::NEG)); |
4967 | }} |
4968 | break; |
4969 | case 379: |
4970 | #line 382 "Parser.rl" |
4971 | {te = p+1;{ |
4972 | PUSH_SEQUENCE; |
4973 | currentSeq = enterSequence(currentSeq, |
4974 | ue2::make_unique<ComponentAssertion>(ComponentAssertion::LOOKBEHIND, |
4975 | ComponentAssertion::POS)); |
4976 | }} |
4977 | break; |
4978 | case 380: |
4979 | #line 388 "Parser.rl" |
4980 | {te = p+1;{ |
4981 | PUSH_SEQUENCE; |
4982 | currentSeq = enterSequence(currentSeq, |
4983 | ue2::make_unique<ComponentAssertion>(ComponentAssertion::LOOKBEHIND, |
4984 | ComponentAssertion::NEG)); |
4985 | }} |
4986 | break; |
4987 | case 381: |
4988 | #line 394 "Parser.rl" |
4989 | {te = p+1;{ |
4990 | throw LocatedParseError("Embedded code is not supported" ); |
4991 | }} |
4992 | break; |
4993 | case 382: |
4994 | #line 394 "Parser.rl" |
4995 | {te = p+1;{ |
4996 | throw LocatedParseError("Embedded code is not supported" ); |
4997 | }} |
4998 | break; |
4999 | case 383: |
5000 | #line 417 "Parser.rl" |
5001 | {te = p+1;{ |
5002 | PUSH_SEQUENCE; |
5003 | currentSeq = enterSequence(currentSeq, |
5004 | ue2::make_unique<ComponentAtomicGroup>()); |
5005 | }} |
5006 | break; |
5007 | case 384: |
5008 | #line 337 "Parser.rl" |
5009 | {te = p+1;{ |
5010 | assert(!label.empty()); // should be guaranteed by machine |
5011 | char c = *label.begin(); |
5012 | if (c >= '0' && c <= '9') { |
5013 | throw LocatedParseError("Group name cannot begin with a digit" ); |
5014 | } |
5015 | if (!groupNames.insert(label).second) { |
5016 | throw LocatedParseError("Two named subpatterns use the name '" + label + "'" ); |
5017 | } |
5018 | PUSH_SEQUENCE; |
5019 | auto seq = ue2::make_unique<ComponentSequence>(); |
5020 | seq->setCaptureIndex(groupIndex++); |
5021 | seq->setCaptureName(label); |
5022 | currentSeq = enterSequence(currentSeq, move(seq)); |
5023 | }} |
5024 | break; |
5025 | case 385: |
5026 | #line 400 "Parser.rl" |
5027 | {te = p+1;{ |
5028 | throw LocatedParseError("Subpattern reference unsupported" ); |
5029 | }} |
5030 | break; |
5031 | case 386: |
5032 | #line 400 "Parser.rl" |
5033 | {te = p+1;{ |
5034 | throw LocatedParseError("Subpattern reference unsupported" ); |
5035 | }} |
5036 | break; |
5037 | case 387: |
5038 | #line 1784 "Parser.rl" |
5039 | {te = p+1;{ |
5040 | auto a = ue2::make_unique<ComponentAssertion>( |
5041 | ComponentAssertion::LOOKAHEAD, ComponentAssertion::POS); |
5042 | ComponentAssertion *a_seq = a.get(); |
5043 | PUSH_SEQUENCE; |
5044 | currentSeq = enterSequence(currentSeq, |
5045 | ue2::make_unique<ComponentCondReference>(move(a))); |
5046 | PUSH_SEQUENCE; |
5047 | currentSeq = a_seq; |
5048 | }} |
5049 | break; |
5050 | case 388: |
5051 | #line 1795 "Parser.rl" |
5052 | {te = p+1;{ |
5053 | auto a = ue2::make_unique<ComponentAssertion>( |
5054 | ComponentAssertion::LOOKAHEAD, ComponentAssertion::NEG); |
5055 | ComponentAssertion *a_seq = a.get(); |
5056 | PUSH_SEQUENCE; |
5057 | currentSeq = enterSequence(currentSeq, |
5058 | ue2::make_unique<ComponentCondReference>(move(a))); |
5059 | PUSH_SEQUENCE; |
5060 | currentSeq = a_seq; |
5061 | }} |
5062 | break; |
5063 | case 389: |
5064 | #line 1806 "Parser.rl" |
5065 | {te = p+1;{ |
5066 | auto a = ue2::make_unique<ComponentAssertion>( |
5067 | ComponentAssertion::LOOKBEHIND, ComponentAssertion::POS); |
5068 | ComponentAssertion *a_seq = a.get(); |
5069 | PUSH_SEQUENCE; |
5070 | currentSeq = enterSequence(currentSeq, |
5071 | ue2::make_unique<ComponentCondReference>(move(a))); |
5072 | PUSH_SEQUENCE; |
5073 | currentSeq = a_seq; |
5074 | }} |
5075 | break; |
5076 | case 390: |
5077 | #line 1817 "Parser.rl" |
5078 | {te = p+1;{ |
5079 | auto a = ue2::make_unique<ComponentAssertion>( |
5080 | ComponentAssertion::LOOKBEHIND, ComponentAssertion::NEG); |
5081 | ComponentAssertion *a_seq = a.get(); |
5082 | PUSH_SEQUENCE; |
5083 | currentSeq = enterSequence(currentSeq, |
5084 | ue2::make_unique<ComponentCondReference>(move(a))); |
5085 | PUSH_SEQUENCE; |
5086 | currentSeq = a_seq; |
5087 | }} |
5088 | break; |
5089 | case 391: |
5090 | #line 1829 "Parser.rl" |
5091 | {te = p+1;{ |
5092 | throw LocatedParseError("Pattern recursion not supported" ); |
5093 | }} |
5094 | break; |
5095 | case 392: |
5096 | #line 403 "Parser.rl" |
5097 | {te = p+1;{ |
5098 | if (accumulator == 0) { |
5099 | throw LocatedParseError("Numbered reference cannot be zero" ); |
5100 | } |
5101 | PUSH_SEQUENCE; |
5102 | currentSeq = enterSequence(currentSeq, |
5103 | ue2::make_unique<ComponentCondReference>(accumulator)); |
5104 | }} |
5105 | break; |
5106 | case 393: |
5107 | #line 411 "Parser.rl" |
5108 | {te = p+1;{ |
5109 | PUSH_SEQUENCE; |
5110 | assert(!label.empty()); |
5111 | currentSeq = enterSequence(currentSeq, |
5112 | ue2::make_unique<ComponentCondReference>(label)); |
5113 | }} |
5114 | break; |
5115 | case 394: |
5116 | #line 1845 "Parser.rl" |
5117 | {te = p+1;{ |
5118 | ostringstream str; |
5119 | str << "Callout at index " << ts - ptr << " not supported." ; |
5120 | throw ParseError(str.str()); |
5121 | }} |
5122 | break; |
5123 | case 395: |
5124 | #line 1853 "Parser.rl" |
5125 | {te = p+1;{ |
5126 | throw LocatedParseError("Unrecognised character after (?" ); |
5127 | }} |
5128 | break; |
5129 | case 396: |
5130 | #line 1858 "Parser.rl" |
5131 | {te = p+1;{ |
5132 | assert(mode.utf8); |
5133 | /* leverage ComponentClass to generate the vertices */ |
5134 | auto cc = getComponentClass(mode); |
5135 | cc->add(readUtf8CodePoint2c(ts)); |
5136 | cc->finalize(); |
5137 | currentSeq->addComponent(move(cc)); |
5138 | }} |
5139 | break; |
5140 | case 397: |
5141 | #line 1867 "Parser.rl" |
5142 | {te = p+1;{ |
5143 | assert(mode.utf8); |
5144 | /* leverage ComponentClass to generate the vertices */ |
5145 | auto cc = getComponentClass(mode); |
5146 | cc->add(readUtf8CodePoint3c(ts)); |
5147 | cc->finalize(); |
5148 | currentSeq->addComponent(move(cc)); |
5149 | }} |
5150 | break; |
5151 | case 398: |
5152 | #line 1876 "Parser.rl" |
5153 | {te = p+1;{ |
5154 | assert(mode.utf8); |
5155 | /* leverage ComponentClass to generate the vertices */ |
5156 | auto cc = getComponentClass(mode); |
5157 | cc->add(readUtf8CodePoint4c(ts)); |
5158 | cc->finalize(); |
5159 | currentSeq->addComponent(move(cc)); |
5160 | }} |
5161 | break; |
5162 | case 399: |
5163 | #line 1885 "Parser.rl" |
5164 | {te = p+1;{ |
5165 | assert(mode.utf8); |
5166 | throwInvalidUtf8(); |
5167 | }} |
5168 | break; |
5169 | case 400: |
5170 | #line 1894 "Parser.rl" |
5171 | {te = p+1;{ |
5172 | if (mode.ignore_space == false) { |
5173 | addLiteral(currentSeq, *ts, mode); |
5174 | } |
5175 | }} |
5176 | break; |
5177 | case 401: |
5178 | #line 1899 "Parser.rl" |
5179 | {te = p+1;{ |
5180 | addLiteral(currentSeq, *ts, mode); |
5181 | }} |
5182 | break; |
5183 | case 402: |
5184 | #line 329 "Parser.rl" |
5185 | {te = p;p--;{ |
5186 | PUSH_SEQUENCE; |
5187 | auto seq = ue2::make_unique<ComponentSequence>(); |
5188 | seq->setCaptureIndex(groupIndex++); |
5189 | currentSeq = enterSequence(currentSeq, move(seq)); |
5190 | }} |
5191 | break; |
5192 | case 403: |
5193 | #line 422 "Parser.rl" |
5194 | {te = p;p--;{ |
5195 | assert(!currentCls); |
5196 | assert(!inCharClass); // not reentrant |
5197 | currentCls = getComponentClass(mode); |
5198 | inCharClass = true; |
5199 | inCharClassEarly = true; |
5200 | currentClsBegin = ts; |
5201 | {cs = 836; goto _again;} |
5202 | }} |
5203 | break; |
5204 | case 404: |
5205 | #line 1311 "Parser.rl" |
5206 | {te = p;p--;{ |
5207 | if (!currentSeq->addRepeat(0, ComponentRepeat::NoLimit, |
5208 | ComponentRepeat::REPEAT_GREEDY)) { |
5209 | throwInvalidRepeat(); |
5210 | } |
5211 | }} |
5212 | break; |
5213 | case 405: |
5214 | #line 1332 "Parser.rl" |
5215 | {te = p;p--;{ |
5216 | if (!currentSeq->addRepeat(1, ComponentRepeat::NoLimit, |
5217 | ComponentRepeat::REPEAT_GREEDY)) { |
5218 | throwInvalidRepeat(); |
5219 | } |
5220 | }} |
5221 | break; |
5222 | case 406: |
5223 | #line 1353 "Parser.rl" |
5224 | {te = p;p--;{ |
5225 | if (!currentSeq->addRepeat( |
5226 | 0, 1, ComponentRepeat::REPEAT_GREEDY)) { |
5227 | throwInvalidRepeat(); |
5228 | } |
5229 | }} |
5230 | break; |
5231 | case 407: |
5232 | #line 1374 "Parser.rl" |
5233 | {te = p;p--;{ |
5234 | if (repeatN > repeatM || repeatM == 0) { |
5235 | throwInvalidRepeat(); |
5236 | } else if (!currentSeq->addRepeat( |
5237 | repeatN, repeatM, |
5238 | ComponentRepeat::REPEAT_GREEDY)) { |
5239 | throwInvalidRepeat(); |
5240 | } |
5241 | }} |
5242 | break; |
5243 | case 408: |
5244 | #line 1489 "Parser.rl" |
5245 | {te = p;p--;{ |
5246 | addLiteral(currentSeq, octAccumulator, mode); |
5247 | }} |
5248 | break; |
5249 | case 409: |
5250 | #line 1492 "Parser.rl" |
5251 | {te = p;p--;{ |
5252 | // If there are enough capturing sub expressions, this may be |
5253 | // a back reference |
5254 | accumulator = parseAsDecimal(octAccumulator); |
5255 | if (accumulator < groupIndex) { |
5256 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(accumulator)); |
5257 | } else { |
5258 | addEscapedOctal(currentSeq, octAccumulator, mode); |
5259 | } |
5260 | }} |
5261 | break; |
5262 | case 410: |
5263 | #line 480 "Parser.rl" |
5264 | {te = p;p--;{ |
5265 | if (accumulator == 0) { |
5266 | throw LocatedParseError("Numbered reference cannot be zero" ); |
5267 | } |
5268 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(accumulator)); |
5269 | }} |
5270 | break; |
5271 | case 411: |
5272 | #line 480 "Parser.rl" |
5273 | {te = p;p--;{ |
5274 | if (accumulator == 0) { |
5275 | throw LocatedParseError("Numbered reference cannot be zero" ); |
5276 | } |
5277 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(accumulator)); |
5278 | }} |
5279 | break; |
5280 | case 412: |
5281 | #line 487 "Parser.rl" |
5282 | {te = p;p--;{ |
5283 | // Accumulator is a negative offset. |
5284 | if (accumulator == 0) { |
5285 | throw LocatedParseError("Numbered reference cannot be zero" ); |
5286 | } |
5287 | if (accumulator >= groupIndex) { |
5288 | throw LocatedParseError("Invalid reference" ); |
5289 | } |
5290 | unsigned idx = groupIndex - accumulator; |
5291 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(idx)); |
5292 | }} |
5293 | break; |
5294 | case 413: |
5295 | #line 1558 "Parser.rl" |
5296 | {te = p;p--;{ |
5297 | throw LocatedParseError("Invalid reference after \\g" ); |
5298 | }} |
5299 | break; |
5300 | case 414: |
5301 | #line 1575 "Parser.rl" |
5302 | {te = p;p--;{ |
5303 | throw LocatedParseError("Value in \\o{...} sequence is non-octal or missing braces" ); |
5304 | }} |
5305 | break; |
5306 | case 415: |
5307 | #line 1579 "Parser.rl" |
5308 | {te = p;p--;{ |
5309 | addEscapedHex(currentSeq, accumulator, mode); |
5310 | }} |
5311 | break; |
5312 | case 416: |
5313 | #line 1597 "Parser.rl" |
5314 | {te = p;p--;{ |
5315 | throw LocatedParseError("Value in \\x{...} sequence is non-hex or missing }" ); |
5316 | }} |
5317 | break; |
5318 | case 417: |
5319 | #line 1601 "Parser.rl" |
5320 | {te = p;p--;{ |
5321 | if (te - ts < 3) { |
5322 | assert(te - ts == 2); |
5323 | throw LocatedParseError(SLASH_C_ERROR); |
5324 | } else { |
5325 | assert(te - ts == 3); |
5326 | addLiteral(currentSeq, decodeCtrl(ts[2]), mode); |
5327 | } |
5328 | }} |
5329 | break; |
5330 | case 418: |
5331 | #line 1701 "Parser.rl" |
5332 | {te = p;p--;{ throw LocatedParseError("Malformed property" ); }} |
5333 | break; |
5334 | case 419: |
5335 | #line 1702 "Parser.rl" |
5336 | {te = p;p--;{ throw LocatedParseError("Malformed property" ); }} |
5337 | break; |
5338 | case 420: |
5339 | #line 1720 "Parser.rl" |
5340 | {te = p;p--;{ |
5341 | ostringstream str; |
5342 | str << "\\k at index " << ts - ptr << " not supported." ; |
5343 | throw ParseError(str.str()); |
5344 | }} |
5345 | break; |
5346 | case 421: |
5347 | #line 1743 "Parser.rl" |
5348 | {te = p;p--;{ |
5349 | assert(ts + 1 == pe); |
5350 | ostringstream str; |
5351 | str << "Unescaped \\ at end of input, index " << ts - ptr << "." ; |
5352 | throw ParseError(str.str()); |
5353 | }} |
5354 | break; |
5355 | case 422: |
5356 | #line 397 "Parser.rl" |
5357 | {te = p;p--;{ |
5358 | throw LocatedParseError("Conditional subpattern unsupported" ); |
5359 | }} |
5360 | break; |
5361 | case 423: |
5362 | #line 1853 "Parser.rl" |
5363 | {te = p;p--;{ |
5364 | throw LocatedParseError("Unrecognised character after (?" ); |
5365 | }} |
5366 | break; |
5367 | case 424: |
5368 | #line 1885 "Parser.rl" |
5369 | {te = p;p--;{ |
5370 | assert(mode.utf8); |
5371 | throwInvalidUtf8(); |
5372 | }} |
5373 | break; |
5374 | case 425: |
5375 | #line 1899 "Parser.rl" |
5376 | {te = p;p--;{ |
5377 | addLiteral(currentSeq, *ts, mode); |
5378 | }} |
5379 | break; |
5380 | case 426: |
5381 | #line 329 "Parser.rl" |
5382 | {{p = ((te))-1;}{ |
5383 | PUSH_SEQUENCE; |
5384 | auto seq = ue2::make_unique<ComponentSequence>(); |
5385 | seq->setCaptureIndex(groupIndex++); |
5386 | currentSeq = enterSequence(currentSeq, move(seq)); |
5387 | }} |
5388 | break; |
5389 | case 427: |
5390 | #line 422 "Parser.rl" |
5391 | {{p = ((te))-1;}{ |
5392 | assert(!currentCls); |
5393 | assert(!inCharClass); // not reentrant |
5394 | currentCls = getComponentClass(mode); |
5395 | inCharClass = true; |
5396 | inCharClassEarly = true; |
5397 | currentClsBegin = ts; |
5398 | {cs = 836; goto _again;} |
5399 | }} |
5400 | break; |
5401 | case 428: |
5402 | #line 1558 "Parser.rl" |
5403 | {{p = ((te))-1;}{ |
5404 | throw LocatedParseError("Invalid reference after \\g" ); |
5405 | }} |
5406 | break; |
5407 | case 429: |
5408 | #line 1575 "Parser.rl" |
5409 | {{p = ((te))-1;}{ |
5410 | throw LocatedParseError("Value in \\o{...} sequence is non-octal or missing braces" ); |
5411 | }} |
5412 | break; |
5413 | case 430: |
5414 | #line 1597 "Parser.rl" |
5415 | {{p = ((te))-1;}{ |
5416 | throw LocatedParseError("Value in \\x{...} sequence is non-hex or missing }" ); |
5417 | }} |
5418 | break; |
5419 | case 431: |
5420 | #line 1720 "Parser.rl" |
5421 | {{p = ((te))-1;}{ |
5422 | ostringstream str; |
5423 | str << "\\k at index " << ts - ptr << " not supported." ; |
5424 | throw ParseError(str.str()); |
5425 | }} |
5426 | break; |
5427 | case 432: |
5428 | #line 397 "Parser.rl" |
5429 | {{p = ((te))-1;}{ |
5430 | throw LocatedParseError("Conditional subpattern unsupported" ); |
5431 | }} |
5432 | break; |
5433 | case 433: |
5434 | #line 1853 "Parser.rl" |
5435 | {{p = ((te))-1;}{ |
5436 | throw LocatedParseError("Unrecognised character after (?" ); |
5437 | }} |
5438 | break; |
5439 | case 434: |
5440 | #line 1885 "Parser.rl" |
5441 | {{p = ((te))-1;}{ |
5442 | assert(mode.utf8); |
5443 | throwInvalidUtf8(); |
5444 | }} |
5445 | break; |
5446 | case 435: |
5447 | #line 1899 "Parser.rl" |
5448 | {{p = ((te))-1;}{ |
5449 | addLiteral(currentSeq, *ts, mode); |
5450 | }} |
5451 | break; |
5452 | case 436: |
5453 | #line 1 "NONE" |
5454 | { switch( act ) { |
5455 | case 288: |
5456 | {{p = ((te))-1;} |
5457 | // If there are enough capturing sub expressions, this may be |
5458 | // a back reference |
5459 | accumulator = parseAsDecimal(octAccumulator); |
5460 | if (accumulator < groupIndex) { |
5461 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(accumulator)); |
5462 | } else { |
5463 | addEscapedOctal(currentSeq, octAccumulator, mode); |
5464 | } |
5465 | } |
5466 | break; |
5467 | case 290: |
5468 | {{p = ((te))-1;} |
5469 | // if there are enough left parens to this point, back ref |
5470 | if (accumulator < groupIndex) { |
5471 | currentSeq->addComponent(ue2::make_unique<ComponentBackReference>(accumulator)); |
5472 | } else { |
5473 | // Otherwise, we interpret the first three digits as an |
5474 | // octal escape, and the remaining characters stand for |
5475 | // themselves as literals. |
5476 | const char *s = ts; |
5477 | unsigned int accum = 0; |
5478 | unsigned int oct_digits = 0; |
5479 | assert(*s == '\\'); // token starts at backslash |
5480 | for (++s; s < te && oct_digits < 3; ++oct_digits, ++s) { |
5481 | u8 digit = *s - '0'; |
5482 | if (digit < 8) { |
5483 | accum = digit + accum * 8; |
5484 | } else { |
5485 | break; |
5486 | } |
5487 | } |
5488 | |
5489 | if (oct_digits > 0) { |
5490 | addEscapedOctal(currentSeq, accum, mode); |
5491 | } |
5492 | |
5493 | // And then the rest of the digits, if any, are literal. |
5494 | for (; s < te; ++s) { |
5495 | addLiteral(currentSeq, *s, mode); |
5496 | } |
5497 | } |
5498 | } |
5499 | break; |
5500 | case 330: |
5501 | {{p = ((te))-1;} |
5502 | addLiteral(currentSeq, *(ts + 1), mode); |
5503 | } |
5504 | break; |
5505 | } |
5506 | } |
5507 | break; |
5508 | #line 5509 "Parser.cpp" |
5509 | } |
5510 | } |
5511 | |
5512 | _again: |
5513 | _acts = _regex_actions + _regex_to_state_actions[cs]; |
5514 | _nacts = (unsigned int) *_acts++; |
5515 | while ( _nacts-- > 0 ) { |
5516 | switch ( *_acts++ ) { |
5517 | case 23: |
5518 | #line 1 "NONE" |
5519 | {ts = 0;} |
5520 | break; |
5521 | #line 5522 "Parser.cpp" |
5522 | } |
5523 | } |
5524 | |
5525 | if ( cs == 0 ) |
5526 | goto _out; |
5527 | if ( ++p != pe ) |
5528 | goto _resume; |
5529 | _test_eof: {} |
5530 | if ( p == eof ) |
5531 | { |
5532 | if ( _regex_eof_trans[cs] > 0 ) { |
5533 | _trans = _regex_eof_trans[cs] - 1; |
5534 | goto _eof_trans; |
5535 | } |
5536 | const short *__acts = _regex_actions + _regex_eof_actions[cs]; |
5537 | unsigned int __nacts = (unsigned int) *__acts++; |
5538 | while ( __nacts-- > 0 ) { |
5539 | switch ( *__acts++ ) { |
5540 | case 22: |
5541 | #line 731 "Parser.rl" |
5542 | { throw LocatedParseError("Malformed property" ); } |
5543 | break; |
5544 | #line 5545 "Parser.cpp" |
5545 | } |
5546 | } |
5547 | } |
5548 | |
5549 | _out: {} |
5550 | } |
5551 | |
5552 | #line 1985 "Parser.rl" |
5553 | |
5554 | if (p != pe && *p != '\0') { |
5555 | // didn't make it to the end of our input, but we didn't throw a ParseError? |
5556 | assert(0); |
5557 | ostringstream str; |
5558 | str << "Parse error at index " << (p - ptr) << "." ; |
5559 | throw ParseError(str.str()); |
5560 | } |
5561 | |
5562 | if (currentCls) { |
5563 | assert(inCharClass); |
5564 | assert(currentClsBegin); |
5565 | ostringstream oss; |
5566 | oss << "Unterminated character class starting at index " |
5567 | << currentClsBegin - ptr << "." ; |
5568 | throw ParseError(oss.str()); |
5569 | } |
5570 | |
5571 | if (inComment) { |
5572 | throw ParseError("Unterminated comment." ); |
5573 | } |
5574 | |
5575 | if (!sequences.empty()) { |
5576 | ostringstream str; |
5577 | str << "Missing close parenthesis for group started at index " |
5578 | << sequences.back().seqOffset << "." ; |
5579 | throw ParseError(str.str()); |
5580 | } |
5581 | |
5582 | // Unlikely, but possible |
5583 | if (groupIndex > 65535) { |
5584 | throw ParseError("The maximum number of capturing subexpressions is 65535." ); |
5585 | } |
5586 | |
5587 | // Finalize the top-level sequence, which will take care of any |
5588 | // top-level alternation. |
5589 | currentSeq->finalize(); |
5590 | assert(currentSeq == rootSeq.get()); |
5591 | |
5592 | // Ensure that all references are valid. |
5593 | checkReferences(*rootSeq, groupIndex, groupNames); |
5594 | |
5595 | return rootSeq; |
5596 | } catch (LocatedParseError &error) { |
5597 | if (ts >= ptr && ts <= pe) { |
5598 | error.locate(ts - ptr); |
5599 | } else { |
5600 | error.locate(0); |
5601 | } |
5602 | throw; |
5603 | } |
5604 | } |
5605 | |
5606 | } // namespace ue2 |
5607 | |