regexp_parser 1.7.1 → 2.0.1

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