regexp_parser 2.7.0 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +62 -3
  3. data/Gemfile +3 -3
  4. data/LICENSE +1 -1
  5. data/README.md +33 -30
  6. data/lib/regexp_parser/expression/base.rb +0 -7
  7. data/lib/regexp_parser/expression/classes/alternation.rb +1 -1
  8. data/lib/regexp_parser/expression/classes/backreference.rb +4 -6
  9. data/lib/regexp_parser/expression/classes/character_set/range.rb +2 -7
  10. data/lib/regexp_parser/expression/classes/character_set.rb +3 -4
  11. data/lib/regexp_parser/expression/classes/conditional.rb +2 -14
  12. data/lib/regexp_parser/expression/classes/escape_sequence.rb +3 -1
  13. data/lib/regexp_parser/expression/classes/free_space.rb +3 -1
  14. data/lib/regexp_parser/expression/classes/group.rb +0 -22
  15. data/lib/regexp_parser/expression/classes/posix_class.rb +5 -1
  16. data/lib/regexp_parser/expression/classes/unicode_property.rb +5 -2
  17. data/lib/regexp_parser/expression/methods/construct.rb +2 -4
  18. data/lib/regexp_parser/expression/methods/parts.rb +23 -0
  19. data/lib/regexp_parser/expression/methods/printing.rb +26 -0
  20. data/lib/regexp_parser/expression/methods/tests.rb +40 -3
  21. data/lib/regexp_parser/expression/methods/traverse.rb +33 -20
  22. data/lib/regexp_parser/expression/quantifier.rb +30 -17
  23. data/lib/regexp_parser/expression/sequence.rb +5 -9
  24. data/lib/regexp_parser/expression/sequence_operation.rb +4 -9
  25. data/lib/regexp_parser/expression/shared.rb +37 -24
  26. data/lib/regexp_parser/expression/subexpression.rb +20 -18
  27. data/lib/regexp_parser/expression.rb +2 -0
  28. data/lib/regexp_parser/lexer.rb +15 -7
  29. data/lib/regexp_parser/parser.rb +85 -86
  30. data/lib/regexp_parser/scanner/errors/premature_end_error.rb +8 -0
  31. data/lib/regexp_parser/scanner/errors/scanner_error.rb +6 -0
  32. data/lib/regexp_parser/scanner/errors/validation_error.rb +63 -0
  33. data/lib/regexp_parser/scanner/properties/long.csv +11 -0
  34. data/lib/regexp_parser/scanner/properties/short.csv +2 -0
  35. data/lib/regexp_parser/scanner/property.rl +1 -1
  36. data/lib/regexp_parser/scanner/scanner.rl +35 -129
  37. data/lib/regexp_parser/scanner.rb +1084 -1303
  38. data/lib/regexp_parser/syntax/token/backreference.rb +3 -0
  39. data/lib/regexp_parser/syntax/token/character_set.rb +3 -0
  40. data/lib/regexp_parser/syntax/token/escape.rb +3 -1
  41. data/lib/regexp_parser/syntax/token/meta.rb +9 -2
  42. data/lib/regexp_parser/syntax/token/unicode_property.rb +17 -1
  43. data/lib/regexp_parser/syntax/token/virtual.rb +11 -0
  44. data/lib/regexp_parser/version.rb +1 -1
  45. metadata +9 -3
@@ -1,76 +1,16 @@
1
1
  # -*- warn-indent:false; -*-
2
-
3
- # line 1 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
4
-
5
- # line 650 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
6
-
7
-
2
+ #
8
3
  # THIS IS A GENERATED FILE, DO NOT EDIT DIRECTLY
9
- # This file was generated from lib/regexp_parser/scanner/scanner.rl
10
-
11
- require 'regexp_parser/error'
12
-
13
- class Regexp::Scanner
14
- # General scanner error (catch all)
15
- class ScannerError < Regexp::Parser::Error; end
16
-
17
- # Base for all scanner validation errors
18
- class ValidationError < Regexp::Parser::Error
19
- def initialize(reason)
20
- super reason
21
- end
22
- end
23
-
24
- # Unexpected end of pattern
25
- class PrematureEndError < ScannerError
26
- def initialize(where = '')
27
- super "Premature end of pattern at #{where}"
28
- end
29
- end
30
-
31
- # Invalid sequence format. Used for escape sequences, mainly.
32
- class InvalidSequenceError < ValidationError
33
- def initialize(what = 'sequence', where = '')
34
- super "Invalid #{what} at #{where}"
35
- end
36
- end
4
+ #
5
+ # This file was generated from scanner.rl
6
+ # by running `bundle exec rake ragel:rb`
37
7
 
38
- # Invalid group. Used for named groups.
39
- class InvalidGroupError < ValidationError
40
- def initialize(what, reason)
41
- super "Invalid #{what}, #{reason}."
42
- end
43
- end
44
-
45
- # Invalid groupOption. Used for inline options.
46
- # TODO: should become InvalidGroupOptionError in v3.0.0 for consistency
47
- class InvalidGroupOption < ValidationError
48
- def initialize(option, text)
49
- super "Invalid group option #{option} in #{text}"
50
- end
51
- end
52
-
53
- # Invalid back reference. Used for name a number refs/calls.
54
- class InvalidBackrefError < ValidationError
55
- def initialize(what, reason)
56
- super "Invalid back reference #{what}, #{reason}"
57
- end
58
- end
59
8
 
60
- # The property name was not recognized by the scanner.
61
- class UnknownUnicodePropertyError < ValidationError
62
- def initialize(name)
63
- super "Unknown unicode character property name #{name}"
64
- end
65
- end
66
-
67
- # The POSIX class name was not recognized by the scanner.
68
- class UnknownPosixClassError < ValidationError
69
- def initialize(text)
70
- super "Unknown POSIX class #{text}"
71
- end
72
- end
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'
73
12
 
13
+ class Regexp::Scanner
74
14
  # Scans the given regular expression text, or Regexp object and collects the
75
15
  # emitted token into an array that gets returned at the end. If a block is
76
16
  # given, it gets called for each emitted token.
@@ -101,59 +41,56 @@ class Regexp::Scanner
101
41
  self.conditional_stack = []
102
42
  self.char_pos = 0
103
43
 
104
-
105
- # line 105 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner.rb"
106
44
  class << self
107
45
  attr_accessor :_re_scanner_trans_keys
108
46
  private :_re_scanner_trans_keys, :_re_scanner_trans_keys=
109
47
  end
110
48
  self._re_scanner_trans_keys = [
111
- 0, 0, -128, -65, -128, -65,
112
- -128, -65, 41, 41, 39,
113
- 57, 39, 39, 33, 62,
114
- 62, 62, 39, 60, 39, 57,
115
- 39, 39, 48, 57, 39,
116
- 57, 39, 57, 48, 57,
117
- 39, 39, 33, 62, 62, 62,
118
- 48, 57, 48, 62, 43,
119
- 62, 48, 57, 62, 62,
120
- 39, 60, 39, 57, 39, 39,
121
- 48, 57, 39, 57, 39,
122
- 57, 48, 57, 33, 62,
123
- 62, 62, 48, 57, 48, 62,
124
- 43, 62, 48, 57, 48,
125
- 57, 48, 125, 44, 125,
126
- 123, 123, 9, 122, 9, 125,
127
- 9, 122, -128, -65, -128,
128
- -65, 38, 38, 58, 93,
129
- 58, 93, -128, -65, -128, -65,
130
- 45, 45, 92, 92, 92,
131
- 92, 45, 45, 92, 92,
132
- 92, 92, 48, 123, 48, 102,
133
- 48, 102, 48, 102, 48,
134
- 102, 9, 125, 9, 125,
135
- 9, 125, 9, 125, 9, 125,
136
- 9, 125, 48, 123, 39,
137
- 39, 41, 41, 41, 57,
138
- 62, 62, -128, 127, -62, -12,
139
- 1, 127, 1, 127, 9,
140
- 32, 33, 126, 10, 10,
141
- 63, 63, 33, 126, 33, 126,
142
- 62, 62, 43, 63, 43,
143
- 63, 43, 63, 65, 122,
144
- 44, 57, 68, 119, 80, 112,
145
- -62, 125, -128, -65, -128,
146
- -65, -128, -65, 38, 38,
147
- 38, 93, 58, 58, 48, 120,
148
- 48, 55, 48, 55, -62,
149
- 125, -128, -65, -128, -65,
150
- -128, -65, 48, 55, 48, 55,
151
- 77, 77, 45, 45, 0,
152
- 0, 67, 99, 45, 45,
153
- 0, 0, 92, 92, 48, 102,
154
- 39, 60, 39, 57, 49,
155
- 57, 41, 57, 33, 62,
156
- 0
49
+ 0,0,-128,-65,-128,-65,
50
+ -128,-65,41,41,39,
51
+ 57,39,39,33,62,
52
+ 62,62,39,60,39,57,
53
+ 39,39,48,57,39,
54
+ 57,48,57,39,57,
55
+ 33,62,62,62,48,57,
56
+ 43,62,48,57,48,
57
+ 62,39,60,39,57,
58
+ 39,39,48,57,39,57,
59
+ 48,57,39,57,33,
60
+ 62,62,62,48,57,
61
+ 43,62,48,57,48,62,
62
+ 48,57,48,125,44,
63
+ 125,123,123,9,122,
64
+ 9,125,9,122,-128,-65,
65
+ -128,-65,38,38,58,
66
+ 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
157
94
  ]
158
95
 
159
96
  class << self
@@ -161,21 +98,21 @@ class << self
161
98
  private :_re_scanner_key_spans, :_re_scanner_key_spans=
162
99
  end
163
100
  self._re_scanner_key_spans = [
164
- 0, 64, 64, 64, 1, 19, 1, 30,
165
- 1, 22, 19, 1, 10, 19, 19, 10,
166
- 1, 30, 1, 10, 15, 20, 10, 1,
167
- 22, 19, 1, 10, 19, 19, 10, 30,
168
- 1, 10, 15, 20, 10, 10, 78, 82,
169
- 1, 114, 117, 114, 64, 64, 1, 36,
170
- 36, 64, 64, 1, 1, 1, 1, 1,
171
- 1, 76, 55, 55, 55, 55, 117, 117,
172
- 117, 117, 117, 117, 76, 1, 1, 17,
173
- 1, 256, 51, 127, 127, 24, 94, 1,
174
- 1, 94, 94, 1, 21, 21, 21, 58,
175
- 14, 52, 33, 188, 64, 64, 64, 1,
176
- 56, 1, 73, 8, 8, 188, 64, 64,
177
- 64, 8, 8, 1, 1, 0, 33, 1,
178
- 0, 1, 55, 22, 19, 9, 17, 30
101
+ 0,64,64,64,1,19,1,30,
102
+ 1,22,19,1,10,19,10,19,
103
+ 30,1,10,20,10,15,22,19,
104
+ 1,10,19,10,19,30,1,10,
105
+ 20,10,15,10,78,82,1,114,
106
+ 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
179
116
  ]
180
117
 
181
118
  class << self
@@ -183,21 +120,21 @@ class << self
183
120
  private :_re_scanner_index_offsets, :_re_scanner_index_offsets=
184
121
  end
185
122
  self._re_scanner_index_offsets = [
186
- 0, 0, 65, 130, 195, 197, 217, 219,
187
- 250, 252, 275, 295, 297, 308, 328, 348,
188
- 359, 361, 392, 394, 405, 421, 442, 453,
189
- 455, 478, 498, 500, 511, 531, 551, 562,
190
- 593, 595, 606, 622, 643, 654, 665, 744,
191
- 827, 829, 944, 1062, 1177, 1242, 1307, 1309,
192
- 1346, 1383, 1448, 1513, 1515, 1517, 1519, 1521,
193
- 1523, 1525, 1602, 1658, 1714, 1770, 1826, 1944,
194
- 2062, 2180, 2298, 2416, 2534, 2611, 2613, 2615,
195
- 2633, 2635, 2892, 2944, 3072, 3200, 3225, 3320,
196
- 3322, 3324, 3419, 3514, 3516, 3538, 3560, 3582,
197
- 3641, 3656, 3709, 3743, 3932, 3997, 4062, 4127,
198
- 4129, 4186, 4188, 4262, 4271, 4280, 4469, 4534,
199
- 4599, 4664, 4673, 4682, 4684, 4686, 4687, 4721,
200
- 4723, 4724, 4726, 4782, 4805, 4825, 4835, 4853
123
+ 0,0,65,130,195,197,217,219,
124
+ 250,252,275,295,297,308,328,339,
125
+ 359,390,392,403,424,435,451,474,
126
+ 494,496,507,527,538,558,589,591,
127
+ 602,623,634,650,661,740,823,825,
128
+ 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
201
138
  ]
202
139
 
203
140
  class << self
@@ -205,617 +142,617 @@ class << self
205
142
  private :_re_scanner_indicies, :_re_scanner_indicies=
206
143
  end
