regexp_parser 2.7.0 → 2.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +55 -3
  3. data/Gemfile +2 -2
  4. data/README.md +32 -29
  5. data/lib/regexp_parser/expression/base.rb +0 -7
  6. data/lib/regexp_parser/expression/classes/alternation.rb +1 -1
  7. data/lib/regexp_parser/expression/classes/backreference.rb +4 -6
  8. data/lib/regexp_parser/expression/classes/character_set/range.rb +2 -7
  9. data/lib/regexp_parser/expression/classes/character_set.rb +3 -4
  10. data/lib/regexp_parser/expression/classes/conditional.rb +2 -14
  11. data/lib/regexp_parser/expression/classes/escape_sequence.rb +3 -1
  12. data/lib/regexp_parser/expression/classes/free_space.rb +3 -1
  13. data/lib/regexp_parser/expression/classes/group.rb +0 -22
  14. data/lib/regexp_parser/expression/classes/posix_class.rb +5 -1
  15. data/lib/regexp_parser/expression/classes/unicode_property.rb +5 -2
  16. data/lib/regexp_parser/expression/methods/construct.rb +2 -4
  17. data/lib/regexp_parser/expression/methods/parts.rb +23 -0
  18. data/lib/regexp_parser/expression/methods/printing.rb +26 -0
  19. data/lib/regexp_parser/expression/methods/tests.rb +40 -3
  20. data/lib/regexp_parser/expression/methods/traverse.rb +33 -20
  21. data/lib/regexp_parser/expression/quantifier.rb +30 -17
  22. data/lib/regexp_parser/expression/sequence.rb +5 -9
  23. data/lib/regexp_parser/expression/sequence_operation.rb +4 -9
  24. data/lib/regexp_parser/expression/shared.rb +37 -24
  25. data/lib/regexp_parser/expression/subexpression.rb +20 -18
  26. data/lib/regexp_parser/expression.rb +2 -0
  27. data/lib/regexp_parser/lexer.rb +15 -7
  28. data/lib/regexp_parser/parser.rb +85 -86
  29. data/lib/regexp_parser/scanner/errors/premature_end_error.rb +8 -0
  30. data/lib/regexp_parser/scanner/errors/scanner_error.rb +6 -0
  31. data/lib/regexp_parser/scanner/errors/validation_error.rb +63 -0
  32. data/lib/regexp_parser/scanner/mapping.rb +89 -0
  33. data/lib/regexp_parser/scanner/property.rl +1 -1
  34. data/lib/regexp_parser/scanner/scanner.rl +35 -129
  35. data/lib/regexp_parser/scanner.rb +1084 -1303
  36. data/lib/regexp_parser/syntax/token/backreference.rb +3 -0
  37. data/lib/regexp_parser/syntax/token/character_set.rb +3 -0
  38. data/lib/regexp_parser/syntax/token/escape.rb +3 -1
  39. data/lib/regexp_parser/syntax/token/meta.rb +9 -2
  40. data/lib/regexp_parser/syntax/token/unicode_property.rb +3 -0
  41. data/lib/regexp_parser/syntax/token/virtual.rb +11 -0
  42. data/lib/regexp_parser/version.rb +1 -1
  43. metadata +9 -2
@@ -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