regexp_parser 2.7.0 → 2.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -5
  3. data/LICENSE +1 -1
  4. data/lib/regexp_parser/expression/base.rb +0 -7
  5. data/lib/regexp_parser/expression/classes/alternation.rb +1 -1
  6. data/lib/regexp_parser/expression/classes/backreference.rb +4 -6
  7. data/lib/regexp_parser/expression/classes/character_set/range.rb +2 -7
  8. data/lib/regexp_parser/expression/classes/character_set.rb +4 -8
  9. data/lib/regexp_parser/expression/classes/conditional.rb +2 -14
  10. data/lib/regexp_parser/expression/classes/escape_sequence.rb +3 -1
  11. data/lib/regexp_parser/expression/classes/free_space.rb +3 -1
  12. data/lib/regexp_parser/expression/classes/group.rb +0 -22
  13. data/lib/regexp_parser/expression/classes/keep.rb +1 -1
  14. data/lib/regexp_parser/expression/classes/posix_class.rb +5 -5
  15. data/lib/regexp_parser/expression/classes/unicode_property.rb +11 -11
  16. data/lib/regexp_parser/expression/methods/construct.rb +2 -4
  17. data/lib/regexp_parser/expression/methods/negative.rb +20 -0
  18. data/lib/regexp_parser/expression/methods/parts.rb +23 -0
  19. data/lib/regexp_parser/expression/methods/printing.rb +26 -0
  20. data/lib/regexp_parser/expression/methods/tests.rb +40 -3
  21. data/lib/regexp_parser/expression/methods/traverse.rb +33 -20
  22. data/lib/regexp_parser/expression/quantifier.rb +30 -17
  23. data/lib/regexp_parser/expression/sequence.rb +5 -9
  24. data/lib/regexp_parser/expression/sequence_operation.rb +4 -9
  25. data/lib/regexp_parser/expression/shared.rb +37 -24
  26. data/lib/regexp_parser/expression/subexpression.rb +20 -18
  27. data/lib/regexp_parser/expression.rb +34 -31
  28. data/lib/regexp_parser/lexer.rb +15 -7
  29. data/lib/regexp_parser/parser.rb +91 -91
  30. data/lib/regexp_parser/scanner/errors/premature_end_error.rb +8 -0
  31. data/lib/regexp_parser/scanner/errors/scanner_error.rb +6 -0
  32. data/lib/regexp_parser/scanner/errors/validation_error.rb +63 -0
  33. data/lib/regexp_parser/scanner/properties/long.csv +29 -0
  34. data/lib/regexp_parser/scanner/properties/short.csv +3 -0
  35. data/lib/regexp_parser/scanner/property.rl +1 -1
  36. data/lib/regexp_parser/scanner/scanner.rl +44 -130
  37. data/lib/regexp_parser/scanner.rb +1096 -1297
  38. data/lib/regexp_parser/syntax/token/backreference.rb +3 -0
  39. data/lib/regexp_parser/syntax/token/character_set.rb +3 -0
  40. data/lib/regexp_parser/syntax/token/escape.rb +3 -1
  41. data/lib/regexp_parser/syntax/token/meta.rb +9 -2
  42. data/lib/regexp_parser/syntax/token/unicode_property.rb +35 -1
  43. data/lib/regexp_parser/syntax/token/virtual.rb +11 -0
  44. data/lib/regexp_parser/syntax/token.rb +13 -13
  45. data/lib/regexp_parser/syntax/versions.rb +1 -1
  46. data/lib/regexp_parser/syntax.rb +1 -1
  47. data/lib/regexp_parser/version.rb +1 -1
  48. data/lib/regexp_parser.rb +6 -6
  49. data/regexp_parser.gemspec +5 -5
  50. metadata +14 -8
  51. data/CHANGELOG.md +0 -632
  52. data/README.md +0 -503
@@ -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_relative 'scanner/errors/scanner_error'
10
+ require_relative 'scanner/errors/premature_end_error'
11
+ require_relative '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,48,57,77,77,
89
+ 45,45,0,0,67,
90
+ 99,45,45,0,0,
91
+ 92,92,48,102,39,60,
92
+ 39,57,48,57,41,
93
+ 57,33,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,10,1,1,0,33,1,0,
115
+ 1,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,4689,4691,4693,4694,4728,4730,
137
+ 4731,4733,4789,4812,4832,4843,4861
201
138
  ]
202
139
 
203
140
  class << self
@@ -205,617 +142,618 @@ 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,182,
730
+ 182,182,182,182,182,182,182,182,
731
+ 181,184,62,186,185,62,188,67,
732
+ 67,67,67,67,67,67,67,67,
733
+ 67,67,67,67,67,67,67,67,
734
+ 67,67,67,67,67,67,67,67,
735
+ 67,67,67,67,67,67,189,67,
736
+ 191,190,67,70,67,193,193,193,
737
+ 193,193,193,193,193,193,193,192,
738
+ 192,192,192,192,192,192,193,193,
739
+ 193,193,193,193,192,192,192,192,
740
+ 192,192,192,192,192,192,192,192,
741
+ 192,192,192,192,192,192,192,192,
742
+ 192,192,192,192,192,192,193,193,
743
+ 193,193,193,193,192,195,194,194,
744
+ 194,194,194,196,194,194,197,197,
745
+ 197,197,197,197,197,197,197,197,
746
+ 194,194,198,194,86,85,85,85,
747
+ 85,85,199,85,85,199,199,199,
748
+ 199,199,199,199,199,199,199,85,
749
+ 88,88,88,88,88,88,88,88,
750
+ 88,88,199,87,199,199,199,199,
751
+ 199,199,88,88,88,88,88,88,
752
+ 88,88,88,88,199,199,89,89,
753
+ 89,89,89,89,89,89,89,89,
754
+ 89,199,89,89,199,199,199,199,
755
+ 199,199,199,199,199,199,89,89,
756
+ 89,89,86,89,0
819
757
  ]
820
758
 
821
759
  class << self
@@ -823,31 +761,31 @@ class << self
823
761
  private :_re_scanner_trans_targs, :_re_scanner_trans_targs=
824
762
  end
825
763
  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
764
+ 71,72,1,2,71,4,71,6,
765
+ 71,8,71,81,71,10,16,11,
766
+ 71,12,13,14,15,17,18,19,
767
+ 20,21,23,29,24,71,25,26,
768
+ 27,28,30,31,32,33,34,71,
769
+ 36,71,37,39,0,40,41,88,
770
+ 89,89,42,89,89,89,45,46,
771
+ 89,89,99,99,47,50,99,106,
772
+ 99,108,53,99,109,99,111,56,
773
+ 59,57,58,99,60,61,62,63,
774
+ 64,65,99,113,114,67,68,114,
775
+ 69,70,3,73,74,75,76,77,
776
+ 71,78,71,82,83,71,84,71,
777
+ 85,71,71,86,71,71,71,71,
778
+ 71,71,79,71,80,5,71,7,
779
+ 71,71,71,71,71,71,71,71,
780
+ 71,71,71,9,22,71,35,87,
781
+ 38,90,91,92,89,93,94,95,
782
+ 89,89,89,89,43,89,89,44,
783
+ 89,89,89,96,97,96,96,98,
784
+ 96,100,101,102,99,103,103,105,
785
+ 49,99,52,99,99,55,66,99,
786
+ 48,99,104,99,99,99,99,99,
787
+ 107,99,51,99,110,112,99,54,
788
+ 99,99,114,115,116,117,118,114
851
789
  ]
852
790
 
853
791
  class << self
@@ -855,31 +793,31 @@ class << self
855
793
  private :_re_scanner_trans_actions, :_re_scanner_trans_actions=
856
794
  end
857
795
  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
796
+ 1,2,0,0,3,0,4,0,
797
+ 5,0,6,7,8,0,0,0,
798
+ 9,0,0,0,0,0,0,0,
799
+ 0,0,0,0,0,10,0,0,
800
+ 0,0,0,0,0,0,0,11,
801
+ 0,12,0,0,0,0,0,14,
802
+ 15,16,0,17,18,19,0,0,
803
+ 20,21,22,23,0,0,25,0,
804
+ 26,0,0,27,0,28,0,0,
805
+ 0,0,0,29,0,0,0,0,
806
+ 0,0,30,0,31,0,0,32,
807
+ 0,0,0,0,0,0,0,0,
808
+ 35,36,37,0,0,38,0,39,
809
+ 40,41,42,40,43,44,45,46,
810
+ 47,48,49,50,0,0,51,0,
811
+ 52,53,54,55,56,57,58,59,
812
+ 60,61,62,0,0,63,0,65,
813
+ 0,0,40,40,66,0,40,67,
814
+ 68,69,70,71,0,72,73,0,
815
+ 74,75,76,77,0,78,79,0,
816
+ 80,0,40,40,81,82,83,0,
817
+ 0,84,0,85,86,0,0,87,
818
+ 0,88,0,89,90,91,92,93,
819
+ 40,94,0,95,40,0,96,0,
820
+ 97,98,99,40,40,40,40,100
883
821
  ]