207
144
  self._re_scanner_indicies = [
208
- 1, 1, 1, 1, 1, 1, 1, 1,
209
- 1, 1, 1, 1, 1, 1, 1, 1,
210
- 1, 1, 1, 1, 1, 1, 1, 1,
211
- 1, 1, 1, 1, 1, 1, 1, 1,
212
- 1, 1, 1, 1, 1, 1, 1, 1,
213
- 1, 1, 1, 1, 1, 1, 1, 1,
214
- 1, 1, 1, 1, 1, 1, 1, 1,
215
- 1, 1, 1, 1, 1, 1, 1, 1,
216
- 0, 2, 2, 2, 2, 2, 2, 2,
217
- 2, 2, 2, 2, 2, 2, 2, 2,
218
- 2, 2, 2, 2, 2, 2, 2, 2,
219
- 2, 2, 2, 2, 2, 2, 2, 2,
220
- 2, 2, 2, 2, 2, 2, 2, 2,
221
- 2, 2, 2, 2, 2, 2, 2, 2,
222
- 2, 2, 2, 2, 2, 2, 2, 2,
223
- 2, 2, 2, 2, 2, 2, 2, 2,
224
- 2, 0, 3, 3, 3, 3, 3, 3,
225
- 3, 3, 3, 3, 3, 3, 3, 3,
226
- 3, 3, 3, 3, 3, 3, 3, 3,
227
- 3, 3, 3, 3, 3, 3, 3, 3,
228
- 3, 3, 3, 3, 3, 3, 3, 3,
229
- 3, 3, 3, 3, 3, 3, 3, 3,
230
- 3, 3, 3, 3, 3, 3, 3, 3,
231
- 3, 3, 3, 3, 3, 3, 3, 3,
232
- 3, 3, 0, 6, 5, 8, 7, 7,
233
- 7, 7, 7, 4, 7, 7, 4, 4,
234
- 4, 4, 4, 4, 4, 4, 4, 4,
235
- 7, 8, 7, 10, 9, 9, 9, 9,
236
- 9, 9, 9, 9, 9, 9, 9, 4,
237
- 9, 9, 4, 4, 4, 4, 4, 4,
238
- 4, 4, 4, 4, 9, 9, 9, 11,
239
- 8, 9, 8, 9, 13, 12, 12, 12,
240
- 12, 12, 12, 12, 12, 12, 12, 12,
241
- 12, 12, 12, 12, 12, 12, 12, 12,
242
- 12, 14, 12, 16, 15, 15, 15, 15,
243
- 15, 17, 15, 15, 18, 19, 19, 19,
244
- 19, 19, 19, 19, 19, 19, 15, 16,
245
- 15, 20, 19, 19, 19, 19, 19, 19,
246
- 19, 19, 19, 12, 16, 12, 12, 12,
247
- 12, 12, 12, 12, 12, 20, 20, 20,
248
- 20, 20, 20, 20, 20, 20, 20, 12,
249
- 16, 12, 12, 12, 21, 12, 21, 12,
250
- 12, 19, 19, 19, 19, 19, 19, 19,
251
- 19, 19, 19, 12, 20, 20, 20, 20,
252
- 20, 20, 20, 20, 20, 20, 12, 16,
253
- 12, 12, 22, 22, 22, 22, 22, 22,
254
- 22, 22, 22, 22, 22, 23, 22, 22,
255
- 24, 25, 25, 25, 25, 25, 25, 25,
256
- 25, 25, 22, 22, 22, 22, 16, 22,
257
- 16, 22, 26, 25, 25, 25, 25, 25,
258
- 25, 25, 25, 25, 12, 26, 26, 26,
259
- 26, 26, 26, 26, 26, 26, 26, 12,
260
- 12, 12, 12, 16, 12, 27, 12, 27,
261
- 12, 12, 25, 25, 25, 25, 25, 25,
262
- 25, 25, 25, 25, 12, 12, 12, 12,
263
- 16, 12, 26, 26, 26, 26, 26, 26,
264
- 26, 26, 26, 26, 12, 16, 12, 28,
265
- 12, 12, 12, 12, 12, 12, 12, 12,
266
- 12, 12, 12, 12, 12, 12, 12, 12,
267
- 12, 12, 12, 12, 29, 12, 31, 30,
268
- 30, 30, 30, 30, 32, 30, 30, 12,
269
- 33, 33, 33, 33, 33, 33, 33, 33,
270
- 33, 30, 31, 30, 34, 33, 33, 33,
271
- 33, 33, 33, 33, 33, 33, 12, 31,
272
- 12, 12, 12, 12, 12, 12, 12, 12,
273
- 34, 34, 34, 34, 34, 34, 34, 34,
274
- 34, 34, 12, 31, 12, 12, 12, 35,
275
- 12, 35, 12, 12, 33, 33, 33, 33,
276
- 33, 33, 33, 33, 33, 33, 12, 34,
277
- 34, 34, 34, 34, 34, 34, 34, 34,
278
- 34, 12, 12, 36, 36, 36, 36, 36,
279
- 36, 36, 36, 36, 36, 36, 37, 36,
280
- 36, 12, 38, 38, 38, 38, 38, 38,
281
- 38, 38, 38, 36, 36, 36, 36, 31,
282
- 36, 31, 36, 39, 38, 38, 38, 38,
283
- 38, 38, 38, 38, 38, 12, 39, 39,
284
- 39, 39, 39, 39, 39, 39, 39, 39,
285
- 12, 12, 12, 12, 31, 12, 40, 12,
286
- 40, 12, 12, 38, 38, 38, 38, 38,
287
- 38, 38, 38, 38, 38, 12, 12, 12,
288
- 12, 31, 12, 39, 39, 39, 39, 39,
289
- 39, 39, 39, 39, 39, 12, 42, 42,
290
- 42, 42, 42, 42, 42, 42, 42, 42,
291
- 41, 42, 42, 42, 42, 42, 42, 42,
292
- 42, 42, 42, 41, 41, 41, 41, 41,
293
- 41, 41, 41, 41, 41, 41, 41, 41,
294
- 41, 41, 41, 41, 41, 41, 41, 41,
295
- 41, 41, 41, 41, 41, 41, 41, 41,
296
- 41, 41, 41, 41, 41, 41, 41, 41,
297
- 41, 41, 41, 41, 41, 41, 41, 41,
298
- 41, 41, 41, 41, 41, 41, 41, 41,
299
- 41, 41, 41, 41, 41, 41, 41, 41,
300
- 41, 41, 41, 41, 41, 41, 43, 41,
301
- 42, 41, 41, 41, 44, 44, 44, 44,
302
- 44, 44, 44, 44, 44, 44, 41, 41,
303
- 41, 41, 41, 41, 41, 41, 41, 41,
304
- 41, 41, 41, 41, 41, 41, 41, 41,
305
- 41, 41, 41, 41, 41, 41, 41, 41,
306
- 41, 41, 41, 41, 41, 41, 41, 41,
307
- 41, 41, 41, 41, 41, 41, 41, 41,
308
- 41, 41, 41, 41, 41, 41, 41, 41,
309
- 41, 41, 41, 41, 41, 41, 41, 41,
310
- 41, 41, 41, 41, 41, 41, 41, 41,
311
- 41, 43, 41, 45, 46, 47, 47, 47,
312
- 47, 47, 46, 46, 46, 46, 46, 46,
313
- 46, 46, 46, 46, 46, 46, 46, 46,
314
- 46, 46, 46, 46, 47, 46, 46, 46,
315
- 46, 46, 46, 46, 46, 46, 46, 46,
316
- 46, 47, 47, 46, 47, 47, 47, 47,
317
- 47, 47, 47, 47, 47, 47, 46, 46,
318
- 46, 47, 46, 46, 46, 47, 47, 47,
319
- 47, 47, 47, 47, 47, 47, 47, 47,
320
- 47, 47, 47, 47, 47, 47, 47, 47,
321
- 47, 47, 47, 47, 47, 47, 47, 46,
322
- 46, 46, 48, 47, 46, 47, 47, 47,
323
- 47, 47, 47, 47, 47, 47, 47, 47,
324
- 47, 47, 47, 47, 47, 47, 47, 47,
325
- 47, 47, 47, 47, 47, 47, 47, 46,
326
- 47, 47, 47, 47, 47, 46, 46, 46,
327
- 46, 46, 46, 46, 46, 46, 46, 46,
328
- 46, 46, 46, 46, 46, 46, 46, 47,
329
- 46, 46, 46, 46, 46, 46, 46, 46,
330
- 46, 46, 46, 46, 47, 47, 46, 47,
331
- 47, 47, 47, 47, 47, 47, 47, 47,
332
- 47, 46, 46, 46, 47, 46, 46, 46,
333
- 47, 47, 47, 47, 47, 47, 47, 47,
334
- 47, 47, 47, 47, 47, 47, 47, 47,
335
- 47, 47, 47, 47, 47, 47, 47, 47,
336
- 47, 47, 46, 46, 46, 46, 47, 46,
337
- 47, 47, 47, 47, 47, 47, 47, 47,
338
- 47, 47, 47, 47, 47, 47, 47, 47,
339
- 47, 47, 47, 47, 47, 47, 47, 47,
340
- 47, 47, 46, 46, 49, 46, 47, 47,
341
- 47, 47, 47, 46, 46, 46, 46, 46,
342
- 46, 46, 46, 46, 46, 46, 46, 46,
343
- 46, 46, 46, 46, 46, 47, 46, 46,
344
- 46, 46, 46, 46, 46, 46, 46, 46,
345
- 46, 46, 47, 47, 46, 47, 47, 47,
346
- 47, 47, 47, 47, 47, 47, 47, 46,
347
- 46, 46, 47, 46, 46, 46, 47, 47,
348
- 47, 47, 47, 47, 47, 47, 47, 47,
349
- 47, 47, 47, 47, 47, 47, 47, 47,
350
- 47, 47, 47, 47, 47, 47, 47, 47,
351
- 46, 46, 46, 46, 47, 46, 47, 47,
352
- 47, 47, 47, 47, 47, 47, 47, 47,
353
- 47, 47, 47, 47, 47, 47, 47, 47,
354
- 47, 47, 47, 47, 47, 47, 47, 47,
355
- 46, 51, 51, 51, 51, 51, 51, 51,
356
- 51, 51, 51, 51, 51, 51, 51, 51,
357
- 51, 51, 51, 51, 51, 51, 51, 51,
358
- 51, 51, 51, 51, 51, 51, 51, 51,
359
- 51, 51, 51, 51, 51, 51, 51, 51,
360
- 51, 51, 51, 51, 51, 51, 51, 51,
361
- 51, 51, 51, 51, 51, 51, 51, 51,
362
- 51, 51, 51, 51, 51, 51, 51, 51,
363
- 51, 50, 52, 52, 52, 52, 52, 52,
364
- 52, 52, 52, 52, 52, 52, 52, 52,
365
- 52, 52, 52, 52, 52, 52, 52, 52,
366
- 52, 52, 52, 52, 52, 52, 52, 52,
367
- 52, 52, 52, 52, 52, 52, 52, 52,
368
- 52, 52, 52, 52, 52, 52, 52, 52,
369
- 52, 52, 52, 52, 52, 52, 52, 52,
370
- 52, 52, 52, 52, 52, 52, 52, 52,
371
- 52, 52, 50, 54, 53, 57, 56, 56,
372
- 56, 56, 56, 56, 56, 56, 56, 56,
373
- 56, 56, 56, 56, 56, 56, 56, 56,
374
- 56, 56, 56, 56, 56, 56, 56, 56,
375
- 56, 56, 56, 56, 56, 56, 58, 56,
376
- 58, 56, 57, 56, 56, 56, 56, 56,
377
- 56, 56, 56, 56, 56, 56, 56, 56,
378
- 56, 56, 56, 56, 56, 56, 56, 56,
379
- 56, 56, 56, 56, 56, 56, 56, 56,
380
- 56, 56, 56, 58, 56, 59, 56, 61,
381
- 61, 61, 61, 61, 61, 61, 61, 61,
382
- 61, 61, 61, 61, 61, 61, 61, 61,
383
- 61, 61, 61, 61, 61, 61, 61, 61,
384
- 61, 61, 61, 61, 61, 61, 61, 61,
385
- 61, 61, 61, 61, 61, 61, 61, 61,
386
- 61, 61, 61, 61, 61, 61, 61, 61,
387
- 61, 61, 61, 61, 61, 61, 61, 61,
388
- 61, 61, 61, 61, 61, 61, 61, 60,
389
- 62, 62, 62, 62, 62, 62, 62, 62,
390
- 62, 62, 62, 62, 62, 62, 62, 62,
391
- 62, 62, 62, 62, 62, 62, 62, 62,
392
- 62, 62, 62, 62, 62, 62, 62, 62,
393
- 62, 62, 62, 62, 62, 62, 62, 62,
394
- 62, 62, 62, 62, 62, 62, 62, 62,
395
- 62, 62, 62, 62, 62, 62, 62, 62,
396
- 62, 62, 62, 62, 62, 62, 62, 62,
397
- 60, 63, 46, 65, 64, 67, 64, 68,
398
- 46, 70, 69, 72, 69, 73, 73, 73,
399
- 73, 73, 73, 73, 73, 73, 73, 46,
400
- 46, 46, 46, 46, 46, 46, 73, 73,
401
- 73, 73, 73, 73, 46, 46, 46, 46,
402
- 46, 46, 46, 46, 46, 46, 46, 46,
403
- 46, 46, 46, 46, 46, 46, 46, 46,
404
- 46, 46, 46, 46, 46, 46, 73, 73,
405
- 73, 73, 73, 73, 46, 46, 46, 46,
406
- 46, 46, 46, 46, 46, 46, 46, 46,
407
- 46, 46, 46, 46, 46, 46, 46, 46,
408
- 74, 46, 75, 75, 75, 75, 75, 75,
409
- 75, 75, 75, 75, 46, 46, 46, 46,
410
- 46, 46, 46, 75, 75, 75, 75, 75,
411
- 75, 46, 46, 46, 46, 46, 46, 46,
412
- 46, 46, 46, 46, 46, 46, 46, 46,
413
- 46, 46, 46, 46, 46, 46, 46, 46,
414
- 46, 46, 46, 75, 75, 75, 75, 75,
415
- 75, 46, 76, 76, 76, 76, 76, 76,
416
- 76, 76, 76, 76, 46, 46, 46, 46,
417
- 46, 46, 46, 76, 76, 76, 76, 76,
418
- 76, 46, 46, 46, 46, 46, 46, 46,
419
- 46, 46, 46, 46, 46, 46, 46, 46,
420
- 46, 46, 46, 46, 46, 46, 46, 46,
421
- 46, 46, 46, 76, 76, 76, 76, 76,
422
- 76, 46, 77, 77, 77, 77, 77, 77,
423
- 77, 77, 77, 77, 46, 46, 46, 46,
424
- 46, 46, 46, 77, 77, 77, 77, 77,
425
- 77, 46, 46, 46, 46, 46, 46, 46,
426
- 46, 46, 46, 46, 46, 46, 46, 46,
427
- 46, 46, 46, 46, 46, 46, 46, 46,
428
- 46, 46, 46, 77, 77, 77, 77, 77,
429
- 77, 46, 78, 78, 78, 78, 78, 78,
430
- 78, 78, 78, 78, 46, 46, 46, 46,
431
- 46, 46, 46, 78, 78, 78, 78, 78,
432
- 78, 46, 46, 46, 46, 46, 46, 46,
433
- 46, 46, 46, 46, 46, 46, 46, 46,
434
- 46, 46, 46, 46, 46, 46, 46, 46,
435
- 46, 46, 46, 78, 78, 78, 78, 78,
436
- 78, 46, 74, 74, 74, 74, 74, 46,
437
- 46, 46, 46, 46, 46, 46, 46, 46,
438
- 46, 46, 46, 46, 46, 46, 46, 46,
439
- 46, 74, 46, 46, 46, 46, 46, 46,
440
- 46, 46, 46, 46, 46, 46, 46, 46,
441
- 46, 79, 79, 79, 79, 79, 79, 79,
442
- 79, 79, 79, 46, 46, 46, 46, 46,
443
- 46, 46, 79, 79, 79, 79, 79, 79,
444
- 46, 46, 46, 46, 46, 46, 46, 46,
445
- 46, 46, 46, 46, 46, 46, 46, 46,
446
- 46, 46, 46, 46, 46, 46, 46, 46,
447
- 46, 46, 79, 79, 79, 79, 79, 79,
448
- 46, 46, 46, 46, 46, 46, 46, 46,
449
- 46, 46, 46, 46, 46, 46, 46, 46,
450
- 46, 46, 46, 46, 46, 46, 77, 46,
451
- 74, 74, 74, 74, 74, 46, 46, 46,
452
- 46, 46, 46, 46, 46, 46, 46, 46,
453
- 46, 46, 46, 46, 46, 46, 46, 74,
454
- 46, 46, 46, 46, 46, 46, 46, 46,
455
- 46, 46, 46, 46, 46, 46, 46, 80,
456
- 80, 80, 80, 80, 80, 80, 80, 80,
457
- 80, 46, 46, 46, 46, 46, 46, 46,
458
- 80, 80, 80, 80, 80, 80, 46, 46,
459
- 46, 46, 46, 46, 46, 46, 46, 46,
460
- 46, 46, 46, 46, 46, 46, 46, 46,
461
- 46, 46, 46, 46, 46, 46, 46, 46,
462
- 80, 80, 80, 80, 80, 80, 46, 46,
463
- 46, 46, 46, 46, 46, 46, 46, 46,
464
- 46, 46, 46, 46, 46, 46, 46, 46,
465
- 46, 46, 46, 46, 77, 46, 74, 74,
466
- 74, 74, 74, 46, 46, 46, 46, 46,
467
- 46, 46, 46, 46, 46, 46, 46, 46,
468
- 46, 46, 46, 46, 46, 74, 46, 46,
469
- 46, 46, 46, 46, 46, 46, 46, 46,
470
- 46, 46, 46, 46, 46, 81, 81, 81,
471
- 81, 81, 81, 81, 81, 81, 81, 46,
472
- 46, 46, 46, 46, 46, 46, 81, 81,
473
- 81, 81, 81, 81, 46, 46, 46, 46,
474
- 46, 46, 46, 46, 46, 46, 46, 46,
475
- 46, 46, 46, 46, 46, 46, 46, 46,
476
- 46, 46, 46, 46, 46, 46, 81, 81,
477
- 81, 81, 81, 81, 46, 46, 46, 46,
478
- 46, 46, 46, 46, 46, 46, 46, 46,
479
- 46, 46, 46, 46, 46, 46, 46, 46,
480
- 46, 46, 77, 46, 74, 74, 74, 74,
481
- 74, 46, 46, 46, 46, 46, 46, 46,
482
- 46, 46, 46, 46, 46, 46, 46, 46,
483
- 46, 46, 46, 74, 46, 46, 46, 46,
484
- 46, 46, 46, 46, 46, 46, 46, 46,
485
- 46, 46, 46, 82, 82, 82, 82, 82,
486
- 82, 82, 82, 82, 82, 46, 46, 46,
487
- 46, 46, 46, 46, 82, 82, 82, 82,
488
- 82, 82, 46, 46, 46, 46, 46, 46,
489
- 46, 46, 46, 46, 46, 46, 46, 46,
490
- 46, 46, 46, 46, 46, 46, 46, 46,
491
- 46, 46, 46, 46, 82, 82, 82, 82,
492
- 82, 82, 46, 46, 46, 46, 46, 46,
493
- 46, 46, 46, 46, 46, 46, 46, 46,
494
- 46, 46, 46, 46, 46, 46, 46, 46,
495
- 77, 46, 74, 74, 74, 74, 74, 46,
496
- 46, 46, 46, 46, 46, 46, 46, 46,
497
- 46, 46, 46, 46, 46, 46, 46, 46,
498
- 46, 74, 46, 46, 46, 46, 46, 46,
499
- 46, 46, 46, 46, 46, 46, 46, 46,
500
- 46, 83, 83, 83, 83, 83, 83, 83,
501
- 83, 83, 83, 46, 46, 46, 46, 46,
502
- 46, 46, 83, 83, 83, 83, 83, 83,
503
- 46, 46, 46, 46, 46, 46, 46, 46,
504
- 46, 46, 46, 46, 46, 46, 46, 46,
505
- 46, 46, 46, 46, 46, 46, 46, 46,
506
- 46, 46, 83, 83, 83, 83, 83, 83,
507
- 46, 46, 46, 46, 46, 46, 46, 46,
508
- 46, 46, 46, 46, 46, 46, 46, 46,
509
- 46, 46, 46, 46, 46, 46, 77, 46,
510
- 74, 74, 74, 74, 74, 46, 46, 46,
511
- 46, 46, 46, 46, 46, 46, 46, 46,
512
- 46, 46, 46, 46, 46, 46, 46, 74,
513
- 46, 46, 46, 46, 46, 46, 46, 46,
514
- 46, 46, 46, 46, 46, 46, 46, 46,
515
- 46, 46, 46, 46, 46, 46, 46, 46,
516
- 46, 46, 46, 46, 46, 46, 46, 46,
517
- 46, 46, 46, 46, 46, 46, 46, 46,
518
- 46, 46, 46, 46, 46, 46, 46, 46,
519
- 46, 46, 46, 46, 46, 46, 46, 46,
520
- 46, 46, 46, 46, 46, 46, 46, 46,
521
- 46, 46, 46, 46, 46, 46, 46, 46,
522
- 46, 46, 46, 46, 46, 46, 46, 46,
523
- 46, 46, 46, 46, 46, 46, 46, 46,
524
- 46, 46, 46, 46, 77, 46, 85, 85,
525
- 85, 85, 85, 85, 85, 85, 85, 85,
526
- 84, 84, 84, 84, 84, 84, 84, 85,
527
- 85, 85, 85, 85, 85, 84, 84, 84,
528
- 84, 84, 84, 84, 84, 84, 84, 84,
529
- 84, 84, 84, 84, 84, 84, 84, 84,
530
- 84, 84, 84, 84, 84, 84, 84, 85,
531
- 85, 85, 85, 85, 85, 84, 84, 84,
532
- 84, 84, 84, 84, 84, 84, 84, 84,
533
- 84, 84, 84, 84, 84, 84, 84, 84,
534
- 84, 46, 84, 88, 87, 89, 86, 89,
535
- 86, 86, 86, 86, 86, 86, 90, 90,
536
- 90, 90, 90, 90, 90, 90, 90, 90,
537
- 86, 88, 91, 46, 46, 46, 46, 46,
538
- 46, 46, 46, 46, 46, 46, 46, 46,
539
- 46, 46, 46, 46, 46, 46, 46, 46,
540
- 46, 46, 46, 46, 46, 46, 46, 46,
541
- 46, 46, 46, 46, 46, 46, 46, 46,
542
- 46, 46, 46, 46, 46, 46, 46, 46,
543
- 46, 46, 46, 46, 46, 46, 46, 46,
544
- 46, 46, 46, 46, 46, 46, 46, 46,
545
- 46, 46, 46, 46, 46, 2, 2, 2,
546
- 2, 2, 2, 2, 2, 2, 2, 2,
547
- 2, 2, 2, 2, 2, 2, 2, 2,
548
- 2, 2, 2, 2, 2, 2, 2, 2,
549
- 2, 2, 2, 3, 3, 3, 3, 3,
550
- 3, 3, 3, 3, 3, 3, 3, 3,
551
- 3, 3, 3, 92, 92, 92, 92, 92,
552
- 46, 46, 46, 46, 46, 46, 46, 46,
553
- 46, 46, 46, 46, 93, 93, 93, 93,
554
- 93, 93, 93, 93, 94, 94, 94, 94,
555
- 94, 93, 93, 93, 93, 93, 93, 93,
556
- 93, 93, 93, 93, 93, 93, 93, 93,
557
- 93, 93, 93, 95, 96, 96, 97, 98,
558
- 96, 96, 96, 99, 100, 101, 102, 96,
559
- 96, 103, 96, 96, 96, 96, 96, 96,
560
- 96, 96, 96, 96, 96, 96, 96, 96,
561
- 96, 96, 104, 96, 96, 96, 96, 96,
562
- 96, 96, 96, 96, 96, 96, 96, 96,
563
- 96, 96, 96, 96, 96, 96, 96, 96,
564
- 96, 96, 96, 96, 96, 96, 105, 106,
565
- 107, 108, 96, 96, 96, 96, 96, 96,
566
- 96, 96, 96, 96, 96, 96, 96, 96,
567
- 96, 96, 96, 96, 96, 96, 96, 96,
568
- 96, 96, 96, 96, 96, 96, 109, 110,
569
- 107, 96, 93, 96, 2, 2, 2, 2,
570
- 2, 2, 2, 2, 2, 2, 2, 2,
571
- 2, 2, 2, 2, 2, 2, 2, 2,
572
- 2, 2, 2, 2, 2, 2, 2, 2,
573
- 2, 2, 3, 3, 3, 3, 3, 3,
574
- 3, 3, 3, 3, 3, 3, 3, 3,
575
- 3, 3, 92, 92, 92, 92, 92, 111,
576
- 93, 93, 93, 93, 93, 93, 93, 93,
577
- 93, 93, 93, 93, 93, 93, 93, 93,
578
- 93, 93, 93, 93, 93, 93, 93, 93,
579
- 93, 93, 93, 93, 93, 93, 93, 111,
580
- 111, 111, 111, 111, 111, 111, 111, 111,
581
- 111, 111, 111, 111, 111, 111, 111, 111,
582
- 111, 111, 111, 111, 111, 111, 111, 111,
583
- 111, 111, 111, 111, 111, 111, 111, 111,
584
- 111, 111, 111, 111, 111, 111, 111, 111,
585
- 111, 111, 111, 111, 111, 111, 111, 111,
586
- 111, 111, 111, 111, 111, 111, 111, 111,
587
- 111, 111, 111, 111, 111, 111, 111, 111,
588
- 111, 111, 111, 111, 111, 111, 111, 111,
589
- 111, 111, 111, 111, 111, 111, 111, 111,
590
- 111, 111, 111, 111, 111, 111, 111, 111,
591
- 111, 111, 111, 111, 111, 111, 93, 111,
592
- 93, 93, 93, 93, 93, 93, 93, 93,
593
- 94, 94, 94, 94, 94, 93, 93, 93,
594
- 93, 93, 93, 93, 93, 93, 93, 93,
595
- 93, 93, 93, 93, 93, 93, 93, 95,
596
- 112, 112, 112, 112, 112, 112, 112, 112,
597
- 112, 112, 112, 112, 112, 112, 112, 112,
598
- 112, 112, 112, 112, 112, 112, 112, 112,
599
- 112, 112, 112, 112, 112, 112, 112, 112,
600
- 112, 112, 112, 112, 112, 112, 112, 112,
601
- 112, 112, 112, 112, 112, 112, 112, 112,
602
- 112, 112, 112, 112, 112, 112, 112, 112,
603
- 112, 112, 112, 112, 112, 112, 112, 112,
604
- 112, 112, 112, 112, 112, 112, 112, 112,
605
- 112, 112, 112, 112, 112, 112, 112, 112,
606
- 112, 112, 112, 112, 112, 112, 112, 112,
607
- 112, 112, 112, 112, 112, 112, 93, 112,
608
- 95, 95, 95, 95, 95, 112, 112, 112,
609
- 112, 112, 112, 112, 112, 112, 112, 112,
610
- 112, 112, 112, 112, 112, 112, 112, 95,
611
- 112, 96, 96, 111, 111, 96, 96, 96,
612
- 111, 111, 111, 111, 96, 96, 111, 96,
613
- 96, 96, 96, 96, 96, 96, 96, 96,
614
- 96, 96, 96, 96, 96, 96, 96, 111,
615
- 96, 96, 96, 96, 96, 96, 96, 96,
616
- 96, 96, 96, 96, 96, 96, 96, 96,
617
- 96, 96, 96, 96, 96, 96, 96, 96,
618
- 96, 96, 96, 111, 111, 111, 111, 96,
619
- 96, 96, 96, 96, 96, 96, 96, 96,
620
- 96, 96, 96, 96, 96, 96, 96, 96,
621
- 96, 96, 96, 96, 96, 96, 96, 96,
622
- 96, 96, 96, 111, 111, 111, 96, 111,
623
- 114, 97, 116, 115, 10, 118, 5, 118,
624
- 118, 118, 119, 120, 117, 118, 118, 118,
625
- 118, 118, 118, 118, 118, 118, 118, 118,
626
- 118, 118, 118, 118, 118, 8, 118, 121,
627
- 10, 8, 118, 118, 118, 118, 118, 118,
628
- 118, 118, 118, 118, 118, 118, 118, 118,
629
- 118, 118, 118, 118, 118, 118, 118, 118,
630
- 118, 118, 118, 118, 118, 118, 118, 118,
631
- 118, 118, 118, 118, 118, 118, 118, 118,
632
- 118, 118, 118, 118, 118, 118, 118, 118,
633
- 118, 118, 118, 118, 118, 118, 118, 118,
634
- 118, 118, 118, 118, 118, 118, 118, 118,
635
- 118, 8, 118, 117, 118, 117, 118, 118,
636
- 118, 117, 117, 117, 118, 118, 118, 118,
637
- 118, 118, 118, 118, 118, 118, 118, 118,
638
- 118, 118, 118, 118, 122, 118, 117, 117,
639
- 117, 118, 118, 118, 118, 118, 118, 118,
640
- 118, 118, 118, 118, 118, 118, 118, 118,
641
- 118, 118, 118, 118, 118, 118, 118, 118,
642
- 118, 118, 118, 118, 118, 118, 118, 118,
643
- 118, 118, 118, 118, 118, 118, 118, 118,
644
- 118, 118, 118, 118, 118, 118, 118, 118,
645
- 118, 118, 118, 118, 118, 118, 118, 118,
646
- 118, 118, 118, 118, 118, 118, 118, 118,
647
- 117, 118, 8, 9, 125, 124, 124, 124,
648
- 124, 124, 124, 124, 124, 124, 124, 124,
649
- 124, 124, 124, 124, 124, 124, 124, 124,
650
- 125, 124, 127, 126, 126, 126, 126, 126,
651
- 126, 126, 126, 126, 126, 126, 126, 126,
652
- 126, 126, 126, 126, 126, 126, 127, 126,
653
- 129, 128, 128, 128, 128, 128, 128, 128,
654
- 128, 128, 128, 128, 128, 128, 128, 128,
655
- 128, 128, 128, 128, 129, 128, 131, 131,
656
- 130, 130, 130, 130, 131, 130, 130, 130,
657
- 132, 130, 130, 130, 130, 130, 130, 130,
658
- 130, 130, 130, 130, 130, 130, 130, 131,
659
- 130, 130, 130, 130, 130, 130, 130, 131,
660
- 130, 130, 130, 130, 133, 130, 130, 130,
661
- 134, 130, 130, 130, 130, 130, 130, 130,
662
- 130, 130, 130, 130, 130, 130, 130, 131,
663
- 130, 136, 135, 135, 135, 44, 44, 44,
664
- 44, 44, 44, 44, 44, 44, 44, 135,
665
- 137, 46, 46, 46, 137, 46, 46, 46,
666
- 46, 46, 46, 46, 46, 46, 137, 137,
667
- 46, 46, 46, 137, 137, 46, 46, 46,
668
- 46, 46, 46, 46, 46, 46, 46, 46,
669
- 137, 46, 46, 46, 137, 46, 46, 46,
670
- 46, 46, 46, 46, 46, 46, 46, 137,
671
- 46, 46, 46, 137, 46, 138, 46, 46,
672
- 46, 46, 46, 46, 46, 46, 46, 46,
673
- 46, 46, 46, 46, 46, 46, 46, 46,
674
- 46, 46, 46, 46, 46, 46, 46, 46,
675
- 46, 46, 46, 46, 46, 138, 46, 139,
676
- 139, 139, 139, 139, 139, 139, 139, 139,
677
- 139, 139, 139, 139, 139, 139, 139, 139,
678
- 139, 139, 139, 139, 139, 139, 139, 139,
679
- 139, 139, 139, 139, 139, 140, 140, 140,
680
- 140, 140, 140, 140, 140, 140, 140, 140,
681
- 140, 140, 140, 140, 140, 141, 141, 141,
682
- 141, 141, 51, 51, 51, 51, 51, 51,
683
- 51, 51, 51, 51, 51, 51, 51, 51,
684
- 51, 51, 51, 51, 51, 51, 51, 51,
685
- 51, 51, 51, 51, 51, 51, 51, 51,
686
- 51, 51, 51, 51, 51, 51, 51, 51,
687
- 51, 51, 51, 51, 51, 51, 51, 51,
688
- 51, 142, 51, 143, 51, 142, 142, 142,
689
- 142, 51, 144, 142, 51, 51, 51, 51,
690
- 51, 51, 51, 51, 51, 51, 51, 51,
691
- 51, 51, 51, 51, 142, 51, 51, 51,
692
- 51, 51, 51, 51, 51, 51, 51, 51,
693
- 51, 51, 51, 51, 51, 51, 51, 51,
694
- 51, 51, 51, 51, 51, 51, 51, 51,
695
- 145, 146, 147, 148, 51, 51, 51, 51,
696
- 51, 51, 51, 51, 51, 51, 51, 51,
697
- 51, 51, 51, 51, 51, 51, 51, 51,
698
- 51, 51, 51, 51, 51, 51, 51, 51,
699
- 142, 142, 142, 51, 51, 51, 51, 51,
700
- 51, 51, 51, 51, 51, 51, 51, 51,
701
- 51, 51, 51, 51, 51, 51, 51, 51,
702
- 51, 51, 51, 51, 51, 51, 51, 51,
703
- 51, 51, 51, 51, 51, 51, 51, 51,
704
- 51, 51, 51, 51, 51, 51, 51, 51,
705
- 51, 51, 51, 51, 51, 51, 51, 51,
706
- 51, 51, 51, 51, 51, 51, 51, 51,
707
- 51, 51, 51, 51, 149, 52, 52, 52,
708
- 52, 52, 52, 52, 52, 52, 52, 52,
709
- 52, 52, 52, 52, 52, 52, 52, 52,
710
- 52, 52, 52, 52, 52, 52, 52, 52,
711
- 52, 52, 52, 52, 52, 52, 52, 52,
712
- 52, 52, 52, 52, 52, 52, 52, 52,
713
- 52, 52, 52, 52, 52, 52, 52, 52,
714
- 52, 52, 52, 52, 52, 52, 52, 52,
715
- 52, 52, 52, 52, 52, 149, 150, 150,
716
- 150, 150, 150, 150, 150, 150, 150, 150,
717
- 150, 150, 150, 150, 150, 150, 150, 150,
718
- 150, 150, 150, 150, 150, 150, 150, 150,
719
- 150, 150, 150, 150, 150, 150, 150, 150,
720
- 150, 150, 150, 150, 150, 150, 150, 150,
721
- 150, 150, 150, 150, 150, 150, 150, 150,
722
- 150, 150, 150, 150, 150, 150, 150, 150,
723
- 150, 150, 150, 150, 150, 150, 149, 151,
724
- 149, 153, 152, 152, 152, 152, 152, 152,
725
- 152, 152, 152, 152, 152, 152, 152, 152,
726
- 152, 152, 152, 152, 152, 152, 152, 152,
727
- 152, 152, 152, 152, 152, 152, 152, 152,
728
- 152, 152, 152, 152, 152, 152, 152, 152,
729
- 152, 152, 152, 152, 152, 152, 152, 152,
730
- 152, 152, 152, 152, 152, 152, 152, 152,
731
- 154, 152, 56, 156, 158, 158, 158, 158,
732
- 158, 158, 158, 158, 157, 157, 157, 157,
733
- 157, 157, 157, 157, 157, 157, 157, 159,
734
- 159, 157, 157, 157, 159, 157, 157, 157,
735
- 157, 159, 157, 157, 159, 157, 157, 159,
736
- 157, 157, 157, 159, 157, 157, 157, 159,
737
- 159, 159, 157, 157, 157, 159, 159, 159,
738
- 159, 159, 159, 157, 159, 157, 157, 157,
739
- 157, 157, 159, 157, 159, 157, 159, 159,
740
- 159, 159, 159, 159, 159, 157, 161, 161,
741
- 161, 161, 161, 161, 161, 161, 160, 162,
742
- 162, 162, 162, 162, 162, 162, 162, 160,
743
- 163, 163, 163, 163, 163, 163, 163, 163,
744
- 163, 163, 163, 163, 163, 163, 163, 163,
745
- 163, 163, 163, 163, 163, 163, 163, 163,
746
- 163, 163, 163, 163, 163, 163, 164, 164,
747
- 164, 164, 164, 164, 164, 164, 164, 164,
748
- 164, 164, 164, 164, 164, 164, 165, 165,
749
- 165, 165, 165, 61, 61, 61, 61, 61,
750
- 61, 61, 61, 61, 61, 61, 61, 61,
751
- 61, 61, 61, 61, 61, 61, 61, 61,
752
- 61, 61, 61, 61, 61, 61, 61, 61,
753
- 61, 61, 61, 61, 61, 61, 61, 61,
754
- 61, 61, 61, 61, 61, 61, 61, 61,
755
- 61, 61, 166, 61, 61, 61, 166, 166,
756
- 166, 166, 61, 61, 166, 61, 167, 168,
757
- 168, 168, 168, 168, 168, 168, 169, 169,
758
- 61, 61, 61, 61, 61, 166, 61, 46,
759
- 46, 170, 171, 61, 61, 46, 171, 61,
760
- 61, 46, 61, 172, 61, 61, 173, 61,
761
- 171, 171, 61, 61, 61, 171, 171, 61,
762
- 46, 166, 166, 166, 166, 61, 61, 174,
763
- 174, 63, 171, 174, 174, 61, 171, 61,
764
- 61, 61, 61, 61, 174, 61, 173, 61,
765
- 174, 171, 174, 175, 174, 171, 176, 61,
766
- 46, 166, 166, 166, 61, 61, 61, 61,
767
- 61, 61, 61, 61, 61, 61, 61, 61,
768
- 61, 61, 61, 61, 61, 61, 61, 61,
769
- 61, 61, 61, 61, 61, 61, 61, 61,
770
- 61, 61, 61, 61, 61, 61, 61, 61,
771
- 61, 61, 61, 61, 61, 61, 61, 61,
772
- 61, 61, 61, 61, 61, 61, 61, 61,
773
- 61, 61, 61, 61, 61, 61, 61, 61,
774
- 61, 61, 61, 61, 61, 177, 62, 62,
775
- 62, 62, 62, 62, 62, 62, 62, 62,
776
- 62, 62, 62, 62, 62, 62, 62, 62,
777
- 62, 62, 62, 62, 62, 62, 62, 62,
778
- 62, 62, 62, 62, 62, 62, 62, 62,
779
- 62, 62, 62, 62, 62, 62, 62, 62,
780
- 62, 62, 62, 62, 62, 62, 62, 62,
781
- 62, 62, 62, 62, 62, 62, 62, 62,
782
- 62, 62, 62, 62, 62, 62, 177, 178,
783
- 178, 178, 178, 178, 178, 178, 178, 178,
784
- 178, 178, 178, 178, 178, 178, 178, 178,
785
- 178, 178, 178, 178, 178, 178, 178, 178,
786
- 178, 178, 178, 178, 178, 178, 178, 178,
787
- 178, 178, 178, 178, 178, 178, 178, 178,
788
- 178, 178, 178, 178, 178, 178, 178, 178,
789
- 178, 178, 178, 178, 178, 178, 178, 178,
790
- 178, 178, 178, 178, 178, 178, 178, 177,
791
- 180, 180, 180, 180, 180, 180, 180, 180,
792
- 179, 182, 182, 182, 182, 182, 182, 182,
793
- 182, 181, 184, 64, 186, 185, 64, 188,
794
- 69, 69, 69, 69, 69, 69, 69, 69,
795
- 69, 69, 69, 69, 69, 69, 69, 69,
796
- 69, 69, 69, 69, 69, 69, 69, 69,
797
- 69, 69, 69, 69, 69, 69, 69, 189,
798
- 69, 191, 190, 69, 72, 69, 193, 193,
799
- 193, 193, 193, 193, 193, 193, 193, 193,
800
- 192, 192, 192, 192, 192, 192, 192, 193,
801
- 193, 193, 193, 193, 193, 192, 192, 192,
802
- 192, 192, 192, 192, 192, 192, 192, 192,
803
- 192, 192, 192, 192, 192, 192, 192, 192,
804
- 192, 192, 192, 192, 192, 192, 192, 193,
805
- 193, 193, 193, 193, 193, 192, 195, 194,
806
- 194, 194, 194, 194, 196, 194, 194, 194,
807
- 197, 197, 197, 197, 197, 197, 197, 197,
808
- 197, 194, 194, 198, 194, 88, 87, 87,
809
- 87, 87, 87, 199, 87, 87, 199, 199,
810
- 199, 199, 199, 199, 199, 199, 199, 199,
811
- 87, 90, 90, 90, 90, 90, 90, 90,
812
- 90, 90, 199, 89, 199, 199, 199, 199,
813
- 199, 199, 90, 90, 90, 90, 90, 90,
814
- 90, 90, 90, 90, 199, 199, 91, 91,
815
- 91, 91, 91, 91, 91, 91, 91, 91,
816
- 91, 199, 91, 91, 199, 199, 199, 199,
817
- 199, 199, 199, 199, 199, 199, 91, 91,
818
- 91, 91, 88, 91, 0
145
+ 1,1,1,1,1,1,1,1,
146
+ 1,1,1,1,1,1,1,1,
147
+ 1,1,1,1,1,1,1,1,
148
+ 1,1,1,1,1,1,1,1,
149
+ 1,1,1,1,1,1,1,1,
150
+ 1,1,1,1,1,1,1,1,
151
+ 1,1,1,1,1,1,1,1,
152
+ 1,1,1,1,1,1,1,1,
153
+ 0,2,2,2,2,2,2,2,
154
+ 2,2,2,2,2,2,2,2,
155
+ 2,2,2,2,2,2,2,2,
156
+ 2,2,2,2,2,2,2,2,
157
+ 2,2,2,2,2,2,2,2,
158
+ 2,2,2,2,2,2,2,2,
159
+ 2,2,2,2,2,2,2,2,
160
+ 2,2,2,2,2,2,2,2,
161
+ 2,0,3,3,3,3,3,3,
162
+ 3,3,3,3,3,3,3,3,
163
+ 3,3,3,3,3,3,3,3,
164
+ 3,3,3,3,3,3,3,3,
165
+ 3,3,3,3,3,3,3,3,
166
+ 3,3,3,3,3,3,3,3,
167
+ 3,3,3,3,3,3,3,3,
168
+ 3,3,3,3,3,3,3,3,
169
+ 3,3,0,6,5,8,7,7,
170
+ 7,7,7,4,7,7,4,4,
171
+ 4,4,4,4,4,4,4,4,
172
+ 7,8,7,10,9,9,9,9,
173
+ 9,9,9,9,9,9,9,4,
174
+ 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
+ 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,
211
+ 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,
223
+ 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,
249
+ 44,44,44,44,44,44,44,44,
250
+ 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,
264
+ 44,44,44,44,44,44,44,44,
265
+ 44,44,44,45,44,44,44,44,
266
+ 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,
278
+ 44,44,44,44,44,44,44,44,
279
+ 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,
292
+ 49,49,49,49,49,49,49,49,
293
+ 49,49,49,49,49,49,49,49,
294
+ 49,49,49,49,49,49,49,49,
295
+ 49,49,49,49,49,49,49,49,
296
+ 49,49,49,49,49,49,49,49,
297
+ 49,49,49,49,49,49,49,49,
298
+ 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
+ 59,59,59,59,59,59,59,59,
319
+ 59,59,59,59,59,59,59,59,
320
+ 59,59,59,59,59,59,59,59,
321
+ 59,59,59,59,59,59,59,59,
322
+ 59,59,59,59,59,59,59,59,
323
+ 59,59,59,59,59,59,59,59,
324
+ 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,
359
+ 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,
366
+ 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,
483
+ 2,2,2,2,2,2,2,2,
484
+ 2,2,2,2,2,2,2,2,
485
+ 2,2,2,2,2,2,2,3,
486
+ 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,
506
+ 2,2,2,2,2,2,2,2,
507
+ 2,2,2,2,2,2,2,2,
508
+ 2,2,2,2,2,2,2,2,
509
+ 2,2,2,2,2,2,3,3,
510
+ 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,
568
+ 116,116,116,116,116,116,116,116,
569
+ 116,116,116,116,116,116,116,116,
570
+ 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
+ 116,116,116,116,116,116,116,116,
574
+ 116,116,116,116,116,116,116,116,
575
+ 120,116,115,115,115,116,116,116,
576
+ 116,116,116,116,116,116,116,116,
577
+ 116,116,116,116,116,116,116,116,
578
+ 116,116,116,116,116,116,116,116,
579
+ 116,116,116,116,116,116,116,116,
580
+ 116,116,116,116,116,116,116,116,
581
+ 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,
594
+ 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
+ 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,
623
+ 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
+ 49,49,49,49,49,49,49,49,
627
+ 49,49,49,49,49,49,49,49,
628
+ 140,49,49,49,49,49,49,49,
629
+ 49,49,49,49,49,49,49,49,
630
+ 49,49,49,49,49,49,49,49,
631
+ 49,49,49,49,143,144,145,146,
632
+ 49,49,49,49,49,49,49,49,
633
+ 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,
668
+ 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,
680
+ 161,161,161,161,161,161,161,161,
681
+ 161,161,161,161,161,161,161,161,
682
+ 161,161,161,161,161,161,161,161,
683
+ 161,161,162,162,162,162,162,162,
684
+ 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,
687
+ 59,59,59,59,59,59,59,59,
688
+ 59,59,59,59,59,59,59,59,
689
+ 59,59,59,59,59,59,59,59,
690
+ 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
+ 59,59,59,59,59,59,59,59,
704
+ 59,59,59,59,59,59,59,59,
705
+ 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
819
756
  ]
