regexp_parser 1.8.2 → 2.1.0

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