regexp_parser 2.11.3 → 2.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,43 +11,10 @@ require_relative 'scanner/errors/premature_end_error'
11
11
  require_relative 'scanner/errors/validation_error'
12
12
 
13
13
  class Regexp::Scanner
14
- # Scans the given regular expression text, or Regexp object and collects the
15
- # emitted token into an array that gets returned at the end. If a block is
16
- # given, it gets called for each emitted token.
17
- #
18
- # This method may raise errors if a syntax error is encountered.
19
- # --------------------------------------------------------------------------
20
- def self.scan(input_object, options: nil, collect_tokens: true, &block)
21
- new.scan(input_object, options: options, collect_tokens: collect_tokens, &block)
22
- end
23
-
24
- def scan(input_object, options: nil, collect_tokens: true, &block)
25
- self.collect_tokens = collect_tokens
26
- self.literal_run = nil
27
- stack = []
28
-
29
- input = input_object.is_a?(Regexp) ? input_object.source : input_object
30
- self.free_spacing = free_spacing?(input_object, options)
31
- self.regexp_encoding = extract_encoding(input_object, options)
32
- self.spacing_stack = [{:free_spacing => free_spacing, :depth => 0}]
33
-
34
- data = input.unpack("c*")
35
- eof = data.length
36
-
37
- self.tokens = []
38
- self.block = block
39
-
40
- self.set_depth = 0
41
- self.group_depth = 0
42
- self.capturing_group_count = 0
43
- self.conditional_stack = []
44
- self.char_pos = 0
14
+ # Emit fixed machine data once. The ragel task converts its generated
15
+ # accessors and tables to constants with frozen values.
45
16
 