820
757
 
821
758
  class << self
@@ -823,31 +760,31 @@ class << self
823
760
  private :_re_scanner_trans_targs, :_re_scanner_trans_targs=
824
761
  end
825
762
  self._re_scanner_trans_targs = [
826
- 73, 74, 1, 2, 73, 4, 73, 6,
827
- 73, 8, 73, 83, 73, 10, 17, 11,
828
- 73, 12, 16, 14, 13, 15, 18, 19,
829
- 23, 21, 20, 22, 25, 31, 26, 73,
830
- 27, 29, 28, 30, 32, 33, 35, 34,
831
- 36, 73, 38, 73, 39, 41, 0, 42,
832
- 43, 90, 91, 91, 44, 91, 91, 91,
833
- 47, 48, 91, 91, 101, 101, 49, 52,
834
- 101, 107, 101, 109, 55, 101, 110, 101,
835
- 112, 58, 61, 59, 60, 101, 62, 63,
836
- 64, 65, 66, 67, 101, 114, 115, 69,
837
- 70, 115, 71, 72, 3, 75, 76, 77,
838
- 78, 79, 73, 80, 73, 84, 85, 73,
839
- 86, 73, 87, 73, 73, 88, 73, 73,
840
- 73, 73, 73, 73, 81, 73, 82, 5,
841
- 73, 7, 73, 73, 73, 73, 73, 73,
842
- 73, 73, 73, 73, 73, 9, 24, 73,
843
- 37, 89, 40, 92, 93, 94, 91, 95,
844
- 96, 97, 91, 91, 91, 91, 45, 91,
845
- 91, 46, 91, 91, 91, 98, 99, 98,
846
- 98, 100, 98, 102, 103, 104, 101, 105,
847
- 105, 101, 51, 101, 54, 101, 101, 57,
848
- 68, 101, 50, 101, 106, 101, 101, 101,
849
- 108, 101, 53, 101, 111, 113, 101, 56,
850
- 101, 101, 115, 116, 117, 118, 119, 115
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
788
  ]
