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