884
822
 
885
823
  class << self
@@ -887,21 +825,21 @@ class << self
887
825
  private :_re_scanner_to_state_actions, :_re_scanner_to_state_actions=
888
826
  end
889
827
  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
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,0,
836
+ 0,0,0,0,0,0,0,33,
837
+ 0,0,0,0,0,0,0,0,
838
+ 0,0,0,0,0,0,0,64,
839
+ 64,64,0,0,0,0,0,0,
840
+ 64,0,0,64,0,0,0,0,
841
+ 0,0,0,0,0,0,0,0,
842
+ 0,0,64,0,0,0,0
905
843
  ]
906
844
 
907
845
  class << self
@@ -909,21 +847,21 @@ class << self
909
847
  private :_re_scanner_from_state_actions, :_re_scanner_from_state_actions=
910
848
  end
911
849
  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
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,0,
858
+ 0,0,0,0,0,0,0,34,
859
+ 0,0,0,0,0,0,0,0,
860
+ 0,0,0,0,0,0,0,34,
861
+ 34,34,0,0,0,0,0,0,
862
+ 34,0,0,34,0,0,0,0,
863
+ 0,0,0,0,0,0,0,0,
864
+ 0,0,34,0,0,0,0
927
865
  ]
928
866
 
929
867
  class << self
@@ -931,21 +869,21 @@ class << self
931
869
  private :_re_scanner_eof_actions, :_re_scanner_eof_actions=
932
870
  end
933
871
  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
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,0,0,
876
+ 0,0,0,0,0,0,13,13,
877
+ 13,13,0,0,0,0,0,0,
878
+ 0,24,24,0,24,24,0,24,
879
+ 24,24,24,24,24,24,24,24,
880
+ 24,24,24,0,0,0,0,0,
881
+ 0,0,0,0,0,0,0,0,
882
+ 0,0,0,0,0,0,0,0,
883
+ 0,24,0,0,0,0,0,0,
884
+ 0,0,0,24,0,0,0,0,
885
+ 0,0,0,0,0,0,0,0,
886
+ 0,0,0,0,0,0,0
949
887
  ]
950
888
 
951
889
  class << self
@@ -953,31 +891,31 @@ class << self
953
891
  private :_re_scanner_eof_trans, :_re_scanner_eof_trans=
954
892
  end
955
893
  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
894
+ 0,1,1,1,5,5,5,5,
895
+ 1,13,13,13,13,13,13,13,
896
+ 13,13,13,13,13,13,13,13,
897
+ 13,13,13,13,13,13,13,13,
898
+ 13,13,13,40,40,40,0,0,
899
+ 0,0,49,49,52,54,54,59,
900
+ 59,0,0,65,0,0,70,0,
901
+ 0,0,0,0,0,0,0,0,
902
+ 0,0,0,85,85,85,85,0,
903
+ 110,110,111,111,110,112,114,116,
904
+ 116,122,123,125,127,129,134,0,
905
+ 0,0,148,148,148,148,151,154,
906
+ 0,159,159,0,176,176,176,178,
907
+ 180,182,184,184,184,188,188,188,
908
+ 188,193,0,200,200,200,200
971
909
  ]
972
910
 
973
911
  class << self
974
912
  attr_accessor :re_scanner_start
975
913
  end
976
- self.re_scanner_start = 73;
914
+ self.re_scanner_start = 71;
977
915
  class << self
978
916
  attr_accessor :re_scanner_first_final
979
917
  end
980
- self.re_scanner_first_final = 73;
918
+ self.re_scanner_first_final = 71;
981
919
  class << self
982
920
  attr_accessor :re_scanner_error
983
921
  end
@@ -986,36 +924,32 @@ self.re_scanner_error = 0;
986
924
  class << self
987
925
  attr_accessor :re_scanner_en_char_type
988
926
  end
989
- self.re_scanner_en_char_type = 89;
927
+ self.re_scanner_en_char_type = 87;
990
928
  class << self
991
929
  attr_accessor :re_scanner_en_unicode_property
992
930
  end
993
- self.re_scanner_en_unicode_property = 90;
931
+ self.re_scanner_en_unicode_property = 88;
994
932
  class << self
995
933
  attr_accessor :re_scanner_en_character_set
996
934
  end
997
- self.re_scanner_en_character_set = 91;
935
+ self.re_scanner_en_character_set = 89;
998
936
  class << self
999
937
  attr_accessor :re_scanner_en_set_escape_sequence
1000
938
  end
1001
- self.re_scanner_en_set_escape_sequence = 98;
939
+ self.re_scanner_en_set_escape_sequence = 96;
1002
940
  class << self
1003
941
  attr_accessor :re_scanner_en_escape_sequence
1004
942
  end
1005
- self.re_scanner_en_escape_sequence = 101;
943
+ self.re_scanner_en_escape_sequence = 99;
1006
944
  class << self
1007
945
  attr_accessor :re_scanner_en_conditional_expression
1008
946
  end
1009
- self.re_scanner_en_conditional_expression = 115;
947
+ self.re_scanner_en_conditional_expression = 114;
1010
948
  class << self
1011
949
  attr_accessor :re_scanner_en_main
1012
950
  end
1013
- self.re_scanner_en_main = 73;
951
+ self.re_scanner_en_main = 71;
1014
952
 
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
953
  begin
1020
954
  p ||= 0
1021
955
  pe ||= data.length
@@ -1026,9 +960,6 @@ begin
1026
960
  act = 0
1027
961
  end
1028
962
 
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
963
  begin
1033
964
  testEof = false
1034
965
  _slen, _trans, _keys, _inds, _acts, _nacts = nil
@@ -1050,24 +981,22 @@ begin
1050
981
  end
1051
982
  end
1052
983
  if _goto_level <= _resume
1053
- case _re_scanner_from_state_actions[cs]
1054
- when 35 then
1055
- # line 1 "NONE"
984
+ case _re_scanner_from_state_actions[cs]
985
+ when 34 then
1056
986
  begin
1057
987
  ts = p
1058
988
  end
1059
- # line 1059 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner.rb"
1060
989
  end
1061
990
  _keys = cs << 1
1062
991
  _inds = _re_scanner_index_offsets[cs]
1063
992
  _slen = _re_scanner_key_spans[cs]
1064
993
  _wide = data[p].ord