852
789
 
853
790
  class << self
@@ -855,31 +792,31 @@ class << self
855
792
  private :_re_scanner_trans_actions, :_re_scanner_trans_actions=
856
793
  end
857
794
  self._re_scanner_trans_actions = [
858
- 1, 2, 0, 0, 3, 4, 5, 0,
859
- 6, 0, 7, 8, 9, 0, 0, 0,
860
- 10, 0, 0, 0, 0, 0, 0, 0,
861
- 0, 0, 0, 0, 0, 0, 0, 11,
862
- 0, 0, 0, 0, 0, 0, 0, 0,
863
- 0, 12, 0, 13, 0, 0, 0, 0,
864
- 0, 15, 16, 17, 0, 18, 19, 20,
865
- 0, 0, 21, 22, 23, 24, 0, 0,
866
- 26, 0, 27, 0, 0, 28, 0, 29,
867
- 0, 0, 0, 0, 0, 30, 0, 0,
868
- 0, 0, 0, 0, 31, 0, 32, 0,
869
- 0, 33, 0, 0, 0, 0, 0, 0,
870
- 0, 0, 36, 37, 38, 0, 0, 39,
871
- 0, 40, 41, 42, 43, 41, 44, 45,
872
- 46, 47, 48, 49, 50, 51, 0, 0,
873
- 52, 0, 53, 54, 55, 56, 57, 58,
874
- 59, 60, 61, 62, 63, 0, 0, 64,
875
- 0, 66, 0, 0, 41, 41, 67, 0,
876
- 41, 68, 69, 70, 71, 72, 0, 73,
877
- 74, 0, 75, 76, 77, 78, 0, 79,
878
- 80, 0, 81, 0, 41, 41, 82, 83,
879
- 84, 85, 0, 86, 0, 87, 88, 0,
880
- 0, 89, 0, 90, 0, 91, 92, 93,
881
- 41, 94, 0, 95, 41, 0, 96, 0,
882
- 97, 98, 99, 41, 41, 41, 41, 100
795
+ 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,
806
+ 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
883
820
  ]
884
821
 
885
822
  class << self
@@ -887,21 +824,21 @@ class << self
887
824
  private :_re_scanner_to_state_actions, :_re_scanner_to_state_actions=
888
825
  end
