regexp_parser 2.10.0 → 2.11.3

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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/LICENSE +1 -1
  4. data/Rakefile +5 -3
  5. data/lib/regexp_parser/error.rb +2 -0
  6. data/lib/regexp_parser/expression/base.rb +2 -0
  7. data/lib/regexp_parser/expression/classes/alternation.rb +2 -0
  8. data/lib/regexp_parser/expression/classes/anchor.rb +2 -0
  9. data/lib/regexp_parser/expression/classes/backreference.rb +2 -0
  10. data/lib/regexp_parser/expression/classes/character_set/intersection.rb +2 -0
  11. data/lib/regexp_parser/expression/classes/character_set/range.rb +2 -0
  12. data/lib/regexp_parser/expression/classes/character_set.rb +2 -0
  13. data/lib/regexp_parser/expression/classes/character_type.rb +2 -0
  14. data/lib/regexp_parser/expression/classes/conditional.rb +2 -0
  15. data/lib/regexp_parser/expression/classes/escape_sequence.rb +3 -0
  16. data/lib/regexp_parser/expression/classes/free_space.rb +2 -0
  17. data/lib/regexp_parser/expression/classes/group.rb +2 -0
  18. data/lib/regexp_parser/expression/classes/keep.rb +2 -0
  19. data/lib/regexp_parser/expression/classes/literal.rb +2 -0
  20. data/lib/regexp_parser/expression/classes/posix_class.rb +2 -0
  21. data/lib/regexp_parser/expression/classes/root.rb +2 -0
  22. data/lib/regexp_parser/expression/classes/unicode_property.rb +2 -0
  23. data/lib/regexp_parser/expression/methods/construct.rb +2 -0
  24. data/lib/regexp_parser/expression/methods/escape_sequence_char.rb +2 -0
  25. data/lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb +8 -0
  26. data/lib/regexp_parser/expression/methods/human_name.rb +2 -0
  27. data/lib/regexp_parser/expression/methods/match.rb +2 -0
  28. data/lib/regexp_parser/expression/methods/match_length.rb +2 -0
  29. data/lib/regexp_parser/expression/methods/negative.rb +2 -0
  30. data/lib/regexp_parser/expression/methods/options.rb +2 -0
  31. data/lib/regexp_parser/expression/methods/parts.rb +2 -0
  32. data/lib/regexp_parser/expression/methods/printing.rb +2 -0
  33. data/lib/regexp_parser/expression/methods/referenced_expressions.rb +2 -0
  34. data/lib/regexp_parser/expression/methods/strfregexp.rb +2 -0
  35. data/lib/regexp_parser/expression/methods/tests.rb +2 -0
  36. data/lib/regexp_parser/expression/methods/traverse.rb +2 -0
  37. data/lib/regexp_parser/expression/quantifier.rb +3 -1
  38. data/lib/regexp_parser/expression/sequence.rb +2 -0
  39. data/lib/regexp_parser/expression/sequence_operation.rb +2 -0
  40. data/lib/regexp_parser/expression/shared.rb +6 -3
  41. data/lib/regexp_parser/expression/subexpression.rb +2 -0
  42. data/lib/regexp_parser/expression.rb +2 -0
  43. data/lib/regexp_parser/lexer.rb +2 -0
  44. data/lib/regexp_parser/parser.rb +3 -0
  45. data/lib/regexp_parser/scanner/errors/premature_end_error.rb +2 -0
  46. data/lib/regexp_parser/scanner/errors/scanner_error.rb +2 -0
  47. data/lib/regexp_parser/scanner/errors/validation_error.rb +2 -0
  48. data/lib/regexp_parser/scanner/properties/long.csv +19 -0
  49. data/lib/regexp_parser/scanner/properties/short.csv +8 -0
  50. data/lib/regexp_parser/scanner/scanner.rl +44 -8
  51. data/lib/regexp_parser/scanner.rb +786 -656
  52. data/lib/regexp_parser/syntax/any.rb +2 -0
  53. data/lib/regexp_parser/syntax/base.rb +2 -0
  54. data/lib/regexp_parser/syntax/token/anchor.rb +5 -3
  55. data/lib/regexp_parser/syntax/token/assertion.rb +4 -2
  56. data/lib/regexp_parser/syntax/token/backreference.rb +8 -6
  57. data/lib/regexp_parser/syntax/token/character_set.rb +3 -1
  58. data/lib/regexp_parser/syntax/token/character_type.rb +6 -4
  59. data/lib/regexp_parser/syntax/token/conditional.rb +5 -3
  60. data/lib/regexp_parser/syntax/token/escape.rb +9 -7
  61. data/lib/regexp_parser/syntax/token/group.rb +8 -6
  62. data/lib/regexp_parser/syntax/token/keep.rb +3 -1
  63. data/lib/regexp_parser/syntax/token/meta.rb +4 -2
  64. data/lib/regexp_parser/syntax/token/posix_class.rb +4 -2
  65. data/lib/regexp_parser/syntax/token/quantifier.rb +8 -6
  66. data/lib/regexp_parser/syntax/token/unicode_property.rb +62 -47
  67. data/lib/regexp_parser/syntax/token/virtual.rb +5 -3
  68. data/lib/regexp_parser/syntax/token.rb +5 -3
  69. data/lib/regexp_parser/syntax/version_lookup.rb +4 -2
  70. data/lib/regexp_parser/syntax/versions/1.8.6.rb +2 -0
  71. data/lib/regexp_parser/syntax/versions/1.9.1.rb +2 -0
  72. data/lib/regexp_parser/syntax/versions/1.9.3.rb +2 -0
  73. data/lib/regexp_parser/syntax/versions/2.0.0.rb +2 -0
  74. data/lib/regexp_parser/syntax/versions/2.2.0.rb +2 -0
  75. data/lib/regexp_parser/syntax/versions/2.3.0.rb +2 -0
  76. data/lib/regexp_parser/syntax/versions/2.4.0.rb +2 -0
  77. data/lib/regexp_parser/syntax/versions/2.4.1.rb +2 -0
  78. data/lib/regexp_parser/syntax/versions/2.5.0.rb +2 -0
  79. data/lib/regexp_parser/syntax/versions/2.6.0.rb +2 -0
  80. data/lib/regexp_parser/syntax/versions/2.6.2.rb +2 -0
  81. data/lib/regexp_parser/syntax/versions/2.6.3.rb +2 -0
  82. data/lib/regexp_parser/syntax/versions/3.1.0.rb +2 -0
  83. data/lib/regexp_parser/syntax/versions/3.2.0.rb +2 -0
  84. data/lib/regexp_parser/syntax/versions/3.5.0.rb +4 -0
  85. data/lib/regexp_parser/syntax/versions.rb +2 -0
  86. data/lib/regexp_parser/syntax.rb +2 -0
  87. data/lib/regexp_parser/token.rb +2 -0
  88. data/lib/regexp_parser/version.rb +3 -1
  89. data/lib/regexp_parser.rb +2 -0
  90. data/regexp_parser.gemspec +2 -0
  91. metadata +4 -6
@@ -1,9 +1,9 @@
1
- # -*- warn-indent:false; -*-
1
+ # -*- frozen_string_literal: true; warn-indent: false -*-
2
2
  #
3
3
  # THIS IS A GENERATED FILE, DO NOT EDIT DIRECTLY
4
4
  #
5
5
  # This file was generated from scanner.rl
6
- # by running `bundle exec rake ragel:rb`
6
+ # by running `$ bundle exec rake ragel`
7
7
 
8
8
 
9
9
  require_relative 'scanner/errors/scanner_error'
@@ -28,16 +28,18 @@ class Regexp::Scanner
28
28
 
29
29
  input = input_object.is_a?(Regexp) ? input_object.source : input_object
30
30
  self.free_spacing = free_spacing?(input_object, options)
31
+ self.regexp_encoding = extract_encoding(input_object, options)
31
32
  self.spacing_stack = [{:free_spacing => free_spacing, :depth => 0}]
32
33
 
33
- data = input.unpack("c*")
34
- eof = data.length
34
+ data = input.unpack("c*")
35
+ eof = data.length
35
36
 
36
37
  self.tokens = []
37
- self.block = block
38
+ self.block = block
38
39
 
39
40
  self.set_depth = 0
40
41
  self.group_depth = 0
42
+ self.capturing_group_count = 0
41
43
  self.conditional_stack = []
42
44
  self.char_pos = 0
43
45
 
@@ -64,33 +66,38 @@ self._re_scanner_trans_keys = [
64
66
  9,125,9,122,-128,-65,
65
67
  -128,-65,38,38,58,
66
68
  93,58,93,-128,-65,
67
- -128,-65,45,45,92,92,
68
- 92,92,45,45,92,
69
- 92,92,92,48,123,
70
- 48,102,48,102,48,102,
71
- 48,102,9,125,9,
72
- 125,9,125,9,125,
73
- 9,125,9,125,48,123,
74
- 39,39,41,41,41,
75
- 57,62,62,-128,127,
76
- -62,-12,1,127,1,127,
77
- 9,32,33,126,10,
78
- 10,63,63,33,126,
79
- 33,126,43,63,43,63,
80
- 43,63,65,122,44,
81
- 57,68,119,80,112,
82
- -62,125,-128,-65,-128,-65,
83
- -128,-65,38,38,38,
84
- 93,58,58,48,120,
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,
75
+ 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,
86
+ 125,-128,-65,-128,-65,
87
+ -128,-65,38,38,38,93,
88
+ 58,58,-62,120,-128,
89
+ -65,-128,-65,-128,-65,
85
90
  48,55,48,55,-62,125,
86
91
  -128,-65,-128,-65,-128,
87
92
  -65,48,55,48,55,
88
- 48,57,77,77,45,45,
89
- 0,0,67,99,45,
90
- 45,0,0,92,92,
91
- 48,102,39,60,39,57,
92
- 48,57,41,57,33,
93
- 62,0
93
+ 48,57,48,57,48,57,
94
+ 48,57,77,77,45,
95
+ 45,0,0,67,99,
96
+ 45,45,0,0,92,92,
97
+ 48,102,48,102,92,
98
+ 92,39,60,39,57,
99
+ 48,57,41,57,33,62,
100
+ 0
94
101
  ]
95
102
 
96
103
  class << self
@@ -104,15 +111,17 @@ self._re_scanner_key_spans = [
104
111
  1,10,19,10,19,30,1,10,
105
112
  20,10,15,10,78,82,1,114,
106
113
  117,114,64,64,1,36,36,64,
107
- 64,1,1,1,1,1,1,76,
108
- 55,55,55,55,117,117,117,117,
109
- 117,117,76,1,1,17,1,256,
110
- 51,127,127,24,94,1,1,94,
111
- 94,21,21,21,58,14,52,33,
112
- 188,64,64,64,1,56,1,73,
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,
120
+ 64,1,56,1,183,64,64,64,
113
121
  8,8,188,64,64,64,8,8,
114
- 10,1,1,0,33,1,0,1,
115
- 55,22,19,10,17,30
122
+ 10,10,10,10,1,1,0,33,
123
+ 1,0,1,55,55,1,22,19,
124
+ 10,17,30
116
125
  ]
117
126
 
118
127
  class << self
@@ -126,15 +135,17 @@ self._re_scanner_index_offsets = [
126
135
  494,496,507,527,538,558,589,591,
127
136
  602,623,634,650,661,740,823,825,
128
137
  940,1058,1173,1238,1303,1305,1342,1379,
129
- 1444,1509,1511,1513,1515,1517,1519,1521,
130
- 1598,1654,1710,1766,1822,1940,2058,2176,
131
- 2294,2412,2530,2607,2609,2611,2629,2631,
132
- 2888,2940,3068,3196,3221,3316,3318,3320,
133
- 3415,3510,3532,3554,3576,3635,3650,3703,
134
- 3737,3926,3991,4056,4121,4123,4180,4182,
135
- 4256,4265,4274,4463,4528,4593,4658,4667,
136
- 4676,4687,4689,4691,4692,4726,4728,4729,
137
- 4731,4787,4810,4830,4841,4859
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,
144
+ 4271,4336,4338,4395,4397,4581,4646,4711,
145
+ 4776,4785,4794,4983,5048,5113,5178,5187,
146
+ 5196,5207,5218,5229,5240,5242,5244,5245,
147
+ 5279,5281,5282,5284,5340,5396,5398,5421,
148
+ 5441,5452,5470
138
149
  ]
