regexp_parser 2.7.0 → 2.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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