46
- class << self
47
- attr_accessor :_re_scanner_trans_keys
48
- private :_re_scanner_trans_keys, :_re_scanner_trans_keys=
49
- end
50
- self._re_scanner_trans_keys = [
17
+ RE_SCANNER_TRANS_KEYS = [
51
18
  0,0,-128,-65,-128,-65,
52
19
  -128,-65,41,41,39,
53
20
  57,39,39,33,62,
@@ -62,27 +29,27 @@ self._re_scanner_trans_keys = [
62
29
  62,62,62,48,57,
63
30
  43,62,48,57,48,62,
64
31
  48,57,48,125,44,
65
- 125,123,123,9,122,
66
- 9,125,9,122,-128,-65,
67
- -128,-65,38,38,58,
68
- 93,58,93,-128,-65,
69
- -128,-65,-128,-65,-128,-65,
70
- 45,45,92,92,92,
71
- 92,45,45,92,92,
72
- 92,92,48,123,48,102,
73
- 48,102,48,102,48,
74
- 102,9,125,9,125,
32
+ 125,9,122,9,125,
33
+ 9,122,-128,-65,-128,-65,
34
+ 38,38,58,93,58,
35
+ 93,-128,-65,-128,-65,
36
+ -128,-65,-128,-65,45,45,
37
+ 92,92,92,92,45,
38
+ 45,92,92,92,92,
39
+ 48,123,48,102,48,102,
40
+ 48,102,48,102,9,
41
+ 125,9,125,9,125,
75
42
  9,125,9,125,9,125,
76
- 9,125,48,102,120,
77
- 120,56,102,48,102,
78
- 39,39,41,41,41,57,
79
- 62,62,-128,127,-62,
80
- -12,1,127,1,127,
81
- 9,32,33,126,10,10,
82
- 63,63,33,126,33,
83
- 126,43,63,43,63,
84
- 43,63,65,122,44,57,
85
- 68,119,80,112,-62,
43
+ 48,102,120,120,56,
44
+ 102,48,102,39,39,
45
+ 41,41,41,57,62,62,
46
+ -128,127,-62,-12,1,
47
+ 127,1,127,9,32,
48
+ 33,126,10,10,63,63,
49
+ 33,126,33,126,43,
50
+ 63,43,63,43,63,
51
+ 65,122,44,57,68,119,
52
+ 80,112,123,123,-62,
86
53
  125,-128,-65,-128,-65,
87
54
  -128,-65,38,38,38,93,
88
55
  58,58,-62,120,-128,
@@ -98,61 +65,49 @@ self._re_scanner_trans_keys = [
98
65
  92,39,60,39,57,
99
66
  48,57,41,57,33,62,
100
67
  0
101
- ]
68
+ ].freeze
102
69
 
103
- class << self
104
- attr_accessor :_re_scanner_key_spans
105
- private :_re_scanner_key_spans, :_re_scanner_key_spans=
106
- end
107
- self._re_scanner_key_spans = [
70
+ RE_SCANNER_KEY_SPANS = [
108
71
  0,64,64,64,1,19,1,30,
109
72
  1,22,19,1,10,19,10,19,
110
73
  30,1,10,20,10,15,22,19,
111
74
  1,10,19,10,19,30,1,10,
112
- 20,10,15,10,78,82,1,114,
113
- 117,114,64,64,1,36,36,64,
114
- 64,64,64,1,1,1,1,1,
115
- 1,76,55,55,55,55,117,117,
116
- 117,117,117,117,55,1,47,55,
117
- 1,1,17,1,256,51,127,127,
118
- 24,94,1,1,94,94,21,21,
119
- 21,58,14,52,33,188,64,64,
75
+ 20,10,15,10,78,82,114,117,
76
+ 114,64,64,1,36,36,64,64,
77
+ 64,64,1,1,1,1,1,1,
78
+ 76,55,55,55,55,117,117,117,
79
+ 117,117,117,55,1,47,55,1,
80
+ 1,17,1,256,51,127,127,24,
81
+ 94,1,1,94,94,21,21,21,
82
+ 58,14,52,33,1,188,64,64,
120
83
  64,1,56,1,183,64,64,64,
121
84
  8,8,188,64,64,64,8,8,
122
85
  10,10,10,10,1,1,0,33,
123
86
  1,0,1,55,55,1,22,19,
124
87
  10,17,30
125
- ]
88
+ ].freeze
126
89
 
127
- class << self
128
- attr_accessor :_re_scanner_index_offsets
129
- private :_re_scanner_index_offsets, :_re_scanner_index_offsets=
130
- end
131
- self._re_scanner_index_offsets = [
90
+ RE_SCANNER_INDEX_OFFSETS = [
132
91
  0,0,65,130,195,197,217,219,
133
92
  250,252,275,295,297,308,328,339,
134
93
  359,390,392,403,424,435,451,474,
135
94
  494,496,507,527,538,558,589,591,
136
- 602,623,634,650,661,740,823,825,
137
- 940,1058,1173,1238,1303,1305,1342,1379,
138
- 1444,1509,1574,1639,1641,1643,1645,1647,
139
- 1649,1651,1728,1784,1840,1896,1952,2070,
140
- 2188,2306,2424,2542,2660,2716,2718,2766,
141
- 2822,2824,2826,2844,2846,3103,3155,3283,
142
- 3411,3436,3531,3533,3535,3630,3725,3747,
143
- 3769,3791,3850,3865,3918,3952,4141,4206,
95
+ 602,623,634,650,661,740,823,938,
96
+ 1056,1171,1236,1301,1303,1340,1377,1442,
97
+ 1507,1572,1637,1639,1641,1643,1645,1647,
98
+ 1649,1726,1782,1838,1894,1950,2068,2186,
99
+ 2304,2422,2540,2658,2714,2716,2764,2820,
100
+ 2822,2824,2842,2844,3101,3153,3281,3409,
101
+ 3434,3529,3531,3533,3628,3723,3745,3767,
102
+ 3789,3848,3863,3916,3950,3952,4141,4206,
144
103
  4271,4336,4338,4395,4397,4581,4646,4711,
145
104
  4776,4785,4794,4983,5048,5113,5178,5187,
146
105
  5196,5207,5218,5229,5240,5242,5244,5245,
147
106
  5279,5281,5282,5284,5340,5396,5398,5421,
148
107
  5441,5452,5470
149
- ]
108
+ ].freeze
150
109
 
151
- class << self
152
- attr_accessor :_re_scanner_indicies
153
- private :_re_scanner_indicies, :_re_scanner_indicies=
154
- end
155
- self._re_scanner_indicies = [
110
+ RE_SCANNER_INDICIES = [
156
111
  1,1,1,1,1,1,1,1,
157
112
  1,1,1,1,1,1,1,1,
158
113
  1,1,1,1,1,1,1,1,
@@ -255,37 +210,22 @@ self._re_scanner_indicies = [
255
210
  38,38,38,38,38,38,38,38,
256
211
  38,38,38,38,38,38,38,38,
257
212
  38,38,38,38,38,38,38,38,
258
- 38,38,38,38,38,40,38,42,
259
- 43,44,44,44,44,44,43,43,
213
+ 38,38,38,38,38,40,38,44,
214
+ 44,44,44,44,43,43,43,43,
260
215
  43,43,43,43,43,43,43,43,
216
+ 43,43,43,43,43,43,44,43,
261
217
  43,43,43,43,43,43,43,43,
262
- 44,43,43,43,43,43,43,43,
263
- 43,43,43,43,43,44,44,43,
264
- 44,44,44,44,44,44,44,44,
265
- 44,44,43,43,43,44,43,43,
266
- 43,44,44,44,44,44,44,44,
267
- 44,44,44,44,44,44,44,44,
218
+ 43,43,43,44,44,43,44,44,
268
219
  44,44,44,44,44,44,44,44,
269
- 44,44,44,43,43,43,45,44,
270
- 43,44,44,44,44,44,44,44,
220
+ 43,43,43,44,43,43,43,44,
271
221
  44,44,44,44,44,44,44,44,
272
222
  44,44,44,44,44,44,44,44,
273
- 44,44,44,43,44,44,44,44,
274
- 44,43,43,43,43,43,43,43,
275
- 43,43,43,43,43,43,43,43,
276
- 43,43,43,44,43,43,43,43,
277
- 43,43,43,43,43,43,43,43,
278
- 44,44,43,44,44,44,44,44,
279
- 44,44,44,44,44,43,43,43,
280
- 44,43,43,43,44,44,44,44,
281
223
  44,44,44,44,44,44,44,44,
224
+ 44,43,43,43,45,44,43,44,
282
225
  44,44,44,44,44,44,44,44,
283
- 44,44,44,44,44,44,43,43,
284
- 43,43,44,43,44,44,44,44,
285
226
  44,44,44,44,44,44,44,44,
286
227
  44,44,44,44,44,44,44,44,
287
- 44,44,44,44,44,44,43,43,
288
- 46,43,44,44,44,44,44,43,
228
+ 44,43,44,44,44,44,44,43,
289
229
  43,43,43,43,43,43,43,43,
290
230
  43,43,43,43,43,43,43,43,
291
231
  43,44,43,43,43,43,43,43,
@@ -299,7 +239,22 @@ self._re_scanner_indicies = [
299
239
  44,43,44,44,44,44,44,44,
300
240
  44,44,44,44,44,44,44,44,
301
241
  44,44,44,44,44,44,44,44,
302
- 44,44,44,44,43,48,48,48,
242
+ 44,44,44,44,43,43,46,43,
243
+ 44,44,44,44,44,43,43,43,
244
+ 43,43,43,43,43,43,43,43,
245
+ 43,43,43,43,43,43,43,44,
246
+ 43,43,43,43,43,43,43,43,
247
+ 43,43,43,43,44,44,43,44,
248
+ 44,44,44,44,44,44,44,44,
249
+ 44,43,43,43,44,43,43,43,
250
+ 44,44,44,44,44,44,44,44,
251
+ 44,44,44,44,44,44,44,44,
252
+ 44,44,44,44,44,44,44,44,
253
+ 44,44,43,43,43,43,44,43,
254
+ 44,44,44,44,44,44,44,44,
255
+ 44,44,44,44,44,44,44,44,
256
+ 44,44,44,44,44,44,44,44,
257
+ 44,44,43,48,48,48,48,48,
303
258
  48,48,48,48,48,48,48,48,
304
259
  48,48,48,48,48,48,48,48,
305
260
  48,48,48,48,48,48,48,48,
@@ -307,7 +262,7 @@ self._re_scanner_indicies = [
307
262
  48,48,48,48,48,48,48,48,
308
263
  48,48,48,48,48,48,48,48,
309
264
  48,48,48,48,48,48,48,48,
310
- 48,48,48,48,48,47,49,49,
265
+ 48,48,48,47,49,49,49,49,
311
266
  49,49,49,49,49,49,49,49,
312
267
  49,49,49,49,49,49,49,49,
313
268
  49,49,49,49,49,49,49,49,
@@ -315,17 +270,17 @@ self._re_scanner_indicies = [
315
270
  49,49,49,49,49,49,49,49,
316
271
  49,49,49,49,49,49,49,49,
317
272
  49,49,49,49,49,49,49,49,
318
- 49,49,49,49,49,49,47,51,
319
- 50,54,53,53,53,53,53,53,
273
+ 49,49,49,49,47,51,50,54,
320
274
  53,53,53,53,53,53,53,53,
321
275
  53,53,53,53,53,53,53,53,
322
276
  53,53,53,53,53,53,53,53,
323
- 53,53,55,53,55,53,54,53,
324
277
  53,53,53,53,53,53,53,53,
278
+ 55,53,55,53,54,53,53,53,
325
279
  53,53,53,53,53,53,53,53,
326
280
  53,53,53,53,53,53,53,53,
327
- 53,53,53,53,53,53,53,55,
328
- 53,56,53,58,58,58,58,58,
281
+ 53,53,53,53,53,53,53,53,
282
+ 53,53,53,53,53,55,53,56,
283
+ 53,58,58,58,58,58,58,58,
329
284
  58,58,58,58,58,58,58,58,
330
285
  58,58,58,58,58,58,58,58,
331
286
  58,58,58,58,58,58,58,58,
@@ -333,7 +288,7 @@ self._re_scanner_indicies = [
333
288
  58,58,58,58,58,58,58,58,
334
289
  58,58,58,58,58,58,58,58,
335
290
  58,58,58,58,58,58,58,58,
336
- 58,58,58,57,59,59,59,59,
291
+ 58,57,59,59,59,59,59,59,
337
292
  59,59,59,59,59,59,59,59,
338
293
  59,59,59,59,59,59,59,59,
339
294
  59,59,59,59,59,59,59,59,
@@ -341,7 +296,7 @@ self._re_scanner_indicies = [
341
296
  59,59,59,59,59,59,59,59,
342
297
  59,59,59,59,59,59,59,59,
343
298
  59,59,59,59,59,59,59,59,
344
- 59,59,59,59,57,61,61,61,
299
+ 59,59,57,61,61,61,61,61,
345
300
  61,61,61,61,61,61,61,61,
346
301
  61,61,61,61,61,61,61,61,
347
302
  61,61,61,61,61,61,61,61,
@@ -349,7 +304,7 @@ self._re_scanner_indicies = [
349
304
  61,61,61,61,61,61,61,61,
350
305
  61,61,61,61,61,61,61,61,
351
306
  61,61,61,61,61,61,61,61,
352
- 61,61,61,61,61,60,62,62,
307
+ 61,61,61,60,62,62,62,62,
353
308
  62,62,62,62,62,62,62,62,
354
309
  62,62,62,62,62,62,62,62,
355
310
  62,62,62,62,62,62,62,62,
@@ -357,219 +312,200 @@ self._re_scanner_indicies = [
357
312
  62,62,62,62,62,62,62,62,
358
313
  62,62,62,62,62,62,62,62,
359
314
  62,62,62,62,62,62,62,62,
360
- 62,62,62,62,62,62,60,63,
361
- 43,65,64,67,64,68,43,70,
362
- 69,72,69,73,73,73,73,73,
363
- 73,73,73,73,73,43,43,43,
364
- 43,43,43,43,73,73,73,73,
365
- 73,73,43,43,43,43,43,43,
366
- 43,43,43,43,43,43,43,43,
367
- 43,43,43,43,43,43,43,43,
368
- 43,43,43,43,73,73,73,73,
369
- 73,73,43,43,43,43,43,43,
370
- 43,43,43,43,43,43,43,43,
371
- 43,43,43,43,43,43,74,43,
372
- 75,75,75,75,75,75,75,75,
373
- 75,75,43,43,43,43,43,43,
374
- 43,75,75,75,75,75,75,43,
375
- 43,43,43,43,43,43,43,43,
376
- 43,43,43,43,43,43,43,43,
377
- 43,43,43,43,43,43,43,43,
378
- 43,75,75,75,75,75,75,43,
315
+ 62,62,62,62,60,63,64,66,
316
+ 65,68,65,69,64,71,70,73,
317
+ 70,74,74,74,74,74,74,74,
318
+ 74,74,74,64,64,64,64,64,
319
+ 64,64,74,74,74,74,74,74,
320
+ 64,64,64,64,64,64,64,64,
321
+ 64,64,64,64,64,64,64,64,
322
+ 64,64,64,64,64,64,64,64,
323
+ 64,64,74,74,74,74,74,74,
324
+ 64,64,64,64,64,64,64,64,
325
+ 64,64,64,64,64,64,64,64,
326
+ 64,64,64,64,75,64,76,76,
379
327
  76,76,76,76,76,76,76,76,
380
- 76,76,43,43,43,43,43,43,
381
- 43,76,76,76,76,76,76,43,
382
- 43,43,43,43,43,43,43,43,
383
- 43,43,43,43,43,43,43,43,
384
- 43,43,43,43,43,43,43,43,
385
- 43,76,76,76,76,76,76,43,
328
+ 64,64,64,64,64,64,64,76,
329
+ 76,76,76,76,76,64,64,64,
330
+ 64,64,64,64,64,64,64,64,
331
+ 64,64,64,64,64,64,64,64,
332
+ 64,64,64,64,64,64,64,76,
333
+ 76,76,76,76,76,64,77,77,
386
334
  77,77,77,77,77,77,77,77,
387
- 77,77,43,43,43,43,43,43,
388
- 43,77,77,77,77,77,77,43,
389
- 43,43,43,43,43,43,43,43,
390
- 43,43,43,43,43,43,43,43,
391
- 43,43,43,43,43,43,43,43,
392
- 43,77,77,77,77,77,77,43,
335
+ 64,64,64,64,64,64,64,77,
336
+ 77,77,77,77,77,64,64,64,
337
+ 64,64,64,64,64,64,64,64,
338
+ 64,64,64,64,64,64,64,64,
339
+ 64,64,64,64,64,64,64,77,
340
+ 77,77,77,77,77,64,78,78,
393
341
  78,78,78,78,78,78,78,78,
394
- 78,78,43,43,43,43,43,43,
395
- 43,78,78,78,78,78,78,43,
396
- 43,43,43,43,43,43,43,43,
397
- 43,43,43,43,43,43,43,43,
398
- 43,43,43,43,43,43,43,43,
399
- 43,78,78,78,78,78,78,43,
400
- 74,74,74,74,74,43,43,43,
401
- 43,43,43,43,43,43,43,43,
402
- 43,43,43,43,43,43,43,74,
403
- 43,43,43,43,43,43,43,43,
404
- 43,43,43,43,43,43,43,79,
342
+ 64,64,64,64,64,64,64,78,
343
+ 78,78,78,78,78,64,64,64,
344
+ 64,64,64,64,64,64,64,64,
345
+ 64,64,64,64,64,64,64,64,
346
+ 64,64,64,64,64,64,64,78,
347
+ 78,78,78,78,78,64,79,79,
405
348
  79,79,79,79,79,79,79,79,
406
- 79,43,43,43,43,43,43,43,
407
- 79,79,79,79,79,79,43,43,
408
- 43,43,43,43,43,43,43,43,
409
- 43,43,43,43,43,43,43,43,
410
- 43,43,43,43,43,43,43,43,
411
- 79,79,79,79,79,79,43,43,
412
- 43,43,43,43,43,43,43,43,
413
- 43,43,43,43,43,43,43,43,
414
- 43,43,43,43,77,43,74,74,
415
- 74,74,74,43,43,43,43,43,
416
- 43,43,43,43,43,43,43,43,
417
- 43,43,43,43,43,74,43,43,
418
- 43,43,43,43,43,43,43,43,
419
- 43,43,43,43,43,80,80,80,
420
- 80,80,80,80,80,80,80,43,
421
- 43,43,43,43,43,43,80,80,
422
- 80,80,80,80,43,43,43,43,
423
- 43,43,43,43,43,43,43,43,
424
- 43,43,43,43,43,43,43,43,
425
- 43,43,43,43,43,43,80,80,
426
- 80,80,80,80,43,43,43,43,
427
- 43,43,43,43,43,43,43,43,
428
- 43,43,43,43,43,43,43,43,
429
- 43,43,77,43,74,74,74,74,
430
- 74,43,43,43,43,43,43,43,
431
- 43,43,43,43,43,43,43,43,
432
- 43,43,43,74,43,43,43,43,
433
- 43,43,43,43,43,43,43,43,
434
- 43,43,43,81,81,81,81,81,
435
- 81,81,81,81,81,43,43,43,
436
- 43,43,43,43,81,81,81,81,
437
- 81,81,43,43,43,43,43,43,
438
- 43,43,43,43,43,43,43,43,
439
- 43,43,43,43,43,43,43,43,
440
- 43,43,43,43,81,81,81,81,
441
- 81,81,43,43,43,43,43,43,
442
- 43,43,43,43,43,43,43,43,
443
- 43,43,43,43,43,43,43,43,
444
- 77,43,74,74,74,74,74,43,
445
- 43,43,43,43,43,43,43,43,
446
- 43,43,43,43,43,43,43,43,
447
- 43,74,43,43,43,43,43,43,
448
- 43,43,43,43,43,43,43,43,
449
- 43,82,82,82,82,82,82,82,
450
- 82,82,82,43,43,43,43,43,
451
- 43,43,82,82,82,82,82,82,
452
- 43,43,43,43,43,43,43,43,
453
- 43,43,43,43,43,43,43,43,
454
- 43,43,43,43,43,43,43,43,
455
- 43,43,82,82,82,82,82,82,
456
- 43,43,43,43,43,43,43,43,
457
- 43,43,43,43,43,43,43,43,
458
- 43,43,43,43,43,43,77,43,
459
- 74,74,74,74,74,43,43,43,
460
- 43,43,43,43,43,43,43,43,
461
- 43,43,43,43,43,43,43,74,
462
- 43,43,43,43,43,43,43,43,
463
- 43,43,43,43,43,43,43,83,
349
+ 64,64,64,64,64,64,64,79,
350
+ 79,79,79,79,79,64,64,64,
351
+ 64,64,64,64,64,64,64,64,
352
+ 64,64,64,64,64,64,64,64,
353
+ 64,64,64,64,64,64,64,79,
354
+ 79,79,79,79,79,64,75,75,
355
+ 75,75,75,64,64,64,64,64,
356
+ 64,64,64,64,64,64,64,64,
357
+ 64,64,64,64,64,75,64,64,
358
+ 64,64,64,64,64,64,64,64,
359
+ 64,64,64,64,64,80,80,80,
360
+ 80,80,80,80,80,80,80,64,
361
+ 64,64,64,64,64,64,80,80,
362
+ 80,80,80,80,64,64,64,64,
363
+ 64,64,64,64,64,64,64,64,
364
+ 64,64,64,64,64,64,64,64,
365
+ 64,64,64,64,64,64,80,80,
366
+ 80,80,80,80,64,64,64,64,
367
+ 64,64,64,64,64,64,64,64,
368
+ 64,64,64,64,64,64,64,64,
369
+ 64,64,78,64,75,75,75,75,
370
+ 75,64,64,64,64,64,64,64,
371
+ 64,64,64,64,64,64,64,64,
372
+ 64,64,64,75,64,64,64,64,
373
+ 64,64,64,64,64,64,64,64,
374
+ 64,64,64,81,81,81,81,81,
375
+ 81,81,81,81,81,64,64,64,
376
+ 64,64,64,64,81,81,81,81,
377
+ 81,81,64,64,64,64,64,64,
378
+ 64,64,64,64,64,64,64,64,
379
+ 64,64,64,64,64,64,64,64,
380
+ 64,64,64,64,81,81,81,81,
381
+ 81,81,64,64,64,64,64,64,
382
+ 64,64,64,64,64,64,64,64,
383
+ 64,64,64,64,64,64,64,64,
384
+ 78,64,75,75,75,75,75,64,
385
+ 64,64,64,64,64,64,64,64,
386
+ 64,64,64,64,64,64,64,64,
387
+ 64,75,64,64,64,64,64,64,
388
+ 64,64,64,64,64,64,64,64,
389
+ 64,82,82,82,82,82,82,82,
390
+ 82,82,82,64,64,64,64,64,
391
+ 64,64,82,82,82,82,82,82,
392
+ 64,64,64,64,64,64,64,64,
393
+ 64,64,64,64,64,64,64,64,
394
+ 64,64,64,64,64,64,64,64,
395
+ 64,64,82,82,82,82,82,82,
396
+ 64,64,64,64,64,64,64,64,
397
+ 64,64,64,64,64,64,64,64,
398
+ 64,64,64,64,64,64,78,64,
399
+ 75,75,75,75,75,64,64,64,
400
+ 64,64,64,64,64,64,64,64,
401
+ 64,64,64,64,64,64,64,75,
402
+ 64,64,64,64,64,64,64,64,
403
+ 64,64,64,64,64,64,64,83,
464
404
  83,83,83,83,83,83,83,83,
465
- 83,43,43,43,43,43,43,43,
466
- 83,83,83,83,83,83,43,43,
467
- 43,43,43,43,43,43,43,43,
468
- 43,43,43,43,43,43,43,43,
469
- 43,43,43,43,43,43,43,43,
470
- 83,83,83,83,83,83,43,43,
471
- 43,43,43,43,43,43,43,43,
472
- 43,43,43,43,43,43,43,43,
473
- 43,43,43,43,77,43,74,74,
474
- 74,74,74,43,43,43,43,43,
475
- 43,43,43,43,43,43,43,43,
476
- 43,43,43,43,43,74,43,43,
477
- 43,43,43,43,43,43,43,43,
478
- 43,43,43,43,43,43,43,43,
479
- 43,43,43,43,43,43,43,43,
480
- 43,43,43,43,43,43,43,43,
481
- 43,43,43,43,43,43,43,43,
482
- 43,43,43,43,43,43,43,43,
483
- 43,43,43,43,43,43,43,43,
484
- 43,43,43,43,43,43,43,43,
485
- 43,43,43,43,43,43,43,43,
486
- 43,43,43,43,43,43,43,43,
487
- 43,43,43,43,43,43,43,43,
488
- 43,43,77,43,85,85,85,85,
489
- 85,85,85,85,86,86,84,84,
490
- 84,84,84,84,84,86,86,86,
491
- 86,86,86,84,84,84,84,84,
492
- 84,84,84,84,84,84,84,84,
493
- 84,84,84,84,84,84,84,84,
494
- 84,84,84,84,84,86,86,86,
495
- 86,86,86,84,88,87,89,89,
496
- 87,87,87,87,87,87,87,89,
497
- 89,89,89,89,89,87,87,87,
498
- 87,87,87,87,87,87,87,87,
499
- 87,87,87,87,87,87,87,87,
500
- 87,87,87,87,87,87,87,89,
501
- 89,89,89,89,89,87,90,90,
502
- 90,90,90,90,90,90,90,90,
503
- 87,87,87,87,87,87,87,90,
504
- 90,90,90,90,90,87,87,87,
505
- 87,87,87,87,87,87,87,87,
506
- 87,87,87,87,87,87,87,87,
507
- 87,87,87,87,87,87,87,90,
508
- 90,90,90,90,90,87,93,92,
509
- 94,91,94,91,91,91,91,91,
510
- 91,95,95,95,95,95,95,95,
511
- 95,95,95,91,93,96,43,43,
512
- 43,43,43,43,43,43,43,43,
513
- 43,43,43,43,43,43,43,43,
514
- 43,43,43,43,43,43,43,43,
515
- 43,43,43,43,43,43,43,43,
516
- 43,43,43,43,43,43,43,43,
517
- 43,43,43,43,43,43,43,43,
518
- 43,43,43,43,43,43,43,43,
519
- 43,43,43,43,43,43,43,43,
405
+ 83,64,64,64,64,64,64,64,
406
+ 83,83,83,83,83,83,64,64,
407
+ 64,64,64,64,64,64,64,64,
408
+ 64,64,64,64,64,64,64,64,
409
+ 64,64,64,64,64,64,64,64,
410
+ 83,83,83,83,83,83,64,64,
411
+ 64,64,64,64,64,64,64,64,
412
+ 64,64,64,64,64,64,64,64,
413
+ 64,64,64,64,78,64,75,75,
414
+ 75,75,75,64,64,64,64,64,
415
+ 64,64,64,64,64,64,64,64,
416
+ 64,64,64,64,64,75,64,64,
417
+ 64,64,64,64,64,64,64,64,
418
+ 64,64,64,64,64,84,84,84,
419
+ 84,84,84,84,84,84,84,64,
420
+ 64,64,64,64,64,64,84,84,
421
+ 84,84,84,84,64,64,64,64,
422
+ 64,64,64,64,64,64,64,64,
423
+ 64,64,64,64,64,64,64,64,
424
+ 64,64,64,64,64,64,84,84,
425
+ 84,84,84,84,64,64,64,64,
426
+ 64,64,64,64,64,64,64,64,
427
+ 64,64,64,64,64,64,64,64,
428
+ 64,64,78,64,75,75,75,75,
429
+ 75,64,64,64,64,64,64,64,
430
+ 64,64,64,64,64,64,64,64,
431
+ 64,64,64,75,64,64,64,64,
432
+ 64,64,64,64,64,64,64,64,
433
+ 64,64,64,64,64,64,64,64,
434
+ 64,64,64,64,64,64,64,64,
435
+ 64,64,64,64,64,64,64,64,
436
+ 64,64,64,64,64,64,64,64,
437
+ 64,64,64,64,64,64,64,64,
438
+ 64,64,64,64,64,64,64,64,
439
+ 64,64,64,64,64,64,64,64,
440
+ 64,64,64,64,64,64,64,64,
441
+ 64,64,64,64,64,64,64,64,
442
+ 64,64,64,64,64,64,64,64,
443
+ 78,64,86,86,86,86,86,86,
444
+ 86,86,87,87,85,85,85,85,
445
+ 85,85,85,87,87,87,87,87,
446
+ 87,85,85,85,85,85,85,85,
447
+ 85,85,85,85,85,85,85,85,
448
+ 85,85,85,85,85,85,85,85,
449
+ 85,85,85,87,87,87,87,87,
450
+ 87,85,89,88,90,90,88,88,
451
+ 88,88,88,88,88,90,90,90,
452
+ 90,90,90,88,88,88,88,88,
453
+ 88,88,88,88,88,88,88,88,
454
+ 88,88,88,88,88,88,88,88,
455
+ 88,88,88,88,88,90,90,90,
456
+ 90,90,90,88,91,91,91,91,
457
+ 91,91,91,91,91,91,88,88,
458
+ 88,88,88,88,88,91,91,91,
459
+ 91,91,91,88,88,88,88,88,
460
+ 88,88,88,88,88,88,88,88,
461
+ 88,88,88,88,88,88,88,88,
462
+ 88,88,88,88,88,91,91,91,
463
+ 91,91,91,88,94,93,95,92,
464
+ 95,92,92,92,92,92,92,96,
465
+ 96,96,96,96,96,96,96,96,
466
+ 96,92,94,97,64,64,64,64,
467
+ 64,64,64,64,64,64,64,64,
468
+ 64,64,64,64,64,64,64,64,
469
+ 64,64,64,64,64,64,64,64,
470
+ 64,64,64,64,64,64,64,64,
471
+ 64,64,64,64,64,64,64,64,
472
+ 64,64,64,64,64,64,64,64,
473
+ 64,64,64,64,64,64,64,64,
474
+ 64,64,64,64,64,64,2,2,
520
475
  2,2,2,2,2,2,2,2,
521
476
  2,2,2,2,2,2,2,2,
522
477
  2,2,2,2,2,2,2,2,
523
- 2,2,2,2,2,2,3,3,
478
+ 2,2,2,2,3,3,3,3,
524
479
  3,3,3,3,3,3,3,3,
525
- 3,3,3,3,3,3,97,97,
526
- 97,97,97,43,43,43,43,43,
527
- 43,43,43,43,43,43,43,98,
528
- 98,98,98,98,98,98,98,99,
529
- 99,99,99,99,98,98,98,98,
530
- 98,98,98,98,98,98,98,98,
531
- 98,98,98,98,98,98,100,101,
532
- 101,102,103,101,101,101,104,105,
533
- 106,107,101,101,108,101,101,101,
534
- 101,101,101,101,101,101,101,101,
535
- 101,101,101,101,101,109,101,101,
536
- 101,101,101,101,101,101,101,101,
537
- 101,101,101,101,101,101,101,101,
538
- 101,101,101,101,101,101,101,101,
539
- 101,110,111,112,113,101,101,101,
540
- 101,101,101,101,101,101,101,101,
541
- 101,101,101,101,101,101,101,101,
542
- 101,101,101,101,101,101,101,101,
543
- 101,114,115,112,101,98,101,2,
480
+ 3,3,3,3,98,98,98,98,
481
+ 98,64,64,64,64,64,64,64,
482
+ 64,64,64,64,64,99,99,99,
483
+ 99,99,99,99,99,100,100,100,
484
+ 100,100,99,99,99,99,99,99,
485
+ 99,99,99,99,99,99,99,99,
486
+ 99,99,99,99,101,102,102,103,
487
+ 104,102,102,102,105,106,107,108,
488
+ 102,102,109,102,102,102,102,102,
489
+ 102,102,102,102,102,102,102,102,
490
+ 102,102,102,110,102,102,102,102,
491
+ 102,102,102,102,102,102,102,102,
492
+ 102,102,102,102,102,102,102,102,
493
+ 102,102,102,102,102,102,102,111,
494
+ 112,113,114,102,102,102,102,102,
495
+ 102,102,102,102,102,102,102,102,
496
+ 102,102,102,102,102,102,102,102,
497
+ 102,102,102,102,102,102,102,115,
498
+ 116,113,102,99,102,2,2,2,
544
499
  2,2,2,2,2,2,2,2,
545
500
  2,2,2,2,2,2,2,2,
546
501
  2,2,2,2,2,2,2,2,
547
- 2,2,2,2,2,3,3,3,
502
+ 2,2,2,3,3,3,3,3,
548
503
  3,3,3,3,3,3,3,3,
549
- 3,3,3,3,3,97,97,97,
550
- 97,97,116,98,98,98,98,98,
551
- 98,98,98,98,98,98,98,98,
552
- 98,98,98,98,98,98,98,98,
553
- 98,98,98,98,98,98,98,98,
554
- 98,98,116,116,116,116,116,116,
555
- 116,116,116,116,116,116,116,116,
556
- 116,116,116,116,116,116,116,116,
557
- 116,116,116,116,116,116,116,116,
558
- 116,116,116,116,116,116,116,116,
559
- 116,116,116,116,116,116,116,116,
560
- 116,116,116,116,116,116,116,116,
561
- 116,116,116,116,116,116,116,116,
562
- 116,116,116,116,116,116,116,116,
563
- 116,116,116,116,116,116,116,116,
564
- 116,116,116,116,116,116,116,116,
565
- 116,116,116,116,116,116,116,116,
566
- 116,98,116,98,98,98,98,98,
567
- 98,98,98,99,99,99,99,99,
568
- 98,98,98,98,98,98,98,98,
569
- 98,98,98,98,98,98,98,98,
570
- 98,98,100,117,117,117,117,117,
571
- 117,117,117,117,117,117,117,117,
572
- 117,117,117,117,117,117,117,117,
504
+ 3,3,3,98,98,98,98,98,
505
+ 117,99,99,99,99,99,99,99,
506
+ 99,99,99,99,99,99,99,99,
507
+ 99,99,99,99,99,99,99,99,
508
+ 99,99,99,99,99,99,99,99,
573
509
  117,117,117,117,117,117,117,117,
574
510
  117,117,117,117,117,117,117,117,
575
511
  117,117,117,117,117,117,117,117,
@@ -579,98 +515,117 @@ self._re_scanner_indicies = [
579
515
  117,117,117,117,117,117,117,117,
580
516
  117,117,117,117,117,117,117,117,
581
517
  117,117,117,117,117,117,117,117,
582
- 117,98,117,100,100,100,100,100,
583
518
  117,117,117,117,117,117,117,117,
584
519
  117,117,117,117,117,117,117,117,
585
- 117,117,100,117,101,101,116,116,
586
- 101,101,101,116,116,116,116,101,
587
- 101,116,101,101,101,101,101,101,
588
- 101,101,101,101,101,101,101,101,
589
- 101,101,116,101,101,101,101,101,
590
- 101,101,101,101,101,101,101,101,
591
- 101,101,101,101,101,101,101,101,
592
- 101,101,101,101,101,101,116,116,
593
- 116,116,101,101,101,101,101,101,
594
- 101,101,101,101,101,101,101,101,
595
- 101,101,101,101,101,101,101,101,
596
- 101,101,101,101,101,101,116,116,
597
- 116,101,116,119,102,121,120,10,
598
- 123,5,123,123,123,124,125,122,
599
- 123,123,123,123,123,123,123,123,
600
- 123,123,123,123,123,123,123,123,
601
- 8,123,126,10,8,123,123,123,
602
- 123,123,123,123,123,123,123,123,
603
- 123,123,123,123,123,123,123,123,
604
- 123,123,123,123,123,123,123,123,
605
- 123,123,123,123,123,123,123,123,
606
- 123,123,123,123,123,123,123,123,
607
- 123,123,123,123,123,123,123,123,
608
- 123,123,123,123,123,123,123,123,
609
- 123,123,123,123,8,123,122,123,
610
- 122,123,123,123,122,122,122,123,
611
- 123,123,123,123,123,123,123,123,
612
- 123,123,123,123,123,123,123,127,
613
- 123,122,122,122,123,123,123,123,
614
- 123,123,123,123,123,123,123,123,
615
- 123,123,123,123,123,123,123,123,
616
- 123,123,123,123,123,123,123,123,
617
- 123,123,123,123,123,123,123,123,
618
- 123,123,123,123,123,123,123,123,
619
- 123,123,123,123,123,123,123,123,
620
- 123,123,123,123,123,123,123,123,
621
- 123,123,123,122,123,129,128,128,
622
- 128,128,128,128,128,128,128,128,
623
- 128,128,128,128,128,128,128,128,
624
- 128,129,128,131,130,130,130,130,
625
- 130,130,130,130,130,130,130,130,
626
- 130,130,130,130,130,130,130,131,
627
- 130,133,132,132,132,132,132,132,
628
- 132,132,132,132,132,132,132,132,
629
- 132,132,132,132,132,133,132,135,
630
- 135,134,134,134,134,135,134,134,
631
- 134,136,134,134,134,134,134,134,
632
- 134,134,134,134,134,134,134,134,
633
- 135,134,134,134,134,134,134,134,
634
- 135,134,134,134,134,137,134,134,
635
- 134,138,134,134,134,134,134,134,
636
- 134,134,134,134,134,134,134,134,
637
- 135,134,140,139,139,139,41,41,
638
- 41,41,41,41,41,41,41,41,
639
- 139,141,43,43,43,141,43,43,
640
- 43,43,43,43,43,43,43,141,
641
- 141,43,43,43,141,141,43,43,
642
- 43,43,43,43,43,43,43,43,
643
- 43,141,43,43,43,141,43,43,
644
- 43,43,43,43,43,43,43,43,
645
- 141,43,43,43,141,43,142,43,
646
- 43,43,43,43,43,43,43,43,
647
- 43,43,43,43,43,43,43,43,
648
- 43,43,43,43,43,43,43,43,
649
- 43,43,43,43,43,43,142,43,
650
- 143,143,143,143,143,143,143,143,
651
- 143,143,143,143,143,143,143,143,
652
- 143,143,143,143,143,143,143,143,
653
- 143,143,143,143,143,143,144,144,
654
- 144,144,144,144,144,144,144,144,
655
- 144,144,144,144,144,144,145,145,
656
- 145,145,145,48,48,48,48,48,
520
+ 117,117,117,117,117,117,117,99,
521
+ 117,99,99,99,99,99,99,99,
522
+ 99,100,100,100,100,100,99,99,
523
+ 99,99,99,99,99,99,99,99,
524
+ 99,99,99,99,99,99,99,99,
525
+ 101,118,118,118,118,118,118,118,
526
+ 118,118,118,118,118,118,118,118,
527
+ 118,118,118,118,118,118,118,118,
528
+ 118,118,118,118,118,118,118,118,
529
+ 118,118,118,118,118,118,118,118,
530
+ 118,118,118,118,118,118,118,118,
531
+ 118,118,118,118,118,118,118,118,
532
+ 118,118,118,118,118,118,118,118,
533
+ 118,118,118,118,118,118,118,118,
534
+ 118,118,118,118,118,118,118,118,
535
+ 118,118,118,118,118,118,118,118,
536
+ 118,118,118,118,118,118,118,99,
537
+ 118,101,101,101,101,101,118,118,
538
+ 118,118,118,118,118,118,118,118,
539
+ 118,118,118,118,118,118,118,118,
540
+ 101,118,102,102,117,117,102,102,
541
+ 102,117,117,117,117,102,102,117,
542
+ 102,102,102,102,102,102,102,102,
543
+ 102,102,102,102,102,102,102,102,
544
+ 117,102,102,102,102,102,102,102,
545
+ 102,102,102,102,102,102,102,102,
546
+ 102,102,102,102,102,102,102,102,
547
+ 102,102,102,102,117,117,117,117,
548
+ 102,102,102,102,102,102,102,102,
549
+ 102,102,102,102,102,102,102,102,
550
+ 102,102,102,102,102,102,102,102,
551
+ 102,102,102,102,117,117,117,102,
552
+ 117,120,103,122,121,10,124,5,
553
+ 124,124,124,125,126,123,124,124,
554
+ 124,124,124,124,124,124,124,124,
555
+ 124,124,124,124,124,124,8,124,
556
+ 127,10,8,124,124,124,124,124,
557
+ 124,124,124,124,124,124,124,124,
558
+ 124,124,124,124,124,124,124,124,
559
+ 124,124,124,124,124,124,124,124,
560
+ 124,124,124,124,124,124,124,124,
561
+ 124,124,124,124,124,124,124,124,
562
+ 124,124,124,124,124,124,124,124,
563
+ 124,124,124,124,124,124,124,124,
564
+ 124,124,8,124,123,124,123,124,
565
+ 124,124,123,123,123,124,124,124,
566
+ 124,124,124,124,124,124,124,124,
567
+ 124,124,124,124,124,128,124,123,
568
+ 123,123,124,124,124,124,124,124,
569
+ 124,124,124,124,124,124,124,124,
570
+ 124,124,124,124,124,124,124,124,
571
+ 124,124,124,124,124,124,124,124,
572
+ 124,124,124,124,124,124,124,124,
573
+ 124,124,124,124,124,124,124,124,
574
+ 124,124,124,124,124,124,124,124,
575
+ 124,124,124,124,124,124,124,124,
576
+ 124,123,124,130,129,129,129,129,
577
+ 129,129,129,129,129,129,129,129,
578
+ 129,129,129,129,129,129,129,130,
579
+ 129,132,131,131,131,131,131,131,
580
+ 131,131,131,131,131,131,131,131,
581
+ 131,131,131,131,131,132,131,134,
582
+ 133,133,133,133,133,133,133,133,
583
+ 133,133,133,133,133,133,133,133,
584
+ 133,133,133,134,133,136,136,135,
585
+ 135,135,135,136,135,135,135,137,
586
+ 135,135,135,135,135,135,135,135,
587
+ 135,135,135,135,135,135,136,135,
588
+ 135,135,135,135,135,135,136,135,
589
+ 135,135,135,138,135,135,135,139,
590
+ 135,135,135,135,135,135,135,135,
591
+ 135,135,135,135,135,135,136,135,
592
+ 141,140,140,140,41,41,41,41,
593
+ 41,41,41,41,41,41,140,142,
594
+ 64,64,64,142,64,64,64,64,
595
+ 64,64,64,64,64,142,142,64,
596
+ 64,64,142,142,64,64,64,64,
597
+ 64,64,64,64,64,64,64,142,
598
+ 64,64,64,142,64,64,64,64,
599
+ 64,64,64,64,64,64,142,64,
600
+ 64,64,142,64,143,64,64,64,
601
+ 64,64,64,64,64,64,64,64,
602
+ 64,64,64,64,64,64,64,64,
603
+ 64,64,64,64,64,64,64,64,
604
+ 64,64,64,64,143,64,145,144,
605
+ 146,146,146,146,146,146,146,146,
606
+ 146,146,146,146,146,146,146,146,
607
+ 146,146,146,146,146,146,146,146,
608
+ 146,146,146,146,146,146,147,147,
609
+ 147,147,147,147,147,147,147,147,
610
+ 147,147,147,147,147,147,148,148,
611
+ 148,148,148,48,48,48,48,48,
657
612
  48,48,48,48,48,48,48,48,
658
613
  48,48,48,48,48,48,48,48,
659
614
  48,48,48,48,48,48,48,48,
660
615
  48,48,48,48,48,48,48,48,
661
616
  48,48,48,48,48,48,48,48,
662
- 48,48,146,48,147,48,146,146,
663
- 146,146,48,148,146,48,48,48,
617
+ 48,48,149,48,150,48,149,149,
618
+ 149,149,48,151,149,48,48,48,
664
619
  48,48,48,48,48,48,48,48,
665
- 48,48,48,48,48,146,48,48,
620
+ 48,48,48,48,48,149,48,48,
666
621
  48,48,48,48,48,48,48,48,
667
622
  48,48,48,48,48,48,48,48,
668
623
  48,48,48,48,48,48,48,48,
669
- 48,149,150,151,152,48,48,48,
624
+ 48,152,153,154,155,48,48,48,
670
625
  48,48,48,48,48,48,48,48,
671
626
  48,48,48,48,48,48,48,48,
672
627
  48,48,48,48,48,48,48,48,
673
- 48,146,146,146,48,48,48,48,
628
+ 48,149,149,149,48,48,48,48,
674
629
  48,48,48,48,48,48,48,48,
675
630
  48,48,48,48,48,48,48,48,
676
631
  48,48,48,48,48,48,48,48,
@@ -678,7 +633,7 @@ self._re_scanner_indicies = [
678
633
  48,48,48,48,48,48,48,48,
679
634
  48,48,48,48,48,48,48,48,
680
635
  48,48,48,48,48,48,48,48,
681
- 48,48,48,48,48,153,49,49,
636
+ 48,48,48,48,48,156,49,49,
682
637
  49,49,49,49,49,49,49,49,
683
638
  49,49,49,49,49,49,49,49,
684
639
  49,49,49,49,49,49,49,49,
@@ -686,29 +641,29 @@ self._re_scanner_indicies = [
686
641
  49,49,49,49,49,49,49,49,
687
642
  49,49,49,49,49,49,49,49,
688
643
  49,49,49,49,49,49,49,49,
689
- 49,49,49,49,49,49,153,154,
690
- 154,154,154,154,154,154,154,154,
691
- 154,154,154,154,154,154,154,154,
692
- 154,154,154,154,154,154,154,154,
693
- 154,154,154,154,154,154,154,154,
694
- 154,154,154,154,154,154,154,154,
695
- 154,154,154,154,154,154,154,154,
696
- 154,154,154,154,154,154,154,154,
697
- 154,154,154,154,154,154,154,153,
698
- 155,153,157,156,156,156,156,156,
699
- 156,156,156,156,156,156,156,156,
700
- 156,156,156,156,156,156,156,156,
701
- 156,156,156,156,156,156,156,156,
702
- 156,156,156,156,156,156,156,156,
703
- 156,156,156,156,156,156,156,156,
704
- 156,156,156,156,156,156,156,156,
705
- 156,158,156,53,160,161,161,161,
706
- 161,161,161,161,161,161,161,161,
707
- 161,161,161,161,161,161,161,161,
708
- 161,161,161,161,161,161,161,161,
709
- 161,161,161,162,162,162,162,162,
710
- 162,162,162,162,162,162,162,162,
711
- 162,162,162,163,163,163,163,163,
644
+ 49,49,49,49,49,49,156,157,
645
+ 157,157,157,157,157,157,157,157,
646
+ 157,157,157,157,157,157,157,157,
647
+ 157,157,157,157,157,157,157,157,
648
+ 157,157,157,157,157,157,157,157,
649
+ 157,157,157,157,157,157,157,157,
650
+ 157,157,157,157,157,157,157,157,
651
+ 157,157,157,157,157,157,157,157,
652
+ 157,157,157,157,157,157,157,156,
653
+ 158,156,160,159,159,159,159,159,
654
+ 159,159,159,159,159,159,159,159,
655
+ 159,159,159,159,159,159,159,159,
656
+ 159,159,159,159,159,159,159,159,
657
+ 159,159,159,159,159,159,159,159,
658
+ 159,159,159,159,159,159,159,159,
659
+ 159,159,159,159,159,159,159,159,
660
+ 159,161,159,53,163,164,164,164,
661
+ 164,164,164,164,164,164,164,164,
662
+ 164,164,164,164,164,164,164,164,
663
+ 164,164,164,164,164,164,164,164,
664
+ 164,164,164,165,165,165,165,165,
665
+ 165,165,165,165,165,165,165,165,
666
+ 165,165,165,166,166,166,166,166,
712
667
  58,58,58,58,58,58,58,58,
713
668
  58,58,58,58,58,58,58,58,
714
669
  58,58,58,58,58,58,58,58,
@@ -716,16 +671,16 @@ self._re_scanner_indicies = [
716
671
  58,58,58,58,58,58,58,58,
717
672
  58,58,58,58,58,58,58,58,
718
673
  58,58,58,58,58,58,58,58,
719
- 58,58,58,164,164,164,164,164,
720
- 164,164,164,58,58,58,58,58,
721
- 58,58,58,58,58,58,165,165,
722
- 58,58,58,165,58,58,58,58,
723
- 165,58,58,165,58,58,165,58,
724
- 58,58,165,58,58,58,165,165,
725
- 165,58,58,58,165,165,165,165,
726
- 165,165,58,165,58,58,58,58,
727
- 58,165,58,165,58,165,165,165,
728
- 165,165,165,165,58,58,58,58,
674
+ 58,58,58,167,167,167,167,167,
675
+ 167,167,167,58,58,58,58,58,
676
+ 58,58,58,58,58,58,168,168,
677
+ 58,58,58,168,58,58,58,58,
678
+ 168,58,58,168,58,58,168,58,
679
+ 58,58,168,58,58,58,168,168,
680
+ 168,58,58,58,168,168,168,168,
681
+ 168,168,58,168,58,58,58,58,
682
+ 58,168,58,168,58,168,168,168,
683
+ 168,168,168,168,58,58,58,58,
729
684
  58,58,58,58,58,58,58,58,
730
685
  58,58,58,58,58,58,58,58,
731
686
  58,58,58,58,58,58,58,58,
@@ -733,7 +688,7 @@ self._re_scanner_indicies = [
733
688
  58,58,58,58,58,58,58,58,
734
689
  58,58,58,58,58,58,58,58,
735
690
  58,58,58,58,58,58,58,58,
736
- 58,58,58,58,58,166,59,59,
691
+ 58,58,58,58,58,169,59,59,
737
692
  59,59,59,59,59,59,59,59,
738
693
  59,59,59,59,59,59,59,59,
739
694
  59,59,59,59,59,59,59,59,
@@ -741,41 +696,41 @@ self._re_scanner_indicies = [
741
696
  59,59,59,59,59,59,59,59,
742
697
  59,59,59,59,59,59,59,59,
743
698
  59,59,59,59,59,59,59,59,
744
- 59,59,59,59,59,59,166,167,
745
- 167,167,167,167,167,167,167,167,
746
- 167,167,167,167,167,167,167,167,
747
- 167,167,167,167,167,167,167,167,
748
- 167,167,167,167,167,167,167,167,
749
- 167,167,167,167,167,167,167,167,
750
- 167,167,167,167,167,167,167,167,
751
- 167,167,167,167,167,167,167,167,
752
- 167,167,167,167,167,167,167,166,
753
- 169,169,169,169,169,169,169,169,
754
- 168,170,170,170,170,170,170,170,
755
- 170,168,171,171,171,171,171,171,
756
- 171,171,171,171,171,171,171,171,
757
- 171,171,171,171,171,171,171,171,
758
- 171,171,171,171,171,171,171,171,
759
- 172,172,172,172,172,172,172,172,
699
+ 59,59,59,59,59,59,169,170,
700
+ 170,170,170,170,170,170,170,170,
701
+ 170,170,170,170,170,170,170,170,
702
+ 170,170,170,170,170,170,170,170,
703
+ 170,170,170,170,170,170,170,170,
704
+ 170,170,170,170,170,170,170,170,
705
+ 170,170,170,170,170,170,170,170,
706
+ 170,170,170,170,170,170,170,170,
707
+ 170,170,170,170,170,170,170,169,
760
708
  172,172,172,172,172,172,172,172,
761
- 173,173,173,173,173,61,61,61,
709
+ 171,173,173,173,173,173,173,173,
710
+ 173,171,174,174,174,174,174,174,
711
+ 174,174,174,174,174,174,174,174,
712
+ 174,174,174,174,174,174,174,174,
713
+ 174,174,174,174,174,174,174,174,
714
+ 175,175,175,175,175,175,175,175,
715
+ 175,175,175,175,175,175,175,175,
716
+ 176,176,176,176,176,61,61,61,
762
717
  61,61,61,61,61,61,61,61,
763
718
  61,61,61,61,61,61,61,61,
764
719
  61,61,61,61,61,61,61,61,
765
720
  61,61,61,61,61,61,61,61,
766
721
  61,61,61,61,61,61,61,61,
767
- 61,61,61,61,174,61,61,61,
768
- 174,174,174,174,61,61,174,61,
769
- 175,176,176,176,176,176,176,176,
770
- 177,177,61,61,61,61,61,174,
771
- 61,43,43,178,179,61,61,43,
772
- 179,61,61,43,61,180,61,61,
773
- 181,61,179,179,61,61,61,179,
774
- 179,61,43,174,174,174,174,61,
775
- 61,182,182,63,179,182,182,61,
776
- 179,61,61,61,61,61,182,61,
777
- 181,61,182,179,182,183,182,179,
778
- 184,61,43,174,174,174,61,61,
722
+ 61,61,61,61,177,61,61,61,
723
+ 177,177,177,177,61,61,177,61,
724
+ 178,179,179,179,179,179,179,179,
725
+ 180,180,61,61,61,61,61,177,
726
+ 61,64,64,181,182,61,61,64,
727
+ 182,61,61,64,61,183,61,61,
728
+ 184,61,182,182,61,61,61,182,
729
+ 182,61,64,177,177,177,177,61,
730
+ 61,185,185,63,182,185,185,61,
731
+ 182,61,61,61,61,61,185,61,
732
+ 184,61,185,182,185,186,185,182,
733
+ 187,61,64,177,177,177,61,61,
779
734
  61,61,61,61,61,61,61,61,
780
735
  61,61,61,61,61,61,61,61,
781
736
  61,61,61,61,61,61,61,61,
@@ -783,7 +738,7 @@ self._re_scanner_indicies = [
783
738
  61,61,61,61,61,61,61,61,
784
739
  61,61,61,61,61,61,61,61,
785
740
  61,61,61,61,61,61,61,61,
786
- 61,61,61,61,61,61,61,185,
741
+ 61,61,61,61,61,61,61,188,
787
742
  62,62,62,62,62,62,62,62,
788
743
  62,62,62,62,62,62,62,62,
789
744
  62,62,62,62,62,62,62,62,
@@ -792,130 +747,118 @@ self._re_scanner_indicies = [
792
747
  62,62,62,62,62,62,62,62,
793
748
  62,62,62,62,62,62,62,62,
794
749
  62,62,62,62,62,62,62,62,
795
- 185,186,186,186,186,186,186,186,
796
- 186,186,186,186,186,186,186,186,
797
- 186,186,186,186,186,186,186,186,
798
- 186,186,186,186,186,186,186,186,
799
- 186,186,186,186,186,186,186,186,
800
- 186,186,186,186,186,186,186,186,
801
- 186,186,186,186,186,186,186,186,
802
- 186,186,186,186,186,186,186,186,
803
- 186,185,188,188,188,188,188,188,
804
- 188,188,187,189,189,189,189,189,
805
- 189,189,189,187,191,191,191,191,
806
- 191,191,191,191,192,192,190,192,
807
- 192,192,192,192,192,192,192,192,
808
- 192,190,192,192,192,192,192,192,
809
- 192,192,192,192,190,192,192,192,
810
- 192,192,192,192,192,192,192,190,
811
- 194,64,196,195,64,198,69,69,
812
- 69,69,69,69,69,69,69,69,
813
- 69,69,69,69,69,69,69,69,
814
- 69,69,69,69,69,69,69,69,
815
- 69,69,69,69,69,199,69,201,
816
- 200,69,72,69,203,203,203,203,
817
- 203,203,203,203,203,203,202,202,
818
- 202,202,202,202,202,203,203,203,
819
- 203,203,203,202,202,202,202,202,
820
- 202,202,202,202,202,202,202,202,
821
- 202,202,202,202,202,202,202,202,
822
- 202,202,202,202,202,203,203,203,
823
- 203,203,203,202,90,90,90,90,
824
- 90,90,90,90,90,90,202,202,
825
- 202,202,202,202,202,90,90,90,
826
- 90,90,90,202,202,202,202,202,
827
- 202,202,202,202,202,202,202,202,
828
- 202,202,202,202,202,202,202,202,
829
- 202,202,202,202,202,90,90,90,
830
- 90,90,90,202,205,204,207,206,
831
- 206,206,206,206,208,206,206,209,
832
- 209,209,209,209,209,209,209,209,
833
- 209,206,206,210,206,93,92,92,
834
- 92,92,92,211,92,92,211,211,
835
- 211,211,211,211,211,211,211,211,
836
- 92,95,95,95,95,95,95,95,
837
- 95,95,95,211,94,211,211,211,
838
- 211,211,211,95,95,95,95,95,
839
- 95,95,95,95,95,211,211,96,
840
- 96,96,96,96,96,96,96,96,
841
- 96,96,211,96,96,211,211,211,
842
- 211,211,211,211,211,211,211,96,
843
- 96,96,211,93,96,0
844
- ]
845
-
846
- class << self
847
- attr_accessor :_re_scanner_trans_targs
848
- private :_re_scanner_trans_targs, :_re_scanner_trans_targs=
849
- end
850
- self._re_scanner_trans_targs = [
851
- 76,77,1,2,76,4,76,6,
852
- 76,8,76,76,10,16,11,76,
750
+ 188,189,189,189,189,189,189,189,
751
+ 189,189,189,189,189,189,189,189,
752
+ 189,189,189,189,189,189,189,189,
753
+ 189,189,189,189,189,189,189,189,
754
+ 189,189,189,189,189,189,189,189,
755
+ 189,189,189,189,189,189,189,189,
756
+ 189,189,189,189,189,189,189,189,
757
+ 189,189,189,189,189,189,189,189,
758
+ 189,188,191,191,191,191,191,191,
759
+ 191,191,190,192,192,192,192,192,
760
+ 192,192,192,190,194,194,194,194,
761
+ 194,194,194,194,195,195,193,195,
762
+ 195,195,195,195,195,195,195,195,
763
+ 195,193,195,195,195,195,195,195,
764
+ 195,195,195,195,193,195,195,195,
765
+ 195,195,195,195,195,195,195,193,
766
+ 197,65,199,198,65,201,70,70,
767
+ 70,70,70,70,70,70,70,70,
768
+ 70,70,70,70,70,70,70,70,
769
+ 70,70,70,70,70,70,70,70,
770
+ 70,70,70,70,70,202,70,204,
771
+ 203,70,73,70,206,206,206,206,
772
+ 206,206,206,206,206,206,205,205,
773
+ 205,205,205,205,205,206,206,206,
774
+ 206,206,206,205,205,205,205,205,
775
+ 205,205,205,205,205,205,205,205,
776
+ 205,205,205,205,205,205,205,205,
777
+ 205,205,205,205,205,206,206,206,
778
+ 206,206,206,205,91,91,91,91,
779
+ 91,91,91,91,91,91,205,205,
780
+ 205,205,205,205,205,91,91,91,
781
+ 91,91,91,205,205,205,205,205,
782
+ 205,205,205,205,205,205,205,205,
783
+ 205,205,205,205,205,205,205,205,
784
+ 205,205,205,205,205,91,91,91,
785
+ 91,91,91,205,208,207,210,209,
786
+ 209,209,209,209,211,209,209,212,
787
+ 212,212,212,212,212,212,212,212,
788
+ 212,209,209,213,209,94,93,93,
789
+ 93,93,93,214,93,93,214,214,
790
+ 214,214,214,214,214,214,214,214,
791
+ 93,96,96,96,96,96,96,96,
792
+ 96,96,96,214,95,214,214,214,
793
+ 214,214,214,96,96,96,96,96,
794
+ 96,96,96,96,96,214,214,97,
795
+ 97,97,97,97,97,97,97,97,
796
+ 97,97,214,97,97,214,214,214,
797
+ 214,214,214,214,214,214,214,97,
798
+ 97,97,214,94,97,0
799
+ ].freeze
800
+
801
+ RE_SCANNER_TRANS_TARGS = [
802
+ 75,76,1,2,75,4,75,6,
803
+ 75,8,75,75,10,16,11,75,
853
804
  12,13,14,15,17,18,19,20,
854
- 21,23,29,24,76,25,26,27,
855
- 28,30,31,32,33,34,76,36,
856
- 76,37,39,0,40,41,92,93,
857
- 93,42,93,93,93,45,46,93,
858
- 93,100,100,47,106,106,49,52,
859
- 106,116,106,118,55,106,119,106,
860
- 121,58,61,59,60,106,62,63,
861
- 64,65,66,67,106,123,124,106,
862
- 70,71,125,126,72,73,126,74,
863
- 75,3,78,79,80,81,82,76,
864
- 83,76,86,87,76,88,76,89,
865
- 76,76,90,76,76,76,76,76,
866
- 76,84,76,85,5,76,7,76,
867
- 76,76,76,76,76,76,76,76,
868
- 76,9,22,76,35,91,38,94,
869
- 95,96,93,97,98,99,93,93,
870
- 93,93,43,93,93,44,93,93,
871
- 93,101,102,103,104,100,100,48,
872
- 100,105,100,107,108,109,106,110,
873
- 112,115,51,106,54,106,106,57,
874
- 68,106,50,106,111,106,106,113,
875
- 114,106,117,106,53,106,120,122,
876
- 106,56,106,106,106,69,126,127,
877
- 128,129,130,126
878
- ]
879
-
880
- class << self
881
- attr_accessor :_re_scanner_trans_actions
882
- private :_re_scanner_trans_actions, :_re_scanner_trans_actions=
883
- end
884
- self._re_scanner_trans_actions = [
805
+ 21,23,29,24,75,25,26,27,
806
+ 28,30,31,32,33,34,75,36,
807
+ 75,37,91,91,39,40,91,93,
808
+ 93,41,93,93,93,44,45,93,
809
+ 93,100,100,46,106,106,48,51,
810
+ 0,106,116,106,118,54,106,119,
811
+ 106,121,57,60,58,59,106,61,
812
+ 62,63,64,65,66,106,123,124,
813
+ 106,69,70,125,126,71,72,126,
814
+ 73,74,3,77,78,79,80,81,
815
+ 75,82,75,85,86,75,87,75,
816
+ 88,75,75,89,75,75,75,75,
817
+ 75,75,83,75,84,5,75,7,
818
+ 75,75,75,75,75,75,75,75,
819
+ 75,75,9,22,75,35,90,92,
820
+ 91,38,94,95,96,93,97,98,
821
+ 99,93,93,93,93,42,93,93,
822
+ 43,93,93,93,101,102,103,104,
823
+ 100,100,47,100,105,100,107,108,
824
+ 109,106,110,112,115,50,106,53,
825
+ 106,106,56,67,106,49,106,111,
826
+ 106,106,113,114,106,117,106,52,
827
+ 106,120,122,106,55,106,106,106,
828
+ 68,126,127,128,129,130,126
829
+ ].freeze
830
+
831
+ RE_SCANNER_TRANS_ACTIONS = [
885
832
  1,2,0,0,3,0,4,0,
886
833
  5,0,6,7,0,0,0,8,
887
834
  0,0,0,0,0,0,0,0,
888
835
  0,0,0,0,9,0,0,0,
889
836
  0,0,0,0,0,0,10,0,
890
- 11,0,0,0,0,0,13,14,
891
- 15,0,16,17,18,0,0,19,
892
- 20,21,22,0,23,24,0,0,
893
- 26,0,27,0,0,28,0,29,
894
- 0,0,0,0,0,30,0,0,
895
- 0,0,0,0,31,0,0,32,
896
- 0,0,33,34,0,0,35,0,
897
- 0,0,0,0,0,0,0,38,
898
- 39,40,0,0,41,0,42,33,
899
- 43,44,33,45,46,47,48,49,
900
- 50,33,51,0,0,52,0,53,
837
+ 11,0,12,13,0,0,14,15,
838
+ 16,0,17,18,19,0,0,20,
839
+ 21,22,23,0,24,25,0,0,
840
+ 0,27,0,28,0,0,29,0,
841
+ 30,0,0,0,0,0,31,0,
842
+ 0,0,0,0,0,32,0,0,
843
+ 33,0,0,34,35,0,0,36,
844
+ 0,0,0,0,0,0,0,0,
845
+ 39,40,41,0,0,42,0,43,
846
+ 34,44,45,34,46,47,48,49,
847
+ 50,51,34,52,0,0,53,0,
901
848
  54,55,56,57,58,59,60,61,
902
- 62,0,0,63,0,65,0,0,
903
- 33,33,66,0,33,67,68,69,
904
- 70,71,0,72,73,0,74,75,
905
- 76,0,33,33,0,77,78,0,
906
- 79,0,80,0,33,33,81,0,
907
- 0,0,0,82,0,83,84,0,
908
- 0,85,0,86,0,87,88,0,
909
- 0,89,33,90,0,91,33,0,
910
- 92,0,93,94,95,0,96,33,
911
- 33,33,33,97
912
- ]
913
-
914
- class << self
915
- attr_accessor :_re_scanner_to_state_actions
916
- private :_re_scanner_to_state_actions, :_re_scanner_to_state_actions=
917
- end
918
- self._re_scanner_to_state_actions = [
849
+ 62,63,0,0,64,0,66,34,
850
+ 67,0,0,34,34,68,0,34,
851
+ 69,70,71,72,73,0,74,75,
852
+ 0,76,77,78,0,34,34,0,
853
+ 79,80,0,81,0,82,0,34,
854
+ 34,83,0,0,0,0,84,0,
855
+ 85,86,0,0,87,0,88,0,
856
+ 89,90,0,0,91,34,92,0,
857
+ 93,34,0,94,0,95,96,97,
858
+ 0,98,34,34,34,34,99
859
+ ].freeze
860
+
861
+ RE_SCANNER_TO_STATE_ACTIONS = [
919
862
  0,0,0,0,0,0,0,0,
920
863
  0,0,0,0,0,0,0,0,
921
864
  0,0,0,0,0,0,0,0,
@@ -925,21 +868,17 @@ self._re_scanner_to_state_actions = [
925
868
  0,0,0,0,0,0,0,0,
926
869
  0,0,0,0,0,0,0,0,
927
870
  0,0,0,0,0,0,0,0,
928
- 0,0,0,0,36,0,0,0,
871
+ 0,0,0,37,0,0,0,0,
929
872
  0,0,0,0,0,0,0,0,
930
- 0,0,0,64,64,64,0,0,
931
- 0,0,0,0,64,0,0,0,
932
- 0,0,64,0,0,0,0,0,
873
+ 0,0,65,65,0,65,0,0,
874
+ 0,0,0,0,65,0,0,0,
875
+ 0,0,65,0,0,0,0,0,
933
876
  0,0,0,0,0,0,0,0,
934
- 0,0,0,0,0,0,64,0,
877
+ 0,0,0,0,0,0,65,0,
935
878
  0,0,0
936
- ]
879
+ ].freeze
937
880
 
938
- class << self
939
- attr_accessor :_re_scanner_from_state_actions
940
- private :_re_scanner_from_state_actions, :_re_scanner_from_state_actions=
941
- end
942
- self._re_scanner_from_state_actions = [
881
+ RE_SCANNER_FROM_STATE_ACTIONS = [
943
882
  0,0,0,0,0,0,0,0,
944
883
  0,0,0,0,0,0,0,0,
945
884
  0,0,0,0,0,0,0,0,
@@ -949,110 +888,106 @@ self._re_scanner_from_state_actions = [
949
888
  0,0,0,0,0,0,0,0,
950
889
  0,0,0,0,0,0,0,0,
951
890
  0,0,0,0,0,0,0,0,
952
- 0,0,0,0,37,0,0,0,
891
+ 0,0,0,38,0,0,0,0,
953
892
  0,0,0,0,0,0,0,0,
954
- 0,0,0,37,37,37,0,0,
955
- 0,0,0,0,37,0,0,0,
956
- 0,0,37,0,0,0,0,0,
893
+ 0,0,38,38,0,38,0,0,
894
+ 0,0,0,0,38,0,0,0,
895
+ 0,0,38,0,0,0,0,0,
957
896
  0,0,0,0,0,0,0,0,
958
- 0,0,0,0,0,0,37,0,
897
+ 0,0,0,0,0,0,38,0,
959
898
  0,0,0
960
- ]
899
+ ].freeze
961
900
 
962
- class << self
963
- attr_accessor :_re_scanner_eof_actions
964
- private :_re_scanner_eof_actions, :_re_scanner_eof_actions=
965
- end
966
- self._re_scanner_eof_actions = [
901
+ RE_SCANNER_EOF_ACTIONS = [
967
902
  0,0,0,0,0,0,0,0,
968
903
  0,0,0,0,0,0,0,0,
969
904
  0,0,0,0,0,0,0,0,
970
905
  0,0,0,0,0,0,0,0,
971
- 0,0,0,0,0,0,12,12,
972
- 12,12,0,0,0,0,0,0,
973
- 0,0,0,25,25,0,25,25,
974
- 0,25,25,25,25,25,25,25,
975
- 25,25,25,25,25,0,0,0,
976
906
  0,0,0,0,0,0,0,0,
977
907
  0,0,0,0,0,0,0,0,
978
- 0,0,0,0,0,25,0,0,
908
+ 0,0,26,26,0,26,26,0,
909
+ 26,26,26,26,26,26,26,26,
910
+ 26,26,26,26,0,0,0,0,
979
911
  0,0,0,0,0,0,0,0,
980
- 0,0,25,0,0,0,0,0,
912
+ 0,0,0,0,0,0,0,0,
913
+ 0,0,0,0,0,26,0,0,
914
+ 0,0,0,0,0,0,0,0,
915
+ 0,0,26,0,0,0,0,0,
981
916
  0,0,0,0,0,0,0,0,
982
917
  0,0,0,0,0,0,0,0,
983
918
  0,0,0
984
- ]
919
+ ].freeze
985
920
 
986
- class << self
987
- attr_accessor :_re_scanner_eof_trans
988
- private :_re_scanner_eof_trans, :_re_scanner_eof_trans=
989
- end
990
- self._re_scanner_eof_trans = [
921
+ RE_SCANNER_EOF_TRANS = [
991
922
  0,1,1,1,5,5,5,5,
992
923
  5,12,12,12,12,12,12,12,
993
924
  12,12,12,12,12,12,12,12,
994
925
  12,12,12,12,12,12,12,12,
995
- 12,12,12,39,39,39,0,0,
996
- 0,0,48,48,51,53,53,58,
997
- 58,61,61,0,0,67,0,0,
998
- 72,0,0,0,0,0,0,0,
999
- 0,0,0,0,0,88,88,88,
1000
- 92,92,92,92,0,117,117,118,
1001
- 118,117,119,121,123,123,129,131,
1002
- 133,135,140,0,0,0,154,154,
1003
- 154,154,157,160,0,167,167,167,
1004
- 169,169,0,186,186,186,188,188,
1005
- 191,191,191,191,194,194,194,198,
1006
- 198,198,198,203,203,205,0,212,
1007
- 212,212,212
1008
- ]
1009
-
1010
- class << self
1011
- attr_accessor :re_scanner_start
1012
- end
1013
- self.re_scanner_start = 76;
1014
- class << self
1015
- attr_accessor :re_scanner_first_final
1016
- end
1017
- self.re_scanner_first_final = 76;
1018
- class << self
1019
- attr_accessor :re_scanner_error
1020
- end
1021
- self.re_scanner_error = 0;
926
+ 12,12,12,39,39,39,43,43,
927
+ 43,48,48,51,53,53,58,58,
928
+ 61,61,0,0,68,0,0,73,
929
+ 0,0,0,0,0,0,0,0,
930
+ 0,0,0,0,89,89,89,93,
931
+ 93,93,93,0,118,118,119,119,
932
+ 118,120,122,124,124,130,132,134,
933
+ 136,141,0,0,145,0,157,157,
934
+ 157,157,160,163,0,170,170,170,
935
+ 172,172,0,189,189,189,191,191,
936
+ 194,194,194,194,197,197,197,201,
937
+ 201,201,201,206,206,208,0,215,
938
+ 215,215,215
939
+ ].freeze
940
+
941
+ RE_SCANNER_START = 75.freeze
942
+ RE_SCANNER_FIRST_FINAL = 75.freeze
943
+ RE_SCANNER_ERROR = 0.freeze
944
+
945
+ RE_SCANNER_EN_CHAR_TYPE = 90.freeze
946
+ RE_SCANNER_EN_UNICODE_PROPERTY = 91.freeze
947
+ RE_SCANNER_EN_CHARACTER_SET = 93.freeze
948
+ RE_SCANNER_EN_SET_ESCAPE_SEQUENCE = 100.freeze
949
+ RE_SCANNER_EN_ESCAPE_SEQUENCE = 106.freeze
950
+ RE_SCANNER_EN_CONDITIONAL_EXPRESSION = 126.freeze
951
+ RE_SCANNER_EN_MAIN = 75.freeze
1022
952
 
1023
- class << self
1024
- attr_accessor :re_scanner_en_char_type
1025
- end
1026
- self.re_scanner_en_char_type = 91;
1027
- class << self
1028
- attr_accessor :re_scanner_en_unicode_property
1029
- end
1030
- self.re_scanner_en_unicode_property = 92;
1031
- class << self
1032
- attr_accessor :re_scanner_en_character_set
1033
- end
1034
- self.re_scanner_en_character_set = 93;
1035
- class << self
1036
- attr_accessor :re_scanner_en_set_escape_sequence
1037
- end
1038
- self.re_scanner_en_set_escape_sequence = 100;
1039
- class << self
1040
- attr_accessor :re_scanner_en_escape_sequence
1041
- end
1042
- self.re_scanner_en_escape_sequence = 106;
1043
- class << self
1044
- attr_accessor :re_scanner_en_conditional_expression
1045
- end
1046
- self.re_scanner_en_conditional_expression = 126;
1047
- class << self
1048
- attr_accessor :re_scanner_en_main
1049
- end
1050
- self.re_scanner_en_main = 76;
953
+ # Scans the given regular expression text, or Regexp object and collects the
954
+ # emitted token into an array that gets returned at the end. If a block is
955
+ # given, it gets called for each emitted token.
956
+ #
957
+ # This method may raise errors if a syntax error is encountered.
958
+ # --------------------------------------------------------------------------
959
+ def self.scan(input_object, options: nil, collect_tokens: true, &block)
960
+ new.scan(input_object, options: options, collect_tokens: collect_tokens, &block)
961
+ end
962
+
963
+ def scan(input_object, options: nil, collect_tokens: true, &block)
964
+ self.collect_tokens = collect_tokens
965
+ self.literal_run = nil
966
+ stack = []
967
+
968
+ input = input_object.is_a?(Regexp) ? input_object.source : input_object
969
+ self.free_spacing = free_spacing?(input_object, options)
970
+ self.regexp_encoding = extract_encoding(input_object, options)
971
+ self.spacing_stack = [{:free_spacing => free_spacing, :depth => 0}]
972
+
973
+ # Keep token text stable if a callback mutates the caller's String.
974
+ source = input.dup.freeze
975
+ data = source.unpack("c*")
976
+ eof = data.length
977
+
978
+ self.tokens = []
979
+ self.block = block
980
+
981
+ self.set_depth = 0
982
+ self.group_depth = 0
983
+ self.capturing_group_count = 0
984
+ self.conditional_stack = []
985
+ self.char_pos = 0
1051
986
 
1052
987
  begin
1053
988
  p ||= 0
1054
989
  pe ||= data.length
1055
- cs = re_scanner_start
990
+ cs = RE_SCANNER_START
1056
991
  top = 0
1057
992
  ts = nil
1058
993
  te = nil
@@ -1080,41 +1015,41 @@ begin
1080
1015
  end
1081
1016
  end
1082
1017
  if _goto_level <= _resume
1083
- case _re_scanner_from_state_actions[cs]
1084
- when 37
1018
+ case RE_SCANNER_FROM_STATE_ACTIONS[cs]
1019
+ when 38
1085
1020
  begin
1086
1021
  ts = p
1087
1022
  end
1088
1023
  end
1089
1024
  _keys = cs << 1
1090
- _inds = _re_scanner_index_offsets[cs]
1091
- _slen = _re_scanner_key_spans[cs]
1025
+ _inds = RE_SCANNER_INDEX_OFFSETS[cs]
1026
+ _slen = RE_SCANNER_KEY_SPANS[cs]
1092
1027
  _wide = data[p].ord
1093
1028
  _trans = if ( _slen > 0 &&
1094
- _re_scanner_trans_keys[_keys] <= _wide &&
1095
- _wide <= _re_scanner_trans_keys[_keys + 1]
1029
+ RE_SCANNER_TRANS_KEYS[_keys] <= _wide &&
1030
+ _wide <= RE_SCANNER_TRANS_KEYS[_keys + 1]
1096
1031
  )
1097
- _re_scanner_indicies[ _inds + _wide - _re_scanner_trans_keys[_keys] ]
1032
+ RE_SCANNER_INDICIES[ _inds + _wide - RE_SCANNER_TRANS_KEYS[_keys] ]
1098
1033
  else
1099
- _re_scanner_indicies[ _inds + _slen ]
1034
+ RE_SCANNER_INDICIES[ _inds + _slen ]
1100
1035
  end
1101
1036
  end
1102
1037
  if _goto_level <= _eof_trans
1103
- cs = _re_scanner_trans_targs[_trans]
1104
- if _re_scanner_trans_actions[_trans] != 0
1105
- case _re_scanner_trans_actions[_trans]
1106
- when 39
1038
+ cs = RE_SCANNER_TRANS_TARGS[_trans]
1039
+ if RE_SCANNER_TRANS_ACTIONS[_trans] != 0
1040
+ case RE_SCANNER_TRANS_ACTIONS[_trans]
1041
+ when 40
1107
1042
  begin
1108
1043
  self.group_depth = group_depth + 1 end
1109
- when 33
1044
+ when 34
1110
1045
  begin
1111
1046
  te = p+1
1112
1047
  end
1113
- when 65
1048
+ when 66
1114
1049
  begin
1115
1050
  te = p+1
1116
1051
  begin
1117
- case text = copy(data, ts-1,te)
1052
+ case text = copy(source, ts-1,te)
1118
1053
  when '\d'; emit(:type, :digit, text)
1119
1054
  when '\D'; emit(:type, :nondigit, text)
1120
1055
  when '\h'; emit(:type, :hex, text)
@@ -1135,11 +1070,11 @@ te = p+1
1135
1070
 
1136
1071
  end
1137
1072
  end
1138
- when 13
1073
+ when 14
1139
1074
  begin
1140
1075
  te = p+1
1141
1076
  begin
1142
- text = copy(data, ts-1,te)
1077
+ text = copy(source, ts-1,te)
1143
1078
  type = (text[1] == 'P') ^ (text[3] == '^') ? :nonproperty : :property
1144
1079
 
1145
1080
  name = text[3..-2].gsub(/[\^\s_\-]/, '').downcase
@@ -1158,7 +1093,35 @@ te = p+1
1158
1093
 
1159
1094
  end
1160
1095
  end
1161
- when 17
1096
+ when 67
1097
+ begin
1098
+ te = p
1099
+ p = p - 1; begin
1100
+ emit(:escape, :literal, copy(source, ts-1,te))
1101
+ begin
1102
+ top -= 1
1103
+ cs = stack[top]
1104
+ _goto_level = _again
1105
+ next
1106
+ end
1107
+
1108
+ end
1109
+ end
1110
+ when 13
1111
+ begin
1112
+ begin p = ((te))-1; end
1113
+ begin
1114
+ emit(:escape, :literal, copy(source, ts-1,te))
1115
+ begin
1116
+ top -= 1
1117
+ cs = stack[top]
1118
+ _goto_level = _again
1119
+ next
1120
+ end
1121
+
1122
+ end
1123
+ end
1124
+ when 18
1162
1125
  begin
1163
1126
  te = p+1
1164
1127
  begin # special case, emits two tokens
@@ -1166,7 +1129,7 @@ te = p+1
1166
1129
  emit(:set, :intersection, '&&')
1167
1130
  end
1168
1131
  end
1169
- when 70
1132
+ when 72
1170
1133
  begin
1171
1134
  te = p+1
1172
1135
  begin
@@ -1177,14 +1140,14 @@ te = p+1
1177
1140
  end
1178
1141
  end
1179
1142
  end
1180
- when 72
1143
+ when 74
1181
1144
  begin
1182
1145
  te = p+1
1183
1146
  begin
1184
1147
  emit(:set, :intersection, '&&')
1185
1148
  end
1186
1149
  end
1187
- when 68
1150
+ when 70
1188
1151
  begin
1189
1152
  te = p+1
1190
1153
  begin
@@ -1198,22 +1161,22 @@ te = p+1
1198
1161
 
1199
1162
  end
1200
1163
  end
1201
- when 66
1164
+ when 68
1202
1165
  begin
1203
1166
  te = p+1
1204
1167
  begin
1205
- emit(:literal, :literal, copy(data, ts, te))
1168
+ emit(:literal, :literal, copy(source, ts, te))
1206
1169
  end
1207
1170
  end
1208
- when 15
1171
+ when 16
1209
1172
  begin
1210
1173
  te = p+1
1211
1174
  begin
1212
- text = copy(data, ts, te)
1175
+ text = copy(source, ts, te)
1213
1176
  emit(:literal, :literal, text)
1214
1177
  end
1215
1178
  end
1216
- when 73
1179
+ when 75
1217
1180
  begin
1218
1181
  te = p
1219
1182
  p = p - 1; begin
@@ -1226,7 +1189,7 @@ p = p - 1; begin
1226
1189
  end
1227
1190
  end
1228
1191
  end
1229
- when 76
1192
+ when 78
1230
1193
  begin
1231
1194
  te = p
1232
1195
  p = p - 1; begin
@@ -1241,15 +1204,15 @@ p = p - 1; begin
1241
1204
 
1242
1205
  end
1243
1206
  end
1244
- when 71
1207
+ when 73
1245
1208
  begin
1246
1209
  te = p
1247
1210
  p = p - 1; begin
1248
- text = copy(data, ts, te)
1211
+ text = copy(source, ts, te)
1249
1212
  emit(:literal, :literal, text)
1250
1213
  end
1251
1214
  end
1252
- when 16
1215
+ when 17
1253
1216
  begin
1254
1217
  begin p = ((te))-1; end
1255
1218
  begin
@@ -1262,7 +1225,7 @@ p = p - 1; begin
1262
1225
  end
1263
1226
  end
1264
1227
  end
1265
- when 19
1228
+ when 20
1266
1229
  begin
1267
1230
  begin p = ((te))-1; end
1268
1231
  begin
@@ -1277,19 +1240,19 @@ p = p - 1; begin
1277
1240
 
1278
1241
  end
1279
1242
  end
1280
- when 14
1243
+ when 15
1281
1244
  begin
1282
1245
  begin p = ((te))-1; end
1283
1246
  begin
1284
- text = copy(data, ts, te)
1247
+ text = copy(source, ts, te)
1285
1248
  emit(:literal, :literal, text)
1286
1249
  end
1287
1250
  end
1288
- when 80
1251
+ when 82
1289
1252
  begin
1290
1253
  te = p+1
1291
1254
  begin
1292
- emit(:escape, :octal, copy(data, ts-1,te))
1255
+ emit(:escape, :octal, copy(source, ts-1,te))
1293
1256
  begin
1294
1257
  top -= 1
1295
1258
  cs = stack[top]
@@ -1299,7 +1262,7 @@ te = p+1
1299
1262
 
1300
1263
  end
1301
1264
  end
1302
- when 77
1265
+ when 79
1303
1266
  begin
1304
1267
  te = p+1
1305
1268
  begin
@@ -1315,11 +1278,11 @@ te = p+1
1315
1278
 
1316
1279
  end
1317
1280
  end
1318
- when 22
1281
+ when 23
1319
1282
  begin
1320
1283
  te = p+1
1321
1284
  begin
1322
- emit(:escape, :literal, copy(data, ts-1,te))
1285
+ emit(:escape, :literal, copy(source, ts-1,te))
1323
1286
  begin
1324
1287
  top -= 1
1325
1288
  cs = stack[top]
@@ -1329,11 +1292,11 @@ te = p+1
1329
1292
 
1330
1293
  end
1331
1294
  end
1332
- when 79
1295
+ when 81
1333
1296
  begin
1334
1297
  te = p
1335
1298
  p = p - 1; begin
1336
- emit(:escape, :octal, copy(data, ts-1,te))
1299
+ emit(:escape, :octal, copy(source, ts-1,te))
1337
1300
  begin
1338
1301
  top -= 1
1339
1302
  cs = stack[top]
@@ -1343,11 +1306,11 @@ p = p - 1; begin
1343
1306
 
1344
1307
  end
1345
1308
  end
1346
- when 78
1309
+ when 80
1347
1310
  begin
1348
1311
  te = p
1349
1312
  p = p - 1; begin
1350
- emit(:escape, :literal, copy(data, ts-1,te))
1313
+ emit(:escape, :literal, copy(source, ts-1,te))
1351
1314
  begin
1352
1315
  top -= 1
1353
1316
  cs = stack[top]
@@ -1357,11 +1320,11 @@ p = p - 1; begin
1357
1320
 
1358
1321
  end
1359
1322
  end
1360
- when 21
1323
+ when 22
1361
1324
  begin
1362
1325
  begin p = ((te))-1; end
1363
1326
  begin
1364
- emit(:escape, :literal, copy(data, ts-1,te))
1327
+ emit(:escape, :literal, copy(source, ts-1,te))
1365
1328
  begin
1366
1329
  top -= 1
1367
1330
  cs = stack[top]
@@ -1371,11 +1334,11 @@ p = p - 1; begin
1371
1334
 
1372
1335
  end
1373
1336
  end
1374
- when 87
1337
+ when 89
1375
1338
  begin
1376
1339
  te = p+1
1377
1340
  begin
1378
- emit(:escape, :octal, copy(data, ts-1,te))
1341
+ emit(:escape, :octal, copy(source, ts-1,te))
1379
1342
  begin
1380
1343
  top -= 1
1381
1344
  cs = stack[top]
@@ -1385,11 +1348,11 @@ te = p+1
1385
1348
 
1386
1349
  end
1387
1350
  end
1388
- when 81
1351
+ when 83
1389
1352
  begin
1390
1353
  te = p+1
1391
1354
  begin
1392
- case text = copy(data, ts-1,te)
1355
+ case text = copy(source, ts-1,te)
1393
1356
  when '\.'; emit(:escape, :dot, text)
1394
1357
  when '\|'; emit(:escape, :alternation, text)
1395
1358
  when '\^'; emit(:escape, :bol, text)
@@ -1415,13 +1378,13 @@ te = p+1
1415
1378
 
1416
1379
  end
1417
1380
  end
1418
- when 84
1381
+ when 86
1419
1382
  begin
1420
1383
  te = p+1
1421
1384
  begin
1422
1385
  # \b is emitted as backspace only when inside a character set, otherwise
1423
1386
  # it is a word boundary anchor. A syntax might "normalize" it if needed.
1424
- case text = copy(data, ts-1,te)
1387
+ case text = copy(source, ts-1,te)
1425
1388
  when '\a'; emit(:escape, :bell, text)
1426
1389
  when '\b'; emit(:escape, :backspace, text)
1427
1390
  when '\e'; emit(:escape, :escape, text)
@@ -1440,11 +1403,11 @@ te = p+1
1440
1403
 
1441
1404
  end
1442
1405
  end
1443
- when 30
1406
+ when 31
1444
1407
  begin
1445
1408
  te = p+1
1446
1409
  begin
1447
- text = copy(data, ts-1,te)
1410
+ text = copy(source, ts-1,te)
1448
1411
  if text[2] == '{'
1449
1412
  emit(:escape, :codepoint_list, text)
1450
1413
  else
@@ -1459,11 +1422,11 @@ te = p+1
1459
1422
 
1460
1423
  end
1461
1424
  end
1462
- when 94
1425
+ when 96
1463
1426
  begin
1464
1427
  te = p+1
1465
1428
  begin
1466
- emit(:escape, :hex, copy(data, ts-1,te))
1429
+ emit(:escape, :hex, copy(source, ts-1,te))
1467
1430
  begin
1468
1431
  top -= 1
1469
1432
  cs = stack[top]
@@ -1473,11 +1436,11 @@ te = p+1
1473
1436
 
1474
1437
  end
1475
1438
  end
1476
- when 26
1439
+ when 27
1477
1440
  begin
1478
1441
  te = p+1
1479
1442
  begin
1480
- emit_meta_control_sequence(data, ts, te, :control)
1443
+ emit_meta_control_sequence(data, source, ts, te, :control)
1481
1444
  begin
1482
1445
  top -= 1
1483
1446
  cs = stack[top]
@@ -1487,11 +1450,11 @@ te = p+1
1487
1450
 
1488
1451
  end
1489
1452
  end
1490
- when 28
1453
+ when 29
1491
1454
  begin
1492
1455
  te = p+1
1493
1456
  begin
1494
- emit_meta_control_sequence(data, ts, te, :meta_sequence)
1457
+ emit_meta_control_sequence(data, source, ts, te, :meta_sequence)
1495
1458
  begin
1496
1459
  top -= 1
1497
1460
  cs = stack[top]
@@ -1501,43 +1464,43 @@ te = p+1
1501
1464
 
1502
1465
  end
1503
1466
  end
1504
- when 82
1467
+ when 84
1505
1468
  begin
1506
1469
  te = p+1
1507
1470
  begin
1508
1471
  p = p - 1;
1509
- cs = ((in_set? ? 93 : 76));
1472
+ cs = ((in_set? ? 93 : 75));
1510
1473
  begin
1511
1474
  stack[top] = cs
1512
1475
  top+= 1
1513
- cs = 91
1476
+ cs = 90
1514
1477
  _goto_level = _again
1515
1478
  next
1516
1479
  end
1517
1480
 
1518
1481
  end
1519
1482
  end
1520
- when 83
1483
+ when 85
1521
1484
  begin
1522
1485
  te = p+1
1523
1486
  begin
1524
1487
  p = p - 1;
1525
- cs = ((in_set? ? 93 : 76));
1488
+ cs = ((in_set? ? 93 : 75));
1526
1489
  begin
1527
1490
  stack[top] = cs
1528
1491
  top+= 1
1529
- cs = 92
1492
+ cs = 91
1530
1493
  _goto_level = _again
1531
1494
  next
1532
1495
  end
1533
1496
 
1534
1497
  end
1535
1498
  end
1536
- when 24
1499
+ when 25
1537
1500
  begin
1538
1501
  te = p+1
1539
1502
  begin
1540
- emit(:escape, :literal, copy(data, ts-1,te))
1503
+ emit(:escape, :literal, copy(source, ts-1,te))
1541
1504
  begin
1542
1505
  top -= 1
1543
1506
  cs = stack[top]
@@ -1547,11 +1510,11 @@ te = p+1
1547
1510
 
1548
1511
  end
1549
1512
  end
1550
- when 88
1513
+ when 90
1551
1514
  begin
1552
1515
  te = p
1553
1516
  p = p - 1; begin
1554
- text = copy(data, ts-1,te)
1517
+ text = copy(source, ts-1,te)
1555
1518
 
1556
1519
  # If not enough groups have been opened, there is a fallback to either an
1557
1520
  # octal or literal interpretation for 2+ digit numerical escapes.
@@ -1574,11 +1537,11 @@ p = p - 1; begin
1574
1537
 
1575
1538
  end
1576
1539
  end
1577
- when 86
1540
+ when 88
1578
1541
  begin
1579
1542
  te = p
1580
1543
  p = p - 1; begin
1581
- emit(:escape, :octal, copy(data, ts-1,te))
1544
+ emit(:escape, :octal, copy(source, ts-1,te))
1582
1545
  begin
1583
1546
  top -= 1
1584
1547
  cs = stack[top]
@@ -1588,11 +1551,11 @@ p = p - 1; begin
1588
1551
 
1589
1552
  end
1590
1553
  end
1591
- when 95
1554
+ when 97
1592
1555
  begin
1593
1556
  te = p
1594
1557
  p = p - 1; begin
1595
- text = copy(data, ts-1,te)
1558
+ text = copy(source, ts-1,te)
1596
1559
  if regexp_encoding == Encoding::BINARY
1597
1560
  text.split(/(?=\\)/).each { |part| emit(:escape, :hex, part) }
1598
1561
  else
@@ -1607,11 +1570,11 @@ p = p - 1; begin
1607
1570
 
1608
1571
  end
1609
1572
  end
1610
- when 93
1573
+ when 95
1611
1574
  begin
1612
1575
  te = p
1613
1576
  p = p - 1; begin
1614
- emit(:escape, :hex, copy(data, ts-1,te))
1577
+ emit(:escape, :hex, copy(source, ts-1,te))
1615
1578
  begin
1616
1579
  top -= 1
1617
1580
  cs = stack[top]
@@ -1621,11 +1584,11 @@ p = p - 1; begin
1621
1584
 
1622
1585
  end
1623
1586
  end
1624
- when 90
1587
+ when 92
1625
1588
  begin
1626
1589
  te = p
1627
1590
  p = p - 1; begin
1628
- emit_meta_control_sequence(data, ts, te, :control)
1591
+ emit_meta_control_sequence(data, source, ts, te, :control)
1629
1592
  begin
1630
1593
  top -= 1
1631
1594
  cs = stack[top]
@@ -1635,11 +1598,11 @@ p = p - 1; begin
1635
1598
 
1636
1599
  end
1637
1600
  end
1638
- when 92
1601
+ when 94
1639
1602
  begin
1640
1603
  te = p
1641
1604
  p = p - 1; begin
1642
- emit_meta_control_sequence(data, ts, te, :meta_sequence)
1605
+ emit_meta_control_sequence(data, source, ts, te, :meta_sequence)
1643
1606
  begin
1644
1607
  top -= 1
1645
1608
  cs = stack[top]
@@ -1649,11 +1612,11 @@ p = p - 1; begin
1649
1612
 
1650
1613
  end
1651
1614
  end
1652
- when 85
1615
+ when 87
1653
1616
  begin
1654
1617
  te = p
1655
1618
  p = p - 1; begin
1656
- emit(:escape, :literal, copy(data, ts-1,te))
1619
+ emit(:escape, :literal, copy(source, ts-1,te))
1657
1620
  begin
1658
1621
  top -= 1
1659
1622
  cs = stack[top]
@@ -1663,11 +1626,11 @@ p = p - 1; begin
1663
1626
 
1664
1627
  end
1665
1628
  end
1666
- when 32
1629
+ when 33
1667
1630
  begin
1668
1631
  begin p = ((te))-1; end
1669
1632
  begin
1670
- text = copy(data, ts-1,te)
1633
+ text = copy(source, ts-1,te)
1671
1634
  if regexp_encoding == Encoding::BINARY
1672
1635
  text.split(/(?=\\)/).each { |part| emit(:escape, :hex, part) }
1673
1636
  else
@@ -1682,11 +1645,11 @@ p = p - 1; begin
1682
1645
 
1683
1646
  end
1684
1647
  end
1685
- when 23
1648
+ when 24
1686
1649
  begin
1687
1650
  begin p = ((te))-1; end
1688
1651
  begin
1689
- emit(:escape, :literal, copy(data, ts-1,te))
1652
+ emit(:escape, :literal, copy(source, ts-1,te))
1690
1653
  begin
1691
1654
  top -= 1
1692
1655
  cs = stack[top]
@@ -1696,17 +1659,17 @@ p = p - 1; begin
1696
1659
 
1697
1660
  end
1698
1661
  end
1699
- when 35
1662
+ when 36
1700
1663
  begin
1701
1664
  te = p+1
1702
1665
  begin
1703
- text = copy(data, ts, te-1)
1666
+ text = copy(source, ts, te-1)
1704
1667
  text =~ /[^0]/ or raise ValidationError.for(:backref, 'condition', 'invalid ref ID')
1705
1668
  emit(:conditional, :condition, text)
1706
1669
  emit(:conditional, :condition_close, ')')
1707
1670
  end
1708
1671
  end
1709
- when 96
1672
+ when 98
1710
1673
  begin
1711
1674
  te = p+1
1712
1675
  begin
@@ -1714,14 +1677,14 @@ te = p+1
1714
1677
  begin
1715
1678
  stack[top] = cs
1716
1679
  top+= 1
1717
- cs = 76
1680
+ cs = 75
1718
1681
  _goto_level = _again
1719
1682
  next
1720
1683
  end
1721
1684
 
1722
1685
  end
1723
1686
  end
1724
- when 97
1687
+ when 99
1725
1688
  begin
1726
1689
  te = p
1727
1690
  p = p - 1; begin
@@ -1729,14 +1692,14 @@ p = p - 1; begin
1729
1692
  begin
1730
1693
  stack[top] = cs
1731
1694
  top+= 1
1732
- cs = 76
1695
+ cs = 75
1733
1696
  _goto_level = _again
1734
1697
  next
1735
1698
  end
1736
1699
 
1737
1700
  end
1738
1701
  end
1739
- when 34
1702
+ when 35
1740
1703
  begin
1741
1704
  begin p = ((te))-1; end
1742
1705
  begin
@@ -1744,57 +1707,57 @@ p = p - 1; begin
1744
1707
  begin
1745
1708
  stack[top] = cs
1746
1709
  top+= 1
1747
- cs = 76
1710
+ cs = 75
1748
1711
  _goto_level = _again
1749
1712
  next
1750
1713
  end
1751
1714
 
1752
1715
  end
1753
1716
  end
1754
- when 41
1717
+ when 42
1755
1718
  begin
1756
1719
  te = p+1
1757
1720
  begin
1758
- emit(:meta, :dot, copy(data, ts, te))
1721
+ emit(:meta, :dot, copy(source, ts, te))
1759
1722
  end
1760
1723
  end
1761
- when 45
1724
+ when 46
1762
1725
  begin
1763
1726
  te = p+1
1764
1727
  begin
1765
1728
  if conditional_stack.last == group_depth
1766
- emit(:conditional, :separator, copy(data, ts, te))
1729
+ emit(:conditional, :separator, copy(source, ts, te))
1767
1730
  else
1768
- emit(:meta, :alternation, copy(data, ts, te))
1731
+ emit(:meta, :alternation, copy(source, ts, te))
1769
1732
  end
1770
1733
  end
1771
1734
  end
1772
- when 44
1735
+ when 45
1773
1736
  begin
1774
1737
  te = p+1
1775
1738
  begin
1776
- emit(:anchor, :bol, copy(data, ts, te))
1739
+ emit(:anchor, :bol, copy(source, ts, te))
1777
1740
  end
1778
1741
  end
1779
- when 38
1742
+ when 39
1780
1743
  begin
1781
1744
  te = p+1
1782
1745
  begin
1783
- emit(:anchor, :eol, copy(data, ts, te))
1746
+ emit(:anchor, :eol, copy(source, ts, te))
1784
1747
  end
1785
1748
  end
1786
- when 62
1749
+ when 63
1787
1750
  begin
1788
1751
  te = p+1
1789
1752
  begin
1790
- emit(:keep, :mark, copy(data, ts, te))
1753
+ emit(:keep, :mark, copy(source, ts, te))
1791
1754
  end
1792
1755
  end
1793
- when 61
1756
+ when 62
1794
1757
  begin
1795
1758
  te = p+1
1796
1759
  begin
1797
- case text = copy(data, ts, te)
1760
+ case text = copy(source, ts, te)
1798
1761
  when '\A'; emit(:anchor, :bos, text)
1799
1762
  when '\z'; emit(:anchor, :eos, text)
1800
1763
  when '\Z'; emit(:anchor, :eos_ob_eol, text)
@@ -1804,18 +1767,18 @@ te = p+1
1804
1767
  end
1805
1768
  end
1806
1769
  end
1807
- when 43
1770
+ when 44
1808
1771
  begin
1809
1772
  te = p+1
1810
1773
  begin
1811
- append_literal(data, ts, te)
1774
+ append_literal(source, ts, te)
1812
1775
  end
1813
1776
  end
1814
- when 52
1777
+ when 53
1815
1778
  begin
1816
1779
  te = p+1
1817
1780
  begin
1818
- text = copy(data, ts, te)
1781
+ text = copy(source, ts, te)
1819
1782
 
1820
1783
  conditional_stack << group_depth
1821
1784
 
@@ -1831,11 +1794,11 @@ te = p+1
1831
1794
 
1832
1795
  end
1833
1796
  end
1834
- when 53
1797
+ when 54
1835
1798
  begin
1836
1799
  te = p+1
1837
1800
  begin
1838
- text = copy(data, ts, te)
1801
+ text = copy(source, ts, te)
1839
1802
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
1840
1803
  raise ValidationError.for(:group_option, $1 || "-#{$2}", text)
1841
1804
  end
@@ -1846,7 +1809,7 @@ te = p+1
1846
1809
  begin
1847
1810
  te = p+1
1848
1811
  begin
1849
- case text = copy(data, ts, te)
1812
+ case text = copy(source, ts, te)
1850
1813
  when '(?='; emit(:assertion, :lookahead, text)
1851
1814
  when '(?!'; emit(:assertion, :nlookahead, text)
1852
1815
  when '(?<='; emit(:assertion, :lookbehind, text)
@@ -1858,7 +1821,7 @@ te = p+1
1858
1821
  begin
1859
1822
  te = p+1
1860
1823
  begin
1861
- case text = copy(data, ts, te)
1824
+ case text = copy(source, ts, te)
1862
1825
  when '(?:'; emit(:group, :passive, text)
1863
1826
  when '(?>'; emit(:group, :atomic, text)
1864
1827
  when '(?~'; emit(:group, :absence, text)
@@ -1879,7 +1842,7 @@ te = p+1
1879
1842
  begin
1880
1843
  te = p+1
1881
1844
  begin
1882
- case text = copy(data, ts, te)
1845
+ case text = copy(source, ts, te)
1883
1846
  when /^\\k(.)[^0-9\-][^+\-]*['>]$/
1884
1847
  emit(:backref, $1 == '<' ? :name_ref_ab : :name_ref_sq, text)
1885
1848
  when /^\\k(.)0*[1-9]\d*['>]$/
@@ -1899,7 +1862,7 @@ te = p+1
1899
1862
  begin
1900
1863
  te = p+1
1901
1864
  begin
1902
- case text = copy(data, ts, te)
1865
+ case text = copy(source, ts, te)
1903
1866
  when /^\\g(.)[^0-9+\-].*['>]$/
1904
1867
  emit(:backref, $1 == '<' ? :name_call_ab : :name_call_sq, text)
1905
1868
  when /^\\g(.)(?:0|0*[1-9]\d*)['>]$/
@@ -1911,33 +1874,33 @@ te = p+1
1911
1874
  end
1912
1875
  end
1913
1876
  end
1914
- when 59
1877
+ when 60
1915
1878
  begin
1916
1879
  te = p+1
1917
1880
  begin
1918
- case text = copy(data, ts, te)
1881
+ case text = copy(source, ts, te)
1919
1882
  when '?' ; emit(:quantifier, :zero_or_one, text)
1920
1883
  when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
1921
1884
  when '?+'; emit(:quantifier, :zero_or_one_possessive, text)
1922
1885
  end
1923
1886
  end
1924
1887
  end
1925
- when 55
1888
+ when 56
1926
1889
  begin
1927
1890
  te = p+1
1928
1891
  begin
1929
- case text = copy(data, ts, te)
1892
+ case text = copy(source, ts, te)
1930
1893
  when '*' ; emit(:quantifier, :zero_or_more, text)
1931
1894
  when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
1932
1895
  when '*+'; emit(:quantifier, :zero_or_more_possessive, text)
1933
1896
  end
1934
1897
  end
1935
1898
  end
1936
- when 57
1899
+ when 58
1937
1900
  begin
1938
1901
  te = p+1
1939
1902
  begin
1940
- case text = copy(data, ts, te)
1903
+ case text = copy(source, ts, te)
1941
1904
  when '+' ; emit(:quantifier, :one_or_more, text)
1942
1905
  when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
1943
1906
  when '++'; emit(:quantifier, :one_or_more_possessive, text)
@@ -1948,84 +1911,84 @@ te = p+1
1948
1911
  begin
1949
1912
  te = p+1
1950
1913
  begin
1951
- emit(:quantifier, :interval, copy(data, ts, te))
1914
+ emit(:quantifier, :interval, copy(source, ts, te))
1952
1915
  end
1953
1916
  end
1954
- when 49
1917
+ when 50
1955
1918
  begin
1956
1919
  te = p+1
1957
1920
  begin
1958
1921
  if free_spacing
1959
- emit(:free_space, :comment, copy(data, ts, te))
1922
+ emit(:free_space, :comment, copy(source, ts, te))
1960
1923
  else
1961
1924
  # consume only the pound sign (#) and backtrack to do regular scanning
1962
- append_literal(data, ts, ts + 1)
1925
+ append_literal(source, ts, ts + 1)
1963
1926
  begin p = (( ts + 1))-1; end
1964
1927
 
1965
1928
  end
1966
1929
  end
1967
1930
  end
1968
- when 51
1931
+ when 52
1969
1932
  begin
1970
1933
  te = p
1971
1934
  p = p - 1; begin
1972
- text = copy(data, ts, te)
1935
+ text = copy(source, ts, te)
1973
1936
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
1974
1937
  raise ValidationError.for(:group_option, $1 || "-#{$2}", text)
1975
1938
  end
1976
1939
  emit_options(text)
1977
1940
  end
1978
1941
  end
1979
- when 50
1942
+ when 51
1980
1943
  begin
1981
1944
  te = p
1982
1945
  p = p - 1; begin
1983
1946
  self.capturing_group_count = capturing_group_count + 1
1984
- text = copy(data, ts, te)
1947
+ text = copy(source, ts, te)
1985
1948
  emit(:group, :capture, text)
1986
1949
  end
1987
1950
  end
1988
- when 58
1951
+ when 59
1989
1952
  begin
1990
1953
  te = p
1991
1954
  p = p - 1; begin
1992
- case text = copy(data, ts, te)
1955
+ case text = copy(source, ts, te)
1993
1956
  when '?' ; emit(:quantifier, :zero_or_one, text)
1994
1957
  when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
1995
1958
  when '?+'; emit(:quantifier, :zero_or_one_possessive, text)
1996
1959
  end
1997
1960
  end
1998
1961
  end
1999
- when 54
1962
+ when 55
2000
1963
  begin
2001
1964
  te = p
2002
1965
  p = p - 1; begin
2003
- case text = copy(data, ts, te)
1966
+ case text = copy(source, ts, te)
2004
1967
  when '*' ; emit(:quantifier, :zero_or_more, text)
2005
1968
  when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
2006
1969
  when '*+'; emit(:quantifier, :zero_or_more_possessive, text)
2007
1970
  end
2008
1971
  end
2009
1972
  end
2010
- when 56
1973
+ when 57
2011
1974
  begin
2012
1975
  te = p
2013
1976
  p = p - 1; begin
2014
- case text = copy(data, ts, te)
1977
+ case text = copy(source, ts, te)
2015
1978
  when '+' ; emit(:quantifier, :one_or_more, text)
2016
1979
  when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
2017
1980
  when '++'; emit(:quantifier, :one_or_more_possessive, text)
2018
1981
  end
2019
1982
  end
2020
1983
  end
2021
- when 63
1984
+ when 64
2022
1985
  begin
2023
1986
  te = p
2024
1987
  p = p - 1; begin
2025
- append_literal(data, ts, te)
1988
+ append_literal(source, ts, te)
2026
1989
  end
2027
1990
  end
2028
- when 60
1991
+ when 61
2029
1992
  begin
2030
1993
  te = p
2031
1994
  p = p - 1; begin
@@ -2039,43 +2002,43 @@ p = p - 1; begin
2039
2002
 
2040
2003
  end
2041
2004
  end
2042
- when 48
2005
+ when 49
2043
2006
  begin
2044
2007
  te = p
2045
2008
  p = p - 1; begin
2046
2009
  if free_spacing
2047
- emit(:free_space, :comment, copy(data, ts, te))
2010
+ emit(:free_space, :comment, copy(source, ts, te))
2048
2011
  else
2049
2012
  # consume only the pound sign (#) and backtrack to do regular scanning
2050
- append_literal(data, ts, ts + 1)
2013
+ append_literal(source, ts, ts + 1)
2051
2014
  begin p = (( ts + 1))-1; end
2052
2015
 
2053
2016
  end
2054
2017
  end
2055
2018
  end
2056
- when 47
2019
+ when 48
2057
2020
  begin
2058
2021
  te = p
2059
2022
  p = p - 1; begin
2060
2023
  if free_spacing
2061
- emit(:free_space, :whitespace, copy(data, ts, te))
2024
+ emit(:free_space, :whitespace, copy(source, ts, te))
2062
2025
  else
2063
- append_literal(data, ts, te)
2026
+ append_literal(source, ts, te)
2064
2027
  end
2065
2028
  end
2066
2029
  end
2067
- when 46
2030
+ when 47
2068
2031
  begin
2069
2032
  te = p
2070
2033
  p = p - 1; begin
2071
- append_literal(data, ts, te)
2034
+ append_literal(source, ts, te)
2072
2035
  end
2073
2036
  end
2074
2037
  when 3
2075
2038
  begin
2076
2039
  begin p = ((te))-1; end
2077
2040
  begin
2078
- text = copy(data, ts, te)
2041
+ text = copy(source, ts, te)
2079
2042
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2080
2043
  raise ValidationError.for(:group_option, $1 || "-#{$2}", text)
2081
2044
  end
@@ -2086,7 +2049,7 @@ p = p - 1; begin
2086
2049
  begin
2087
2050
  begin p = ((te))-1; end
2088
2051
  begin
2089
- append_literal(data, ts, te)
2052
+ append_literal(source, ts, te)
2090
2053
  end
2091
2054
  end
2092
2055
  when 7
@@ -2113,17 +2076,35 @@ p = p - 1; begin
2113
2076
  next
2114
2077
  end
2115
2078
  end
2116
- when 58
2079
+ when 59
2117
2080
  begin begin p = ((te))-1; end
2118
2081
 
2119
- append_literal(data, ts, te)
2082
+ append_literal(source, ts, te)
2120
2083
  end
2121
2084
  end
2122
2085
  end
2123
- when 75
2086
+ when 12
2087
+ begin
2088
+
2089
+ raise PrematureEndError.new('unicode property')
2090
+ end
2091
+ begin
2092
+ begin p = ((te))-1; end
2093
+ begin
2094
+ emit(:escape, :literal, copy(source, ts-1,te))
2095
+ begin
2096
+ top -= 1
2097
+ cs = stack[top]
2098
+ _goto_level = _again
2099
+ next
2100
+ end
2101
+
2102
+ end
2103
+ end
2104
+ when 77
2124
2105
  begin
2125
2106
 
2126
- text = copy(data, ts ? ts-1 : 0,-1)
2107
+ text = error_text(source, ts, p)
2127
2108
  raise PrematureEndError.new(text)
2128
2109
  end
2129
2110
  begin
@@ -2140,10 +2121,10 @@ p = p - 1; begin
2140
2121
 
2141
2122
  end
2142
2123
  end
2143
- when 18
2124
+ when 19
2144
2125
  begin
2145
2126
 
2146
- text = copy(data, ts ? ts-1 : 0,-1)
2127
+ text = error_text(source, ts, p)
2147
2128
  raise PrematureEndError.new(text)
2148
2129
  end
2149
2130
  begin
@@ -2160,16 +2141,16 @@ p = p - 1; begin
2160
2141
 
2161
2142
  end
2162
2143
  end
2163
- when 89
2144
+ when 91
2164
2145
  begin
2165
2146
 
2166
- text = copy(data, ts ? ts-1 : 0,-1)
2147
+ text = error_text(source, ts, p)
2167
2148
  raise PrematureEndError.new(text)
2168
2149
  end
2169
2150
  begin
2170
2151
  te = p
2171
2152
  p = p - 1; begin
2172
- emit_meta_control_sequence(data, ts, te, :control)
2153
+ emit_meta_control_sequence(data, source, ts, te, :control)
2173
2154
  begin
2174
2155
  top -= 1
2175
2156
  cs = stack[top]
@@ -2179,16 +2160,16 @@ p = p - 1; begin
2179
2160
 
2180
2161
  end
2181
2162
  end
2182
- when 91
2163
+ when 93
2183
2164
  begin
2184
2165
 
2185
- text = copy(data, ts ? ts-1 : 0,-1)
2166
+ text = error_text(source, ts, p)
2186
2167
  raise PrematureEndError.new(text)
2187
2168
  end
2188
2169
  begin
2189
2170
  te = p
2190
2171
  p = p - 1; begin
2191
- emit_meta_control_sequence(data, ts, te, :meta_sequence)
2172
+ emit_meta_control_sequence(data, source, ts, te, :meta_sequence)
2192
2173
  begin
2193
2174
  top -= 1
2194
2175
  cs = stack[top]
@@ -2198,16 +2179,16 @@ p = p - 1; begin
2198
2179
 
2199
2180
  end
2200
2181
  end
2201
- when 27
2182
+ when 28
2202
2183
  begin
2203
2184
 
2204
- text = copy(data, ts ? ts-1 : 0,-1)
2185
+ text = error_text(source, ts, p)
2205
2186
  raise PrematureEndError.new(text)
2206
2187
  end
2207
2188
  begin
2208
2189
  begin p = ((te))-1; end
2209
2190
  begin
2210
- emit_meta_control_sequence(data, ts, te, :control)
2191
+ emit_meta_control_sequence(data, source, ts, te, :control)
2211
2192
  begin
2212
2193
  top -= 1
2213
2194
  cs = stack[top]
@@ -2217,16 +2198,16 @@ p = p - 1; begin
2217
2198
 
2218
2199
  end
2219
2200
  end
2220
- when 29
2201
+ when 30
2221
2202
  begin
2222
2203
 
2223
- text = copy(data, ts ? ts-1 : 0,-1)
2204
+ text = error_text(source, ts, p)
2224
2205
  raise PrematureEndError.new(text)
2225
2206
  end
2226
2207
  begin
2227
2208
  begin p = ((te))-1; end
2228
2209
  begin
2229
- emit_meta_control_sequence(data, ts, te, :meta_sequence)
2210
+ emit_meta_control_sequence(data, source, ts, te, :meta_sequence)
2230
2211
  begin
2231
2212
  top -= 1
2232
2213
  cs = stack[top]
@@ -2236,10 +2217,10 @@ p = p - 1; begin
2236
2217
 
2237
2218
  end
2238
2219
  end
2239
- when 31
2220
+ when 32
2240
2221
  begin
2241
2222
 
2242
- text = copy(data, ts ? ts-1 : 0,-1)
2223
+ text = error_text(source, ts, p)
2243
2224
  raise ValidationError.for(:sequence, 'sequence', text)
2244
2225
  end
2245
2226
  begin
@@ -2260,10 +2241,10 @@ te = p+1
2260
2241
  begin
2261
2242
  te = p+1
2262
2243
  begin
2263
- emit(:group, :comment, copy(data, ts, te))
2244
+ emit(:group, :comment, copy(source, ts, te))
2264
2245
  end
2265
2246
  end
2266
- when 40
2247
+ when 41
2267
2248
  begin
2268
2249
  self.group_depth = group_depth - 1 end
2269
2250
  begin
@@ -2285,13 +2266,13 @@ te = p+1
2285
2266
  end
2286
2267
  end
2287
2268
  end
2288
- when 42
2269
+ when 43
2289
2270
  begin
2290
2271
  self.set_depth = set_depth + 1 end
2291
2272
  begin
2292
2273
  te = p+1
2293
2274
  begin
2294
- emit(:set, :open, copy(data, ts, te))
2275
+ emit(:set, :open, copy(source, ts, te))
2295
2276
  begin
2296
2277
  stack[top] = cs
2297
2278
  top+= 1
@@ -2302,13 +2283,13 @@ te = p+1
2302
2283
 
2303
2284
  end
2304
2285
  end
2305
- when 69
2286
+ when 71
2306
2287
  begin
2307
2288
  self.set_depth = set_depth - 1 end
2308
2289
  begin
2309
2290
  te = p+1
2310
2291
  begin
2311
- emit(:set, :close, copy(data, ts, te))
2292
+ emit(:set, :close, copy(source, ts, te))
2312
2293
  if in_set?
2313
2294
  begin
2314
2295
  top -= 1
@@ -2319,7 +2300,7 @@ te = p+1
2319
2300
 
2320
2301
  else
2321
2302
  begin
2322
- cs = 76
2303
+ cs = 75
2323
2304
  _goto_level = _again
2324
2305
  next
2325
2306
  end
@@ -2327,7 +2308,7 @@ te = p+1
2327
2308
  end
2328
2309
  end
2329
2310
  end
2330
- when 74
2311
+ when 76
2331
2312
  begin
2332
2313
  self.set_depth = set_depth - 1 end
2333
2314
  begin
@@ -2345,7 +2326,7 @@ te = p+1
2345
2326
 
2346
2327
  else
2347
2328
  begin
2348
- cs = 76
2329
+ cs = 75
2349
2330
  _goto_level = _again
2350
2331
  next
2351
2332
  end
@@ -2353,13 +2334,13 @@ te = p+1
2353
2334
  end
2354
2335
  end
2355
2336
  end
2356
- when 20
2337
+ when 21
2357
2338
  begin
2358
2339
  self.set_depth = set_depth - 1 end
2359
2340
  begin
2360
2341
  te = p+1
2361
2342
  begin
2362
- text = copy(data, ts, te)
2343
+ text = copy(source, ts, te)
2363
2344
 
2364
2345
  type = :posixclass
2365
2346
  class_name = text[2..-3]
@@ -2375,7 +2356,7 @@ te = p+1
2375
2356
  emit(type, class_name.to_sym, text)
2376
2357
  end
2377
2358
  end
2378
- when 67
2359
+ when 69
2379
2360
  begin
2380
2361
  te = p+1
2381
2362
  end
@@ -2386,16 +2367,16 @@ te = p+1
2386
2367
  te = p+1
2387
2368
  end
2388
2369
  begin
2389
- act = 58; end
2370
+ act = 59; end
2390
2371
  end
2391
2372
  end
2392
2373
  end
2393
2374
  if _goto_level <= _again
2394
- case _re_scanner_to_state_actions[cs]
2395
- when 64
2375
+ case RE_SCANNER_TO_STATE_ACTIONS[cs]
2376
+ when 65
2396
2377
  begin
2397
2378
  ts = nil; end
2398
- when 36
2379
+ when 37
2399
2380
  begin
2400
2381
  ts = nil; end
2401
2382
  begin
@@ -2415,21 +2396,16 @@ act = 0
2415
2396
  end
2416
2397
  if _goto_level <= _test_eof
2417
2398
  if p == eof
2418
- if _re_scanner_eof_trans[cs] > 0
2419
- _trans = _re_scanner_eof_trans[cs] - 1;
2399
+ if RE_SCANNER_EOF_TRANS[cs] > 0
2400
+ _trans = RE_SCANNER_EOF_TRANS[cs] - 1;
2420
2401
  _goto_level = _eof_trans
2421
2402
  next;
2422
2403
  end
2423
- case _re_scanner_eof_actions[cs]
2424
- when 12
2425
- begin
2426
-
2427
- raise PrematureEndError.new('unicode property')
2428
- end
2429
- when 25
2404
+ case RE_SCANNER_EOF_ACTIONS[cs]
2405
+ when 26
2430
2406
  begin
2431
2407
 
2432
- text = copy(data, ts ? ts-1 : 0,-1)
2408
+ text = error_text(source, ts, p)
2433
2409
  raise PrematureEndError.new(text)
2434
2410
  end
2435
2411
  end
@@ -2445,9 +2421,9 @@ end
2445
2421
  # to avoid "warning: assigned but unused variable - testEof"
2446
2422
  testEof = testEof
2447
2423
 
2448
- if cs == re_scanner_error
2449
- text = copy(data, ts ? ts-1 : 0,-1)
2450
- raise ScannerError.new("Scan error at '#{text}'")
2424
+ if cs == RE_SCANNER_ERROR
2425
+ text = error_text(source, ts, p)
2426
+ raise ScannerError.new("Scan error at #{text}")
2451
2427
  end
2452
2428
 
2453
2429
  raise PrematureEndError.new("(missing group closing paranthesis) "+
@@ -2545,15 +2521,28 @@ end
2545
2521
  set_depth > 0
2546
2522
  end
2547
2523
 
2548
- # Copy from ts to te from data as text
2549
- def copy(data, ts, te)
2550
- data[ts...te].pack('c*').force_encoding('utf-8')
2524
+ # Ragel offsets are bytes; emitted token positions are characters.
2525
+ def copy(source, ts, te)
2526
+ source.byteslice(ts, te - ts).force_encoding('utf-8')
2527
+ end
2528
+
2529
+ def error_text(source, ts, position)
2530
+ start = ts ? [ts - 1,0].max : 0
2531
+ finish = source.bytesize
2532
+ if position < finish
2533
+ # Include the complete offending UTF-8 character, but no following text.
2534
+ character = source.byteslice(position, 4).force_encoding('utf-8').each_char.first
2535
+ finish = position + character.bytesize
2536
+ end
2537
+ text = copy(source, start, finish)
2538
+ text = "…#{text[-9..-1]}" if text.length > 10
2539
+ text
2551
2540
  end
2552
2541
 
2553
2542
  # Appends one or more characters to the literal buffer, to be emitted later
2554
2543
  # by a call to emit_literal.
2555
- def append_literal(data, ts, te)
2556
- (self.literal_run ||= []) << copy(data, ts, te)
2544
+ def append_literal(source, ts, te)
2545
+ (self.literal_run ||= []) << copy(source, ts, te)
2557
2546
  end
2558
2547
 
2559
2548
  # Emits the literal run collected by calls to the append_literal method.
@@ -2592,10 +2581,10 @@ end
2592
2581
  emit(:group, token, text)
2593
2582
  end
2594
2583
 
2595
- def emit_meta_control_sequence(data, ts, te, token)
2584
+ def emit_meta_control_sequence(data, source, ts, te, token)
2596
2585
  if data.last < 0x00 || data.last > 0x7F
2597
2586
  raise ValidationError.for(:sequence, 'escape', token.to_s)
2598
2587
  end
2599
- emit(:escape, token, copy(data, ts-1,te))
2588
+ emit(:escape, token, copy(source, ts-1,te))
2600
2589
  end
2601
- end # module Regexp::Scanner
2590
+ end