889
826
  self._re_scanner_to_state_actions = [
890
- 0, 0, 0, 0, 0, 0, 0, 0,
891
- 0, 0, 0, 0, 0, 0, 0, 0,
892
- 0, 0, 0, 0, 0, 0, 0, 0,
893
- 0, 0, 0, 0, 0, 0, 0, 0,
894
- 0, 0, 0, 0, 0, 0, 0, 0,
895
- 0, 0, 0, 0, 0, 0, 0, 0,
896
- 0, 0, 0, 0, 0, 0, 0, 0,
897
- 0, 0, 0, 0, 0, 0, 0, 0,
898
- 0, 0, 0, 0, 0, 0, 0, 0,
899
- 0, 34, 0, 0, 0, 0, 0, 0,
900
- 0, 0, 0, 0, 0, 0, 0, 0,
901
- 0, 65, 65, 65, 0, 0, 0, 0,
902
- 0, 0, 65, 0, 0, 65, 0, 0,
903
- 0, 0, 0, 0, 0, 0, 0, 0,
904
- 0, 0, 0, 65, 0, 0, 0, 0
827
+ 0,0,0,0,0,0,0,0,
828
+ 0,0,0,0,0,0,0,0,
829
+ 0,0,0,0,0,0,0,0,
830
+ 0,0,0,0,0,0,0,0,
831
+ 0,0,0,0,0,0,0,0,
832
+ 0,0,0,0,0,0,0,0,
833
+ 0,0,0,0,0,0,0,0,
834
+ 0,0,0,0,0,0,0,0,
835
+ 0,0,0,0,0,0,0,33,
836
+ 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,
840
+ 0,0,0,0,0,0,0,0,
841
+ 0,64,0,0,0,0
905
842
  ]
906
843
 
907
844
  class << self
@@ -909,21 +846,21 @@ class << self
909
846
  private :_re_scanner_from_state_actions, :_re_scanner_from_state_actions=
910
847
  end
911
848
  self._re_scanner_from_state_actions = [
912
- 0, 0, 0, 0, 0, 0, 0, 0,
913
- 0, 0, 0, 0, 0, 0, 0, 0,
914
- 0, 0, 0, 0, 0, 0, 0, 0,
915
- 0, 0, 0, 0, 0, 0, 0, 0,
916
- 0, 0, 0, 0, 0, 0, 0, 0,
917
- 0, 0, 0, 0, 0, 0, 0, 0,
918
- 0, 0, 0, 0, 0, 0, 0, 0,
919
- 0, 0, 0, 0, 0, 0, 0, 0,
920
- 0, 0, 0, 0, 0, 0, 0, 0,
921
- 0, 35, 0, 0, 0, 0, 0, 0,
922
- 0, 0, 0, 0, 0, 0, 0, 0,
923
- 0, 35, 35, 35, 0, 0, 0, 0,
924
- 0, 0, 35, 0, 0, 35, 0, 0,
925
- 0, 0, 0, 0, 0, 0, 0, 0,
926
- 0, 0, 0, 35, 0, 0, 0, 0
849
+ 0,0,0,0,0,0,0,0,
850
+ 0,0,0,0,0,0,0,0,
851
+ 0,0,0,0,0,0,0,0,
852
+ 0,0,0,0,0,0,0,0,
853
+ 0,0,0,0,0,0,0,0,
854
+ 0,0,0,0,0,0,0,0,
855
+ 0,0,0,0,0,0,0,0,
856
+ 0,0,0,0,0,0,0,0,
857
+ 0,0,0,0,0,0,0,34,
858
+ 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,
862
+ 0,0,0,0,0,0,0,0,
863
+ 0,34,0,0,0,0
927
864
  ]
928
865
 
929
866
  class << self
@@ -931,21 +868,21 @@ class << self
931
868
  private :_re_scanner_eof_actions, :_re_scanner_eof_actions=
932
869
  end
933
870
  self._re_scanner_eof_actions = [
934
- 0, 0, 0, 0, 0, 0, 0, 0,
935
- 0, 0, 0, 0, 0, 0, 0, 0,
936
- 0, 0, 0, 0, 0, 0, 0, 0,
937
- 0, 0, 0, 0, 0, 0, 0, 0,
938
- 0, 0, 0, 0, 0, 0, 0, 0,
939
- 14, 14, 14, 14, 0, 0, 0, 0,
940
- 0, 0, 0, 25, 25, 0, 25, 25,
941
- 0, 25, 25, 25, 25, 25, 25, 25,
942
- 25, 25, 25, 25, 25, 0, 0, 0,
943
- 0, 0, 0, 0, 0, 0, 0, 0,
944
- 0, 0, 0, 0, 0, 0, 0, 0,
945
- 0, 0, 0, 25, 0, 0, 0, 0,
946
- 0, 0, 0, 0, 0, 25, 0, 0,
947
- 0, 0, 0, 0, 0, 0, 0, 0,
948
- 0, 0, 0, 0, 0, 0, 0, 0
871
+ 0,0,0,0,0,0,0,0,
872
+ 0,0,0,0,0,0,0,0,
873
+ 0,0,0,0,0,0,0,0,
874
+ 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,
880
+ 0,0,0,0,0,0,0,0,
881
+ 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,
884
+ 0,0,0,0,0,0,0,0,
885
+ 0,0,0,0,0,0
949
886
  ]
950
887
 
951
888
  class << self
@@ -953,31 +890,31 @@ class << self
953
890
  private :_re_scanner_eof_trans, :_re_scanner_eof_trans=
954
891
  end
955
892
  self._re_scanner_eof_trans = [
956
- 0, 1, 1, 1, 5, 5, 5, 5,
957
- 1, 13, 13, 13, 13, 13, 13, 13,
958
- 13, 13, 13, 13, 13, 13, 13, 13,
959
- 13, 13, 13, 13, 13, 13, 13, 13,
960
- 13, 13, 13, 13, 13, 42, 42, 42,
961
- 0, 0, 0, 0, 51, 51, 54, 56,
962
- 56, 61, 61, 0, 0, 67, 0, 0,
963
- 72, 0, 0, 0, 0, 0, 0, 0,
964
- 0, 0, 0, 0, 0, 87, 87, 87,
965
- 87, 0, 112, 112, 113, 113, 112, 114,
966
- 116, 118, 118, 124, 125, 127, 129, 131,
967
- 136, 0, 0, 0, 150, 150, 150, 150,
968
- 153, 156, 0, 161, 161, 0, 178, 178,
969
- 178, 180, 182, 184, 184, 184, 188, 188,
970
- 188, 188, 193, 0, 200, 200, 200, 200
893
+ 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
971
908
  ]
972
909
 
973
910
  class << self
974
911
  attr_accessor :re_scanner_start
975
912
  end
976
- self.re_scanner_start = 73;
913
+ self.re_scanner_start = 71;
977
914
  class << self
978
915
  attr_accessor :re_scanner_first_final
979
916
  end
980
- self.re_scanner_first_final = 73;
917
+ self.re_scanner_first_final = 71;
981
918
  class << self
982
919
  attr_accessor :re_scanner_error
983
920
  end
@@ -986,36 +923,32 @@ self.re_scanner_error = 0;
986
923
  class << self
987
924
  attr_accessor :re_scanner_en_char_type
988
925
  end
989
- self.re_scanner_en_char_type = 89;
926
+ self.re_scanner_en_char_type = 87;
990
927
  class << self
991
928
  attr_accessor :re_scanner_en_unicode_property
992
929
  end
993
- self.re_scanner_en_unicode_property = 90;
930
+ self.re_scanner_en_unicode_property = 88;
994
931
  class << self
995
932
  attr_accessor :re_scanner_en_character_set
996
933
  end
997
- self.re_scanner_en_character_set = 91;
934
+ self.re_scanner_en_character_set = 89;
998
935
  class << self
999
936
  attr_accessor :re_scanner_en_set_escape_sequence
1000
937
  end
1001
- self.re_scanner_en_set_escape_sequence = 98;
938
+ self.re_scanner_en_set_escape_sequence = 96;
1002
939
  class << self
1003
940
  attr_accessor :re_scanner_en_escape_sequence
1004
941
  end
1005
- self.re_scanner_en_escape_sequence = 101;
942
+ self.re_scanner_en_escape_sequence = 99;
1006
943
  class << self
1007
944
  attr_accessor :re_scanner_en_conditional_expression
1008
945
  end
1009
- self.re_scanner_en_conditional_expression = 115;
946
+ self.re_scanner_en_conditional_expression = 113;
1010
947
  class << self
1011
948
  attr_accessor :re_scanner_en_main
1012
949
  end
1013
- self.re_scanner_en_main = 73;
950
+ self.re_scanner_en_main = 71;
1014
951
 
1015
-
1016
- # line 749 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1017
-
1018
- # line 1018 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner.rb"
1019
952
  begin
1020
953
  p ||= 0
1021
954
  pe ||= data.length
@@ -1026,9 +959,6 @@ begin
1026
959
  act = 0
1027
960
  end
1028
961
 
1029
- # line 750 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1030
-
1031
- # line 1031 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner.rb"
1032
962
  begin
1033
963
  testEof = false
1034
964
  _slen, _trans, _keys, _inds, _acts, _nacts = nil
@@ -1050,24 +980,22 @@ begin
1050
980
  end
1051
981
  end
1052
982
  if _goto_level <= _resume
1053
- case _re_scanner_from_state_actions[cs]
1054
- when 35 then
1055
- # line 1 "NONE"
983
+ case _re_scanner_from_state_actions[cs]
984
+ when 34 then
1056
985
  begin
1057
986
  ts = p
1058
987
  end
1059
- # line 1059 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner.rb"
1060
988
  end
1061
989
  _keys = cs << 1
1062
990
  _inds = _re_scanner_index_offsets[cs]
1063
991
  _slen = _re_scanner_key_spans[cs]
1064
992
  _wide = data[p].ord