1065
- _trans = if ( _slen > 0 &&
1066
- _re_scanner_trans_keys[_keys] <= _wide &&
1067
- _wide <= _re_scanner_trans_keys[_keys + 1]
994
+ _trans = if ( _slen > 0 &&
995
+ _re_scanner_trans_keys[_keys] <= _wide &&
996
+ _wide <= _re_scanner_trans_keys[_keys + 1]
1068
997
  ) then
1069
- _re_scanner_indicies[ _inds + _wide - _re_scanner_trans_keys[_keys] ]
1070
- else
998
+ _re_scanner_indicies[ _inds + _wide - _re_scanner_trans_keys[_keys] ]
999
+ else
1071
1000
  _re_scanner_indicies[ _inds + _slen ]
1072
1001
  end
1073
1002
  end
@@ -1075,25 +1004,18 @@ ts = p
1075
1004
  cs = _re_scanner_trans_targs[_trans]
1076
1005
  if _re_scanner_trans_actions[_trans] != 0
1077
1006
  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"
1007
+ when 36 then
1080
1008
  begin
1081
1009
  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"
1010
+ when 40 then
1088
1011
  begin
1089
1012
  te = p+1
1090
1013
  end
1091
- when 66 then
1092
- # line 12 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/char_type.rl"
1014
+ when 65 then
1093
1015
  begin
1094
1016
  te = p+1
1095
- begin
1096
- case text = copy(data, ts-1, te)
1017
+ begin
1018
+ case text = copy(data, ts-1,te)
1097
1019
  when '\d'; emit(:type, :digit, text)
1098
1020
  when '\D'; emit(:type, :nondigit, text)
1099
1021
  when '\h'; emit(:type, :hex, text)
@@ -1114,18 +1036,17 @@ te = p+1
1114
1036
 
1115
1037
  end
1116
1038
  end
1117
- when 15 then
1118
- # line 16 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/property.rl"
1039
+ when 14 then
1119
1040
  begin
1120
1041
  te = p+1
1121
- begin
1122
- text = copy(data, ts-1, te)
1042
+ begin
1043
+ text = copy(data, ts-1,te)
1123
1044
  type = (text[1] == 'P') ^ (text[3] == '^') ? :nonproperty : :property
1124
1045
 
1125
1046
  name = text[3..-2].gsub(/[\^\s_\-]/, '').downcase
1126
1047
 
1127
1048
  token = self.class.short_prop_map[name] || self.class.long_prop_map[name]
1128
- validation_error(:property, name) unless token
1049
+ raise ValidationError.for(:property, name) unless token
1129
1050
 
1130
1051
  self.emit(type, token.to_sym, text)
1131
1052
 
@@ -1138,8 +1059,7 @@ te = p+1
1138
1059
 
1139
1060
  end
1140
1061
  end
1141
- when 19 then
1142
- # line 175 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1062
+ when 18 then
1143
1063
  begin
1144
1064
  te = p+1
1145
1065
  begin # special case, emits two tokens
@@ -1147,11 +1067,10 @@ te = p+1
1147
1067
  emit(:set, :intersection, '&&')
1148
1068
  end
1149
1069
  end
1150
- when 71 then
1151
- # line 180 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1070
+ when 70 then
1152
1071
  begin
1153
1072
  te = p+1
1154
- begin
1073
+ begin
1155
1074
  if prev_token[1] == :open
1156
1075
  emit(:set, :negate, '^')
1157
1076
  else
@@ -1159,51 +1078,46 @@ te = p+1
1159
1078
  end
1160
1079
  end
1161
1080
  end
1162
- when 73 then
1163
- # line 200 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1081
+ when 72 then
1164
1082
  begin
1165
1083
  te = p+1
1166
- begin
1084
+ begin
1167
1085
  emit(:set, :intersection, '&&')
1168
1086
  end
1169
1087
  end
1170
- when 69 then
1171
- # line 204 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1088
+ when 68 then
1172
1089
  begin
1173
1090
  te = p+1
1174
- begin
1091
+ begin
1175
1092
  begin
1176
1093
  stack[top] = cs
1177
1094
  top+= 1
1178
- cs = 98
1095
+ cs = 96
1179
1096
  _goto_level = _again
1180
1097
  next
1181
1098
  end
1182
1099
 
1183
1100
  end
1184
1101
  end
1185
- when 67 then
1186
- # line 238 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1102
+ when 66 then
1187
1103
  begin
1188
1104
  te = p+1
1189
- begin
1105
+ begin
1190
1106
  emit(:literal, :literal, copy(data, ts, te))
1191
1107
  end
1192
1108
  end
1193
- when 17 then
1194
- # line 242 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1109
+ when 16 then
1195
1110
  begin
1196
1111
  te = p+1
1197
- begin
1112
+ begin
1198
1113
  text = copy(data, ts, te)
1199
1114
  emit(:literal, :literal, text)
1200
1115
  end
1201
1116
  end
1202
- when 74 then
1203
- # line 188 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1117
+ when 73 then
1204
1118
  begin
1205
1119
  te = p
1206
- p = p - 1; begin
1120
+ p = p - 1; begin
1207
1121
  # ranges cant start with the opening bracket, a subset, or
1208
1122
  # intersection/negation/range operators
1209
1123
  if prev_token[0] == :set
@@ -1213,36 +1127,33 @@ p = p - 1; begin
1213
1127
  end
1214
1128
  end
1215
1129
  end
1216
- when 77 then
1217
- # line 208 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1130
+ when 76 then
1218
1131
  begin
1219
1132
  te = p
1220
- p = p - 1; begin
1133
+ p = p - 1; begin
1221
1134
  emit(:set, :open, '[')
1222
1135
  begin
1223
1136
  stack[top] = cs
1224
1137
  top+= 1
1225
- cs = 91
1138
+ cs = 89
1226
1139
  _goto_level = _again
1227
1140
  next
1228
1141
  end
1229
1142
 
1230
1143
  end
1231
1144
  end
1232
- when 72 then
1233
- # line 242 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1145
+ when 71 then
1234
1146
  begin
1235
1147
  te = p
1236
- p = p - 1; begin
1148
+ p = p - 1; begin
1237
1149
  text = copy(data, ts, te)
1238
1150
  emit(:literal, :literal, text)
1239
1151
  end
1240
1152
  end
1241
- when 18 then
1242
- # line 188 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1153
+ when 17 then
1243
1154
  begin
1244
1155
  begin p = ((te))-1; end
1245
- begin
1156
+ begin
1246
1157
  # ranges cant start with the opening bracket, a subset, or
1247
1158
  # intersection/negation/range operators
1248
1159
  if prev_token[0] == :set
@@ -1252,37 +1163,34 @@ p = p - 1; begin
1252
1163
  end
1253
1164
  end
1254
1165
  end
1255
- when 21 then
1256
- # line 208 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1166
+ when 20 then
1257
1167
  begin
1258
1168
  begin p = ((te))-1; end
1259
- begin
1169
+ begin
1260
1170
  emit(:set, :open, '[')
1261
1171
  begin
1262
1172
  stack[top] = cs
1263
1173
  top+= 1
1264
- cs = 91
1174
+ cs = 89
1265
1175
  _goto_level = _again
1266
1176
  next
1267
1177
  end
1268
1178
 
1269
1179
  end
1270
1180
  end
1271
- when 16 then
1272
- # line 242 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1181
+ when 15 then
1273
1182
  begin
1274
1183
  begin p = ((te))-1; end
1275
- begin
1184
+ begin
1276
1185
  text = copy(data, ts, te)
1277
1186
  emit(:literal, :literal, text)
1278
1187
  end
1279
1188
  end
1280
- when 81 then
1281
- # line 252 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1189
+ when 80 then
1282
1190
  begin
1283
1191
  te = p+1
1284
- begin
1285
- emit(:escape, :octal, copy(data, ts-1, te))
1192
+ begin
1193
+ emit(:escape, :octal, copy(data, ts-1,te))
1286
1194
  begin
1287
1195
  top -= 1
1288
1196
  cs = stack[top]
@@ -1292,29 +1200,27 @@ te = p+1
1292
1200
 
1293
1201
  end
1294
1202
  end
1295
- when 79 then
1296
- # line 258 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1203
+ when 78 then
1297
1204
  begin
1298
1205
  te = p+1
1299
- begin
1206
+ begin
1300
1207
  p = p - 1;
1301
- cs = 91;
1208
+ cs = 89;
1302
1209
  begin
1303
1210
  stack[top] = cs
1304
1211
  top+= 1
1305
- cs = 101
1212
+ cs = 99
1306
1213
  _goto_level = _again
1307
1214
  next
1308
1215
  end
1309
1216
 
1310
1217
  end
1311
1218
  end
1312
- when 78 then
1313
- # line 267 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1219
+ when 77 then
1314
1220
  begin
1315
1221
  te = p+1
1316
- begin
1317
- emit(:escape, :literal, copy(data, ts-1, te))
1222
+ begin
1223
+ emit(:escape, :literal, copy(data, ts-1,te))
1318
1224
  begin
1319
1225
  top -= 1
1320
1226
  cs = stack[top]
@@ -1324,12 +1230,11 @@ te = p+1
1324
1230
 
1325
1231
  end
1326
1232
  end
1327
- when 80 then
1328
- # line 252 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1233
+ when 79 then
1329
1234
  begin
1330
1235
  te = p
1331
- p = p - 1; begin
1332
- emit(:escape, :octal, copy(data, ts-1, te))
1236
+ p = p - 1; begin
1237
+ emit(:escape, :octal, copy(data, ts-1,te))
1333
1238
  begin
1334
1239
  top -= 1
1335
1240
  cs = stack[top]
@@ -1339,13 +1244,11 @@ p = p - 1; begin
1339
1244
 
1340
1245
  end
1341
1246
  end
1342
- when 85 then
1343
- # line 277 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1247
+ when 90 then
1344
1248
  begin
1345
1249
  te = p+1
1346
- begin
1347
- text = copy(data, ts-1, te)
1348
- emit(:backref, :number, text)
1250
+ begin
1251
+ emit(:escape, :octal, copy(data, ts-1,te))
1349
1252
  begin
1350
1253
  top -= 1
1351
1254
  cs = stack[top]
@@ -1356,11 +1259,12 @@ te = p+1
1356
1259
  end
1357
1260
  end
1358
1261
  when 92 then
1359
- # line 283 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1360
1262
  begin
1361
1263
  te = p+1
1362
- begin
1363
- emit(:escape, :octal, copy(data, ts-1, te))
1264
+ begin # special case, emits two tokens
1265
+ text = copy(data, ts-1,te)
1266
+ emit(:escape, :literal, text[0,2])
1267
+ emit(:literal, :literal, text[2])
1364
1268
  begin
1365
1269
  top -= 1
1366
1270
  cs = stack[top]
@@ -1370,12 +1274,11 @@ te = p+1
1370
1274
 
1371
1275
  end
1372
1276
  end
1373
- when 82 then
1374
- # line 288 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1277
+ when 81 then
1375
1278
  begin
1376
1279
  te = p+1
1377
- begin
1378
- case text = copy(data, ts-1, te)
1280
+ begin
1281
+ case text = copy(data, ts-1,te)
1379
1282
  when '\.'; emit(:escape, :dot, text)
1380
1283
  when '\|'; emit(:escape, :alternation, text)
1381
1284
  when '\^'; emit(:escape, :bol, text)
@@ -1401,14 +1304,13 @@ te = p+1
1401
1304
 
1402
1305
  end
1403
1306
  end
1404
- when 88 then
1405
- # line 309 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1307
+ when 86 then
1406
1308
  begin
1407
1309
  te = p+1
1408
- begin
1310
+ begin
1409
1311
  # \b is emitted as backspace only when inside a character set, otherwise
1410
1312
  # it is a word boundary anchor. A syntax might "normalize" it if needed.
1411
- case text = copy(data, ts-1, te)
1313
+ case text = copy(data, ts-1,te)
1412
1314
  when '\a'; emit(:escape, :bell, text)
1413
1315
  when '\b'; emit(:escape, :backspace, text)
1414
1316
  when '\e'; emit(:escape, :escape, text)
@@ -1427,12 +1329,11 @@ te = p+1
1427
1329
 
1428
1330
  end
1429
1331
  end
1430
- when 30 then
1431
- # line 325 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1332
+ when 29 then
1432
1333
  begin
1433
1334
  te = p+1
1434
- begin
1435
- text = copy(data, ts-1, te)
1335
+ begin
1336
+ text = copy(data, ts-1,te)
1436
1337
  if text[2] == '{'
1437
1338
  emit(:escape, :codepoint_list, text)
1438
1339
  else
@@ -1448,11 +1349,10 @@ te = p+1
1448
1349
  end
1449
1350
  end
1450
1351
  when 98 then
1451
- # line 335 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1452
1352
  begin
1453
1353
  te = p+1
1454
- begin
1455
- emit(:escape, :hex, copy(data, ts-1, te))
1354
+ begin
1355
+ emit(:escape, :hex, copy(data, ts-1,te))
1456
1356
  begin
1457
1357
  top -= 1
1458
1358
  cs = stack[top]
@@ -1462,11 +1362,10 @@ te = p+1
1462
1362
 
1463
1363
  end
1464
1364
  end
1465
- when 26 then
1466
- # line 344 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1365
+ when 25 then
1467
1366
  begin
1468
1367
  te = p+1
1469
- begin
1368
+ begin
1470
1369
  emit_meta_control_sequence(data, ts, te, :control)
1471
1370
  begin
1472
1371
  top -= 1
@@ -1477,11 +1376,10 @@ te = p+1
1477
1376
 
1478
1377
  end
1479
1378
  end
1480
- when 28 then
1481
- # line 349 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1379
+ when 27 then
1482
1380
  begin
1483
1381
  te = p+1
1484
- begin
1382
+ begin
1485
1383
  emit_meta_control_sequence(data, ts, te, :meta_sequence)
1486
1384
  begin
1487
1385
  top -= 1
@@ -1492,46 +1390,43 @@ te = p+1
1492
1390
 
1493
1391
  end
1494
1392
  end
1495
- when 86 then
1496
- # line 354 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1393
+ when 84 then
1497
1394
  begin
1498
1395
  te = p+1
1499
- begin
1396
+ begin
1500
1397
  p = p - 1;
1501
- cs = ((in_set? ? 91 : 73));
1398
+ cs = ((in_set? ? 89 : 71));
1502
1399
  begin
1503
1400
  stack[top] = cs
1504
1401
  top+= 1
1505
- cs = 89
1402
+ cs = 87
1506
1403
  _goto_level = _again
1507
1404
  next
1508
1405
  end
1509
1406
 
1510
1407
  end
1511
1408
  end
1512
- when 87 then
1513
- # line 360 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1409
+ when 85 then
1514
1410
  begin
1515
1411
  te = p+1
1516
- begin
1412
+ begin
1517
1413
  p = p - 1;
1518
- cs = ((in_set? ? 91 : 73));
1414
+ cs = ((in_set? ? 89 : 71));
1519
1415
  begin
1520
1416
  stack[top] = cs
1521
1417
  top+= 1
1522
- cs = 90
1418
+ cs = 88
1523
1419
  _goto_level = _again
1524
1420
  next
1525
1421
  end
1526
1422
 
1527
1423
  end
1528
1424
  end
1529
- when 24 then
1530
- # line 366 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1425
+ when 23 then
1531
1426
  begin
1532
1427
  te = p+1
1533
- begin
1534
- emit(:escape, :literal, copy(data, ts-1, te))
1428
+ begin
1429
+ emit(:escape, :literal, copy(data, ts-1,te))
1535
1430
  begin
1536
1431
  top -= 1
1537
1432
  cs = stack[top]
@@ -1542,11 +1437,25 @@ te = p+1
1542
1437
  end
1543
1438
  end
1544
1439
  when 91 then
1545
- # line 283 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1546
1440
  begin
1547
1441
  te = p
1548
- p = p - 1; begin
1549
- emit(:escape, :octal, copy(data, ts-1, te))
1442
+ p = p - 1; begin
1443
+ text = copy(data, ts-1,te)
1444
+ emit(:backref, :number, text)
1445
+ begin
1446
+ top -= 1
1447
+ cs = stack[top]
1448
+ _goto_level = _again
1449
+ next
1450
+ end
1451
+
1452
+ end
1453
+ end
1454
+ when 89 then
1455
+ begin
1456
+ te = p
1457
+ p = p - 1; begin
1458
+ emit(:escape, :octal, copy(data, ts-1,te))
1550
1459
  begin
1551
1460
  top -= 1
1552
1461
  cs = stack[top]
@@ -1557,11 +1466,10 @@ p = p - 1; begin
1557
1466
  end
1558
1467
  end
1559
1468
  when 97 then
1560
- # line 335 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1561
1469
  begin
1562
1470
  te = p
1563
- p = p - 1; begin
1564
- emit(:escape, :hex, copy(data, ts-1, te))
1471
+ p = p - 1; begin
1472
+ emit(:escape, :hex, copy(data, ts-1,te))
1565
1473
  begin
1566
1474
  top -= 1
1567
1475
  cs = stack[top]
@@ -1572,10 +1480,9 @@ p = p - 1; begin
1572
1480
  end
1573
1481
  end
1574
1482
  when 94 then
1575
- # line 344 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1576
1483
  begin
1577
1484
  te = p
1578
- p = p - 1; begin
1485
+ p = p - 1; begin
1579
1486
  emit_meta_control_sequence(data, ts, te, :control)
1580
1487
  begin
1581
1488
  top -= 1
@@ -1587,10 +1494,9 @@ p = p - 1; begin
1587
1494
  end
1588
1495
  end
1589
1496
  when 96 then
1590
- # line 349 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1591
1497
  begin
1592
1498
  te = p
1593
- p = p - 1; begin
1499
+ p = p - 1; begin
1594
1500
  emit_meta_control_sequence(data, ts, te, :meta_sequence)
1595
1501
  begin
1596
1502
  top -= 1
@@ -1601,12 +1507,11 @@ p = p - 1; begin
1601
1507
 
1602
1508
  end
1603
1509
  end
1604
- when 89 then
1605
- # line 366 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1510
+ when 87 then
1606
1511
  begin
1607
1512
  te = p
1608
- p = p - 1; begin
1609
- emit(:escape, :literal, copy(data, ts-1, te))
1513
+ p = p - 1; begin
1514
+ emit(:escape, :literal, copy(data, ts-1,te))
1610
1515
  begin
1611
1516
  top -= 1
1612
1517
  cs = stack[top]
@@ -1616,12 +1521,11 @@ p = p - 1; begin
1616
1521
 
1617
1522
  end
1618
1523
  end
1619
- when 23 then
1620
- # line 366 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1524
+ when 22 then
1621
1525
  begin
1622
1526
  begin p = ((te))-1; end
1623
- begin
1624
- emit(:escape, :literal, copy(data, ts-1, te))
1527
+ begin
1528
+ emit(:escape, :literal, copy(data, ts-1,te))
1625
1529
  begin
1626
1530
  top -= 1
1627
1531
  cs = stack[top]
@@ -1631,14 +1535,13 @@ p = p - 1; begin
1631
1535
 
1632
1536
  end
1633
1537
  end
1634
- when 90 then
1635
- # line 1 "NONE"
1538
+ when 88 then
1636
1539
  begin
1637
1540
  case act
1638
1541
  when 17 then
1639
1542
  begin begin p = ((te))-1; end
1640
1543
 
1641
- text = copy(data, ts-1, te)
1544
+ text = copy(data, ts-1,te)
1642
1545
  emit(:backref, :number, text)
1643
1546
  begin
1644
1547
  top -= 1
@@ -1651,7 +1554,7 @@ p = p - 1; begin
1651
1554
  when 18 then
1652
1555
  begin begin p = ((te))-1; end
1653
1556
 
1654
- emit(:escape, :octal, copy(data, ts-1, te))
1557
+ emit(:escape, :octal, copy(data, ts-1,te))
1655
1558
  begin
1656
1559
  top -= 1
1657
1560
  cs = stack[top]
@@ -1660,28 +1563,27 @@ p = p - 1; begin
1660
1563
  end
1661
1564
 
1662
1565
  end
1663
- end
1566
+ end
1664
1567
  end
1665
- when 33 then
1666
- # line 376 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1568
+ when 32 then
1667
1569
  begin
1668
1570
  te = p+1
1669
- begin
1571
+ begin
1670
1572
  text = copy(data, ts, te-1)
1573
+ text =~ /[^0]/ or raise ValidationError.for(:backref, 'condition', 'invalid ref ID')
1671
1574
  emit(:conditional, :condition, text)
1672
1575
  emit(:conditional, :condition_close, ')')
1673
1576
  end
1674
1577
  end
1675
1578
  when 99 then
1676
- # line 382 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1677
1579
  begin
1678
1580
  te = p+1
1679
- begin
1581
+ begin
1680
1582
  p = p - 1;
1681
1583
  begin
1682
1584
  stack[top] = cs
1683
1585
  top+= 1
1684
- cs = 73
1586
+ cs = 71
1685
1587
  _goto_level = _again
1686
1588
  next
1687
1589
  end
@@ -1689,50 +1591,46 @@ te = p+1
1689
1591
  end
1690
1592
  end
1691
1593
  when 100 then
1692
- # line 382 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1693
1594
  begin
1694
1595
  te = p
1695
- p = p - 1; begin
1596
+ p = p - 1; begin
1696
1597
  p = p - 1;
1697
1598
  begin
1698
1599
  stack[top] = cs
1699
1600
  top+= 1
1700
- cs = 73
1601
+ cs = 71
1701
1602
  _goto_level = _again
1702
1603
  next
1703
1604
  end
1704
1605
 
1705
1606
  end
1706
1607
  end
1707
- when 32 then
1708
- # line 382 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1608
+ when 31 then
1709
1609
  begin
1710
1610
  begin p = ((te))-1; end
1711
- begin
1611
+ begin
1712
1612
  p = p - 1;
1713
1613
  begin
1714
1614
  stack[top] = cs
1715
1615
  top+= 1
1716
- cs = 73
1616
+ cs = 71
1717
1617
  _goto_level = _again
1718
1618
  next
1719
1619
  end
1720
1620
 
1721
1621
  end
1722
1622
  end
1723
- when 39 then
1724
- # line 395 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1623
+ when 38 then
1725
1624
  begin
1726
1625
  te = p+1
1727
- begin
1626
+ begin
1728
1627
  emit(:meta, :dot, copy(data, ts, te))
1729
1628
  end
1730
1629
  end
1731
- when 44 then
1732
- # line 399 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1630
+ when 43 then
1733
1631
  begin
1734
1632
  te = p+1
1735
- begin
1633
+ begin
1736
1634
  if conditional_stack.last == group_depth
1737
1635
  emit(:conditional, :separator, copy(data, ts, te))
1738
1636
  else
@@ -1740,35 +1638,31 @@ te = p+1
1740
1638
  end
1741
1639
  end
1742
1640
  end
1743
- when 43 then
1744
- # line 409 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1641
+ when 42 then
1745
1642
  begin
1746
1643
  te = p+1
1747
- begin
1644
+ begin
1748
1645
  emit(:anchor, :bol, copy(data, ts, te))
1749
1646
  end
1750
1647
  end
1751
- when 36 then
1752
- # line 413 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1648
+ when 35 then
1753
1649
  begin
1754
1650
  te = p+1
1755
- begin
1651
+ begin
1756
1652
  emit(:anchor, :eol, copy(data, ts, te))
1757
1653
  end
1758
1654
  end
1759
- when 63 then
1760
- # line 417 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1655
+ when 62 then
1761
1656
  begin
1762
1657
  te = p+1
1763
- begin
1658
+ begin
1764
1659
  emit(:keep, :mark, copy(data, ts, te))
1765
1660
  end
1766
1661
  end
1767
- when 62 then
1768
- # line 421 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1662
+ when 61 then
1769
1663
  begin
1770
1664
  te = p+1
1771
- begin
1665
+ begin
1772
1666
  case text = copy(data, ts, te)
1773
1667
  when '\A'; emit(:anchor, :bos, text)
1774
1668
  when '\z'; emit(:anchor, :eos, text)
@@ -1779,19 +1673,17 @@ te = p+1
1779
1673
  end
1780
1674
  end
1781
1675
  end
1782
- when 42 then
1783
- # line 432 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1676
+ when 41 then
1784
1677
  begin
1785
1678
  te = p+1
1786
- begin
1679
+ begin
1787
1680
  append_literal(data, ts, te)
1788
1681
  end
1789
1682
  end
1790
- when 52 then
1791
- # line 447 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1683
+ when 51 then
1792
1684
  begin
1793
1685
  te = p+1
1794
- begin
1686
+ begin
1795
1687
  text = copy(data, ts, te)
1796
1688
 
1797
1689
  conditional_stack << group_depth
@@ -1801,30 +1693,28 @@ te = p+1
1801
1693
  begin
1802
1694
  stack[top] = cs
1803
1695
  top+= 1
1804
- cs = 115
1696
+ cs = 114
1805
1697
  _goto_level = _again
1806
1698
  next
1807
1699
  end
1808
1700
 
1809
1701
  end
1810
1702
  end
1811
- when 53 then
1812
- # line 478 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1703
+ when 52 then
1813
1704
  begin
1814
1705
  te = p+1
1815
- begin
1706
+ begin
1816
1707
  text = copy(data, ts, te)
1817
1708
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
1818
- validation_error(:group_option, $1 || "-#{$2}", text)
1709
+ raise ValidationError.for(:group_option, $1 || "-#{$2}", text)
1819
1710
  end
1820
1711
  emit_options(text)
1821
1712
  end
1822
1713
  end
1823
- when 7 then
1824
- # line 492 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1714
+ when 6 then
1825
1715
  begin
1826
1716
  te = p+1
1827
- begin
1717
+ begin
1828
1718
  case text = copy(data, ts, te)
1829
1719
  when '(?='; emit(:assertion, :lookahead, text)
1830
1720
  when '(?!'; emit(:assertion, :nlookahead, text)
@@ -1833,18 +1723,17 @@ te = p+1
1833
1723
  end
1834
1724
  end
1835
1725
  end
1836
- when 6 then
1837
- # line 509 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1726
+ when 5 then
1838
1727
  begin
1839
1728
  te = p+1
1840
- begin
1729
+ begin
1841
1730
  case text = copy(data, ts, te)
1842
1731
  when '(?:'; emit(:group, :passive, text)
1843
1732
  when '(?>'; emit(:group, :atomic, text)
1844
1733
  when '(?~'; emit(:group, :absence, text)
1845
1734
 
1846
1735
  when /^\(\?(?:<>|'')/
1847
- validation_error(:group, 'named group', 'name is empty')
1736
+ raise ValidationError.for(:group, 'named group', 'name is empty')
1848
1737
 
1849
1738
  when /^\(\?<[^>]+>/
1850
1739
  emit(:group, :named_ab, text)
@@ -1855,49 +1744,46 @@ te = p+1
1855
1744
  end
1856
1745
  end
1857
1746
  end
1858
- when 11 then
1859
- # line 550 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1747
+ when 10 then
1860
1748
  begin
1861
1749
  te = p+1
1862
- begin
1750
+ begin
1863
1751
  case text = copy(data, ts, te)
1864
- when /^\\k(<>|'')/
1865
- validation_error(:backref, 'backreference', 'ref ID is empty')
1866
- when /^\\k(.)[^\p{digit}\-][^+\-]*\D$/
1752
+ when /^\\k(.)[^0-9\-][^+\-]*['>]$/
1867
1753
  emit(:backref, $1 == '<' ? :name_ref_ab : :name_ref_sq, text)
1868
- when /^\\k(.)\d+\D$/
1754
+ when /^\\k(.)0*[1-9]\d*['>]$/
1869
1755
  emit(:backref, $1 == '<' ? :number_ref_ab : :number_ref_sq, text)
1870
- when /^\\k(.)-\d+\D$/
1756
+ when /^\\k(.)-0*[1-9]\d*['>]$/
1871
1757
  emit(:backref, $1 == '<' ? :number_rel_ref_ab : :number_rel_ref_sq, text)
1872
- when /^\\k(.)[^\p{digit}\-].*[+\-]\d+\D$/
1758
+ when /^\\k(.)[^0-9\-].*[+\-]\d+['>]$/
1873
1759
  emit(:backref, $1 == '<' ? :name_recursion_ref_ab : :name_recursion_ref_sq, text)
1874
- when /^\\k(.)-?\d+[+\-]\d+\D$/
1760
+ when /^\\k(.)-?0*[1-9]\d*[+\-]\d+['>]$/
1875
1761
  emit(:backref, $1 == '<' ? :number_recursion_ref_ab : :number_recursion_ref_sq, text)
1762
+ else
1763
+ raise ValidationError.for(:backref, 'backreference', 'invalid ref ID')
1876
1764
  end
1877
1765
  end
1878
1766
  end
1879
- when 10 then
1880
- # line 569 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1767
+ when 9 then
1881
1768
  begin
1882
1769
  te = p+1
1883
- begin
1770
+ begin
1884
1771
  case text = copy(data, ts, te)
1885
- when /^\\g(<>|'')/
1886
- validation_error(:backref, 'subexpression call', 'ref ID is empty')
1887
- when /^\\g(.)[^\p{digit}+\->][^+\-]*/
1772
+ when /^\\g(.)[^0-9+\-].*['>]$/
1888
1773
  emit(:backref, $1 == '<' ? :name_call_ab : :name_call_sq, text)
1889
- when /^\\g(.)\d+\D$/
1774
+ when /^\\g(.)(?:0|0*[1-9]\d*)['>]$/
1890
1775
  emit(:backref, $1 == '<' ? :number_call_ab : :number_call_sq, text)
1891
- when /^\\g(.)[+-]\d+/
1776
+ when /^\\g(.)[+-]0*[1-9]\d*/
1892
1777
  emit(:backref, $1 == '<' ? :number_rel_call_ab : :number_rel_call_sq, text)
1778
+ else
1779
+ raise ValidationError.for(:backref, 'subexpression call', 'invalid ref ID')
1893
1780
  end
1894
1781
  end
1895
1782
  end
1896
- when 60 then
1897
- # line 585 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1783
+ when 59 then
1898
1784
  begin
1899
1785
  te = p+1
1900
- begin
1786
+ begin
1901
1787
  case text = copy(data, ts, te)
1902
1788
  when '?' ; emit(:quantifier, :zero_or_one, text)
1903
1789
  when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
@@ -1905,11 +1791,10 @@ te = p+1
1905
1791
  end
1906
1792
  end
1907
1793
  end
1908
- when 56 then
1909
- # line 593 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1794
+ when 55 then
1910
1795
  begin
1911
1796
  te = p+1
1912
- begin
1797
+ begin
1913
1798
  case text = copy(data, ts, te)
1914
1799
  when '*' ; emit(:quantifier, :zero_or_more, text)
1915
1800
  when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
@@ -1917,11 +1802,10 @@ te = p+1
1917
1802
  end
1918
1803
  end
1919
1804
  end
1920
- when 58 then
1921
- # line 601 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1805
+ when 57 then
1922
1806
  begin
1923
1807
  te = p+1
1924
- begin
1808
+ begin
1925
1809
  case text = copy(data, ts, te)
1926
1810
  when '+' ; emit(:quantifier, :one_or_more, text)
1927
1811
  when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
@@ -1929,19 +1813,17 @@ te = p+1
1929
1813
  end
1930
1814
  end
1931
1815
  end
1932
- when 13 then
1933
- # line 609 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1816
+ when 12 then
1934
1817
  begin
1935
1818
  te = p+1
1936
- begin
1819
+ begin
1937
1820
  emit(:quantifier, :interval, copy(data, ts, te))
1938
1821
  end
1939
1822
  end
1940
- when 48 then
1941
- # line 624 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1823
+ when 47 then
1942
1824
  begin
1943
1825
  te = p+1
1944
- begin
1826
+ begin
1945
1827
  if free_spacing
1946
1828
  emit(:free_space, :comment, copy(data, ts, te))
1947
1829
  else
@@ -1952,23 +1834,21 @@ te = p+1
1952
1834
  end
1953
1835
  end
1954
1836
  end
1955
- when 51 then
1956
- # line 478 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1837
+ when 50 then
1957
1838
  begin
1958
1839
  te = p
1959
- p = p - 1; begin
1840
+ p = p - 1; begin
1960
1841
  text = copy(data, ts, te)
1961
1842
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
1962
- validation_error(:group_option, $1 || "-#{$2}", text)
1843
+ raise ValidationError.for(:group_option, $1 || "-#{$2}", text)
1963
1844
  end
1964
1845
  emit_options(text)
1965
1846
  end
1966
1847
  end
1967
- when 54 then
1968
- # line 492 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1848
+ when 53 then
1969
1849
  begin
1970
1850
  te = p
1971
- p = p - 1; begin
1851
+ p = p - 1; begin
1972
1852
  case text = copy(data, ts, te)
1973
1853
  when '(?='; emit(:assertion, :lookahead, text)
1974
1854
  when '(?!'; emit(:assertion, :nlookahead, text)
@@ -1977,20 +1857,18 @@ p = p - 1; begin
1977
1857
  end
1978
1858
  end
1979
1859
  end
1980
- when 49 then
1981
- # line 527 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1860
+ when 48 then
1982
1861
  begin
1983
1862
  te = p
1984
- p = p - 1; begin
1863
+ p = p - 1; begin
1985
1864
  text = copy(data, ts, te)
1986
1865
  emit(:group, :capture, text)
1987
1866
  end
1988
1867
  end
1989
- when 59 then
1990
- # line 585 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1868
+ when 58 then
1991
1869
  begin
1992
1870
  te = p
1993
- p = p - 1; begin
1871
+ p = p - 1; begin
1994
1872
  case text = copy(data, ts, te)
1995
1873
  when '?' ; emit(:quantifier, :zero_or_one, text)
1996
1874
  when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
@@ -1998,11 +1876,10 @@ p = p - 1; begin
1998
1876
  end
1999
1877
  end
2000
1878
  end
2001
- when 55 then
2002
- # line 593 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1879
+ when 54 then
2003
1880
  begin
2004
1881
  te = p
2005
- p = p - 1; begin
1882
+ p = p - 1; begin
2006
1883
  case text = copy(data, ts, te)
2007
1884
  when '*' ; emit(:quantifier, :zero_or_more, text)
2008
1885
  when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
@@ -2010,11 +1887,10 @@ p = p - 1; begin
2010
1887
  end
2011
1888
  end
2012
1889
  end
2013
- when 57 then
2014
- # line 601 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1890
+ when 56 then
2015
1891
  begin
2016
1892
  te = p
2017
- p = p - 1; begin
1893
+ p = p - 1; begin
2018
1894
  case text = copy(data, ts, te)
2019
1895
  when '+' ; emit(:quantifier, :one_or_more, text)
2020
1896
  when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
@@ -2022,34 +1898,31 @@ p = p - 1; begin
2022
1898
  end
2023
1899
  end
2024
1900
  end
2025
- when 64 then
2026
- # line 614 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1901
+ when 63 then
2027
1902
  begin
2028
1903
  te = p
2029
- p = p - 1; begin
1904
+ p = p - 1; begin
2030
1905
  append_literal(data, ts, te)
2031
1906
  end
2032
1907
  end
2033
- when 61 then
2034
- # line 620 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1908
+ when 60 then
2035
1909
  begin
2036
1910
  te = p
2037
- p = p - 1; begin
1911
+ p = p - 1; begin
2038
1912
  begin
2039
1913
  stack[top] = cs
2040
1914
  top+= 1
2041
- cs = 101
1915
+ cs = 99
2042
1916
  _goto_level = _again
2043
1917
  next
2044
1918
  end
2045
1919
 
2046
1920
  end
2047
1921
  end
2048
- when 47 then
2049
- # line 624 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1922
+ when 46 then
2050
1923
  begin
2051
1924
  te = p
2052
- p = p - 1; begin
1925
+ p = p - 1; begin
2053
1926
  if free_spacing
2054
1927
  emit(:free_space, :comment, copy(data, ts, te))
2055
1928
  else
@@ -2060,11 +1933,10 @@ p = p - 1; begin
2060
1933
  end
2061
1934
  end
2062
1935
  end
2063
- when 46 then
2064
- # line 634 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1936
+ when 45 then
2065
1937
  begin
2066
1938
  te = p
2067
- p = p - 1; begin
1939
+ p = p - 1; begin
2068
1940
  if free_spacing
2069
1941
  emit(:free_space, :whitespace, copy(data, ts, te))
2070
1942
  else
@@ -2072,43 +1944,39 @@ p = p - 1; begin
2072
1944
  end
2073
1945
  end
2074
1946
  end
2075
- when 45 then
2076
- # line 645 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1947
+ when 44 then
2077
1948
  begin
2078
1949
  te = p
2079
- p = p - 1; begin
1950
+ p = p - 1; begin
2080
1951
  append_literal(data, ts, te)
2081
1952
  end
2082
1953
  end
2083
1954
  when 3 then
2084
- # line 478 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2085
1955
  begin
2086
1956
  begin p = ((te))-1; end
2087
- begin
1957
+ begin
2088
1958
  text = copy(data, ts, te)
2089
1959
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2090
- validation_error(:group_option, $1 || "-#{$2}", text)
1960
+ raise ValidationError.for(:group_option, $1 || "-#{$2}", text)
2091
1961
  end
2092
1962
  emit_options(text)
2093
1963
  end
2094
1964
  end
2095
- when 12 then
2096
- # line 614 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1965
+ when 11 then
2097
1966
  begin
2098
1967
  begin p = ((te))-1; end
2099
- begin
1968
+ begin
2100
1969
  append_literal(data, ts, te)
2101
1970
  end
2102
1971
  end
2103
- when 9 then
2104
- # line 620 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
1972
+ when 8 then
2105
1973
  begin
2106
1974
  begin p = ((te))-1; end
2107
- begin
1975
+ begin
2108
1976
  begin
2109
1977
  stack[top] = cs
2110
1978
  top+= 1
2111
- cs = 101
1979
+ cs = 99
2112
1980
  _goto_level = _again
2113
1981
  next
2114
1982
  end
@@ -2116,7 +1984,6 @@ p = p - 1; begin
2116
1984
  end
2117
1985
  end
2118
1986
  when 1 then
2119
- # line 1 "NONE"
2120
1987
  begin
2121
1988
  case act
2122
1989
  when 0 then
@@ -2126,16 +1993,16 @@ p = p - 1; begin
2126
1993
  next
2127
1994
  end
2128
1995
  end
2129
- when 41 then
1996
+ when 42 then
2130
1997
  begin begin p = ((te))-1; end
2131
1998
 
2132
1999
  text = copy(data, ts, te)
2133
2000
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2134
- validation_error(:group_option, $1 || "-#{$2}", text)
2001
+ raise ValidationError.for(:group_option, $1 || "-#{$2}", text)
2135
2002
  end
2136
2003
  emit_options(text)
2137
2004
  end
2138
- when 42 then
2005
+ when 43 then
2139
2006
  begin begin p = ((te))-1; end
2140
2007
 
2141
2008
  case text = copy(data, ts, te)
@@ -2145,51 +2012,47 @@ end
2145
2012
  when '(?<!'; emit(:assertion, :nlookbehind, text)
2146
2013
  end
2147
2014
  end
2148
- when 56 then
2015
+ when 57 then
2149
2016
  begin begin p = ((te))-1; end
2150
2017
 
2151
2018
  append_literal(data, ts, te)
2152
2019
  end
2153
- end
2020
+ end
2154
2021
  end
2155
- when 76 then
2156
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2022
+ when 75 then
2157
2023
  begin
2158
2024
 
2159
- text = copy(data, ts ? ts-1 : 0, -1)
2160
- raise PrematureEndError.new( text )
2025
+ text = copy(data, ts ? ts-1 : 0,-1)
2026
+ raise PrematureEndError.new(text)
2161
2027
  end
2162
- # line 208 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2163
2028
  begin
2164
2029
  te = p
2165
- p = p - 1; begin
2030
+ p = p - 1; begin
2166
2031
  emit(:set, :open, '[')
2167
2032
  begin
2168
2033
  stack[top] = cs
2169
2034
  top+= 1
2170
- cs = 91
2035
+ cs = 89
2171
2036
  _goto_level = _again
2172
2037
  next
2173
2038
  end
2174
2039
 
2175
2040
  end
2176
2041
  end
2177
- when 20 then
2178
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2042
+ when 19 then
2179
2043
  begin
2180
2044
 
2181
- text = copy(data, ts ? ts-1 : 0, -1)
2182
- raise PrematureEndError.new( text )
2045
+ text = copy(data, ts ? ts-1 : 0,-1)
2046
+ raise PrematureEndError.new(text)
2183
2047
  end
2184
- # line 208 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2185
2048
  begin
2186
2049
  begin p = ((te))-1; end
2187
- begin
2050
+ begin
2188
2051
  emit(:set, :open, '[')
2189
2052
  begin
2190
2053
  stack[top] = cs
2191
2054
  top+= 1
2192
- cs = 91
2055
+ cs = 89
2193
2056
  _goto_level = _again
2194
2057
  next
2195
2058
  end
@@ -2197,16 +2060,14 @@ p = p - 1; begin
2197
2060
  end
2198
2061
  end
2199
2062
  when 93 then
2200
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2201
2063
  begin
2202
2064
 
2203
- text = copy(data, ts ? ts-1 : 0, -1)
2204
- raise PrematureEndError.new( text )
2065
+ text = copy(data, ts ? ts-1 : 0,-1)
2066
+ raise PrematureEndError.new(text)
2205
2067
  end
2206
- # line 344 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2207
2068
  begin
2208
2069
  te = p
2209
- p = p - 1; begin
2070
+ p = p - 1; begin
2210
2071
  emit_meta_control_sequence(data, ts, te, :control)
2211
2072
  begin
2212
2073
  top -= 1
@@ -2218,16 +2079,14 @@ p = p - 1; begin
2218
2079
  end
2219
2080
  end
2220
2081
  when 95 then
2221
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2222
2082
  begin
2223
2083
 
2224
- text = copy(data, ts ? ts-1 : 0, -1)
2225
- raise PrematureEndError.new( text )
2084
+ text = copy(data, ts ? ts-1 : 0,-1)
2085
+ raise PrematureEndError.new(text)
2226
2086
  end
2227
- # line 349 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2228
2087
  begin
2229
2088
  te = p
2230
- p = p - 1; begin
2089
+ p = p - 1; begin
2231
2090
  emit_meta_control_sequence(data, ts, te, :meta_sequence)
2232
2091
  begin
2233
2092
  top -= 1
@@ -2238,17 +2097,15 @@ p = p - 1; begin
2238
2097
 
2239
2098
  end
2240
2099
  end
2241
- when 27 then
2242
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2100
+ when 26 then
2243
2101
  begin
2244
2102
 
2245
- text = copy(data, ts ? ts-1 : 0, -1)
2246
- raise PrematureEndError.new( text )
2103
+ text = copy(data, ts ? ts-1 : 0,-1)
2104
+ raise PrematureEndError.new(text)
2247
2105
  end
2248
- # line 344 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2249
2106
  begin
2250
2107
  begin p = ((te))-1; end
2251
- begin
2108
+ begin
2252
2109
  emit_meta_control_sequence(data, ts, te, :control)
2253
2110
  begin
2254
2111
  top -= 1
@@ -2259,17 +2116,15 @@ p = p - 1; begin
2259
2116
 
2260
2117
  end
2261
2118
  end
2262
- when 29 then
2263
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2119
+ when 28 then
2264
2120
  begin
2265
2121
 
2266
- text = copy(data, ts ? ts-1 : 0, -1)
2267
- raise PrematureEndError.new( text )
2122
+ text = copy(data, ts ? ts-1 : 0,-1)
2123
+ raise PrematureEndError.new(text)
2268
2124
  end
2269
- # line 349 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2270
2125
  begin
2271
2126
  begin p = ((te))-1; end
2272
- begin
2127
+ begin
2273
2128
  emit_meta_control_sequence(data, ts, te, :meta_sequence)
2274
2129
  begin
2275
2130
  top -= 1
@@ -2280,17 +2135,15 @@ p = p - 1; begin
2280
2135
 
2281
2136
  end
2282
2137
  end
2283
- when 31 then
2284
- # line 141 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2138
+ when 30 then
2285
2139
  begin
2286
2140
 
2287
- text = copy(data, ts ? ts-1 : 0, -1)
2288
- validation_error(:sequence, 'sequence', text)
2141
+ text = copy(data, ts ? ts-1 : 0,-1)
2142
+ raise ValidationError.for(:sequence, 'sequence', text)
2289
2143
  end
2290
- # line 340 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2291
2144
  begin
2292
2145
  te = p+1
2293
- begin
2146
+ begin
2294
2147
  begin
2295
2148
  top -= 1
2296
2149
  cs = stack[top]
@@ -2300,29 +2153,25 @@ te = p+1
2300
2153
 
2301
2154
  end
2302
2155
  end
2303
- when 5 then
2304
- # line 148 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2156
+ when 4 then
2305
2157
  begin
2306
2158
  self.group_depth = group_depth - 1 end
2307
- # line 463 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2308
2159
  begin
2309
2160
  te = p+1
2310
- begin
2161
+ begin
2311
2162
  emit(:group, :comment, copy(data, ts, te))
2312
2163
  end
2313
2164
  end
2314
- when 38 then
2315
- # line 148 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2165
+ when 37 then
2316
2166
  begin
2317
2167
  self.group_depth = group_depth - 1 end
2318
- # line 532 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2319
2168
  begin
2320
2169
  te = p+1
2321
- begin
2170
+ begin
2322
2171
  if conditional_stack.last == group_depth + 1
2323
2172
  conditional_stack.pop
2324
2173
  emit(:conditional, :close, ')')
2325
- else
2174
+ elsif group_depth >= 0
2326
2175
  if spacing_stack.length > 1 &&
2327
2176
  spacing_stack.last[:depth] == group_depth + 1
2328
2177
  spacing_stack.pop
@@ -2330,36 +2179,34 @@ te = p+1
2330
2179
  end
2331
2180
 
2332
2181
  emit(:group, :close, ')')
2182
+ else
2183
+ raise ValidationError.for(:group, 'group', 'unmatched close parenthesis')
2333
2184
  end
2334
2185
  end
2335
2186
  end
2336
- when 40 then
2337
- # line 149 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2187
+ when 39 then
2338
2188
  begin
2339
2189
  self.set_depth = set_depth + 1 end
2340
- # line 438 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2341
2190
  begin
2342
2191
  te = p+1
2343
- begin
2192
+ begin
2344
2193
  emit(:set, :open, copy(data, ts, te))
2345
2194
  begin
2346
2195
  stack[top] = cs
2347
2196
  top+= 1
2348
- cs = 91
2197
+ cs = 89
2349
2198
  _goto_level = _again
2350
2199
  next
2351
2200
  end
2352
2201
 
2353
2202
  end
2354
2203
  end
2355
- when 70 then
2356
- # line 150 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2204
+ when 69 then
2357
2205
  begin
2358
2206
  self.set_depth = set_depth - 1 end
2359
- # line 156 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2360
2207
  begin
2361
2208
  te = p+1
2362
- begin
2209
+ begin
2363
2210
  emit(:set, :close, copy(data, ts, te))
2364
2211
  if in_set?
2365
2212
  begin
@@ -2371,7 +2218,7 @@ te = p+1
2371
2218
 
2372
2219
  else
2373
2220
  begin
2374
- cs = 73
2221
+ cs = 71
2375
2222
  _goto_level = _again
2376
2223
  next
2377
2224
  end
@@ -2379,11 +2226,9 @@ te = p+1
2379
2226
  end
2380
2227
  end
2381
2228
  end
2382
- when 75 then
2383
- # line 150 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2229
+ when 74 then
2384
2230
  begin
2385
2231
  self.set_depth = set_depth - 1 end
2386
- # line 165 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2387
2232
  begin
2388
2233
  te = p+1
2389
2234
  begin # special case, emits two tokens
@@ -2399,7 +2244,7 @@ te = p+1
2399
2244
 
2400
2245
  else
2401
2246
  begin
2402
- cs = 73
2247
+ cs = 71
2403
2248
  _goto_level = _again
2404
2249
  next
2405
2250
  end
@@ -2407,14 +2252,12 @@ te = p+1
2407
2252
  end
2408
2253
  end
2409
2254
  end
2410
- when 22 then
2411
- # line 150 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2255
+ when 21 then
2412
2256
  begin
2413
2257
  self.set_depth = set_depth - 1 end
2414
- # line 213 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2415
2258
  begin
2416
2259
  te = p+1
2417
- begin
2260
+ begin
2418
2261
  text = copy(data, ts, te)
2419
2262
 
2420
2263
  type = :posixclass
@@ -2425,85 +2268,62 @@ te = p+1
2425
2268
  end
2426
2269
 
2427
2270
  unless self.class.posix_classes.include?(class_name)
2428
- validation_error(:posix_class, text)
2271
+ raise ValidationError.for(:posix_class, text)
2429
2272
  end
2430
2273
 
2431
2274
  emit(type, class_name.to_sym, text)
2432
2275
  end
2433
2276
  end
2434
- when 68 then
2435
- # line 1 "NONE"
2277
+ when 67 then
2436
2278
  begin
2437
2279
  te = p+1
2438
2280
  end
2439
- # line 149 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2440
2281
  begin
2441
2282
  self.set_depth = set_depth + 1 end
2442
- when 84 then
2443
- # line 1 "NONE"
2283
+ when 83 then
2444
2284
  begin
2445
2285
  te = p+1
2446
2286
  end
2447
- # line 277 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2448
2287
  begin
2449
2288
  act = 17; end
2450
- when 83 then
2451
- # line 1 "NONE"
2289
+ when 82 then
2452
2290
  begin
2453
2291
  te = p+1
2454
2292
  end
2455
- # line 283 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2456
2293
  begin
2457
2294
  act = 18; end
2458
- when 8 then
2459
- # line 1 "NONE"
2295
+ when 49 then
2460
2296
  begin
2461
2297
  te = p+1
2462
2298
  end
2463
- # line 492 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2464
2299
  begin
2465
2300
  act = 42; end
2466
- when 2 then
2467
- # line 1 "NONE"
2301
+ when 7 then
2468
2302
  begin
2469
2303
  te = p+1
2470
2304
  end
2471
- # line 645 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2472
2305
  begin
2473
- act = 56; end
2474
- when 50 then
2475
- # line 1 "NONE"
2306
+ act = 43; end
2307
+ when 2 then
2476
2308
  begin
2477
2309
  te = p+1
2478
2310
  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
2311
  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
- begin
2487
- act = 41; end
2488
- # line 2488 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner.rb"
2312
+ act = 57; end
2489
2313
  end
2490
2314
  end
2491
2315
  end
2492
2316
  if _goto_level <= _again
2493
- case _re_scanner_to_state_actions[cs]
2494
- when 65 then
2495
- # line 1 "NONE"
2317
+ case _re_scanner_to_state_actions[cs]
2318
+ when 64 then
2496
2319
  begin
2497
2320
  ts = nil; end
2498
- when 34 then
2499
- # line 1 "NONE"
2321
+ when 33 then
2500
2322
  begin
2501
2323
  ts = nil; end
2502
- # line 1 "NONE"
2503
2324
  begin
2504
2325
  act = 0
2505
2326
  end
2506
- # line 2506 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner.rb"
2507
2327
  end
2508
2328
 
2509
2329
  if cs == 0
@@ -2524,20 +2344,17 @@ act = 0
2524
2344
  next;
2525
2345
  end
2526
2346
  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"
2347
+ when 13 then
2529
2348
  begin
2530
2349
 
2531
2350
  raise PrematureEndError.new('unicode property')
2532
2351
  end
2533
- when 25 then
2534
- # line 135 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2352
+ when 24 then
2535
2353
  begin
2536
2354
 
2537
- text = copy(data, ts ? ts-1 : 0, -1)
2538
- raise PrematureEndError.new( text )
2355
+ text = copy(data, ts ? ts-1 : 0,-1)
2356
+ raise PrematureEndError.new(text)
2539
2357
  end
2540
- # line 2540 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner.rb"
2541
2358
  end
2542
2359
  end
2543
2360
 
@@ -2548,13 +2365,11 @@ act = 0
2548
2365
  end
2549
2366
  end
2550
2367
 
2551
- # line 751 "/Users/janosch/code/regexp_parser/tasks/../lib/regexp_parser/scanner/scanner.rl"
2552
-
2553
2368
  # to avoid "warning: assigned but unused variable - testEof"
2554
2369
  testEof = testEof
2555
2370
 
2556
2371
  if cs == re_scanner_error
2557
- text = copy(data, ts ? ts-1 : 0, -1)
2372
+ text = copy(data, ts ? ts-1 : 0,-1)
2558
2373
  raise ScannerError.new("Scan error at '#{text}'")
2559
2374
  end
2560
2375
 
@@ -2606,7 +2421,7 @@ end
2606
2421
 
2607
2422
  if block
2608
2423
  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
2424
+ # TODO: in v3.0.0,remove `collect_tokens:` kwarg and only collect if no block given
2610
2425
  tokens << tok if collect_tokens
2611
2426
  elsif collect_tokens
2612
2427
  tokens << tok
@@ -2666,7 +2481,7 @@ end
2666
2481
 
2667
2482
  # Ruby allows things like '(?-xxxx)' or '(?xx-xx--xx-:abc)'.
2668
2483
  text =~ /\(\?([mixdau]*)(-(?:[mix]*))*(:)?/
2669
- positive, negative, group_local = $1, $2, $3
2484
+ positive, negative, group_local = $1,$2,$3
2670
2485
 
2671
2486
  if positive.include?('x')
2672
2487
  self.free_spacing = true
@@ -2692,24 +2507,8 @@ end
2692
2507
 
2693
2508
  def emit_meta_control_sequence(data, ts, te, token)
2694
2509
  if data.last < 0x00 || data.last > 0x7F
2695
- validation_error(:sequence, 'escape', token.to_s)
2510
+ raise ValidationError.for(:sequence, 'escape', token.to_s)
2696
2511
  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
2512
+ emit(:escape, token, copy(data, ts-1,te))
2714
2513
  end
2715
2514
  end # module Regexp::Scanner