139
150
 
140
151
  class << self
@@ -330,124 +341,139 @@ self._re_scanner_indicies = [
330
341
  59,59,59,59,59,59,59,59,
331
342
  59,59,59,59,59,59,59,59,
332
343
  59,59,59,59,59,59,59,59,
333
- 59,59,59,59,57,60,43,62,
334
- 61,64,61,65,43,67,66,69,
335
- 66,70,70,70,70,70,70,70,
336
- 70,70,70,43,43,43,43,43,
337
- 43,43,70,70,70,70,70,70,
344
+ 59,59,59,59,57,61,61,61,
345
+ 61,61,61,61,61,61,61,61,
346
+ 61,61,61,61,61,61,61,61,
347
+ 61,61,61,61,61,61,61,61,
348
+ 61,61,61,61,61,61,61,61,
349
+ 61,61,61,61,61,61,61,61,
350
+ 61,61,61,61,61,61,61,61,
351
+ 61,61,61,61,61,61,61,61,
352
+ 61,61,61,61,61,60,62,62,
353
+ 62,62,62,62,62,62,62,62,
354
+ 62,62,62,62,62,62,62,62,
355
+ 62,62,62,62,62,62,62,62,
356
+ 62,62,62,62,62,62,62,62,
357
+ 62,62,62,62,62,62,62,62,
358
+ 62,62,62,62,62,62,62,62,
359
+ 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,
338
366
  43,43,43,43,43,43,43,43,
339
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,
340
370
  43,43,43,43,43,43,43,43,
341
- 43,43,70,70,70,70,70,70,
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,
342
375
  43,43,43,43,43,43,43,43,
343
376
  43,43,43,43,43,43,43,43,
344
- 43,43,43,43,71,43,72,72,
345
- 72,72,72,72,72,72,72,72,
346
- 43,43,43,43,43,43,43,72,
347
- 72,72,72,72,72,43,43,43,
348
377
  43,43,43,43,43,43,43,43,
378
+ 43,75,75,75,75,75,75,43,
379
+ 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,
349
382
  43,43,43,43,43,43,43,43,
350
- 43,43,43,43,43,43,43,72,
351
- 72,72,72,72,72,43,73,73,
352
- 73,73,73,73,73,73,73,73,
353
- 43,43,43,43,43,43,43,73,
354
- 73,73,73,73,73,43,43,43,
355
383
  43,43,43,43,43,43,43,43,
356
384
  43,43,43,43,43,43,43,43,
357
- 43,43,43,43,43,43,43,73,
358
- 73,73,73,73,73,43,74,74,
359
- 74,74,74,74,74,74,74,74,
360
- 43,43,43,43,43,43,43,74,
361
- 74,74,74,74,74,43,43,43,
385
+ 43,76,76,76,76,76,76,43,
386
+ 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,
362
389
  43,43,43,43,43,43,43,43,
363
390
  43,43,43,43,43,43,43,43,
364
- 43,43,43,43,43,43,43,74,
365
- 74,74,74,74,74,43,75,75,
366
- 75,75,75,75,75,75,75,75,
367
- 43,43,43,43,43,43,43,75,
368
- 75,75,75,75,75,43,43,43,
369
391
  43,43,43,43,43,43,43,43,
392
+ 43,77,77,77,77,77,77,43,
393
+ 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,
370
396
  43,43,43,43,43,43,43,43,
371
- 43,43,43,43,43,43,43,75,
372
- 75,75,75,75,75,43,71,71,
373
- 71,71,71,43,43,43,43,43,
374
397
  43,43,43,43,43,43,43,43,
375
- 43,43,43,43,43,71,43,43,
376
398
  43,43,43,43,43,43,43,43,
377
- 43,43,43,43,43,76,76,76,
378
- 76,76,76,76,76,76,76,43,
379
- 43,43,43,43,43,43,76,76,
380
- 76,76,76,76,43,43,43,43,
399
+ 43,78,78,78,78,78,78,43,
400
+ 74,74,74,74,74,43,43,43,
381
401
  43,43,43,43,43,43,43,43,
402
+ 43,43,43,43,43,43,43,74,
382
403
  43,43,43,43,43,43,43,43,
383
- 43,43,43,43,43,43,76,76,
384
- 76,76,76,76,43,43,43,43,
404
+ 43,43,43,43,43,43,43,79,
405
+ 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,
385
408
  43,43,43,43,43,43,43,43,
386
409
  43,43,43,43,43,43,43,43,
387
- 43,43,74,43,71,71,71,71,
388
- 71,43,43,43,43,43,43,43,
389
410
  43,43,43,43,43,43,43,43,
390
- 43,43,43,71,43,43,43,43,
411
+ 79,79,79,79,79,79,43,43,
391
412
  43,43,43,43,43,43,43,43,
392
- 43,43,43,77,77,77,77,77,
393
- 77,77,77,77,77,43,43,43,
394
- 43,43,43,43,77,77,77,77,
395
- 77,77,43,43,43,43,43,43,
396
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,
397
416
  43,43,43,43,43,43,43,43,
398
- 43,43,43,43,77,77,77,77,
399
- 77,77,43,43,43,43,43,43,
417
+ 43,43,43,43,43,74,43,43,
400
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,
401
423
  43,43,43,43,43,43,43,43,
402
- 74,43,71,71,71,71,71,43,
403
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,
404
427
  43,43,43,43,43,43,43,43,
405
- 43,71,43,43,43,43,43,43,
406
428
  43,43,43,43,43,43,43,43,
407
- 43,78,78,78,78,78,78,78,
408
- 78,78,78,43,43,43,43,43,
409
- 43,43,78,78,78,78,78,78,
429
+ 43,43,77,43,74,74,74,74,
430
+ 74,43,43,43,43,43,43,43,
410
431
  43,43,43,43,43,43,43,43,
432
+ 43,43,43,74,43,43,43,43,
411
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,
412
438
  43,43,43,43,43,43,43,43,
413
- 43,43,78,78,78,78,78,78,
414
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,
415
442
  43,43,43,43,43,43,43,43,
416
- 43,43,43,43,43,43,74,43,
417
- 71,71,71,71,71,43,43,43,
418
443
  43,43,43,43,43,43,43,43,
419
- 43,43,43,43,43,43,43,71,
444
+ 77,43,74,74,74,74,74,43,
420
445
  43,43,43,43,43,43,43,43,
421
- 43,43,43,43,43,43,43,79,
422
- 79,79,79,79,79,79,79,79,
423
- 79,43,43,43,43,43,43,43,
424
- 79,79,79,79,79,79,43,43,
425
446
  43,43,43,43,43,43,43,43,
447
+ 43,74,43,43,43,43,43,43,
426
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,
427
452
  43,43,43,43,43,43,43,43,
428
- 79,79,79,79,79,79,43,43,
429
453
  43,43,43,43,43,43,43,43,
430
454
  43,43,43,43,43,43,43,43,
431
- 43,43,43,43,74,43,71,71,
432
- 71,71,71,43,43,43,43,43,
455
+ 43,43,82,82,82,82,82,82,
433
456
  43,43,43,43,43,43,43,43,
434
- 43,43,43,43,43,71,43,43,
435
457
  43,43,43,43,43,43,43,43,
436
- 43,43,43,43,43,80,80,80,
437
- 80,80,80,80,80,80,80,43,
438
- 43,43,43,43,43,43,80,80,
439
- 80,80,80,80,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,
464
+ 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,
440
467
  43,43,43,43,43,43,43,43,
441
468
  43,43,43,43,43,43,43,43,
442
- 43,43,43,43,43,43,80,80,
443
- 80,80,80,80,43,43,43,43,
444
469
  43,43,43,43,43,43,43,43,
470
+ 83,83,83,83,83,83,43,43,
445
471
  43,43,43,43,43,43,43,43,
446
- 43,43,74,43,71,71,71,71,
447
- 71,43,43,43,43,43,43,43,
448
472
  43,43,43,43,43,43,43,43,
449
- 43,43,43,71,43,43,43,43,
473
+ 43,43,43,43,77,43,74,74,
474
+ 74,74,74,43,43,43,43,43,
450
475
  43,43,43,43,43,43,43,43,
476
+ 43,43,43,43,43,74,43,43,
451
477
  43,43,43,43,43,43,43,43,
452
478
  43,43,43,43,43,43,43,43,
453
479
  43,43,43,43,43,43,43,43,
@@ -458,19 +484,31 @@ self._re_scanner_indicies = [
458
484
  43,43,43,43,43,43,43,43,
459
485
  43,43,43,43,43,43,43,43,
460
486
  43,43,43,43,43,43,43,43,
461
- 74,43,82,82,82,82,82,82,
462
- 82,82,82,82,81,81,81,81,
463
- 81,81,81,82,82,82,82,82,
464
- 82,81,81,81,81,81,81,81,
465
- 81,81,81,81,81,81,81,81,
466
- 81,81,81,81,81,81,81,81,
467
- 81,81,81,82,82,82,82,82,
468
- 82,81,81,81,81,81,81,81,
469
- 81,81,81,81,81,81,81,81,
470
- 81,81,81,81,81,43,81,85,
471
- 84,86,83,86,83,83,83,83,
472
- 83,83,87,87,87,87,87,87,
473
- 87,87,87,87,83,85,88,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,
474
512
  43,43,43,43,43,43,43,43,
475
513
  43,43,43,43,43,43,43,43,
476
514
  43,43,43,43,43,43,43,43,
@@ -479,160 +517,160 @@ self._re_scanner_indicies = [
479
517
  43,43,43,43,43,43,43,43,
480
518
  43,43,43,43,43,43,43,43,
481
519
  43,43,43,43,43,43,43,43,
482
- 43,2,2,2,2,2,2,2,
483
520
  2,2,2,2,2,2,2,2,
484
521
  2,2,2,2,2,2,2,2,
485
- 2,2,2,2,2,2,2,3,
522
+ 2,2,2,2,2,2,2,2,
523
+ 2,2,2,2,2,2,3,3,
486
524
  3,3,3,3,3,3,3,3,
487
- 3,3,3,3,3,3,3,89,
488
- 89,89,89,89,43,43,43,43,
489
- 43,43,43,43,43,43,43,43,
490
- 90,90,90,90,90,90,90,90,
491
- 91,91,91,91,91,90,90,90,
492
- 90,90,90,90,90,90,90,90,
493
- 90,90,90,90,90,90,90,92,
494
- 93,93,94,95,93,93,93,96,
495
- 97,98,99,93,93,100,93,93,
496
- 93,93,93,93,93,93,93,93,
497
- 93,93,93,93,93,93,101,93,
498
- 93,93,93,93,93,93,93,93,
499
- 93,93,93,93,93,93,93,93,
500
- 93,93,93,93,93,93,93,93,
501
- 93,93,102,103,104,105,93,93,
502
- 93,93,93,93,93,93,93,93,
503
- 93,93,93,93,93,93,93,93,
504
- 93,93,93,93,93,93,93,93,
505
- 93,93,106,107,104,93,90,93,
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,
506
544
  2,2,2,2,2,2,2,2,
507
545
  2,2,2,2,2,2,2,2,
508
546
  2,2,2,2,2,2,2,2,
509
- 2,2,2,2,2,2,3,3,
547
+ 2,2,2,2,2,3,3,3,
510
548
  3,3,3,3,3,3,3,3,
511
- 3,3,3,3,3,3,89,89,
512
- 89,89,89,108,90,90,90,90,
513
- 90,90,90,90,90,90,90,90,
514
- 90,90,90,90,90,90,90,90,
515
- 90,90,90,90,90,90,90,90,
516
- 90,90,90,108,108,108,108,108,
517
- 108,108,108,108,108,108,108,108,
518
- 108,108,108,108,108,108,108,108,
519
- 108,108,108,108,108,108,108,108,
520
- 108,108,108,108,108,108,108,108,
521
- 108,108,108,108,108,108,108,108,
522
- 108,108,108,108,108,108,108,108,
523
- 108,108,108,108,108,108,108,108,
524
- 108,108,108,108,108,108,108,108,
525
- 108,108,108,108,108,108,108,108,
526
- 108,108,108,108,108,108,108,108,
527
- 108,108,108,108,108,108,108,108,
528
- 108,108,90,108,90,90,90,90,
529
- 90,90,90,90,91,91,91,91,
530
- 91,90,90,90,90,90,90,90,
531
- 90,90,90,90,90,90,90,90,
532
- 90,90,90,92,109,109,109,109,
533
- 109,109,109,109,109,109,109,109,
534
- 109,109,109,109,109,109,109,109,
535
- 109,109,109,109,109,109,109,109,
536
- 109,109,109,109,109,109,109,109,
537
- 109,109,109,109,109,109,109,109,
538
- 109,109,109,109,109,109,109,109,
539
- 109,109,109,109,109,109,109,109,
540
- 109,109,109,109,109,109,109,109,
541
- 109,109,109,109,109,109,109,109,
542
- 109,109,109,109,109,109,109,109,
543
- 109,109,109,109,109,109,109,109,
544
- 109,109,90,109,92,92,92,92,
545
- 92,109,109,109,109,109,109,109,
546
- 109,109,109,109,109,109,109,109,
547
- 109,109,109,92,109,93,93,108,
548
- 108,93,93,93,108,108,108,108,
549
- 93,93,108,93,93,93,93,93,
550
- 93,93,93,93,93,93,93,93,
551
- 93,93,93,108,93,93,93,93,
552
- 93,93,93,93,93,93,93,93,
553
- 93,93,93,93,93,93,93,93,
554
- 93,93,93,93,93,93,93,108,
555
- 108,108,108,93,93,93,93,93,
556
- 93,93,93,93,93,93,93,93,
557
- 93,93,93,93,93,93,93,93,
558
- 93,93,93,93,93,93,93,108,
559
- 108,108,93,108,111,94,113,112,
560
- 10,115,5,115,115,115,116,117,
561
- 114,115,115,115,115,115,115,115,
562
- 115,115,115,115,115,115,115,115,
563
- 115,8,115,118,10,8,115,115,
564
- 115,115,115,115,115,115,115,115,
565
- 115,115,115,115,115,115,115,115,
566
- 115,115,115,115,115,115,115,115,
567
- 115,115,115,115,115,115,115,115,
568
- 115,115,115,115,115,115,115,115,
569
- 115,115,115,115,115,115,115,115,
570
- 115,115,115,115,115,115,115,115,
571
- 115,115,115,115,115,8,115,114,
572
- 115,114,115,115,115,114,114,114,
573
- 115,115,115,115,115,115,115,115,
574
- 115,115,115,115,115,115,115,115,
575
- 119,115,114,114,114,115,115,115,
576
- 115,115,115,115,115,115,115,115,
577
- 115,115,115,115,115,115,115,115,
578
- 115,115,115,115,115,115,115,115,
579
- 115,115,115,115,115,115,115,115,
580
- 115,115,115,115,115,115,115,115,
581
- 115,115,115,115,115,115,115,115,
582
- 115,115,115,115,115,115,115,115,
583
- 115,115,115,115,114,115,121,120,
584
- 120,120,120,120,120,120,120,120,
585
- 120,120,120,120,120,120,120,120,
586
- 120,120,121,120,123,122,122,122,
587
- 122,122,122,122,122,122,122,122,
588
- 122,122,122,122,122,122,122,122,
589
- 123,122,125,124,124,124,124,124,
590
- 124,124,124,124,124,124,124,124,
591
- 124,124,124,124,124,124,125,124,
592
- 127,127,126,126,126,126,127,126,
593
- 126,126,128,126,126,126,126,126,
594
- 126,126,126,126,126,126,126,126,
595
- 126,127,126,126,126,126,126,126,
596
- 126,127,126,126,126,126,129,126,
597
- 126,126,130,126,126,126,126,126,
598
- 126,126,126,126,126,126,126,126,
599
- 126,127,126,132,131,131,131,41,
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,
573
+ 117,117,117,117,117,117,117,117,
574
+ 117,117,117,117,117,117,117,117,
575
+ 117,117,117,117,117,117,117,117,
576
+ 117,117,117,117,117,117,117,117,
577
+ 117,117,117,117,117,117,117,117,
578
+ 117,117,117,117,117,117,117,117,
579
+ 117,117,117,117,117,117,117,117,
580
+ 117,117,117,117,117,117,117,117,
581
+ 117,117,117,117,117,117,117,117,
582
+ 117,98,117,100,100,100,100,100,
583
+ 117,117,117,117,117,117,117,117,
584
+ 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,
600
638
  41,41,41,41,41,41,41,41,
601
- 41,131,133,43,43,43,133,43,
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,
602
642
  43,43,43,43,43,43,43,43,
603
- 133,133,43,43,43,133,133,43,
643
+ 43,141,43,43,43,141,43,43,
604
644
  43,43,43,43,43,43,43,43,
605
- 43,43,133,43,43,43,133,43,
645
+ 141,43,43,43,141,43,142,43,
606
646
  43,43,43,43,43,43,43,43,
607
- 43,133,43,43,43,133,43,134,
608
647
  43,43,43,43,43,43,43,43,
609
648
  43,43,43,43,43,43,43,43,
610
- 43,43,43,43,43,43,43,43,
611
- 43,43,43,43,43,43,43,134,
612
- 43,135,135,135,135,135,135,135,
613
- 135,135,135,135,135,135,135,135,
614
- 135,135,135,135,135,135,135,135,
615
- 135,135,135,135,135,135,135,136,
616
- 136,136,136,136,136,136,136,136,
617
- 136,136,136,136,136,136,136,137,
618
- 137,137,137,137,48,48,48,48,
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,
619
657
  48,48,48,48,48,48,48,48,
620
658
  48,48,48,48,48,48,48,48,
621
659
  48,48,48,48,48,48,48,48,
622
660
  48,48,48,48,48,48,48,48,
623
661
  48,48,48,48,48,48,48,48,
624
- 48,48,48,138,48,139,48,138,
625
- 138,138,138,48,140,138,48,48,
662
+ 48,48,146,48,147,48,146,146,
663
+ 146,146,48,148,146,48,48,48,
626
664
  48,48,48,48,48,48,48,48,
627
- 48,48,48,48,48,48,138,48,
665
+ 48,48,48,48,48,146,48,48,
628
666
  48,48,48,48,48,48,48,48,
629
667
  48,48,48,48,48,48,48,48,
630
668
  48,48,48,48,48,48,48,48,
631
- 48,48,141,142,143,144,48,48,
669
+ 48,149,150,151,152,48,48,48,
632
670
  48,48,48,48,48,48,48,48,
633
671
  48,48,48,48,48,48,48,48,
634
672
  48,48,48,48,48,48,48,48,
635
- 48,48,138,138,138,48,48,48,
673
+ 48,146,146,146,48,48,48,48,
636
674
  48,48,48,48,48,48,48,48,
637
675
  48,48,48,48,48,48,48,48,
638
676
  48,48,48,48,48,48,48,48,
@@ -640,7 +678,7 @@ self._re_scanner_indicies = [
640
678
  48,48,48,48,48,48,48,48,
641
679
  48,48,48,48,48,48,48,48,
642
680
  48,48,48,48,48,48,48,48,
643
- 48,48,48,48,48,48,145,49,
681
+ 48,48,48,48,48,153,49,49,
644
682
  49,49,49,49,49,49,49,49,
645
683
  49,49,49,49,49,49,49,49,
646
684
  49,49,49,49,49,49,49,49,
@@ -648,67 +686,54 @@ self._re_scanner_indicies = [
648
686
  49,49,49,49,49,49,49,49,
649
687
  49,49,49,49,49,49,49,49,
650
688
  49,49,49,49,49,49,49,49,
651
- 49,49,49,49,49,49,49,145,
652
- 146,146,146,146,146,146,146,146,
653
- 146,146,146,146,146,146,146,146,
654
- 146,146,146,146,146,146,146,146,
655
- 146,146,146,146,146,146,146,146,
656
- 146,146,146,146,146,146,146,146,
657
- 146,146,146,146,146,146,146,146,
658
- 146,146,146,146,146,146,146,146,
659
- 146,146,146,146,146,146,146,146,
660
- 145,147,145,149,148,148,148,148,
661
- 148,148,148,148,148,148,148,148,
662
- 148,148,148,148,148,148,148,148,
663
- 148,148,148,148,148,148,148,148,
664
- 148,148,148,148,148,148,148,148,
665
- 148,148,148,148,148,148,148,148,
666
- 148,148,148,148,148,148,148,148,
667
- 148,148,150,148,53,152,154,154,
668
- 154,154,154,154,154,154,153,153,
669
- 153,153,153,153,153,153,153,153,
670
- 153,155,155,153,153,153,155,153,
671
- 153,153,153,155,153,153,155,153,
672
- 153,155,153,153,153,155,153,153,
673
- 153,155,155,155,153,153,153,155,
674
- 155,155,155,155,155,153,155,153,
675
- 153,153,153,153,155,153,155,153,
676
- 155,155,155,155,155,155,155,153,
677
- 157,157,157,157,157,157,157,157,
678
- 156,158,158,158,158,158,158,158,
679
- 158,156,159,159,159,159,159,159,
680
- 159,159,159,159,159,159,159,159,
681
- 159,159,159,159,159,159,159,159,
682
- 159,159,159,159,159,159,159,159,
683
- 160,160,160,160,160,160,160,160,
684
- 160,160,160,160,160,160,160,160,
685
- 161,161,161,161,161,58,58,58,
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,
686
712
  58,58,58,58,58,58,58,58,
687
713
  58,58,58,58,58,58,58,58,
688
714
  58,58,58,58,58,58,58,58,
689
715
  58,58,58,58,58,58,58,58,
690
716
  58,58,58,58,58,58,58,58,
691
- 58,58,58,58,162,58,58,58,
692
- 162,162,162,162,58,58,162,58,
693
- 163,164,164,164,164,164,164,164,
694
- 165,165,58,58,58,58,58,162,
695
- 58,43,43,166,167,58,58,43,
696
- 167,58,58,43,58,168,58,58,
697
- 169,58,167,167,58,58,58,167,
698
- 167,58,43,162,162,162,162,58,
699
- 58,170,170,60,167,170,170,58,
700
- 167,58,58,58,58,58,170,58,
701
- 169,58,170,167,170,171,170,167,
702
- 172,58,43,162,162,162,58,58,
703
717
  58,58,58,58,58,58,58,58,
704
718
  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,
705
729
  58,58,58,58,58,58,58,58,
706
730
  58,58,58,58,58,58,58,58,
707
731
  58,58,58,58,58,58,58,58,
708
732
  58,58,58,58,58,58,58,58,
709
733
  58,58,58,58,58,58,58,58,
710
- 58,58,58,58,58,58,58,173,
711
- 59,59,59,59,59,59,59,59,
734
+ 58,58,58,58,58,58,58,58,
735
+ 58,58,58,58,58,58,58,58,
736
+ 58,58,58,58,58,166,59,59,
712
737
  59,59,59,59,59,59,59,59,
713
738
  59,59,59,59,59,59,59,59,
714
739
  59,59,59,59,59,59,59,59,
@@ -716,44 +741,106 @@ self._re_scanner_indicies = [
716
741
  59,59,59,59,59,59,59,59,
717
742
  59,59,59,59,59,59,59,59,
718
743
  59,59,59,59,59,59,59,59,
719
- 173,174,174,174,174,174,174,174,
720
- 174,174,174,174,174,174,174,174,
721
- 174,174,174,174,174,174,174,174,
722
- 174,174,174,174,174,174,174,174,
723
- 174,174,174,174,174,174,174,174,
724
- 174,174,174,174,174,174,174,174,
725
- 174,174,174,174,174,174,174,174,
726
- 174,174,174,174,174,174,174,174,
727
- 174,173,176,176,176,176,176,176,
728
- 176,176,175,178,178,178,178,178,
729
- 178,178,178,177,180,180,180,180,
730
- 180,180,180,180,180,180,179,182,
731
- 61,184,183,61,186,66,66,66,
732
- 66,66,66,66,66,66,66,66,
733
- 66,66,66,66,66,66,66,66,
734
- 66,66,66,66,66,66,66,66,
735
- 66,66,66,66,187,66,189,188,
736
- 66,69,66,191,191,191,191,191,
737
- 191,191,191,191,191,190,190,190,
738
- 190,190,190,190,191,191,191,191,
739
- 191,191,190,190,190,190,190,190,
740
- 190,190,190,190,190,190,190,190,
741
- 190,190,190,190,190,190,190,190,
742
- 190,190,190,190,191,191,191,191,
743
- 191,191,190,193,192,192,192,192,
744
- 192,194,192,192,195,195,195,195,
745
- 195,195,195,195,195,195,192,192,
746
- 196,192,85,84,84,84,84,84,
747
- 197,84,84,197,197,197,197,197,
748
- 197,197,197,197,197,84,87,87,
749
- 87,87,87,87,87,87,87,87,
750
- 197,86,197,197,197,197,197,197,
751
- 87,87,87,87,87,87,87,87,
752
- 87,87,197,197,88,88,88,88,
753
- 88,88,88,88,88,88,88,197,
754
- 88,88,197,197,197,197,197,197,
755
- 197,197,197,197,88,88,88,197,
756
- 85,88,0
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,
760
+ 172,172,172,172,172,172,172,172,
761
+ 173,173,173,173,173,61,61,61,
762
+ 61,61,61,61,61,61,61,61,
763
+ 61,61,61,61,61,61,61,61,
764
+ 61,61,61,61,61,61,61,61,
765
+ 61,61,61,61,61,61,61,61,
766
+ 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,
779
+ 61,61,61,61,61,61,61,61,
780
+ 61,61,61,61,61,61,61,61,
781
+ 61,61,61,61,61,61,61,61,
782
+ 61,61,61,61,61,61,61,61,
783
+ 61,61,61,61,61,61,61,61,
784
+ 61,61,61,61,61,61,61,61,
785
+ 61,61,61,61,61,61,61,61,
786
+ 61,61,61,61,61,61,61,185,
787
+ 62,62,62,62,62,62,62,62,
788
+ 62,62,62,62,62,62,62,62,
789
+ 62,62,62,62,62,62,62,62,
790
+ 62,62,62,62,62,62,62,62,
791
+ 62,62,62,62,62,62,62,62,
792
+ 62,62,62,62,62,62,62,62,
793
+ 62,62,62,62,62,62,62,62,
794
+ 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
757
844
  ]
758
845
 
759
846
  class << self
@@ -761,31 +848,33 @@ class << self
761
848
  private :_re_scanner_trans_targs, :_re_scanner_trans_targs=
762
849
  end
763
850
  self._re_scanner_trans_targs = [
764
- 71,72,1,2,71,4,71,6,
765
- 71,8,71,71,10,16,11,71,
851
+ 76,77,1,2,76,4,76,6,
852
+ 76,8,76,76,10,16,11,76,
766
853
  12,13,14,15,17,18,19,20,
767
- 21,23,29,24,71,25,26,27,
768
- 28,30,31,32,33,34,71,36,
769
- 71,37,39,0,40,41,87,88,
770
- 88,42,88,88,88,45,46,88,
771
- 88,98,98,47,50,98,105,98,
772
- 107,53,98,108,98,110,56,59,
773
- 57,58,98,60,61,62,63,64,
774
- 65,98,112,113,67,68,113,69,
775
- 70,3,73,74,75,76,77,71,
776
- 78,71,81,82,71,83,71,84,
777
- 71,71,85,71,71,71,71,71,
778
- 71,79,71,80,5,71,7,71,
779
- 71,71,71,71,71,71,71,71,
780
- 71,9,22,71,35,86,38,89,
781
- 90,91,88,92,93,94,88,88,
782
- 88,88,43,88,88,44,88,88,
783
- 88,95,96,95,95,97,95,99,
784
- 100,101,98,102,102,104,49,98,
785
- 52,98,98,55,66,98,48,98,
786
- 103,98,98,98,98,98,106,98,
787
- 51,98,109,111,98,54,98,98,
788
- 113,114,115,116,117,113
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
789
878
  ]
790
879
 
791
880
  class << self
@@ -800,24 +889,26 @@ self._re_scanner_trans_actions = [
800
889
  0,0,0,0,0,0,10,0,
801
890
  11,0,0,0,0,0,13,14,
802
891
  15,0,16,17,18,0,0,19,
803
- 20,21,22,0,0,24,0,25,
804
- 0,0,26,0,27,0,0,0,
805
- 0,0,28,0,0,0,0,0,
806
- 0,29,0,30,0,0,31,0,
807
- 0,0,0,0,0,0,0,34,
808
- 35,36,0,0,37,0,38,39,
809
- 40,41,39,42,43,44,45,46,
810
- 47,39,48,0,0,49,0,50,
811
- 51,52,53,54,55,56,57,58,
812
- 59,0,0,60,0,62,0,0,
813
- 39,39,63,0,39,64,65,66,
814
- 67,68,0,69,70,0,71,72,
815
- 73,74,0,75,76,0,77,0,
816
- 39,39,78,79,80,0,0,81,
817
- 0,82,83,0,0,84,0,85,
818
- 0,86,87,88,89,90,39,91,
819
- 0,92,39,0,93,0,94,95,
820
- 96,39,39,39,39,97
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,
901
+ 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
821
912
  ]
822
913
 
823
914
  class << self
@@ -833,13 +924,15 @@ self._re_scanner_to_state_actions = [
833
924
  0,0,0,0,0,0,0,0,
834
925
  0,0,0,0,0,0,0,0,
835
926
  0,0,0,0,0,0,0,0,
836
- 0,0,0,0,0,0,0,32,
837
927
  0,0,0,0,0,0,0,0,
838
- 0,0,0,0,0,0,61,61,
839
- 61,0,0,0,0,0,0,61,
840
- 0,0,61,0,0,0,0,0,
928
+ 0,0,0,0,36,0,0,0,
841
929
  0,0,0,0,0,0,0,0,
842
- 0,61,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,
933
+ 0,0,0,0,0,0,0,0,
934
+ 0,0,0,0,0,0,64,0,
935
+ 0,0,0
843
936
  ]
844
937
 
845
938
  class << self
@@ -855,13 +948,15 @@ self._re_scanner_from_state_actions = [
855
948
  0,0,0,0,0,0,0,0,
856
949
  0,0,0,0,0,0,0,0,
857
950
  0,0,0,0,0,0,0,0,
858
- 0,0,0,0,0,0,0,33,
859
951
  0,0,0,0,0,0,0,0,
860
- 0,0,0,0,0,0,33,33,
861
- 33,0,0,0,0,0,0,33,
862
- 0,0,33,0,0,0,0,0,
952
+ 0,0,0,0,37,0,0,0,
953
+ 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,
863
957
  0,0,0,0,0,0,0,0,
864
- 0,33,0,0,0,0
958
+ 0,0,0,0,0,0,37,0,
959
+ 0,0,0
865
960
  ]
866
961
 
867
962
  class << self
@@ -875,15 +970,17 @@ self._re_scanner_eof_actions = [
875
970
  0,0,0,0,0,0,0,0,
876
971
  0,0,0,0,0,0,12,12,
877
972
  12,12,0,0,0,0,0,0,
878
- 0,23,23,0,23,23,0,23,
879
- 23,23,23,23,23,23,23,23,
880
- 23,23,23,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
+ 0,0,0,0,0,0,0,0,
977
+ 0,0,0,0,0,0,0,0,
978
+ 0,0,0,0,0,25,0,0,
881
979
  0,0,0,0,0,0,0,0,
980
+ 0,0,25,0,0,0,0,0,
882
981
  0,0,0,0,0,0,0,0,
883
- 23,0,0,0,0,0,0,0,
884
- 0,0,23,0,0,0,0,0,
885
982
  0,0,0,0,0,0,0,0,
886
- 0,0,0,0,0,0
983
+ 0,0,0
887
984
  ]
888
985
 
889
986
  class << self
@@ -897,25 +994,27 @@ self._re_scanner_eof_trans = [
897
994
  12,12,12,12,12,12,12,12,
898
995
  12,12,12,39,39,39,0,0,
899
996
  0,0,48,48,51,53,53,58,
900
- 58,0,0,64,0,0,69,0,
901
- 0,0,0,0,0,0,0,0,
902
- 0,0,0,84,84,84,84,0,
903
- 109,109,110,110,109,111,113,115,
904
- 115,121,123,125,127,132,0,0,
905
- 0,146,146,146,146,149,152,0,
906
- 157,157,0,174,174,174,176,178,
907
- 180,182,182,182,186,186,186,186,
908
- 191,0,198,198,198,198
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
909
1008
  ]
910
1009
 
911
1010
  class << self
912
1011
  attr_accessor :re_scanner_start
913
1012
  end
914
- self.re_scanner_start = 71;
1013
+ self.re_scanner_start = 76;
915
1014
  class << self
916
1015
  attr_accessor :re_scanner_first_final
917
1016
  end
918
- self.re_scanner_first_final = 71;
1017
+ self.re_scanner_first_final = 76;
919
1018
  class << self
920
1019
  attr_accessor :re_scanner_error
921
1020
  end
@@ -924,31 +1023,31 @@ self.re_scanner_error = 0;
924
1023
  class << self
925
1024
  attr_accessor :re_scanner_en_char_type
926
1025
  end
927
- self.re_scanner_en_char_type = 86;
1026
+ self.re_scanner_en_char_type = 91;
928
1027
  class << self
929
1028
  attr_accessor :re_scanner_en_unicode_property
930
1029
  end
931
- self.re_scanner_en_unicode_property = 87;
1030
+ self.re_scanner_en_unicode_property = 92;
932
1031
  class << self
933
1032
  attr_accessor :re_scanner_en_character_set
934
1033
  end
935
- self.re_scanner_en_character_set = 88;
1034
+ self.re_scanner_en_character_set = 93;
936
1035
  class << self
937
1036
  attr_accessor :re_scanner_en_set_escape_sequence
938
1037
  end
939
- self.re_scanner_en_set_escape_sequence = 95;
1038
+ self.re_scanner_en_set_escape_sequence = 100;
940
1039
  class << self
941
1040
  attr_accessor :re_scanner_en_escape_sequence
942
1041
  end
943
- self.re_scanner_en_escape_sequence = 98;
1042
+ self.re_scanner_en_escape_sequence = 106;
944
1043
  class << self
945
1044
  attr_accessor :re_scanner_en_conditional_expression
946
1045
  end
947
- self.re_scanner_en_conditional_expression = 113;
1046
+ self.re_scanner_en_conditional_expression = 126;
948
1047
  class << self
949
1048
  attr_accessor :re_scanner_en_main
950
1049
  end
951
- self.re_scanner_en_main = 71;
1050
+ self.re_scanner_en_main = 76;
952
1051
 
953
1052
  begin
954
1053
  p ||= 0
@@ -982,7 +1081,7 @@ begin
982
1081
  end
983
1082
  if _goto_level <= _resume
984
1083
  case _re_scanner_from_state_actions[cs]
985
- when 33 then
1084
+ when 37
986
1085
  begin
987
1086
  ts = p
988
1087
  end
@@ -991,10 +1090,10 @@ ts = p
991
1090
  _inds = _re_scanner_index_offsets[cs]
992
1091
  _slen = _re_scanner_key_spans[cs]
993
1092
  _wide = data[p].ord
994
- _trans = if ( _slen > 0 &&
1093
+ _trans = if ( _slen > 0 &&
995
1094
  _re_scanner_trans_keys[_keys] <= _wide &&
996
1095
  _wide <= _re_scanner_trans_keys[_keys + 1]
997
- ) then
1096
+ )
998
1097
  _re_scanner_indicies[ _inds + _wide - _re_scanner_trans_keys[_keys] ]
999
1098
  else
1000
1099
  _re_scanner_indicies[ _inds + _slen ]
@@ -1004,28 +1103,28 @@ ts = p
1004
1103
  cs = _re_scanner_trans_targs[_trans]
1005
1104
  if _re_scanner_trans_actions[_trans] != 0
1006
1105
  case _re_scanner_trans_actions[_trans]
1007
- when 35 then
1106
+ when 39
1008
1107
  begin
1009
1108
  self.group_depth = group_depth + 1 end
1010
- when 39 then
1109
+ when 33
1011
1110
  begin
1012
1111
  te = p+1
1013
1112
  end
1014
- when 62 then
1113
+ when 65
1015
1114
  begin
1016
1115
  te = p+1
1017
1116
  begin
1018
1117
  case text = copy(data, ts-1,te)
1019
- when '\d'; emit(:type, :digit, text)
1020
- when '\D'; emit(:type, :nondigit, text)
1021
- when '\h'; emit(:type, :hex, text)
1022
- when '\H'; emit(:type, :nonhex, text)
1023
- when '\s'; emit(:type, :space, text)
1024
- when '\S'; emit(:type, :nonspace, text)
1025
- when '\w'; emit(:type, :word, text)
1026
- when '\W'; emit(:type, :nonword, text)
1027
- when '\R'; emit(:type, :linebreak, text)
1028
- when '\X'; emit(:type, :xgrapheme, text)
1118
+ when '\d'; emit(:type, :digit, text)
1119
+ when '\D'; emit(:type, :nondigit, text)
1120
+ when '\h'; emit(:type, :hex, text)
1121
+ when '\H'; emit(:type, :nonhex, text)
1122
+ when '\s'; emit(:type, :space, text)
1123
+ when '\S'; emit(:type, :nonspace, text)
1124
+ when '\w'; emit(:type, :word, text)
1125
+ when '\W'; emit(:type, :nonword, text)
1126
+ when '\R'; emit(:type, :linebreak, text)
1127
+ when '\X'; emit(:type, :xgrapheme, text)
1029
1128
  end
1030
1129
  begin
1031
1130
  top -= 1
@@ -1036,7 +1135,7 @@ te = p+1
1036
1135
 
1037
1136
  end
1038
1137
  end
1039
- when 13 then
1138
+ when 13
1040
1139
  begin
1041
1140
  te = p+1
1042
1141
  begin
@@ -1059,15 +1158,15 @@ te = p+1
1059
1158
 
1060
1159
  end
1061
1160
  end
1062
- when 17 then
1161
+ when 17
1063
1162
  begin
1064
1163
  te = p+1
1065
- begin # special case, emits two tokens
1164
+ begin # special case, emits two tokens
1066
1165
  emit(:literal, :literal, '-')
1067
1166
  emit(:set, :intersection, '&&')
1068
1167
  end
1069
1168
  end
1070
- when 67 then
1169
+ when 70
1071
1170
  begin
1072
1171
  te = p+1
1073
1172
  begin
@@ -1078,35 +1177,35 @@ te = p+1
1078
1177
  end
1079
1178
  end
1080
1179
  end
1081
- when 69 then
1180
+ when 72
1082
1181
  begin
1083
1182
  te = p+1
1084
1183
  begin
1085
1184
  emit(:set, :intersection, '&&')
1086
1185
  end
1087
1186
  end
1088
- when 65 then
1187
+ when 68
1089
1188
  begin
1090
1189
  te = p+1
1091
1190
  begin
1092
1191
  begin
1093
1192
  stack[top] = cs
1094
1193
  top+= 1
1095
- cs = 95
1194
+ cs = 100
1096
1195
  _goto_level = _again
1097
1196
  next
1098
1197
  end
1099
1198
 
1100
1199
  end
1101
1200
  end
1102
- when 63 then
1201
+ when 66
1103
1202
  begin
1104
1203
  te = p+1
1105
1204
  begin
1106
1205
  emit(:literal, :literal, copy(data, ts, te))
1107
1206
  end
1108
1207
  end
1109
- when 15 then
1208
+ when 15
1110
1209
  begin
1111
1210
  te = p+1
1112
1211
  begin
@@ -1114,7 +1213,7 @@ te = p+1
1114
1213
  emit(:literal, :literal, text)
1115
1214
  end
1116
1215
  end
1117
- when 70 then
1216
+ when 73
1118
1217
  begin
1119
1218
  te = p
1120
1219
  p = p - 1; begin
@@ -1127,7 +1226,7 @@ p = p - 1; begin
1127
1226
  end
1128
1227
  end
1129
1228
  end
1130
- when 73 then
1229
+ when 76
1131
1230
  begin
1132
1231
  te = p
1133
1232
  p = p - 1; begin
@@ -1135,14 +1234,14 @@ p = p - 1; begin
1135
1234
  begin
1136
1235
  stack[top] = cs
1137
1236
  top+= 1
1138
- cs = 88
1237
+ cs = 93
1139
1238
  _goto_level = _again
1140
1239
  next
1141
1240
  end
1142
1241
 
1143
1242
  end
1144
1243
  end
1145
- when 68 then
1244
+ when 71
1146
1245
  begin
1147
1246
  te = p
1148
1247
  p = p - 1; begin
@@ -1150,7 +1249,7 @@ p = p - 1; begin
1150
1249
  emit(:literal, :literal, text)
1151
1250
  end
1152
1251
  end
1153
- when 16 then
1252
+ when 16
1154
1253
  begin
1155
1254
  begin p = ((te))-1; end
1156
1255
  begin
@@ -1163,7 +1262,7 @@ p = p - 1; begin
1163
1262
  end
1164
1263
  end
1165
1264
  end
1166
- when 19 then
1265
+ when 19
1167
1266
  begin
1168
1267
  begin p = ((te))-1; end
1169
1268
  begin
@@ -1171,14 +1270,14 @@ p = p - 1; begin
1171
1270
  begin
1172
1271
  stack[top] = cs
1173
1272
  top+= 1
1174
- cs = 88
1273
+ cs = 93
1175
1274
  _goto_level = _again
1176
1275
  next
1177
1276
  end
1178
1277
 
1179
1278
  end
1180
1279
  end
1181
- when 14 then
1280
+ when 14
1182
1281
  begin
1183
1282
  begin p = ((te))-1; end
1184
1283
  begin
@@ -1186,7 +1285,7 @@ p = p - 1; begin
1186
1285
  emit(:literal, :literal, text)
1187
1286
  end
1188
1287
  end
1189
- when 77 then
1288
+ when 80
1190
1289
  begin
1191
1290
  te = p+1
1192
1291
  begin
@@ -1200,23 +1299,23 @@ te = p+1
1200
1299
 
1201
1300
  end
1202
1301
  end
1203
- when 75 then
1302
+ when 77
1204
1303
  begin
1205
1304
  te = p+1
1206
1305
  begin
1207
1306
  p = p - 1;
1208
- cs = 88;
1307
+ cs = 93;
1209
1308
  begin
1210
1309
  stack[top] = cs
1211
1310
  top+= 1
1212
- cs = 98
1311
+ cs = 106
1213
1312
  _goto_level = _again
1214
1313
  next
1215
1314
  end
1216
1315
 
1217
1316
  end
1218
1317
  end
1219
- when 74 then
1318
+ when 22
1220
1319
  begin
1221
1320
  te = p+1
1222
1321
  begin
@@ -1230,7 +1329,7 @@ te = p+1
1230
1329
 
1231
1330
  end
1232
1331
  end
1233
- when 76 then
1332
+ when 79
1234
1333
  begin
1235
1334
  te = p
1236
1335
  p = p - 1; begin
@@ -1244,11 +1343,25 @@ p = p - 1; begin
1244
1343
 
1245
1344
  end
1246
1345
  end
1247
- when 87 then
1346
+ when 78
1248
1347
  begin
1249
- te = p+1
1348
+ te = p
1349
+ p = p - 1; begin
1350
+ emit(:escape, :literal, copy(data, ts-1,te))
1351
+ begin
1352
+ top -= 1
1353
+ cs = stack[top]
1354
+ _goto_level = _again
1355
+ next
1356
+ end
1357
+
1358
+ end
1359
+ end
1360
+ when 21
1361
+ begin
1362
+ begin p = ((te))-1; end
1250
1363
  begin
1251
- emit(:escape, :octal, copy(data, ts-1,te))
1364
+ emit(:escape, :literal, copy(data, ts-1,te))
1252
1365
  begin
1253
1366
  top -= 1
1254
1367
  cs = stack[top]
@@ -1258,13 +1371,11 @@ te = p+1
1258
1371
 
1259
1372
  end
1260
1373
  end
1261
- when 89 then
1374
+ when 87
1262
1375
  begin
1263
1376
  te = p+1
1264
- begin # special case, emits two tokens
1265
- text = copy(data, ts-1,te)
1266
- emit(:escape, :literal, text[0,2])
1267
- emit(:literal, :literal, text[2])
1377
+ begin
1378
+ emit(:escape, :octal, copy(data, ts-1,te))
1268
1379
  begin
1269
1380
  top -= 1
1270
1381
  cs = stack[top]
@@ -1274,24 +1385,24 @@ te = p+1
1274
1385
 
1275
1386
  end
1276
1387
  end
1277
- when 78 then
1388
+ when 81
1278
1389
  begin
1279
1390
  te = p+1
1280
1391
  begin
1281
1392
  case text = copy(data, ts-1,te)
1282
- when '\.'; emit(:escape, :dot, text)
1283
- when '\|'; emit(:escape, :alternation, text)
1284
- when '\^'; emit(:escape, :bol, text)
1285
- when '\$'; emit(:escape, :eol, text)
1286
- when '\?'; emit(:escape, :zero_or_one, text)
1287
- when '\*'; emit(:escape, :zero_or_more, text)
1288
- when '\+'; emit(:escape, :one_or_more, text)
1289
- when '\('; emit(:escape, :group_open, text)
1290
- when '\)'; emit(:escape, :group_close, text)
1291
- when '\{'; emit(:escape, :interval_open, text)
1292
- when '\}'; emit(:escape, :interval_close, text)
1293
- when '\['; emit(:escape, :set_open, text)
1294
- when '\]'; emit(:escape, :set_close, text)
1393
+ when '\.'; emit(:escape, :dot, text)
1394
+ when '\|'; emit(:escape, :alternation, text)
1395
+ when '\^'; emit(:escape, :bol, text)
1396
+ when '\$'; emit(:escape, :eol, text)
1397
+ when '\?'; emit(:escape, :zero_or_one, text)
1398
+ when '\*'; emit(:escape, :zero_or_more, text)
1399
+ when '\+'; emit(:escape, :one_or_more, text)
1400
+ when '\('; emit(:escape, :group_open, text)
1401
+ when '\)'; emit(:escape, :group_close, text)
1402
+ when '\{'; emit(:escape, :interval_open, text)
1403
+ when '\}'; emit(:escape, :interval_close, text)
1404
+ when '\['; emit(:escape, :set_open, text)
1405
+ when '\]'; emit(:escape, :set_close, text)
1295
1406
  when "\\\\";
1296
1407
  emit(:escape, :backslash, text)
1297
1408
  end
@@ -1304,21 +1415,21 @@ te = p+1
1304
1415
 
1305
1416
  end
1306
1417
  end
1307
- when 83 then
1418
+ when 84
1308
1419
  begin
1309
1420
  te = p+1
1310
1421
  begin
1311
1422
  # \b is emitted as backspace only when inside a character set, otherwise
1312
1423
  # it is a word boundary anchor. A syntax might "normalize" it if needed.
1313
1424
  case text = copy(data, ts-1,te)
1314
- when '\a'; emit(:escape, :bell, text)
1315
- when '\b'; emit(:escape, :backspace, text)
1316
- when '\e'; emit(:escape, :escape, text)
1317
- when '\f'; emit(:escape, :form_feed, text)
1318
- when '\n'; emit(:escape, :newline, text)
1319
- when '\r'; emit(:escape, :carriage, text)
1320
- when '\t'; emit(:escape, :tab, text)
1321
- when '\v'; emit(:escape, :vertical_tab, text)
1425
+ when '\a'; emit(:escape, :bell, text)
1426
+ when '\b'; emit(:escape, :backspace, text)
1427
+ when '\e'; emit(:escape, :escape, text)
1428
+ when '\f'; emit(:escape, :form_feed, text)
1429
+ when '\n'; emit(:escape, :newline, text)
1430
+ when '\r'; emit(:escape, :carriage, text)
1431
+ when '\t'; emit(:escape, :tab, text)
1432
+ when '\v'; emit(:escape, :vertical_tab, text)
1322
1433
  end
1323
1434
  begin
1324
1435
  top -= 1
@@ -1329,7 +1440,7 @@ te = p+1
1329
1440
 
1330
1441
  end
1331
1442
  end
1332
- when 28 then
1443
+ when 30
1333
1444
  begin
1334
1445
  te = p+1
1335
1446
  begin
@@ -1337,7 +1448,7 @@ te = p+1
1337
1448
  if text[2] == '{'
1338
1449
  emit(:escape, :codepoint_list, text)
1339
1450
  else
1340
- emit(:escape, :codepoint, text)
1451
+ emit(:escape, :codepoint, text)
1341
1452
  end
1342
1453
  begin
1343
1454
  top -= 1
@@ -1348,7 +1459,7 @@ te = p+1
1348
1459
 
1349
1460
  end
1350
1461
  end
1351
- when 95 then
1462
+ when 94
1352
1463
  begin
1353
1464
  te = p+1
1354
1465
  begin
@@ -1362,7 +1473,7 @@ te = p+1
1362
1473
 
1363
1474
  end
1364
1475
  end
1365
- when 24 then
1476
+ when 26
1366
1477
  begin
1367
1478
  te = p+1
1368
1479
  begin
@@ -1376,7 +1487,7 @@ te = p+1
1376
1487
 
1377
1488
  end
1378
1489
  end
1379
- when 26 then
1490
+ when 28
1380
1491
  begin
1381
1492
  te = p+1
1382
1493
  begin
@@ -1390,39 +1501,39 @@ te = p+1
1390
1501
 
1391
1502
  end
1392
1503
  end
1393
- when 81 then
1504
+ when 82
1394
1505
  begin
1395
1506
  te = p+1
1396
1507
  begin
1397
1508
  p = p - 1;
1398
- cs = ((in_set? ? 88 : 71));
1509
+ cs = ((in_set? ? 93 : 76));
1399
1510
  begin
1400
1511
  stack[top] = cs
1401
1512
  top+= 1
1402
- cs = 86
1513
+ cs = 91
1403
1514
  _goto_level = _again
1404
1515
  next
1405
1516
  end
1406
1517
 
1407
1518
  end
1408
1519
  end
1409
- when 82 then
1520
+ when 83
1410
1521
  begin
1411
1522
  te = p+1
1412
1523
  begin
1413
1524
  p = p - 1;
1414
- cs = ((in_set? ? 88 : 71));
1525
+ cs = ((in_set? ? 93 : 76));
1415
1526
  begin
1416
1527
  stack[top] = cs
1417
1528
  top+= 1
1418
- cs = 87
1529
+ cs = 92
1419
1530
  _goto_level = _again
1420
1531
  next
1421
1532
  end
1422
1533
 
1423
1534
  end
1424
1535
  end
1425
- when 22 then
1536
+ when 24
1426
1537
  begin
1427
1538
  te = p+1
1428
1539
  begin
@@ -1436,12 +1547,24 @@ te = p+1
1436
1547
 
1437
1548
  end
1438
1549
  end
1439
- when 88 then
1550
+ when 88
1440
1551
  begin
1441
1552
  te = p
1442
1553
  p = p - 1; begin
1443
1554
  text = copy(data, ts-1,te)
1444
- emit(:backref, :number, text)
1555
+
1556
+ # If not enough groups have been opened, there is a fallback to either an
1557
+ # octal or literal interpretation for 2+ digit numerical escapes.
1558
+ digits = text[1..-1]
1559
+ if digits.size == 1 || digits.to_i <= capturing_group_count
1560
+ emit(:backref, :number, text)
1561
+ elsif digits =~ /\A[0-7]{2,}\z/
1562
+ emit(:escape, :octal, text)
1563
+ else
1564
+ emit(:escape, :literal, text[0..1])
1565
+ emit(:literal, :literal, text[2..-1])
1566
+ end
1567
+
1445
1568
  begin
1446
1569
  top -= 1
1447
1570
  cs = stack[top]
@@ -1451,7 +1574,7 @@ p = p - 1; begin
1451
1574
 
1452
1575
  end
1453
1576
  end
1454
- when 86 then
1577
+ when 86
1455
1578
  begin
1456
1579
  te = p
1457
1580
  p = p - 1; begin
@@ -1465,11 +1588,16 @@ p = p - 1; begin
1465
1588
 
1466
1589
  end
1467
1590
  end
1468
- when 94 then
1591
+ when 95
1469
1592
  begin
1470
1593
  te = p
1471
1594
  p = p - 1; begin
1472
- emit(:escape, :hex, copy(data, ts-1,te))
1595
+ text = copy(data, ts-1,te)
1596
+ if regexp_encoding == Encoding::BINARY
1597
+ text.split(/(?=\\)/).each { |part| emit(:escape, :hex, part) }
1598
+ else
1599
+ emit(:escape, :utf8_hex, text)
1600
+ end
1473
1601
  begin
1474
1602
  top -= 1
1475
1603
  cs = stack[top]
@@ -1479,11 +1607,11 @@ p = p - 1; begin
1479
1607
 
1480
1608
  end
1481
1609
  end
1482
- when 91 then
1610
+ when 93
1483
1611
  begin
1484
1612
  te = p
1485
1613
  p = p - 1; begin
1486
- emit_meta_control_sequence(data, ts, te, :control)
1614
+ emit(:escape, :hex, copy(data, ts-1,te))
1487
1615
  begin
1488
1616
  top -= 1
1489
1617
  cs = stack[top]
@@ -1493,11 +1621,11 @@ p = p - 1; begin
1493
1621
 
1494
1622
  end
1495
1623
  end
1496
- when 93 then
1624
+ when 90
1497
1625
  begin
1498
1626
  te = p
1499
1627
  p = p - 1; begin
1500
- emit_meta_control_sequence(data, ts, te, :meta_sequence)
1628
+ emit_meta_control_sequence(data, ts, te, :control)
1501
1629
  begin
1502
1630
  top -= 1
1503
1631
  cs = stack[top]
@@ -1507,11 +1635,11 @@ p = p - 1; begin
1507
1635
 
1508
1636
  end
1509
1637
  end
1510
- when 84 then
1638
+ when 92
1511
1639
  begin
1512
1640
  te = p
1513
1641
  p = p - 1; begin
1514
- emit(:escape, :literal, copy(data, ts-1,te))
1642
+ emit_meta_control_sequence(data, ts, te, :meta_sequence)
1515
1643
  begin
1516
1644
  top -= 1
1517
1645
  cs = stack[top]
@@ -1521,10 +1649,10 @@ p = p - 1; begin
1521
1649
 
1522
1650
  end
1523
1651
  end
1524
- when 21 then
1652
+ when 85
1525
1653
  begin
1526
- begin p = ((te))-1; end
1527
- begin
1654
+ te = p
1655
+ p = p - 1; begin
1528
1656
  emit(:escape, :literal, copy(data, ts-1,te))
1529
1657
  begin
1530
1658
  top -= 1
@@ -1535,14 +1663,16 @@ p = p - 1; begin
1535
1663
 
1536
1664
  end
1537
1665
  end
1538
- when 85 then
1666
+ when 32
1539
1667
  begin
1540
- case act
1541
- when 17 then
1542
- begin begin p = ((te))-1; end
1543
-
1668
+ begin p = ((te))-1; end
1669
+ begin
1544
1670
  text = copy(data, ts-1,te)
1545
- emit(:backref, :number, text)
1671
+ if regexp_encoding == Encoding::BINARY
1672
+ text.split(/(?=\\)/).each { |part| emit(:escape, :hex, part) }
1673
+ else
1674
+ emit(:escape, :utf8_hex, text)
1675
+ end
1546
1676
  begin
1547
1677
  top -= 1
1548
1678
  cs = stack[top]
@@ -1550,11 +1680,13 @@ p = p - 1; begin
1550
1680
  next
1551
1681
  end
1552
1682
 
1553
- end
1554
- when 18 then
1555
- begin begin p = ((te))-1; end
1556
-
1557
- emit(:escape, :octal, copy(data, ts-1,te))
1683
+ end
1684
+ end
1685
+ when 23
1686
+ begin
1687
+ begin p = ((te))-1; end
1688
+ begin
1689
+ emit(:escape, :literal, copy(data, ts-1,te))
1558
1690
  begin
1559
1691
  top -= 1
1560
1692
  cs = stack[top]
@@ -1562,10 +1694,9 @@ p = p - 1; begin
1562
1694
  next
1563
1695
  end
1564
1696
 
1565
- end
1566
- end
1567
- end
1568
- when 31 then
1697
+ end
1698
+ end
1699
+ when 35
1569
1700
  begin
1570
1701
  te = p+1
1571
1702
  begin
@@ -1575,7 +1706,7 @@ te = p+1
1575
1706
  emit(:conditional, :condition_close, ')')
1576
1707
  end
1577
1708
  end
1578
- when 96 then
1709
+ when 96
1579
1710
  begin
1580
1711
  te = p+1
1581
1712
  begin
@@ -1583,14 +1714,14 @@ te = p+1
1583
1714
  begin
1584
1715
  stack[top] = cs
1585
1716
  top+= 1
1586
- cs = 71
1717
+ cs = 76
1587
1718
  _goto_level = _again
1588
1719
  next
1589
1720
  end
1590
1721
 
1591
1722
  end
1592
1723
  end
1593
- when 97 then
1724
+ when 97
1594
1725
  begin
1595
1726
  te = p
1596
1727
  p = p - 1; begin
@@ -1598,14 +1729,14 @@ p = p - 1; begin
1598
1729
  begin
1599
1730
  stack[top] = cs
1600
1731
  top+= 1
1601
- cs = 71
1732
+ cs = 76
1602
1733
  _goto_level = _again
1603
1734
  next
1604
1735
  end
1605
1736
 
1606
1737
  end
1607
1738
  end
1608
- when 30 then
1739
+ when 34
1609
1740
  begin
1610
1741
  begin p = ((te))-1; end
1611
1742
  begin
@@ -1613,21 +1744,21 @@ p = p - 1; begin
1613
1744
  begin
1614
1745
  stack[top] = cs
1615
1746
  top+= 1
1616
- cs = 71
1747
+ cs = 76
1617
1748
  _goto_level = _again
1618
1749
  next
1619
1750
  end
1620
1751
 
1621
1752
  end
1622
1753
  end
1623
- when 37 then
1754
+ when 41
1624
1755
  begin
1625
1756
  te = p+1
1626
1757
  begin
1627
1758
  emit(:meta, :dot, copy(data, ts, te))
1628
1759
  end
1629
1760
  end
1630
- when 42 then
1761
+ when 45
1631
1762
  begin
1632
1763
  te = p+1
1633
1764
  begin
@@ -1638,49 +1769,49 @@ te = p+1
1638
1769
  end
1639
1770
  end
1640
1771
  end
1641
- when 41 then
1772
+ when 44
1642
1773
  begin
1643
1774
  te = p+1
1644
1775
  begin
1645
1776
  emit(:anchor, :bol, copy(data, ts, te))
1646
1777
  end
1647
1778
  end
1648
- when 34 then
1779
+ when 38
1649
1780
  begin
1650
1781
  te = p+1
1651
1782
  begin
1652
1783
  emit(:anchor, :eol, copy(data, ts, te))
1653
1784
  end
1654
1785
  end
1655
- when 59 then
1786
+ when 62
1656
1787
  begin
1657
1788
  te = p+1
1658
1789
  begin
1659
1790
  emit(:keep, :mark, copy(data, ts, te))
1660
1791
  end
1661
1792
  end
1662
- when 58 then
1793
+ when 61
1663
1794
  begin
1664
1795
  te = p+1
1665
1796
  begin
1666
1797
  case text = copy(data, ts, te)
1667
- when '\A'; emit(:anchor, :bos, text)
1668
- when '\z'; emit(:anchor, :eos, text)
1669
- when '\Z'; emit(:anchor, :eos_ob_eol, text)
1670
- when '\b'; emit(:anchor, :word_boundary, text)
1671
- when '\B'; emit(:anchor, :nonword_boundary, text)
1672
- when '\G'; emit(:anchor, :match_start, text)
1798
+ when '\A'; emit(:anchor, :bos, text)
1799
+ when '\z'; emit(:anchor, :eos, text)
1800
+ when '\Z'; emit(:anchor, :eos_ob_eol, text)
1801
+ when '\b'; emit(:anchor, :word_boundary, text)
1802
+ when '\B'; emit(:anchor, :nonword_boundary, text)
1803
+ when '\G'; emit(:anchor, :match_start, text)
1673
1804
  end
1674
1805
  end
1675
1806
  end
1676
- when 40 then
1807
+ when 43
1677
1808
  begin
1678
1809
  te = p+1
1679
1810
  begin
1680
1811
  append_literal(data, ts, te)
1681
1812
  end
1682
1813
  end
1683
- when 49 then
1814
+ when 52
1684
1815
  begin
1685
1816
  te = p+1
1686
1817
  begin
@@ -1693,14 +1824,14 @@ te = p+1
1693
1824
  begin
1694
1825
  stack[top] = cs
1695
1826
  top+= 1
1696
- cs = 113
1827
+ cs = 126
1697
1828
  _goto_level = _again
1698
1829
  next
1699
1830
  end
1700
1831
 
1701
1832
  end
1702
1833
  end
1703
- when 50 then
1834
+ when 53
1704
1835
  begin
1705
1836
  te = p+1
1706
1837
  begin
@@ -1711,40 +1842,40 @@ te = p+1
1711
1842
  emit_options(text)
1712
1843
  end
1713
1844
  end
1714
- when 6 then
1845
+ when 6
1715
1846
  begin
1716
1847
  te = p+1
1717
1848
  begin
1718
1849
  case text = copy(data, ts, te)
1719
- when '(?='; emit(:assertion, :lookahead, text)
1720
- when '(?!'; emit(:assertion, :nlookahead, text)
1721
- when '(?<='; emit(:assertion, :lookbehind, text)
1722
- when '(?<!'; emit(:assertion, :nlookbehind, text)
1850
+ when '(?='; emit(:assertion, :lookahead, text)
1851
+ when '(?!'; emit(:assertion, :nlookahead, text)
1852
+ when '(?<='; emit(:assertion, :lookbehind, text)
1853
+ when '(?<!'; emit(:assertion, :nlookbehind, text)
1723
1854
  end
1724
1855
  end
1725
1856
  end
1726
- when 5 then
1857
+ when 5
1727
1858
  begin
1728
1859
  te = p+1
1729
1860
  begin
1730
1861
  case text = copy(data, ts, te)
1731
- when '(?:'; emit(:group, :passive, text)
1732
- when '(?>'; emit(:group, :atomic, text)
1733
- when '(?~'; emit(:group, :absence, text)
1862
+ when '(?:'; emit(:group, :passive, text)
1863
+ when '(?>'; emit(:group, :atomic, text)
1864
+ when '(?~'; emit(:group, :absence, text)
1734
1865
 
1735
1866
  when /^\(\?(?:<>|'')/
1736
1867
  raise ValidationError.for(:group, 'named group', 'name is empty')
1737
1868
 
1738
1869
  when /^\(\?<[^>]+>/
1739
- emit(:group, :named_ab, text)
1870
+ emit(:group, :named_ab, text)
1740
1871
 
1741
1872
  when /^\(\?'[^']+'/
1742
- emit(:group, :named_sq, text)
1873
+ emit(:group, :named_sq, text)
1743
1874
 
1744
1875
  end
1745
1876
  end
1746
1877
  end
1747
- when 9 then
1878
+ when 9
1748
1879
  begin
1749
1880
  te = p+1
1750
1881
  begin
@@ -1764,7 +1895,7 @@ te = p+1
1764
1895
  end
1765
1896
  end
1766
1897
  end
1767
- when 8 then
1898
+ when 8
1768
1899
  begin
1769
1900
  te = p+1
1770
1901
  begin
@@ -1780,47 +1911,47 @@ te = p+1
1780
1911
  end
1781
1912
  end
1782
1913
  end
1783
- when 56 then
1914
+ when 59
1784
1915
  begin
1785
1916
  te = p+1
1786
1917
  begin
1787
1918
  case text = copy(data, ts, te)
1788
- when '?' ; emit(:quantifier, :zero_or_one, text)
1789
- when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
1790
- when '?+'; emit(:quantifier, :zero_or_one_possessive, text)
1919
+ when '?' ; emit(:quantifier, :zero_or_one, text)
1920
+ when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
1921
+ when '?+'; emit(:quantifier, :zero_or_one_possessive, text)
1791
1922
  end
1792
1923
  end
1793
1924
  end
1794
- when 52 then
1925
+ when 55
1795
1926
  begin
1796
1927
  te = p+1
1797
1928
  begin
1798
1929
  case text = copy(data, ts, te)
1799
- when '*' ; emit(:quantifier, :zero_or_more, text)
1800
- when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
1801
- when '*+'; emit(:quantifier, :zero_or_more_possessive, text)
1930
+ when '*' ; emit(:quantifier, :zero_or_more, text)
1931
+ when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
1932
+ when '*+'; emit(:quantifier, :zero_or_more_possessive, text)
1802
1933
  end
1803
1934
  end
1804
1935
  end
1805
- when 54 then
1936
+ when 57
1806
1937
  begin
1807
1938
  te = p+1
1808
1939
  begin
1809
1940
  case text = copy(data, ts, te)
1810
- when '+' ; emit(:quantifier, :one_or_more, text)
1811
- when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
1812
- when '++'; emit(:quantifier, :one_or_more_possessive, text)
1941
+ when '+' ; emit(:quantifier, :one_or_more, text)
1942
+ when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
1943
+ when '++'; emit(:quantifier, :one_or_more_possessive, text)
1813
1944
  end
1814
1945
  end
1815
1946
  end
1816
- when 11 then
1947
+ when 11
1817
1948
  begin
1818
1949
  te = p+1
1819
1950
  begin
1820
1951
  emit(:quantifier, :interval, copy(data, ts, te))
1821
1952
  end
1822
1953
  end
1823
- when 46 then
1954
+ when 49
1824
1955
  begin
1825
1956
  te = p+1
1826
1957
  begin
@@ -1834,7 +1965,7 @@ te = p+1
1834
1965
  end
1835
1966
  end
1836
1967
  end
1837
- when 48 then
1968
+ when 51
1838
1969
  begin
1839
1970
  te = p
1840
1971
  p = p - 1; begin
@@ -1845,69 +1976,70 @@ p = p - 1; begin
1845
1976
  emit_options(text)
1846
1977
  end
1847
1978
  end
1848
- when 47 then
1979
+ when 50
1849
1980
  begin
1850
1981
  te = p
1851
1982
  p = p - 1; begin
1983
+ self.capturing_group_count = capturing_group_count + 1
1852
1984
  text = copy(data, ts, te)
1853
1985
  emit(:group, :capture, text)
1854
1986
  end
1855
1987
  end
1856
- when 55 then
1988
+ when 58
1857
1989
  begin
1858
1990
  te = p
1859
1991
  p = p - 1; begin
1860
1992
  case text = copy(data, ts, te)
1861
- when '?' ; emit(:quantifier, :zero_or_one, text)
1862
- when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
1863
- when '?+'; emit(:quantifier, :zero_or_one_possessive, text)
1993
+ when '?' ; emit(:quantifier, :zero_or_one, text)
1994
+ when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
1995
+ when '?+'; emit(:quantifier, :zero_or_one_possessive, text)
1864
1996
  end
1865
1997
  end
1866
1998
  end
1867
- when 51 then
1999
+ when 54
1868
2000
  begin
1869
2001
  te = p
1870
2002
  p = p - 1; begin
1871
2003
  case text = copy(data, ts, te)
1872
- when '*' ; emit(:quantifier, :zero_or_more, text)
1873
- when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
1874
- when '*+'; emit(:quantifier, :zero_or_more_possessive, text)
2004
+ when '*' ; emit(:quantifier, :zero_or_more, text)
2005
+ when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
2006
+ when '*+'; emit(:quantifier, :zero_or_more_possessive, text)
1875
2007
  end
1876
2008
  end
1877
2009
  end
1878
- when 53 then
2010
+ when 56
1879
2011
  begin
1880
2012
  te = p
1881
2013
  p = p - 1; begin
1882
2014
  case text = copy(data, ts, te)
1883
- when '+' ; emit(:quantifier, :one_or_more, text)
1884
- when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
1885
- when '++'; emit(:quantifier, :one_or_more_possessive, text)
2015
+ when '+' ; emit(:quantifier, :one_or_more, text)
2016
+ when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
2017
+ when '++'; emit(:quantifier, :one_or_more_possessive, text)
1886
2018
  end
1887
2019
  end
1888
2020
  end
1889
- when 60 then
2021
+ when 63
1890
2022
  begin
1891
2023
  te = p
1892
2024
  p = p - 1; begin
1893
2025
  append_literal(data, ts, te)
1894
2026
  end
1895
2027
  end
1896
- when 57 then
2028
+ when 60
1897
2029
  begin
1898
2030
  te = p
1899
2031
  p = p - 1; begin
1900
2032
  begin
1901
2033
  stack[top] = cs
1902
2034
  top+= 1
1903
- cs = 98
2035
+ cs = 106
1904
2036
  _goto_level = _again
1905
2037
  next
1906
2038
  end
1907
2039
 
1908
2040
  end
1909
2041
  end
1910
- when 45 then
2042
+ when 48
1911
2043
  begin
1912
2044
  te = p
1913
2045
  p = p - 1; begin
@@ -1921,7 +2053,7 @@ p = p - 1; begin
1921
2053
  end
1922
2054
  end
1923
2055
  end
1924
- when 44 then
2056
+ when 47
1925
2057
  begin
1926
2058
  te = p
1927
2059
  p = p - 1; begin
@@ -1932,14 +2064,14 @@ p = p - 1; begin
1932
2064
  end
1933
2065
  end
1934
2066
  end
1935
- when 43 then
2067
+ when 46
1936
2068
  begin
1937
2069
  te = p
1938
2070
  p = p - 1; begin
1939
2071
  append_literal(data, ts, te)
1940
2072
  end
1941
2073
  end
1942
- when 3 then
2074
+ when 3
1943
2075
  begin
1944
2076
  begin p = ((te))-1; end
1945
2077
  begin
@@ -1950,45 +2082,45 @@ p = p - 1; begin
1950
2082
  emit_options(text)
1951
2083
  end
1952
2084
  end
1953
- when 10 then
2085
+ when 10
1954
2086
  begin
1955
2087
  begin p = ((te))-1; end
1956
2088
  begin
1957
2089
  append_literal(data, ts, te)
1958
2090
  end
1959
2091
  end
1960
- when 7 then
2092
+ when 7
1961
2093
  begin
1962
2094
  begin p = ((te))-1; end
1963
2095
  begin
1964
2096
  begin
1965
2097
  stack[top] = cs
1966
2098
  top+= 1
1967
- cs = 98
2099
+ cs = 106
1968
2100
  _goto_level = _again
1969
2101
  next
1970
2102
  end
1971
2103
 
1972
2104
  end
1973
2105
  end
1974
- when 1 then
2106
+ when 1
1975
2107
  begin
1976
2108
  case act
1977
- when 0 then
2109
+ when 0
1978
2110
  begin begin
1979
2111
  cs = 0
1980
2112
  _goto_level = _again
1981
2113
  next
1982
2114
  end
1983
2115
  end
1984
- when 57 then
2116
+ when 58
1985
2117
  begin begin p = ((te))-1; end
1986
2118
 
1987
2119
  append_literal(data, ts, te)
1988
2120
  end
1989
2121
  end
1990
2122
  end
1991
- when 72 then
2123
+ when 75
1992
2124
  begin
1993
2125
 
1994
2126
  text = copy(data, ts ? ts-1 : 0,-1)
@@ -2001,14 +2133,14 @@ p = p - 1; begin
2001
2133
  begin
2002
2134
  stack[top] = cs
2003
2135
  top+= 1
2004
- cs = 88
2136
+ cs = 93
2005
2137
  _goto_level = _again
2006
2138
  next
2007
2139
  end
2008
2140
 
2009
2141
  end
2010
2142
  end
2011
- when 18 then
2143
+ when 18
2012
2144
  begin
2013
2145
 
2014
2146
  text = copy(data, ts ? ts-1 : 0,-1)
@@ -2021,14 +2153,14 @@ p = p - 1; begin
2021
2153
  begin
2022
2154
  stack[top] = cs
2023
2155
  top+= 1
2024
- cs = 88
2156
+ cs = 93
2025
2157
  _goto_level = _again
2026
2158
  next
2027
2159
  end
2028
2160
 
2029
2161
  end
2030
2162
  end
2031
- when 90 then
2163
+ when 89
2032
2164
  begin
2033
2165
 
2034
2166
  text = copy(data, ts ? ts-1 : 0,-1)
@@ -2047,7 +2179,7 @@ p = p - 1; begin
2047
2179
 
2048
2180
  end
2049
2181
  end
2050
- when 92 then
2182
+ when 91
2051
2183
  begin
2052
2184
 
2053
2185
  text = copy(data, ts ? ts-1 : 0,-1)
@@ -2066,7 +2198,7 @@ p = p - 1; begin
2066
2198
 
2067
2199
  end
2068
2200
  end
2069
- when 25 then
2201
+ when 27
2070
2202
  begin
2071
2203
 
2072
2204
  text = copy(data, ts ? ts-1 : 0,-1)
@@ -2085,7 +2217,7 @@ p = p - 1; begin
2085
2217
 
2086
2218
  end
2087
2219
  end
2088
- when 27 then
2220
+ when 29
2089
2221
  begin
2090
2222
 
2091
2223
  text = copy(data, ts ? ts-1 : 0,-1)
@@ -2104,7 +2236,7 @@ p = p - 1; begin
2104
2236
 
2105
2237
  end
2106
2238
  end
2107
- when 29 then
2239
+ when 31
2108
2240
  begin
2109
2241
 
2110
2242
  text = copy(data, ts ? ts-1 : 0,-1)
@@ -2122,7 +2254,7 @@ te = p+1
2122
2254
 
2123
2255
  end
2124
2256
  end
2125
- when 4 then
2257
+ when 4
2126
2258
  begin
2127
2259
  self.group_depth = group_depth - 1 end
2128
2260
  begin
@@ -2131,7 +2263,7 @@ te = p+1
2131
2263
  emit(:group, :comment, copy(data, ts, te))
2132
2264
  end
2133
2265
  end
2134
- when 36 then
2266
+ when 40
2135
2267
  begin
2136
2268
  self.group_depth = group_depth - 1 end
2137
2269
  begin
@@ -2153,9 +2285,9 @@ te = p+1
2153
2285
  end
2154
2286
  end
2155
2287
  end
2156
- when 38 then
2288
+ when 42
2157
2289
  begin
2158
- self.set_depth = set_depth + 1 end
2290
+ self.set_depth = set_depth + 1 end
2159
2291
  begin
2160
2292
  te = p+1
2161
2293
  begin
@@ -2163,16 +2295,16 @@ te = p+1
2163
2295
  begin
2164
2296
  stack[top] = cs
2165
2297
  top+= 1
2166
- cs = 88
2298
+ cs = 93
2167
2299
  _goto_level = _again
2168
2300
  next
2169
2301
  end
2170
2302
 
2171
2303
  end
2172
2304
  end
2173
- when 66 then
2305
+ when 69
2174
2306
  begin
2175
- self.set_depth = set_depth - 1 end
2307
+ self.set_depth = set_depth - 1 end
2176
2308
  begin
2177
2309
  te = p+1
2178
2310
  begin
@@ -2187,7 +2319,7 @@ te = p+1
2187
2319
 
2188
2320
  else
2189
2321
  begin
2190
- cs = 71
2322
+ cs = 76
2191
2323
  _goto_level = _again
2192
2324
  next
2193
2325
  end
@@ -2195,12 +2327,12 @@ te = p+1
2195
2327
  end
2196
2328
  end
2197
2329
  end
2198
- when 71 then
2330
+ when 74
2199
2331
  begin
2200
- self.set_depth = set_depth - 1 end
2332
+ self.set_depth = set_depth - 1 end
2201
2333
  begin
2202
2334
  te = p+1
2203
- begin # special case, emits two tokens
2335
+ begin # special case, emits two tokens
2204
2336
  emit(:literal, :literal, '-')
2205
2337
  emit(:set, :close, ']')
2206
2338
  if in_set?
@@ -2213,7 +2345,7 @@ te = p+1
2213
2345
 
2214
2346
  else
2215
2347
  begin
2216
- cs = 71
2348
+ cs = 76
2217
2349
  _goto_level = _again
2218
2350
  next
2219
2351
  end
@@ -2221,9 +2353,9 @@ te = p+1
2221
2353
  end
2222
2354
  end
2223
2355
  end
2224
- when 20 then
2356
+ when 20
2225
2357
  begin
2226
- self.set_depth = set_depth - 1 end
2358
+ self.set_depth = set_depth - 1 end
2227
2359
  begin
2228
2360
  te = p+1
2229
2361
  begin
@@ -2236,46 +2368,34 @@ te = p+1
2236
2368
  type = :nonposixclass
2237
2369
  end
2238
2370
 
2239
- unless self.class.posix_classes.include?(class_name)
2371
+ unless POSIX_CLASSES[class_name]
2240
2372
  raise ValidationError.for(:posix_class, text)
2241
2373
  end
2242
2374
 
2243
2375
  emit(type, class_name.to_sym, text)
2244
2376
  end
2245
2377
  end
2246
- when 64 then
2247
- begin
2248
- te = p+1
2249
- end
2250
- begin
2251
- self.set_depth = set_depth + 1 end
2252
- when 80 then
2378
+ when 67
2253
2379
  begin
2254
2380
  te = p+1
2255
2381
  end
2256
2382
  begin
2257
- act = 17; end
2258
- when 79 then
2383
+ self.set_depth = set_depth + 1 end
2384
+ when 2
2259
2385
  begin
2260
2386
  te = p+1
2261
2387
  end
2262
2388
  begin
2263
- act = 18; end
2264
- when 2 then
2265
- begin
2266
- te = p+1
2267
- end
2268
- begin
2269
- act = 57; end
2389
+ act = 58; end
2270
2390
  end
2271
2391
  end
2272
2392
  end
2273
2393
  if _goto_level <= _again
2274
2394
  case _re_scanner_to_state_actions[cs]
2275
- when 61 then
2395
+ when 64
2276
2396
  begin
2277
2397
  ts = nil; end
2278
- when 32 then
2398
+ when 36
2279
2399
  begin
2280
2400
  ts = nil; end
2281
2401
  begin
@@ -2301,12 +2421,12 @@ act = 0
2301
2421
  next;
2302
2422
  end
2303
2423
  case _re_scanner_eof_actions[cs]
2304
- when 12 then
2424
+ when 12
2305
2425
  begin
2306
2426
 
2307
2427
  raise PrematureEndError.new('unicode property')
2308
2428
  end
2309
- when 23 then
2429
+ when 25
2310
2430
  begin
2311
2431
 
2312
2432
  text = copy(data, ts ? ts-1 : 0,-1)
@@ -2354,10 +2474,11 @@ end
2354
2474
  File.read("#{__dir__}/scanner/properties/#{name}.csv").scan(/(.+),(.+)/).to_h
2355
2475
  end
2356
2476
 
2357
- def self.posix_classes
2477
+ # Use each_with_object for required_ruby_version >= 2.2,or #to_h for >= 2.6
2478
+ POSIX_CLASSES =
2358
2479
  %w[alnum alpha ascii blank cntrl digit graph
2359
2480
  lower print punct space upper word xdigit]
2360
- end
2481
+ .inject({}) { |o, e| o.merge(e => true) }.freeze
2361
2482
 
2362
2483
  # Emits an array with the details of the scanned pattern
2363
2484
  def emit(type, token, text)
@@ -2385,16 +2506,25 @@ end
2385
2506
  end
2386
2507
  end
2387
2508
 
2388
- attr_accessor :literal_run # only public for #||= to work on ruby <= 2.5
2509
+ attr_accessor :capturing_group_count, :literal_run # only public for #||= to work on ruby <= 2.5
2389
2510
 
2390
2511
  private
2391
2512
 
2392
2513
  attr_accessor :block,
2393
2514
  :collect_tokens, :tokens, :prev_token,
2394
2515
  :free_spacing, :spacing_stack,
2516
+ :regexp_encoding,
2395
2517
  :group_depth, :set_depth, :conditional_stack,
2396
2518
  :char_pos
2397
2519
 
2520
+ def extract_encoding(input_object, options)
2521
+ if input_object.is_a?(::Regexp)
2522
+ input_object.encoding
2523
+ elsif options && (options & Regexp::NOENCODING)
2524
+ Encoding::BINARY
2525
+ end
2526
+ end
2527
+
2398
2528
  def free_spacing?(input_object, options)
2399
2529
  if options && !input_object.is_a?(String)
2400
2530
  raise ArgumentError, 'options cannot be supplied unless scanning a String'