1065
- _trans = if ( _slen > 0 &&
1066
- _re_scanner_trans_keys[_keys] <= _wide &&
1067
- _wide <= _re_scanner_trans_keys[_keys + 1]
993
+ _trans = if ( _slen > 0 &&
994
+ _re_scanner_trans_keys[_keys] <= _wide &&
995
+ _wide <= _re_scanner_trans_keys[_keys + 1]
1068
996
  ) then
1069
- _re_scanner_indicies[ _inds + _wide - _re_scanner_trans_keys[_keys] ]
1070
- else
997
+ _re_scanner_indicies[ _inds + _wide - _re_scanner_trans_keys[_keys] ]
998
+ else
1071
999
  _re_scanner_indicies[ _inds + _slen ]
1072
1000
  end
1073
1001
  end
@@ -1075,25 +1003,18 @@ ts = p
1075
1003
  cs = _re_scanner_trans_targs[_trans]
1076
1004
  if _re_scanner_trans_actions[_trans] != 0
1077
1005
  case _re_scanner_trans_actions[_trans]
1078
- when 37 then
1079
- # line 147 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1006
+ when 36 then
1080
1007
  begin
1081
1008
  self.group_depth = group_depth + 1 end
1082
- when 4 then
1083
- # line 148 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1084
- begin
1085
- self.group_depth = group_depth - 1 end
1086
- when 41 then
1087
- # line 1 "NONE"
1009
+ when 40 then
1088
1010
  begin
1089
1011
  te = p+1
1090
1012
  end
1091
- when 66 then
1092
- # line 12 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/char_type.rl"
1013
+ when 65 then
1093
1014
  begin
1094
1015
  te = p+1
1095
- begin
1096
- case text = copy(data, ts-1, te)
1016
+ begin
1017
+ case text = copy(data, ts-1,te)
1097
1018
  when '\d'; emit(:type, :digit, text)
1098
1019
  when '\D'; emit(:type, :nondigit, text)
1099
1020
  when '\h'; emit(:type, :hex, text)
@@ -1114,18 +1035,17 @@ te = p+1
1114
1035
 
1115
1036
  end
1116
1037
  end
1117
- when 15 then
1118
- # line 16 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/property.rl"
1038
+ when 14 then
1119
1039
  begin
1120
1040
  te = p+1
1121
- begin
1122
- text = copy(data, ts-1, te)
1041
+ begin
1042
+ text = copy(data, ts-1,te)
1123
1043
  type = (text[1] == 'P') ^ (text[3] == '^') ? :nonproperty : :property
1124
1044
 
1125
1045
  name = text[3..-2].gsub(/[\^\s_\-]/, '').downcase
1126
1046
 
1127
1047
  token = self.class.short_prop_map[name] || self.class.long_prop_map[name]
1128
- validation_error(:property, name) unless token
1048
+ raise ValidationError.for(:property, name) unless token
1129
1049
 
1130
1050
  self.emit(type, token.to_sym, text)
1131
1051
 
@@ -1138,8 +1058,7 @@ te = p+1
1138
1058
 
1139
1059
  end
1140
1060
  end
1141
- when 19 then
1142
- # line 175 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1061
+ when 18 then
1143
1062
  begin
1144
1063
  te = p+1
1145
1064
  begin # special case, emits two tokens
@@ -1147,11 +1066,10 @@ te = p+1
1147
1066
  emit(:set, :intersection, '&&')
1148
1067
  end
1149
1068
  end
1150
- when 71 then
1151
- # line 180 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1069
+ when 70 then
1152
1070
  begin
1153
1071
  te = p+1
1154
- begin
1072
+ begin
1155
1073
  if prev_token[1] == :open
1156
1074
  emit(:set, :negate, '^')
1157
1075
  else
@@ -1159,51 +1077,46 @@ te = p+1
1159
1077
  end
1160
1078
  end
1161
1079
  end
1162
- when 73 then
1163
- # line 200 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1080
+ when 72 then
1164
1081
  begin
1165
1082
  te = p+1
1166
- begin
1083
+ begin
1167
1084
  emit(:set, :intersection, '&&')
1168
1085
  end
1169
1086
  end
1170
- when 69 then
1171
- # line 204 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1087
+ when 68 then
1172
1088
  begin
1173
1089
  te = p+1
1174
- begin
1090
+ begin
1175
1091
  begin
1176
1092
  stack[top] = cs
1177
1093
  top+= 1
1178
- cs = 98
1094
+ cs = 96
1179
1095
  _goto_level = _again
1180
1096
  next
1181
1097
  end
1182
1098
 
1183
1099
  end
1184
1100
  end
1185
- when 67 then
1186
- # line 238 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1101
+ when 66 then
1187
1102
  begin
1188
1103
  te = p+1
1189
- begin
1104
+ begin
1190
1105
  emit(:literal, :literal, copy(data, ts, te))
1191
1106
  end
1192
1107
  end
1193
- when 17 then
1194
- # line 242 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1108
+ when 16 then
1195
1109
  begin
1196
1110
  te = p+1
1197
- begin
1111
+ begin
1198
1112
  text = copy(data, ts, te)
1199
1113
  emit(:literal, :literal, text)
1200
1114
  end
1201
1115
  end
1202
- when 74 then
1203
- # line 188 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1116
+ when 73 then
1204
1117
  begin
1205
1118
  te = p
1206
- p = p - 1; begin
1119
+ p = p - 1; begin
1207
1120
  # ranges cant start with the opening bracket, a subset, or
1208
1121
  # intersection/negation/range operators
1209
1122
  if prev_token[0] == :set
@@ -1213,36 +1126,33 @@ p = p - 1; begin
1213
1126
  end
1214
1127
  end
1215
1128
  end
1216
- when 77 then
1217
- # line 208 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1129
+ when 76 then
1218
1130
  begin
1219
1131
  te = p
1220
- p = p - 1; begin
1132
+ p = p - 1; begin
1221
1133
  emit(:set, :open, '[')
1222
1134
  begin
1223
1135
  stack[top] = cs
1224
1136
  top+= 1
1225
- cs = 91
1137
+ cs = 89
1226
1138
  _goto_level = _again
1227
1139
  next
1228
1140
  end
1229
1141
 
1230
1142
  end
1231
1143
  end
1232
- when 72 then
1233
- # line 242 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1144
+ when 71 then
1234
1145
  begin
1235
1146
  te = p
1236
- p = p - 1; begin
1147
+ p = p - 1; begin
1237
1148
  text = copy(data, ts, te)
1238
1149
  emit(:literal, :literal, text)
1239
1150
  end
1240
1151
  end
1241
- when 18 then
1242
- # line 188 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1152
+ when 17 then
1243
1153
  begin
1244
1154
  begin p = ((te))-1; end
1245
- begin
1155
+ begin
1246
1156
  # ranges cant start with the opening bracket, a subset, or
1247
1157
  # intersection/negation/range operators
1248
1158
  if prev_token[0] == :set
@@ -1252,37 +1162,34 @@ p = p - 1; begin
1252
1162
  end
1253
1163
  end
1254
1164
  end
1255
- when 21 then
1256
- # line 208 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1165
+ when 20 then
1257
1166
  begin
1258
1167
  begin p = ((te))-1; end
1259
- begin
1168
+ begin
1260
1169
  emit(:set, :open, '[')
1261
1170
  begin
1262
1171
  stack[top] = cs
1263
1172
  top+= 1
1264
- cs = 91
1173
+ cs = 89
1265
1174
  _goto_level = _again
1266
1175
  next
1267
1176
  end
1268
1177
 
1269
1178
  end
1270
1179
  end
1271
- when 16 then
1272
- # line 242 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1180
+ when 15 then
1273
1181
  begin
1274
1182
  begin p = ((te))-1; end
1275
- begin
1183
+ begin
1276
1184
  text = copy(data, ts, te)
1277
1185
  emit(:literal, :literal, text)
1278
1186
  end
1279
1187
  end
1280
- when 81 then
1281
- # line 252 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1188
+ when 80 then
1282
1189
  begin
1283
1190
  te = p+1
1284
- begin
1285
- emit(:escape, :octal, copy(data, ts-1, te))
1191
+ begin
1192
+ emit(:escape, :octal, copy(data, ts-1,te))
1286
1193
  begin
1287
1194
  top -= 1
1288
1195
  cs = stack[top]
@@ -1292,29 +1199,27 @@ te = p+1
1292
1199
 
1293
1200
  end
1294
1201
  end
1295
- when 79 then
1296
- # line 258 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1202
+ when 78 then
1297
1203
  begin
1298
1204
  te = p+1
1299
- begin
1205
+ begin
1300
1206
  p = p - 1;
1301
- cs = 91;
1207
+ cs = 89;
1302
1208
  begin
1303
1209
  stack[top] = cs
1304
1210
  top+= 1
1305
- cs = 101
1211
+ cs = 99
1306
1212
  _goto_level = _again
1307
1213
  next
1308
1214
  end
1309
1215
 
1310
1216
  end
1311
1217
  end
1312
- when 78 then
1313
- # line 267 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1218
+ when 77 then
1314
1219
  begin
1315
1220
  te = p+1
1316
- begin
1317
- emit(:escape, :literal, copy(data, ts-1, te))
1221
+ begin
1222
+ emit(:escape, :literal, copy(data, ts-1,te))
1318
1223
  begin
1319
1224
  top -= 1
1320
1225
  cs = stack[top]
@@ -1324,12 +1229,11 @@ te = p+1
1324
1229
 
1325
1230
  end
1326
1231
  end
1327
- when 80 then
1328
- # line 252 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1232
+ when 79 then
1329
1233
  begin
1330
1234
  te = p
1331
- p = p - 1; begin
1332
- emit(:escape, :octal, copy(data, ts-1, te))
1235
+ p = p - 1; begin
1236
+ emit(:escape, :octal, copy(data, ts-1,te))
1333
1237
  begin
1334
1238
  top -= 1
1335
1239
  cs = stack[top]
@@ -1339,12 +1243,11 @@ p = p - 1; begin
1339
1243
 
1340
1244
  end
1341
1245
  end
1342
- when 85 then
1343
- # line 277 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1246
+ when 84 then
1344
1247
  begin
1345
1248
  te = p+1
1346
- begin
1347
- text = copy(data, ts-1, te)
1249
+ begin
1250
+ text = copy(data, ts-1,te)
1348
1251
  emit(:backref, :number, text)
1349
1252
  begin
1350
1253
  top -= 1
@@ -1355,12 +1258,11 @@ te = p+1
1355
1258
 
1356
1259
  end
1357
1260
  end
1358
- when 92 then
1359
- # line 283 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1261
+ when 91 then
1360
1262
  begin
1361
1263
  te = p+1
1362
- begin
1363
- emit(:escape, :octal, copy(data, ts-1, te))
1264
+ begin
1265
+ emit(:escape, :octal, copy(data, ts-1,te))
1364
1266
  begin
1365
1267
  top -= 1
1366
1268
  cs = stack[top]
@@ -1370,12 +1272,11 @@ te = p+1
1370
1272
 
1371
1273
  end
1372
1274
  end
1373
- when 82 then
1374
- # line 288 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1275
+ when 81 then
1375
1276
  begin
1376
1277
  te = p+1
1377
- begin
1378
- case text = copy(data, ts-1, te)
1278
+ begin
1279
+ case text = copy(data, ts-1,te)
1379
1280
  when '\.'; emit(:escape, :dot, text)
1380
1281
  when '\|'; emit(:escape, :alternation, text)
1381
1282
  when '\^'; emit(:escape, :bol, text)
@@ -1401,14 +1302,13 @@ te = p+1
1401
1302
 
1402
1303
  end
1403
1304
  end
1404
- when 88 then
1405
- # line 309 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1305
+ when 87 then
1406
1306
  begin
1407
1307
  te = p+1
1408
- begin
1308
+ begin
1409
1309
  # \b is emitted as backspace only when inside a character set, otherwise
1410
1310
  # it is a word boundary anchor. A syntax might "normalize" it if needed.
1411
- case text = copy(data, ts-1, te)
1311
+ case text = copy(data, ts-1,te)
1412
1312
  when '\a'; emit(:escape, :bell, text)
1413
1313
  when '\b'; emit(:escape, :backspace, text)
1414
1314
  when '\e'; emit(:escape, :escape, text)
@@ -1427,12 +1327,11 @@ te = p+1
1427
1327
 
1428
1328
  end
1429
1329
  end
1430
- when 30 then
1431
- # line 325 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1330
+ when 29 then
1432
1331
  begin
1433
1332
  te = p+1
1434
- begin
1435
- text = copy(data, ts-1, te)
1333
+ begin
1334
+ text = copy(data, ts-1,te)
1436
1335
  if text[2] == '{'
1437
1336
  emit(:escape, :codepoint_list, text)
1438
1337
  else
@@ -1447,12 +1346,11 @@ te = p+1
1447
1346
 
1448
1347
  end
1449
1348
  end
1450
- when 98 then
1451
- # line 335 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1349
+ when 97 then
1452
1350
  begin
1453
1351
  te = p+1
1454
- begin
1455
- emit(:escape, :hex, copy(data, ts-1, te))
1352
+ begin
1353
+ emit(:escape, :hex, copy(data, ts-1,te))
1456
1354
  begin
1457
1355
  top -= 1
1458
1356
  cs = stack[top]
@@ -1462,11 +1360,10 @@ te = p+1
1462
1360
 
1463
1361
  end
1464
1362
  end
1465
- when 26 then
1466
- # line 344 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1363
+ when 25 then
1467
1364
  begin
1468
1365
  te = p+1
1469
- begin
1366
+ begin
1470
1367
  emit_meta_control_sequence(data, ts, te, :control)
1471
1368
  begin
1472
1369
  top -= 1
@@ -1477,11 +1374,10 @@ te = p+1
1477
1374
 
1478
1375
  end
1479
1376
  end
1480
- when 28 then
1481
- # line 349 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1377
+ when 27 then
1482
1378
  begin
1483
1379
  te = p+1
1484
- begin
1380
+ begin
1485
1381
  emit_meta_control_sequence(data, ts, te, :meta_sequence)
1486
1382
  begin
1487
1383
  top -= 1
@@ -1492,46 +1388,43 @@ te = p+1
1492
1388
 
1493
1389
  end
1494
1390
  end
1495
- when 86 then
1496
- # line 354 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1391
+ when 85 then
1497
1392
  begin
1498
1393
  te = p+1
1499
- begin
1394
+ begin
1500
1395
  p = p - 1;
1501
- cs = ((in_set? ? 91 : 73));
1396
+ cs = ((in_set? ? 89 : 71));
1502
1397
  begin
1503
1398
  stack[top] = cs
1504
1399
  top+= 1
1505
- cs = 89
1400
+ cs = 87
1506
1401
  _goto_level = _again
1507
1402
  next
1508
1403
  end
1509
1404
 
1510
1405
  end
1511
1406
  end
1512
- when 87 then
1513
- # line 360 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1407
+ when 86 then
1514
1408
  begin
1515
1409
  te = p+1
1516
- begin
1410
+ begin
1517
1411
  p = p - 1;
1518
- cs = ((in_set? ? 91 : 73));
1412
+ cs = ((in_set? ? 89 : 71));
1519
1413
  begin
1520
1414
  stack[top] = cs
1521
1415
  top+= 1
1522
- cs = 90
1416
+ cs = 88
1523
1417
  _goto_level = _again
1524
1418
  next
1525
1419
  end
1526
1420
 
1527
1421
  end
1528
1422
  end
1529
- when 24 then
1530
- # line 366 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1423
+ when 23 then
1531
1424
  begin
1532
1425
  te = p+1
1533
- begin
1534
- emit(:escape, :literal, copy(data, ts-1, te))
1426
+ begin
1427
+ emit(:escape, :literal, copy(data, ts-1,te))
1535
1428
  begin
1536
1429
  top -= 1
1537
1430
  cs = stack[top]
@@ -1541,12 +1434,11 @@ te = p+1
1541
1434
 
1542
1435
  end
1543
1436
  end
1544
- when 91 then
1545
- # line 283 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1437
+ when 90 then
1546
1438
  begin
1547
1439
  te = p
1548
- p = p - 1; begin
1549
- emit(:escape, :octal, copy(data, ts-1, te))
1440
+ p = p - 1; begin
1441
+ emit(:escape, :octal, copy(data, ts-1,te))
1550
1442
  begin
1551
1443
  top -= 1
1552
1444
  cs = stack[top]
@@ -1556,12 +1448,11 @@ p = p - 1; begin
1556
1448
 
1557
1449
  end
1558
1450
  end
1559
- when 97 then
1560
- # line 335 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1451
+ when 96 then
1561
1452
  begin
1562
1453
  te = p
1563
- p = p - 1; begin
1564
- emit(:escape, :hex, copy(data, ts-1, te))
1454
+ p = p - 1; begin
1455
+ emit(:escape, :hex, copy(data, ts-1,te))
1565
1456
  begin
1566
1457
  top -= 1
1567
1458
  cs = stack[top]
@@ -1571,11 +1462,10 @@ p = p - 1; begin
1571
1462
 
1572
1463
  end
1573
1464
  end
1574
- when 94 then
1575
- # line 344 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1465
+ when 93 then
1576
1466
  begin
1577
1467
  te = p
1578
- p = p - 1; begin
1468
+ p = p - 1; begin
1579
1469
  emit_meta_control_sequence(data, ts, te, :control)
1580
1470
  begin
1581
1471
  top -= 1
@@ -1586,11 +1476,10 @@ p = p - 1; begin
1586
1476
 
1587
1477
  end
1588
1478
  end
1589
- when 96 then
1590
- # line 349 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1479
+ when 95 then
1591
1480
  begin
1592
1481
  te = p
1593
- p = p - 1; begin
1482
+ p = p - 1; begin
1594
1483
  emit_meta_control_sequence(data, ts, te, :meta_sequence)
1595
1484
  begin
1596
1485
  top -= 1
@@ -1601,12 +1490,11 @@ p = p - 1; begin
1601
1490
 
1602
1491
  end
1603
1492
  end
1604
- when 89 then
1605
- # line 366 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1493
+ when 88 then
1606
1494
  begin
1607
1495
  te = p
1608
- p = p - 1; begin
1609
- emit(:escape, :literal, copy(data, ts-1, te))
1496
+ p = p - 1; begin
1497
+ emit(:escape, :literal, copy(data, ts-1,te))
1610
1498
  begin
1611
1499
  top -= 1
1612
1500
  cs = stack[top]
@@ -1616,12 +1504,11 @@ p = p - 1; begin
1616
1504
 
1617
1505
  end
1618
1506
  end
1619
- when 23 then
1620
- # line 366 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1507
+ when 22 then
1621
1508
  begin
1622
1509
  begin p = ((te))-1; end
1623
- begin
1624
- emit(:escape, :literal, copy(data, ts-1, te))
1510
+ begin
1511
+ emit(:escape, :literal, copy(data, ts-1,te))
1625
1512
  begin
1626
1513
  top -= 1
1627
1514
  cs = stack[top]
@@ -1631,14 +1518,13 @@ p = p - 1; begin
1631
1518
 
1632
1519
  end
1633
1520
  end
1634
- when 90 then
1635
- # line 1 "NONE"
1521
+ when 89 then
1636
1522
  begin
1637
1523
  case act
1638
1524
  when 17 then
1639
1525
  begin begin p = ((te))-1; end
1640
1526
 
1641
- text = copy(data, ts-1, te)
1527
+ text = copy(data, ts-1,te)
1642
1528
  emit(:backref, :number, text)
1643
1529
  begin
1644
1530
  top -= 1
@@ -1651,7 +1537,7 @@ p = p - 1; begin
1651
1537
  when 18 then
1652
1538
  begin begin p = ((te))-1; end
1653
1539
 
1654
- emit(:escape, :octal, copy(data, ts-1, te))
1540
+ emit(:escape, :octal, copy(data, ts-1,te))
1655
1541
  begin
1656
1542
  top -= 1
1657
1543
  cs = stack[top]
@@ -1660,79 +1546,73 @@ p = p - 1; begin
1660
1546
  end
1661
1547
 
1662
1548
  end
1663
- end
1549
+ end
1664
1550
  end
1665
- when 33 then
1666
- # line 376 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1551
+ when 32 then
1667
1552
  begin
1668
1553
  te = p+1
1669
- begin
1554
+ begin
1670
1555
  text = copy(data, ts, te-1)
1671
1556
  emit(:conditional, :condition, text)
1672
1557
  emit(:conditional, :condition_close, ')')
1673
1558
  end
1674
1559
  end
1675
- when 99 then
1676
- # line 382 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1560
+ when 98 then
1677
1561
  begin
1678
1562
  te = p+1
1679
- begin
1563
+ begin
1680
1564
  p = p - 1;
1681
1565
  begin
1682
1566
  stack[top] = cs
1683
1567
  top+= 1
1684
- cs = 73
1568
+ cs = 71
1685
1569
  _goto_level = _again
1686
1570
  next
1687
1571
  end
1688
1572
 
1689
1573
  end
1690
1574
  end
1691
- when 100 then
1692
- # line 382 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1575
+ when 99 then
1693
1576
  begin
1694
1577
  te = p
1695
- p = p - 1; begin
1578
+ p = p - 1; begin
1696
1579
  p = p - 1;
1697
1580
  begin
1698
1581
  stack[top] = cs
1699
1582
  top+= 1
1700
- cs = 73
1583
+ cs = 71
1701
1584
  _goto_level = _again
1702
1585
  next
1703
1586
  end
1704
1587
 
1705
1588
  end
1706
1589
  end
1707
- when 32 then
1708
- # line 382 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1590
+ when 31 then
1709
1591
  begin
1710
1592
  begin p = ((te))-1; end
1711
- begin
1593
+ begin
1712
1594
  p = p - 1;
1713
1595
  begin
1714
1596
  stack[top] = cs
1715
1597
  top+= 1
1716
- cs = 73
1598
+ cs = 71
1717
1599
  _goto_level = _again
1718
1600
  next
1719
1601
  end
1720
1602
 
1721
1603
  end
1722
1604
  end
1723
- when 39 then
1724
- # line 395 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1605
+ when 38 then
1725
1606
  begin
1726
1607
  te = p+1
1727
- begin
1608
+ begin
1728
1609
  emit(:meta, :dot, copy(data, ts, te))
1729
1610
  end
1730
1611
  end
1731
- when 44 then
1732
- # line 399 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1612
+ when 43 then
1733
1613
  begin
1734
1614
  te = p+1
1735
- begin
1615
+ begin
1736
1616
  if conditional_stack.last == group_depth
1737
1617
  emit(:conditional, :separator, copy(data, ts, te))
1738
1618
  else
@@ -1740,35 +1620,31 @@ te = p+1
1740
1620
  end
1741
1621
  end
1742
1622
  end
1743
- when 43 then
1744
- # line 409 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1623
+ when 42 then
1745
1624
  begin
1746
1625
  te = p+1
1747
- begin
1626
+ begin
1748
1627
  emit(:anchor, :bol, copy(data, ts, te))
1749
1628
  end
1750
1629
  end
1751
- when 36 then
1752
- # line 413 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1630
+ when 35 then
1753
1631
  begin
1754
1632
  te = p+1
1755
- begin
1633
+ begin
1756
1634
  emit(:anchor, :eol, copy(data, ts, te))
1757
1635
  end
1758
1636
  end
1759
- when 63 then
1760
- # line 417 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1637
+ when 62 then
1761
1638
  begin
1762
1639
  te = p+1
1763
- begin
1640
+ begin
1764
1641
  emit(:keep, :mark, copy(data, ts, te))
1765
1642
  end
1766
1643
  end
1767
- when 62 then
1768
- # line 421 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1644
+ when 61 then
1769
1645
  begin
1770
1646
  te = p+1
1771
- begin
1647
+ begin
1772
1648
  case text = copy(data, ts, te)
1773
1649
  when '\A'; emit(:anchor, :bos, text)
1774
1650
  when '\z'; emit(:anchor, :eos, text)
@@ -1779,19 +1655,17 @@ te = p+1
1779
1655
  end
1780
1656
  end
1781
1657
  end
1782
- when 42 then
1783
- # line 432 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1658
+ when 41 then
1784
1659
  begin
1785
1660
  te = p+1
1786
- begin
1661
+ begin
1787
1662
  append_literal(data, ts, te)
1788
1663
  end
1789
1664
  end
1790
- when 52 then
1791
- # line 447 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1665
+ when 51 then
1792
1666
  begin
1793
1667
  te = p+1
1794
- begin
1668
+ begin
1795
1669
  text = copy(data, ts, te)
1796
1670
 
1797
1671
  conditional_stack << group_depth
@@ -1801,30 +1675,28 @@ te = p+1
1801
1675
  begin
1802
1676
  stack[top] = cs
1803
1677
  top+= 1
1804
- cs = 115
1678
+ cs = 113
1805
1679
  _goto_level = _again
1806
1680
  next
1807
1681
  end
1808
1682
 
1809
1683
  end
1810
1684
  end
1811
- when 53 then
1812
- # line 478 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1685
+ when 52 then
1813
1686
  begin
1814
1687
  te = p+1
1815
- begin
1688
+ begin
1816
1689
  text = copy(data, ts, te)
1817
1690
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
1818
- validation_error(:group_option, $1 || "-#{$2}", text)
1691
+ raise ValidationError.for(:group_option, $1 || "-#{$2}", text)
1819
1692
  end
1820
1693
  emit_options(text)
1821
1694
  end
1822
1695
  end
1823
- when 7 then
1824
- # line 492 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1696
+ when 6 then
1825
1697
  begin
1826
1698
  te = p+1
1827
- begin
1699
+ begin
1828
1700
  case text = copy(data, ts, te)
1829
1701
  when '(?='; emit(:assertion, :lookahead, text)
1830
1702
  when '(?!'; emit(:assertion, :nlookahead, text)
@@ -1833,18 +1705,17 @@ te = p+1
1833
1705
  end
1834
1706
  end
1835
1707
  end
1836
- when 6 then
1837
- # line 509 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1708
+ when 5 then
1838
1709
  begin
1839
1710
  te = p+1
1840
- begin
1711
+ begin
1841
1712
  case text = copy(data, ts, te)
1842
1713
  when '(?:'; emit(:group, :passive, text)
1843
1714
  when '(?>'; emit(:group, :atomic, text)
1844
1715
  when '(?~'; emit(:group, :absence, text)
1845
1716
 
1846
1717
  when /^\(\?(?:<>|'')/
1847
- validation_error(:group, 'named group', 'name is empty')
1718
+ raise ValidationError.for(:group, 'named group', 'name is empty')
1848
1719
 
1849
1720
  when /^\(\?<[^>]+>/
1850
1721
  emit(:group, :named_ab, text)
@@ -1855,49 +1726,46 @@ te = p+1
1855
1726
  end
1856
1727
  end
1857
1728
  end
1858
- when 11 then
1859
- # line 550 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1729
+ when 10 then
1860
1730
  begin
1861
1731
  te = p+1
1862
- begin
1732
+ begin
1863
1733
  case text = copy(data, ts, te)
1864
- when /^\\k(<>|'')/
1865
- validation_error(:backref, 'backreference', 'ref ID is empty')
1866
- when /^\\k(.)[^\p{digit}\-][^+\-]*\D$/
1734
+ when /^\\k(.)[^0-9\-][^+\-]*['>]$/
1867
1735
  emit(:backref, $1 == '<' ? :name_ref_ab : :name_ref_sq, text)
1868
- when /^\\k(.)\d+\D$/
1736
+ when /^\\k(.)[1-9]\d*['>]$/
1869
1737
  emit(:backref, $1 == '<' ? :number_ref_ab : :number_ref_sq, text)
1870
- when /^\\k(.)-\d+\D$/
1738
+ when /^\\k(.)-[1-9]\d*['>]$/
1871
1739
  emit(:backref, $1 == '<' ? :number_rel_ref_ab : :number_rel_ref_sq, text)
1872
- when /^\\k(.)[^\p{digit}\-].*[+\-]\d+\D$/
1740
+ when /^\\k(.)[^0-9\-].*[+\-]\d+['>]$/
1873
1741
  emit(:backref, $1 == '<' ? :name_recursion_ref_ab : :name_recursion_ref_sq, text)
1874
- when /^\\k(.)-?\d+[+\-]\d+\D$/
1742
+ when /^\\k(.)-?[1-9]\d*[+\-]\d+['>]$/
1875
1743
  emit(:backref, $1 == '<' ? :number_recursion_ref_ab : :number_recursion_ref_sq, text)
1744
+ else
1745
+ raise ValidationError.for(:backref, 'backreference', 'invalid ref ID')
1876
1746
  end
1877
1747
  end
1878
1748
  end
1879
- when 10 then
1880
- # line 569 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1749
+ when 9 then
1881
1750
  begin
1882
1751
  te = p+1
1883
- begin
1752
+ begin
1884
1753
  case text = copy(data, ts, te)
1885
- when /^\\g(<>|'')/
1886
- validation_error(:backref, 'subexpression call', 'ref ID is empty')
1887
- when /^\\g(.)[^\p{digit}+\->][^+\-]*/
1754
+ when /^\\g(.)[^0-9+\-].*['>]$/
1888
1755
  emit(:backref, $1 == '<' ? :name_call_ab : :name_call_sq, text)
1889
- when /^\\g(.)\d+\D$/
1756
+ when /^\\g(.)\d+['>]$/
1890
1757
  emit(:backref, $1 == '<' ? :number_call_ab : :number_call_sq, text)
1891
1758
  when /^\\g(.)[+-]\d+/
1892
1759
  emit(:backref, $1 == '<' ? :number_rel_call_ab : :number_rel_call_sq, text)
1760
+ else
1761
+ raise ValidationError.for(:backref, 'subexpression call', 'invalid ref ID')
1893
1762
  end
1894
1763
  end
1895
1764
  end
1896
- when 60 then
1897
- # line 585 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1765
+ when 59 then
1898
1766
  begin
1899
1767
  te = p+1
1900
- begin
1768
+ begin
1901
1769
  case text = copy(data, ts, te)
1902
1770
  when '?' ; emit(:quantifier, :zero_or_one, text)
1903
1771
  when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
@@ -1905,11 +1773,10 @@ te = p+1
1905
1773
  end
1906
1774
  end
1907
1775
  end
1908
- when 56 then
1909
- # line 593 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1776
+ when 55 then
1910
1777
  begin
1911
1778
  te = p+1
1912
- begin
1779
+ begin
1913
1780
  case text = copy(data, ts, te)
1914
1781
  when '*' ; emit(:quantifier, :zero_or_more, text)
1915
1782
  when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
@@ -1917,11 +1784,10 @@ te = p+1
1917
1784
  end
1918
1785
  end
1919
1786
  end
1920
- when 58 then
1921
- # line 601 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1787
+ when 57 then
1922
1788
  begin
1923
1789
  te = p+1
1924
- begin
1790
+ begin
1925
1791
  case text = copy(data, ts, te)
1926
1792
  when '+' ; emit(:quantifier, :one_or_more, text)
1927
1793
  when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
@@ -1929,19 +1795,17 @@ te = p+1
1929
1795
  end
1930
1796
  end
1931
1797
  end
1932
- when 13 then
1933
- # line 609 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1798
+ when 12 then
1934
1799
  begin
1935
1800
  te = p+1
1936
- begin
1801
+ begin
1937
1802
  emit(:quantifier, :interval, copy(data, ts, te))
1938
1803
  end
1939
1804
  end
1940
- when 48 then
1941
- # line 624 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1805
+ when 47 then
1942
1806
  begin
1943
1807
  te = p+1
1944
- begin
1808
+ begin
1945
1809
  if free_spacing
1946
1810
  emit(:free_space, :comment, copy(data, ts, te))
1947
1811
  else
@@ -1952,23 +1816,21 @@ te = p+1
1952
1816
  end
1953
1817
  end
1954
1818
  end
1955
- when 51 then
1956
- # line 478 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1819
+ when 50 then
1957
1820
  begin
1958
1821
  te = p
1959
- p = p - 1; begin
1822
+ p = p - 1; begin
1960
1823
  text = copy(data, ts, te)
1961
1824
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
1962
- validation_error(:group_option, $1 || "-#{$2}", text)
1825
+ raise ValidationError.for(:group_option, $1 || "-#{$2}", text)
1963
1826
  end
1964
1827
  emit_options(text)
1965
1828
  end
1966
1829
  end
1967
- when 54 then
1968
- # line 492 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1830
+ when 53 then
1969
1831
  begin
1970
1832
  te = p
1971
- p = p - 1; begin
1833
+ p = p - 1; begin
1972
1834
  case text = copy(data, ts, te)
1973
1835
  when '(?='; emit(:assertion, :lookahead, text)
1974
1836
  when '(?!'; emit(:assertion, :nlookahead, text)
@@ -1977,20 +1839,18 @@ p = p - 1; begin
1977
1839
  end
1978
1840
  end
1979
1841
  end
1980
- when 49 then
1981
- # line 527 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1842
+ when 48 then
1982
1843
  begin
1983
1844
  te = p
1984
- p = p - 1; begin
1845
+ p = p - 1; begin
1985
1846
  text = copy(data, ts, te)
1986
1847
  emit(:group, :capture, text)
1987
1848
  end
1988
1849
  end
1989
- when 59 then
1990
- # line 585 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1850
+ when 58 then
1991
1851
  begin
1992
1852
  te = p
1993
- p = p - 1; begin
1853
+ p = p - 1; begin
1994
1854
  case text = copy(data, ts, te)
1995
1855
  when '?' ; emit(:quantifier, :zero_or_one, text)
1996
1856
  when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
@@ -1998,11 +1858,10 @@ p = p - 1; begin
1998
1858
  end
1999
1859
  end
2000
1860
  end
2001
- when 55 then
2002
- # line 593 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1861
+ when 54 then
2003
1862
  begin
2004
1863
  te = p
2005
- p = p - 1; begin
1864
+ p = p - 1; begin
2006
1865
  case text = copy(data, ts, te)
2007
1866
  when '*' ; emit(:quantifier, :zero_or_more, text)
2008
1867
  when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
@@ -2010,11 +1869,10 @@ p = p - 1; begin
2010
1869
  end
2011
1870
  end
2012
1871
  end
2013
- when 57 then
2014
- # line 601 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1872
+ when 56 then
2015
1873
  begin
2016
1874
  te = p
2017
- p = p - 1; begin
1875
+ p = p - 1; begin
2018
1876
  case text = copy(data, ts, te)
2019
1877
  when '+' ; emit(:quantifier, :one_or_more, text)
2020
1878
  when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
@@ -2022,34 +1880,31 @@ p = p - 1; begin
2022
1880
  end
2023
1881
  end
2024
1882
  end
2025
- when 64 then
2026
- # line 614 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1883
+ when 63 then
2027
1884
  begin
2028
1885
  te = p
2029
- p = p - 1; begin
1886
+ p = p - 1; begin
2030
1887
  append_literal(data, ts, te)
2031
1888
  end
2032
1889
  end
2033
- when 61 then
2034
- # line 620 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1890
+ when 60 then
2035
1891
  begin
2036
1892
  te = p
2037
- p = p - 1; begin
1893
+ p = p - 1; begin
2038
1894
  begin
2039
1895
  stack[top] = cs
2040
1896
  top+= 1
2041
- cs = 101
1897
+ cs = 99
2042
1898
  _goto_level = _again
2043
1899
  next
2044
1900
  end
2045
1901
 
2046
1902
  end
2047
1903
  end
2048
- when 47 then
2049
- # line 624 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1904
+ when 46 then
2050
1905
  begin
2051
1906
  te = p
2052
- p = p - 1; begin
1907
+ p = p - 1; begin
2053
1908
  if free_spacing
2054
1909
  emit(:free_space, :comment, copy(data, ts, te))
2055
1910
  else
@@ -2060,11 +1915,10 @@ p = p - 1; begin
2060
1915
  end
2061
1916
  end
2062
1917
  end
2063
- when 46 then
2064
- # line 634 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1918
+ when 45 then
2065
1919
  begin
2066
1920
  te = p
2067
- p = p - 1; begin
1921
+ p = p - 1; begin
2068
1922
  if free_spacing
2069
1923
  emit(:free_space, :whitespace, copy(data, ts, te))
2070
1924
  else
@@ -2072,43 +1926,39 @@ p = p - 1; begin
2072
1926
  end
2073
1927
  end
2074
1928
  end
2075
- when 45 then
2076
- # line 645 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1929
+ when 44 then
2077
1930
  begin
2078
1931
  te = p
2079
- p = p - 1; begin
1932
+ p = p - 1; begin
2080
1933
  append_literal(data, ts, te)
2081
1934
  end
2082
1935
  end
2083
1936
  when 3 then
2084
- # line 478 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2085
1937
  begin
2086
1938
  begin p = ((te))-1; end
2087
- begin
1939
+ begin
2088
1940
  text = copy(data, ts, te)
2089
1941
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2090
- validation_error(:group_option, $1 || "-#{$2}", text)
1942
+ raise ValidationError.for(:group_option, $1 || "-#{$2}", text)
2091
1943
  end
2092
1944
  emit_options(text)
2093
1945
  end
2094
1946
  end
2095
- when 12 then
2096
- # line 614 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1947
+ when 11 then
2097
1948
  begin
2098
1949
  begin p = ((te))-1; end
2099
- begin
1950
+ begin
2100
1951
  append_literal(data, ts, te)
2101
1952
  end
2102
1953
  end
2103
- when 9 then
2104
- # line 620 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1954
+ when 8 then
2105
1955
  begin
2106
1956
  begin p = ((te))-1; end
2107
- begin
1957
+ begin
2108
1958
  begin
2109
1959
  stack[top] = cs
2110
1960
  top+= 1
2111
- cs = 101
1961
+ cs = 99
2112
1962
  _goto_level = _again
2113
1963
  next
2114
1964
  end
@@ -2116,7 +1966,6 @@ p = p - 1; begin
2116
1966
  end
2117
1967
  end
2118
1968
  when 1 then
2119
- # line 1 "NONE"
2120
1969
  begin
2121
1970
  case act
2122
1971
  when 0 then
@@ -2131,7 +1980,7 @@ end
2131
1980
 
2132
1981
  text = copy(data, ts, te)
2133
1982
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2134
- validation_error(:group_option, $1 || "-#{$2}", text)
1983
+ raise ValidationError.for(:group_option, $1 || "-#{$2}", text)
2135
1984
  end
2136
1985
  emit_options(text)
2137
1986
  end
@@ -2150,63 +1999,57 @@ end
2150
1999
 
2151
2000
  append_literal(data, ts, te)
2152
2001
  end
2153
- end
2002
+ end
2154
2003
  end
2155
- when 76 then
2156
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2004
+ when 75 then
2157
2005
  begin
2158
2006
 
2159
- text = copy(data, ts ? ts-1 : 0, -1)
2160
- raise PrematureEndError.new( text )
2007
+ text = copy(data, ts ? ts-1 : 0,-1)
2008
+ raise PrematureEndError.new(text)
2161
2009
  end
2162
- # line 208 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2163
2010
  begin
2164
2011
  te = p
2165
- p = p - 1; begin
2012
+ p = p - 1; begin
2166
2013
  emit(:set, :open, '[')
2167
2014
  begin
2168
2015
  stack[top] = cs
2169
2016
  top+= 1
2170
- cs = 91
2017
+ cs = 89
2171
2018
  _goto_level = _again
2172
2019
  next
2173
2020
  end
2174
2021
 
2175
2022
  end
2176
2023
  end
2177
- when 20 then
2178
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2024
+ when 19 then
2179
2025
  begin
2180
2026
 
2181
- text = copy(data, ts ? ts-1 : 0, -1)
2182
- raise PrematureEndError.new( text )
2027
+ text = copy(data, ts ? ts-1 : 0,-1)
2028
+ raise PrematureEndError.new(text)
2183
2029
  end
2184
- # line 208 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2185
2030
  begin
2186
2031
  begin p = ((te))-1; end
2187
- begin
2032
+ begin
2188
2033
  emit(:set, :open, '[')
2189
2034
  begin
2190
2035
  stack[top] = cs
2191
2036
  top+= 1
2192
- cs = 91
2037
+ cs = 89
2193
2038
  _goto_level = _again
2194
2039
  next
2195
2040
  end
2196
2041
 
2197
2042
  end
2198
2043
  end
2199
- when 93 then
2200
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2044
+ when 92 then
2201
2045
  begin
2202
2046
 
2203
- text = copy(data, ts ? ts-1 : 0, -1)
2204
- raise PrematureEndError.new( text )
2047
+ text = copy(data, ts ? ts-1 : 0,-1)
2048
+ raise PrematureEndError.new(text)
2205
2049
  end
2206
- # line 344 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2207
2050
  begin
2208
2051
  te = p
2209
- p = p - 1; begin
2052
+ p = p - 1; begin
2210
2053
  emit_meta_control_sequence(data, ts, te, :control)
2211
2054
  begin
2212
2055
  top -= 1
@@ -2217,17 +2060,15 @@ p = p - 1; begin
2217
2060
 
2218
2061
  end
2219
2062
  end
2220
- when 95 then
2221
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2063
+ when 94 then
2222
2064
  begin
2223
2065
 
2224
- text = copy(data, ts ? ts-1 : 0, -1)
2225
- raise PrematureEndError.new( text )
2066
+ text = copy(data, ts ? ts-1 : 0,-1)
2067
+ raise PrematureEndError.new(text)
2226
2068
  end
2227
- # line 349 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2228
2069
  begin
2229
2070
  te = p
2230
- p = p - 1; begin
2071
+ p = p - 1; begin
2231
2072
  emit_meta_control_sequence(data, ts, te, :meta_sequence)
2232
2073
  begin
2233
2074
  top -= 1
@@ -2238,17 +2079,15 @@ p = p - 1; begin
2238
2079
 
2239
2080
  end
2240
2081
  end
2241
- when 27 then
2242
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2082
+ when 26 then
2243
2083
  begin
2244
2084
 
2245
- text = copy(data, ts ? ts-1 : 0, -1)
2246
- raise PrematureEndError.new( text )
2085
+ text = copy(data, ts ? ts-1 : 0,-1)
2086
+ raise PrematureEndError.new(text)
2247
2087
  end
2248
- # line 344 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2249
2088
  begin
2250
2089
  begin p = ((te))-1; end
2251
- begin
2090
+ begin
2252
2091
  emit_meta_control_sequence(data, ts, te, :control)
2253
2092
  begin
2254
2093
  top -= 1
@@ -2259,17 +2098,15 @@ p = p - 1; begin
2259
2098
 
2260
2099
  end
2261
2100
  end
2262
- when 29 then
2263
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2101
+ when 28 then
2264
2102
  begin
2265
2103
 
2266
- text = copy(data, ts ? ts-1 : 0, -1)
2267
- raise PrematureEndError.new( text )
2104
+ text = copy(data, ts ? ts-1 : 0,-1)
2105
+ raise PrematureEndError.new(text)
2268
2106
  end
2269
- # line 349 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2270
2107
  begin
2271
2108
  begin p = ((te))-1; end
2272
- begin
2109
+ begin
2273
2110
  emit_meta_control_sequence(data, ts, te, :meta_sequence)
2274
2111
  begin
2275
2112
  top -= 1
@@ -2280,17 +2117,15 @@ p = p - 1; begin
2280
2117
 
2281
2118
  end
2282
2119
  end
2283
- when 31 then
2284
- # line 141 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2120
+ when 30 then
2285
2121
  begin
2286
2122
 
2287
- text = copy(data, ts ? ts-1 : 0, -1)
2288
- validation_error(:sequence, 'sequence', text)
2123
+ text = copy(data, ts ? ts-1 : 0,-1)
2124
+ raise ValidationError.for(:sequence, 'sequence', text)
2289
2125
  end
2290
- # line 340 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2291
2126
  begin
2292
2127
  te = p+1
2293
- begin
2128
+ begin
2294
2129
  begin
2295
2130
  top -= 1
2296
2131
  cs = stack[top]
@@ -2300,29 +2135,25 @@ te = p+1
2300
2135
 
2301
2136
  end
2302
2137
  end
2303
- when 5 then
2304
- # line 148 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2138
+ when 4 then
2305
2139
  begin
2306
2140
  self.group_depth = group_depth - 1 end
2307
- # line 463 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2308
2141
  begin
2309
2142
  te = p+1
2310
- begin
2143
+ begin
2311
2144
  emit(:group, :comment, copy(data, ts, te))
2312
2145
  end
2313
2146
  end
2314
- when 38 then
2315
- # line 148 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2147
+ when 37 then
2316
2148
  begin
2317
2149
  self.group_depth = group_depth - 1 end
2318
- # line 532 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2319
2150
  begin
2320
2151
  te = p+1
2321
- begin
2152
+ begin
2322
2153
  if conditional_stack.last == group_depth + 1
2323
2154
  conditional_stack.pop
2324
2155
  emit(:conditional, :close, ')')
2325
- else
2156
+ elsif group_depth >= 0
2326
2157
  if spacing_stack.length > 1 &&
2327
2158
  spacing_stack.last[:depth] == group_depth + 1
2328
2159
  spacing_stack.pop
@@ -2330,36 +2161,34 @@ te = p+1
2330
2161
  end
2331
2162
 
2332
2163
  emit(:group, :close, ')')
2164
+ else
2165
+ raise ValidationError.for(:group, 'group', 'unmatched close parenthesis')
2333
2166
  end
2334
2167
  end
2335
2168
  end
2336
- when 40 then
2337
- # line 149 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2169
+ when 39 then
2338
2170
  begin
2339
2171
  self.set_depth = set_depth + 1 end
2340
- # line 438 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2341
2172
  begin
2342
2173
  te = p+1
2343
- begin
2174
+ begin
2344
2175
  emit(:set, :open, copy(data, ts, te))
2345
2176
  begin
2346
2177
  stack[top] = cs
2347
2178
  top+= 1
2348
- cs = 91
2179
+ cs = 89
2349
2180
  _goto_level = _again
2350
2181
  next
2351
2182
  end
2352
2183
 
2353
2184
  end
2354
2185
  end
2355
- when 70 then
2356
- # line 150 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2186
+ when 69 then
2357
2187
  begin
2358
2188
  self.set_depth = set_depth - 1 end
2359
- # line 156 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2360
2189
  begin
2361
2190
  te = p+1
2362
- begin
2191
+ begin
2363
2192
  emit(:set, :close, copy(data, ts, te))
2364
2193
  if in_set?
2365
2194
  begin
@@ -2371,7 +2200,7 @@ te = p+1
2371
2200
 
2372
2201
  else
2373
2202
  begin
2374
- cs = 73
2203
+ cs = 71
2375
2204
  _goto_level = _again
2376
2205
  next
2377
2206
  end
@@ -2379,11 +2208,9 @@ te = p+1
2379
2208
  end
2380
2209
  end
2381
2210
  end
2382
- when 75 then
2383
- # line 150 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2211
+ when 74 then
2384
2212
  begin
2385
2213
  self.set_depth = set_depth - 1 end
2386
- # line 165 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2387
2214
  begin
2388
2215
  te = p+1
2389
2216
  begin # special case, emits two tokens
@@ -2399,7 +2226,7 @@ te = p+1
2399
2226
 
2400
2227
  else
2401
2228
  begin
2402
- cs = 73
2229
+ cs = 71
2403
2230
  _goto_level = _again
2404
2231
  next
2405
2232
  end
@@ -2407,14 +2234,12 @@ te = p+1
2407
2234
  end
2408
2235
  end
2409
2236
  end
2410
- when 22 then
2411
- # line 150 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2237
+ when 21 then
2412
2238
  begin
2413
2239
  self.set_depth = set_depth - 1 end
2414
- # line 213 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2415
2240
  begin
2416
2241
  te = p+1
2417
- begin
2242
+ begin
2418
2243
  text = copy(data, ts, te)
2419
2244
 
2420
2245
  type = :posixclass
@@ -2425,85 +2250,62 @@ te = p+1
2425
2250
  end
2426
2251
 
2427
2252
  unless self.class.posix_classes.include?(class_name)
2428
- validation_error(:posix_class, text)
2253
+ raise ValidationError.for(:posix_class, text)
2429
2254
  end
2430
2255
 
2431
2256
  emit(type, class_name.to_sym, text)
2432
2257
  end
2433
2258
  end
2434
- when 68 then
2435
- # line 1 "NONE"
2259
+ when 67 then
2436
2260
  begin
2437
2261
  te = p+1
2438
2262
  end
2439
- # line 149 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2440
2263
  begin
2441
2264
  self.set_depth = set_depth + 1 end
2442
- when 84 then
2443
- # line 1 "NONE"
2265
+ when 83 then
2444
2266
  begin
2445
2267
  te = p+1
2446
2268
  end
2447
- # line 277 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2448
2269
  begin
2449
2270
  act = 17; end
2450
- when 83 then
2451
- # line 1 "NONE"
2271
+ when 82 then
2452
2272
  begin
2453
2273
  te = p+1
2454
2274
  end
2455
- # line 283 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2456
2275
  begin
2457
2276
  act = 18; end
2458
- when 8 then
2459
- # line 1 "NONE"
2277
+ when 49 then
2460
2278
  begin
2461
2279
  te = p+1
2462
2280
  end
2463
- # line 492 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2464
2281
  begin
2465
- act = 42; end
2466
- when 2 then
2467
- # line 1 "NONE"
2282
+ act = 41; end
2283
+ when 7 then
2468
2284
  begin
2469
2285
  te = p+1
2470
2286
  end
2471
- # line 645 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2472
2287
  begin
2473
- act = 56; end
2474
- when 50 then
2475
- # line 1 "NONE"
2288
+ act = 42; end
2289
+ when 2 then
2476
2290
  begin
2477
2291
  te = p+1
2478
2292
  end
2479
- # line 148 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2480
- begin
2481
- self.group_depth = group_depth - 1 end
2482
- # line 147 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2483
- begin
2484
- self.group_depth = group_depth + 1 end
2485
- # line 478 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2486
2293
  begin
2487
- act = 41; end
2488
- # line 2488 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner.rb"
2294
+ act = 56; end
2489
2295
  end
2490
2296
  end
2491
2297
  end
2492
2298
  if _goto_level <= _again
2493
- case _re_scanner_to_state_actions[cs]
2494
- when 65 then
2495
- # line 1 "NONE"
2299
+ case _re_scanner_to_state_actions[cs]
2300
+ when 64 then
2496
2301
  begin
2497
2302
  ts = nil; end
2498
- when 34 then
2499
- # line 1 "NONE"
2303
+ when 33 then
2500
2304
  begin
2501
2305
  ts = nil; end
2502
- # line 1 "NONE"
2503
2306
  begin
2504
2307
  act = 0
2505
2308
  end
2506
- # line 2506 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner.rb"
2507
2309
  end
2508
2310
 
2509
2311
  if cs == 0
@@ -2524,20 +2326,17 @@ act = 0
2524
2326
  next;
2525
2327
  end
2526
2328
  case _re_scanner_eof_actions[cs]
2527
- when 14 then
2528
- # line 8 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/property.rl"
2329
+ when 13 then
2529
2330
  begin
2530
2331
 
2531
2332
  raise PrematureEndError.new('unicode property')
2532
2333
  end
2533
- when 25 then
2534
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2334
+ when 24 then
2535
2335
  begin
2536
2336
 
2537
- text = copy(data, ts ? ts-1 : 0, -1)
2538
- raise PrematureEndError.new( text )
2337
+ text = copy(data, ts ? ts-1 : 0,-1)
2338
+ raise PrematureEndError.new(text)
2539
2339
  end
2540
- # line 2540 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner.rb"
2541
2340
  end
2542
2341
  end
2543
2342
 
@@ -2548,13 +2347,11 @@ act = 0
2548
2347
  end
2549
2348
  end
2550
2349
 
2551
- # line 751 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2552
-
2553
2350
  # to avoid "warning: assigned but unused variable - testEof"
2554
2351
  testEof = testEof
2555
2352
 
2556
2353
  if cs == re_scanner_error
2557
- text = copy(data, ts ? ts-1 : 0, -1)
2354
+ text = copy(data, ts ? ts-1 : 0,-1)
2558
2355
  raise ScannerError.new("Scan error at '#{text}'")
2559
2356
  end
2560
2357
 
@@ -2606,7 +2403,7 @@ end
2606
2403
 
2607
2404
  if block
2608
2405
  block.call type, token, text, ts_char_pos, te_char_pos
2609
- # TODO: in v3.0.0, remove `collect_tokens:` kwarg and only collect if no block given
2406
+ # TODO: in v3.0.0,remove `collect_tokens:` kwarg and only collect if no block given
2610
2407
  tokens << tok if collect_tokens
2611
2408
  elsif collect_tokens
2612
2409
  tokens << tok
@@ -2666,7 +2463,7 @@ end
2666
2463
 
2667
2464
  # Ruby allows things like '(?-xxxx)' or '(?xx-xx--xx-:abc)'.
2668
2465
  text =~ /\(\?([mixdau]*)(-(?:[mix]*))*(:)?/
2669
- positive, negative, group_local = $1, $2, $3
2466
+ positive, negative, group_local = $1,$2,$3
2670
2467
 
2671
2468
  if positive.include?('x')
2672
2469
  self.free_spacing = true
@@ -2692,24 +2489,8 @@ end
2692
2489
 
2693
2490
  def emit_meta_control_sequence(data, ts, te, token)
2694
2491
  if data.last < 0x00 || data.last > 0x7F
2695
- validation_error(:sequence, 'escape', token.to_s)
2492
+ raise ValidationError.for(:sequence, 'escape', token.to_s)
2696
2493
  end
2697
- emit(:escape, token, copy(data, ts-1, te))
2698
- end
2699
-
2700
- # Centralizes and unifies the handling of validation related
2701
- # errors.
2702
- def validation_error(type, what, reason = nil)
2703
- error =
2704
- case type
2705
- when :backref then InvalidBackrefError.new(what, reason)
2706
- when :group then InvalidGroupError.new(what, reason)
2707
- when :group_option then InvalidGroupOption.new(what, reason)
2708
- when :posix_class then UnknownPosixClassError.new(what)
2709
- when :property then UnknownUnicodePropertyError.new(what)
2710
- when :sequence then InvalidSequenceError.new(what, reason)
2711
- end
2712
-
2713
- raise error # unless @@config.validation_ignore
2494
+ emit(:escape, token, copy(data, ts-1,te))
2714
2495
  end
2715
2496
  end # module Regexp::Scanner