regexp_parser 1.8.2 → 2.1.1

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