regexp_parser 0.1.1 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog +45 -0
  3. data/Rakefile +12 -44
  4. data/VERSION.yml +5 -0
  5. data/lib/regexp_parser.rb +5 -38
  6. data/lib/regexp_parser/expression.rb +68 -221
  7. data/lib/regexp_parser/expression/classes/alternation.rb +47 -0
  8. data/lib/regexp_parser/expression/classes/anchor.rb +26 -0
  9. data/lib/regexp_parser/expression/classes/backref.rb +42 -0
  10. data/lib/regexp_parser/expression/classes/escape.rb +27 -0
  11. data/lib/regexp_parser/expression/classes/group.rb +67 -0
  12. data/lib/regexp_parser/expression/classes/literal.rb +7 -0
  13. data/lib/regexp_parser/expression/{property.rb → classes/property.rb} +1 -1
  14. data/lib/regexp_parser/expression/classes/root.rb +26 -0
  15. data/lib/regexp_parser/expression/classes/set.rb +100 -0
  16. data/lib/regexp_parser/expression/classes/type.rb +17 -0
  17. data/lib/regexp_parser/expression/quantifier.rb +26 -0
  18. data/lib/regexp_parser/expression/subexpression.rb +69 -0
  19. data/lib/regexp_parser/lexer.rb +4 -4
  20. data/lib/regexp_parser/parser.rb +31 -13
  21. data/lib/regexp_parser/scanner.rb +1849 -1488
  22. data/lib/regexp_parser/scanner/property.rl +7 -2
  23. data/lib/regexp_parser/scanner/scanner.rl +377 -191
  24. data/lib/regexp_parser/syntax.rb +7 -0
  25. data/lib/regexp_parser/syntax/ruby/1.8.6.rb +4 -4
  26. data/lib/regexp_parser/syntax/ruby/1.9.1.rb +9 -9
  27. data/lib/regexp_parser/syntax/ruby/2.0.0.rb +16 -0
  28. data/lib/regexp_parser/syntax/ruby/2.1.0.rb +13 -0
  29. data/lib/regexp_parser/syntax/tokens.rb +21 -320
  30. data/lib/regexp_parser/syntax/tokens/anchor.rb +17 -0
  31. data/lib/regexp_parser/syntax/tokens/assertion.rb +15 -0
  32. data/lib/regexp_parser/syntax/tokens/backref.rb +26 -0
  33. data/lib/regexp_parser/syntax/tokens/character_set.rb +48 -0
  34. data/lib/regexp_parser/syntax/tokens/character_type.rb +16 -0
  35. data/lib/regexp_parser/syntax/tokens/escape.rb +29 -0
  36. data/lib/regexp_parser/syntax/tokens/group.rb +22 -0
  37. data/lib/regexp_parser/syntax/tokens/meta.rb +15 -0
  38. data/lib/regexp_parser/syntax/tokens/quantifier.rb +37 -0
  39. data/lib/regexp_parser/syntax/tokens/unicode_property.rb +204 -0
  40. data/lib/regexp_parser/token.rb +37 -0
  41. data/test/expression/test_all.rb +7 -0
  42. data/test/expression/test_base.rb +72 -0
  43. data/test/expression/test_clone.rb +144 -0
  44. data/test/{parser/test_expression.rb → expression/test_to_s.rb} +10 -10
  45. data/test/helpers.rb +1 -0
  46. data/test/parser/test_all.rb +1 -1
  47. data/test/parser/test_alternation.rb +35 -0
  48. data/test/parser/test_anchors.rb +2 -2
  49. data/test/parser/test_refcalls.rb +1 -1
  50. data/test/parser/test_sets.rb +54 -8
  51. data/test/scanner/test_anchors.rb +2 -2
  52. data/test/scanner/test_conditionals.rb +31 -0
  53. data/test/scanner/test_errors.rb +88 -8
  54. data/test/scanner/test_escapes.rb +4 -4
  55. data/test/scanner/test_groups.rb +7 -0
  56. data/test/scanner/test_quoting.rb +29 -0
  57. data/test/scanner/test_sets.rb +1 -0
  58. data/test/syntax/ruby/test_1.8.rb +3 -3
  59. data/test/test_all.rb +1 -1
  60. metadata +62 -48
  61. data/lib/regexp_parser/expression/set.rb +0 -59
@@ -21,15 +21,15 @@ module Regexp::Lexer
21
21
  type, token = *syntax.normalize(type, token)
22
22
  syntax.check! type, token
23
23
 
24
- self.ascend(type, token)
24
+ ascend(type, token)
25
25
 
26
- self.break_literal(last) if type == :quantifier and
26
+ break_literal(last) if type == :quantifier and
27
27
  last and last.type == :literal
28
28
 
29
29
  current = Regexp::Token.new(type, token, text, ts, te,
30
30
  @nesting, @set_nesting)
31
31
 
32
- current = self.merge_literal(current) if type == :literal and
32
+ current = merge_literal(current) if type == :literal and
33
33
  last and last.type == :literal
34
34
 
35
35
  last.next(current) if last
@@ -38,7 +38,7 @@ module Regexp::Lexer
38
38
  @tokens << current
39
39
  last = current
40
40
 
41
- self.descend(type, token)
41
+ descend(type, token)
42
42
  end
43
43
 
44
44
  if block_given?
@@ -71,7 +71,7 @@ module Regexp::Parser
71
71
  when :open
72
72
  self.open_set(token)
73
73
  when :close
74
- self.close_set
74
+ self.close_set(token)
75
75
  when :negate
76
76
  self.negate_set
77
77
  when :member, :range, :escape, :collation, :equivalent
@@ -93,16 +93,22 @@ module Regexp::Parser
93
93
  @node << CharacterType::Any.new(token)
94
94
  when :alternation
95
95
  unless @node.token == :alternation
96
- alt = Alternation.new(token)
97
- seq = Sequence.new
98
- while @node.expressions.last
99
- seq.insert @node.expressions.pop
96
+ unless @node.last.is_a?(Alternation)
97
+ alt = Alternation.new(token)
98
+ seq = Sequence.new
99
+
100
+ while @node.expressions.last
101
+ seq.insert @node.expressions.pop
102
+ end
103
+ alt.alternative(seq)
104
+
105
+ @node << alt
106
+ @node = alt
107
+ @node.alternative
108
+ else
109
+ @node = @node.last
110
+ @node.alternative
100
111
  end
101
- alt.alternative(seq)
102
-
103
- @node << alt
104
- @node = alt
105
- @node.alternative
106
112
  else
107
113
  @node.alternative
108
114
  end
@@ -238,9 +244,9 @@ module Regexp::Parser
238
244
 
239
245
  def self.anchor(token)
240
246
  case token.token
241
- when :beginning_of_line
247
+ when :bol
242
248
  @node << Anchor::BeginningOfLine.new(token)
243
- when :end_of_line
249
+ when :eol
244
250
  @node << Anchor::EndOfLine.new(token)
245
251
  when :bos
246
252
  @node << Anchor::BOS.new(token)
@@ -292,6 +298,15 @@ module Regexp::Parser
292
298
  end
293
299
 
294
300
  def self.quantifier(token)
301
+ unless @node.expressions.last
302
+ if token.token == :zero_or_one
303
+ raise "Quantifier given without a target, or the syntax of the group " +
304
+ "or its options is incorrect"
305
+ else
306
+ raise "Quantifier `#{token.text}' given without a target"
307
+ end
308
+ end
309
+
295
310
  case token.token
296
311
  when :zero_or_one
297
312
  @node.expressions.last.quantify(:zero_or_one, token.text, 0, 1, :greedy)
@@ -396,6 +411,8 @@ module Regexp::Parser
396
411
  end
397
412
 
398
413
  def self.open_set(token)
414
+ token.token = :character
415
+
399
416
  if token.type == :subset
400
417
  @set << CharacterSubSet.new(token)
401
418
  else
@@ -411,7 +428,8 @@ module Regexp::Parser
411
428
  @set << token.text
412
429
  end
413
430
 
414
- def self.close_set
431
+ def self.close_set(token)
432
+ @set.close
415
433
  end
416
434
 
417
435
  end # module Regexp::Parser
@@ -1,13 +1,15 @@
1
1
 
2
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2
+ # line 1 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3
3
 
4
- # line 621 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
4
+ # line 677 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
5
5
 
6
6
 
7
+ # THIS IS A GENERATED FILE, DO NOT EDIT DIRECTLY
8
+ # This file was generated from scanner.rl
7
9
 
8
10
  module Regexp::Scanner
9
11
 
10
- # line 11 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
12
+ # line 13 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
11
13
  class << self
12
14
  attr_accessor :_re_scanner_trans_keys
13
15
  private :_re_scanner_trans_keys, :_re_scanner_trans_keys=
@@ -15,14 +17,14 @@ end
15
17
  self._re_scanner_trans_keys = [
16
18
  0, 0, -128, -65, -128, -65,
17
19
  -128, -65, -128, -65, -128,
18
- -65, -128, -65, 41, 41,
19
- 41, 41, 65, 122, 39, 122,
20
+ -65, -128, -65, 33, 120,
21
+ 41, 41, 41, 41, 39, 122,
20
22
  33, 122, 48, 122, 39,
21
- 60, 45, 122, 49, 57,
23
+ 60, 39, 122, 48, 57,
22
24
  39, 57, 48, 57, 39, 57,
23
- 39, 122, 45, 122, 49,
24
- 57, 43, 62, 48, 57,
25
- 48, 62, 43, 122, 44, 125,
25
+ 39, 122, 43, 122, 48,
26
+ 57, 48, 62, 48, 57,
27
+ 43, 62, 43, 122, 44, 125,
26
28
  48, 125, 123, 123, 9,
27
29
  122, 9, 125, 9, 125,
28
30
  9, 125, 9, 125, 49, 54,
@@ -56,34 +58,37 @@ self._re_scanner_trans_keys = [
56
58
  -128, -65, -128, -65, -128,
57
59
  -65, -128, -65, -128, -65,
58
60
  92, 92, 120, 120, 48, 102,
59
- 45, 45, 65, 122, 45,
60
- 45, 65, 122, 67, 99,
61
- 45, 45, 65, 122, 48, 123,
61
+ 45, 45, 45, 45, 67,
62
+ 99, 45, 45, 48, 123,
63
+ 48, 102, 48, 102, 48, 102,
62
64
  48, 102, 48, 102, 48,
63
- 102, 48, 102, 48, 102,
64
- 48, 102, 48, 102, 9, 125,
65
- 48, 125, 48, 123, 48,
66
- 102, 48, 125, 48, 125,
65
+ 102, 48, 102, 9, 125,
66
+ 48, 125, 48, 123, 9, 125,
67
+ 9, 125, -128, 127, -62,
68
+ -33, -32, -17, -16, -12,
69
+ 1, 127, 32, 126, 63, 63,
70
+ 43, 63, 43, 63, 43,
71
+ 63, 65, 122, 43, 63,
72
+ 80, 112, -62, 127, -128, -65,
73
+ -62, -33, -128, -65, -32,
74
+ -17, -128, -65, -16, -12,
75
+ 1, 127, 38, 38, 93, 93,
76
+ 45, 45, 46, 61, -62,
77
+ 127, -62, -33, -32, -17,
78
+ -16, -12, 1, 127, 32, 126,
79
+ 32, 126, 32, 126, 48,
80
+ 102, 32, 126, 36, 125,
81
+ 48, 55, 48, 55, 92, 92,
82
+ 48, 102, 125, 125, 125,
83
+ 125, 125, 125, 125, 125,
84
+ 125, 125, 125, 125, 125, 125,
85
+ 125, 125, 9, 125, 9,
86
+ 125, 9, 125, 9, 125,
87
+ 9, 125, 9, 125, 9, 125,
88
+ 9, 32, 9, 125, 48,
89
+ 125, 48, 125, 48, 125,
67
90
  48, 125, 48, 125, 48, 125,
68
- 48, 125, 48, 125, 125,
69
- 125, -128, 127, -62, -33,
70
- -32, -17, -16, -12, 1, 127,
71
- 32, 126, 63, 63, 33,
72
- 120, 105, 120, 105, 120,
73
- 105, 120, 45, 120, 45, 120,
74
- 45, 120, 43, 63, 43,
75
- 63, 43, 63, 65, 122,
76
- 43, 63, 80, 112, -62, 127,
77
- -128, -65, -62, -33, -128,
78
- -65, -32, -17, -128, -65,
79
- -16, -12, 1, 127, 38, 38,
80
- 93, 93, 45, 45, 46,
81
- 61, -62, 127, -62, -33,
82
- -32, -17, -16, -12, 1, 127,
83
- 32, 126, 32, 126, 32,
84
- 126, 48, 102, 32, 126,
85
- 36, 125, 48, 55, 48, 55,
86
- 48, 102, 0
91
+ 48, 125, 125, 125, 0
87
92
  ]
88
93
 
89
94
  class << self
@@ -91,10 +96,10 @@ class << self
91
96
  private :_re_scanner_key_spans, :_re_scanner_key_spans=
92
97
  end
93
98
  self._re_scanner_key_spans = [
94
- 0, 64, 64, 64, 64, 64, 64, 1,
95
- 1, 58, 84, 90, 75, 22, 78, 9,
96
- 19, 10, 19, 84, 78, 9, 20, 10,
97
- 15, 80, 82, 78, 1, 114, 117, 117,
99
+ 0, 64, 64, 64, 64, 64, 64, 88,
100
+ 1, 1, 84, 90, 75, 22, 84, 10,
101
+ 19, 10, 19, 84, 80, 10, 15, 10,
102
+ 20, 80, 82, 78, 1, 114, 117, 117,
98
103
  117, 117, 6, 1, 1, 1, 1, 2,
99
104
  1, 3, 1, 1, 114, 64, 64, 64,
100
105
  64, 64, 64, 75, 78, 78, 1, 27,
@@ -105,16 +110,17 @@ self._re_scanner_key_spans = [
105
110
  4, 1, 1, 1, 1, 1, 1, 1,
106
111
  1, 1, 1, 1, 1, 1, 1, 58,
107
112
  1, 1, 64, 64, 64, 64, 64, 64,
108
- 1, 1, 55, 1, 58, 1, 58, 33,
109
- 1, 58, 76, 55, 55, 55, 55, 55,
110
- 55, 55, 117, 78, 76, 55, 78, 78,
111
- 78, 78, 78, 78, 78, 1, 256, 30,
112
- 16, 5, 127, 95, 1, 88, 16, 16,
113
- 16, 76, 76, 76, 21, 21, 21, 58,
114
- 21, 33, 190, 64, 30, 64, 16, 64,
115
- 5, 127, 1, 1, 1, 16, 190, 30,
116
- 16, 5, 127, 95, 95, 95, 55, 95,
117
- 90, 8, 8, 55
113
+ 1, 1, 55, 1, 1, 33, 1, 76,
114
+ 55, 55, 55, 55, 55, 55, 55, 117,
115
+ 78, 76, 117, 117, 256, 30, 16, 5,
116
+ 127, 95, 1, 21, 21, 21, 58, 21,
117
+ 33, 190, 64, 30, 64, 16, 64, 5,
118
+ 127, 1, 1, 1, 16, 190, 30, 16,
119
+ 5, 127, 95, 95, 95, 55, 95, 90,
120
+ 8, 8, 1, 55, 1, 1, 1, 1,
121
+ 1, 1, 1, 1, 117, 117, 117, 117,
122
+ 117, 117, 117, 24, 117, 78, 78, 78,
123
+ 78, 78, 78, 78, 1
118
124
  ]
119
125
 
120
126
  class << self
@@ -123,29 +129,30 @@ class << self
123
129
  end
124
130
  self._re_scanner_index_offsets = [
125
131
  0, 0, 65, 130, 195, 260, 325, 390,
126
- 392, 394, 453, 538, 629, 705, 728, 807,
127
- 817, 837, 848, 868, 953, 1032, 1042, 1063,
128
- 1074, 1090, 1171, 1254, 1333, 1335, 1450, 1568,
129
- 1686, 1804, 1922, 1929, 1931, 1933, 1935, 1937,
130
- 1940, 1942, 1946, 1948, 1950, 2065, 2130, 2195,
131
- 2260, 2325, 2390, 2455, 2531, 2610, 2689, 2691,
132
- 2719, 2744, 2753, 2757, 2759, 2761, 2763, 2765,
133
- 2767, 2769, 2771, 2773, 2775, 2777, 2779, 2781,
134
- 2783, 2785, 2787, 2789, 2791, 2793, 2795, 2797,
135
- 2799, 2801, 2803, 2805, 2807, 2809, 2811, 2813,
136
- 2815, 2820, 2822, 2824, 2826, 2828, 2830, 2832,
137
- 2834, 2836, 2838, 2840, 2842, 2844, 2846, 2848,
138
- 2907, 2909, 2911, 2976, 3041, 3106, 3171, 3236,
139
- 3301, 3303, 3305, 3361, 3363, 3422, 3424, 3483,
140
- 3517, 3519, 3578, 3655, 3711, 3767, 3823, 3879,
141
- 3935, 3991, 4047, 4165, 4244, 4321, 4377, 4456,
142
- 4535, 4614, 4693, 4772, 4851, 4930, 4932, 5189,
143
- 5220, 5237, 5243, 5371, 5467, 5469, 5558, 5575,
144
- 5592, 5609, 5686, 5763, 5840, 5862, 5884, 5906,
145
- 5965, 5987, 6021, 6212, 6277, 6308, 6373, 6390,
146
- 6455, 6461, 6589, 6591, 6593, 6595, 6612, 6803,
147
- 6834, 6851, 6857, 6985, 7081, 7177, 7273, 7329,
148
- 7425, 7516, 7525, 7534
132
+ 479, 481, 483, 568, 659, 735, 758, 843,
133
+ 854, 874, 885, 905, 990, 1071, 1082, 1098,
134
+ 1109, 1130, 1211, 1294, 1373, 1375, 1490, 1608,
135
+ 1726, 1844, 1962, 1969, 1971, 1973, 1975, 1977,
136
+ 1980, 1982, 1986, 1988, 1990, 2105, 2170, 2235,
137
+ 2300, 2365, 2430, 2495, 2571, 2650, 2729, 2731,
138
+ 2759, 2784, 2793, 2797, 2799, 2801, 2803, 2805,
139
+ 2807, 2809, 2811, 2813, 2815, 2817, 2819, 2821,
140
+ 2823, 2825, 2827, 2829, 2831, 2833, 2835, 2837,
141
+ 2839, 2841, 2843, 2845, 2847, 2849, 2851, 2853,
142
+ 2855, 2860, 2862, 2864, 2866, 2868, 2870, 2872,
143
+ 2874, 2876, 2878, 2880, 2882, 2884, 2886, 2888,
144
+ 2947, 2949, 2951, 3016, 3081, 3146, 3211, 3276,
145
+ 3341, 3343, 3345, 3401, 3403, 3405, 3439, 3441,
146
+ 3518, 3574, 3630, 3686, 3742, 3798, 3854, 3910,
147
+ 4028, 4107, 4184, 4302, 4420, 4677, 4708, 4725,
148
+ 4731, 4859, 4955, 4957, 4979, 5001, 5023, 5082,
149
+ 5104, 5138, 5329, 5394, 5425, 5490, 5507, 5572,
150
+ 5578, 5706, 5708, 5710, 5712, 5729, 5920, 5951,
151
+ 5968, 5974, 6102, 6198, 6294, 6390, 6446, 6542,
152
+ 6633, 6642, 6651, 6653, 6709, 6711, 6713, 6715,
153
+ 6717, 6719, 6721, 6723, 6725, 6843, 6961, 7079,
154
+ 7197, 7315, 7433, 7551, 7576, 7694, 7773, 7852,
155
+ 7931, 8010, 8089, 8168, 8247
149
156
  ]
150
157
 
151
158
  class << self
@@ -201,241 +208,222 @@ self._re_scanner_indicies = [
201
208
  6, 6, 6, 6, 6, 6, 6, 6,
202
209
  6, 6, 6, 6, 6, 6, 6, 6,
203
210
  6, 6, 6, 6, 6, 6, 6, 6,
204
- 6, 6, 6, 6, 6, 0, 7, 8,
205
- 9, 8, 10, 10, 10, 10, 10, 10,
206
- 10, 10, 10, 10, 10, 10, 10, 10,
207
- 10, 10, 10, 10, 10, 10, 10, 10,
208
- 10, 10, 10, 10, 7, 7, 7, 7,
209
- 7, 7, 10, 10, 10, 10, 10, 10,
210
- 10, 10, 10, 10, 10, 10, 10, 10,
211
- 10, 10, 10, 10, 10, 10, 10, 10,
212
- 10, 10, 10, 10, 7, 11, 7, 7,
213
- 7, 7, 7, 7, 7, 7, 10, 10,
214
- 10, 10, 10, 10, 10, 10, 10, 10,
215
- 7, 7, 7, 7, 7, 7, 7, 10,
216
- 10, 10, 10, 10, 10, 10, 10, 10,
217
- 10, 10, 10, 10, 10, 10, 10, 10,
211
+ 6, 6, 6, 6, 6, 0, 8, 7,
212
+ 9, 7, 7, 7, 10, 7, 7, 7,
213
+ 7, 7, 11, 7, 7, 7, 7, 7,
214
+ 7, 7, 7, 7, 7, 7, 7, 12,
215
+ 7, 13, 8, 12, 7, 7, 7, 7,
216
+ 7, 7, 7, 7, 7, 7, 7, 7,
217
+ 7, 7, 7, 7, 7, 7, 7, 7,
218
+ 7, 7, 7, 7, 7, 7, 7, 7,
219
+ 7, 7, 7, 7, 7, 7, 7, 7,
220
+ 7, 7, 7, 7, 7, 7, 11, 7,
221
+ 7, 7, 11, 7, 7, 7, 7, 7,
222
+ 7, 7, 7, 7, 7, 11, 7, 7,
223
+ 14, 15, 14, 12, 7, 7, 7, 7,
224
+ 7, 7, 7, 7, 10, 10, 10, 10,
225
+ 10, 10, 10, 10, 10, 10, 7, 7,
226
+ 7, 7, 7, 7, 7, 10, 10, 10,
218
227
  10, 10, 10, 10, 10, 10, 10, 10,
219
- 10, 7, 7, 7, 7, 7, 7, 10,
220
228
  10, 10, 10, 10, 10, 10, 10, 10,
229
+ 10, 10, 10, 10, 10, 10, 10, 7,
230
+ 7, 7, 7, 7, 7, 10, 10, 10,
221
231
  10, 10, 10, 10, 10, 10, 10, 10,
222
232
  10, 10, 10, 10, 10, 10, 10, 10,
223
- 10, 7, 12, 7, 7, 7, 7, 7,
224
- 7, 7, 7, 7, 7, 7, 7, 7,
225
- 7, 7, 7, 7, 7, 7, 7, 7,
226
- 7, 7, 7, 7, 7, 7, 12, 7,
227
- 7, 7, 13, 13, 13, 13, 13, 13,
228
- 13, 13, 13, 13, 13, 13, 13, 13,
229
- 13, 13, 13, 13, 13, 13, 13, 13,
230
- 13, 13, 13, 13, 7, 7, 7, 7,
231
- 7, 7, 13, 13, 13, 13, 13, 13,
232
- 13, 13, 13, 13, 13, 13, 13, 13,
233
- 13, 13, 13, 13, 13, 13, 13, 13,
234
- 13, 13, 13, 13, 7, 13, 13, 13,
235
- 13, 13, 13, 13, 13, 13, 13, 7,
236
- 7, 7, 7, 11, 7, 7, 13, 13,
237
- 13, 13, 13, 13, 13, 13, 13, 13,
238
- 13, 13, 13, 13, 13, 13, 13, 13,
239
- 13, 13, 13, 13, 13, 13, 13, 13,
240
- 7, 7, 7, 7, 7, 7, 13, 13,
241
- 13, 13, 13, 13, 13, 13, 13, 13,
242
- 13, 13, 13, 13, 13, 13, 13, 13,
243
- 13, 13, 13, 13, 13, 13, 13, 13,
244
- 7, 15, 14, 14, 14, 14, 14, 14,
245
- 14, 14, 14, 14, 14, 14, 14, 14,
246
- 14, 14, 14, 14, 14, 14, 16, 14,
247
- 17, 14, 14, 14, 18, 18, 18, 18,
248
- 18, 18, 18, 18, 18, 14, 14, 14,
249
- 14, 14, 14, 14, 19, 19, 19, 19,
250
- 19, 19, 19, 19, 19, 19, 19, 19,
251
- 19, 19, 19, 19, 19, 19, 19, 19,
252
- 19, 19, 19, 19, 19, 19, 14, 14,
253
- 14, 14, 14, 14, 19, 19, 19, 19,
254
- 19, 19, 19, 19, 19, 19, 19, 19,
255
- 19, 19, 19, 19, 19, 19, 19, 19,
256
- 19, 19, 19, 19, 19, 19, 14, 18,
257
- 18, 18, 18, 18, 18, 18, 18, 18,
258
- 14, 20, 14, 14, 14, 21, 14, 21,
259
- 14, 14, 18, 18, 18, 18, 18, 18,
260
- 18, 18, 18, 18, 14, 22, 22, 22,
261
- 22, 22, 22, 22, 22, 22, 22, 14,
262
- 20, 14, 14, 14, 14, 14, 14, 14,
263
- 14, 22, 22, 22, 22, 22, 22, 22,
264
- 22, 22, 22, 14, 20, 14, 14, 14,
265
- 21, 14, 21, 14, 14, 19, 19, 19,
266
- 19, 19, 19, 19, 19, 19, 19, 14,
267
- 14, 14, 14, 14, 14, 14, 19, 19,
268
- 19, 19, 19, 19, 19, 19, 19, 19,
269
- 19, 19, 19, 19, 19, 19, 19, 19,
270
- 19, 19, 19, 19, 19, 19, 19, 19,
271
- 14, 14, 14, 14, 14, 14, 19, 19,
272
- 19, 19, 19, 19, 19, 19, 19, 19,
273
- 19, 19, 19, 19, 19, 19, 19, 19,
274
- 19, 19, 19, 19, 19, 19, 19, 19,
275
- 14, 23, 14, 14, 14, 24, 24, 24,
276
- 24, 24, 24, 24, 24, 24, 14, 14,
277
- 14, 14, 14, 14, 14, 25, 25, 25,
278
- 25, 25, 25, 25, 25, 25, 25, 25,
279
- 25, 25, 25, 25, 25, 25, 25, 25,
280
- 25, 25, 25, 25, 25, 25, 25, 14,
281
- 14, 14, 14, 14, 14, 25, 25, 25,
282
- 25, 25, 25, 25, 25, 25, 25, 25,
283
- 25, 25, 25, 25, 25, 25, 25, 25,
284
- 25, 25, 25, 25, 25, 25, 25, 14,
233
+ 10, 10, 10, 10, 10, 10, 10, 7,
234
+ 8, 7, 7, 7, 7, 7, 7, 7,
235
+ 7, 7, 7, 7, 7, 7, 7, 16,
236
+ 16, 16, 16, 16, 16, 16, 16, 16,
237
+ 16, 7, 7, 7, 8, 12, 7, 7,
238
+ 16, 16, 16, 16, 16, 16, 16, 16,
239
+ 16, 16, 16, 16, 16, 16, 16, 16,
240
+ 16, 16, 16, 16, 16, 16, 16, 16,
241
+ 16, 16, 7, 7, 7, 7, 7, 7,
242
+ 16, 16, 16, 16, 16, 16, 16, 16,
243
+ 16, 16, 16, 16, 16, 16, 16, 16,
244
+ 16, 16, 16, 16, 16, 16, 16, 16,
245
+ 16, 16, 7, 16, 16, 16, 16, 16,
246
+ 16, 16, 16, 16, 16, 7, 7, 7,
247
+ 7, 12, 7, 7, 16, 16, 16, 16,
248
+ 16, 16, 16, 16, 16, 16, 16, 16,
249
+ 16, 16, 16, 16, 16, 16, 16, 16,
250
+ 16, 16, 16, 16, 16, 16, 7, 7,
251
+ 7, 7, 7, 7, 16, 16, 16, 16,
252
+ 16, 16, 16, 16, 16, 16, 16, 16,
253
+ 16, 16, 16, 16, 16, 16, 16, 16,
254
+ 16, 16, 16, 16, 16, 16, 7, 18,
255
+ 17, 17, 17, 17, 17, 17, 17, 17,
256
+ 17, 17, 17, 17, 17, 17, 17, 17,
257
+ 17, 17, 17, 17, 19, 17, 20, 17,
258
+ 17, 17, 21, 17, 22, 17, 17, 23,
259
+ 23, 23, 23, 23, 23, 23, 23, 23,
260
+ 23, 17, 17, 17, 17, 17, 17, 17,
261
+ 23, 23, 23, 23, 23, 23, 23, 23,
262
+ 23, 23, 23, 23, 23, 23, 23, 23,
263
+ 23, 23, 23, 23, 23, 23, 23, 23,
264
+ 23, 23, 17, 17, 17, 17, 17, 17,
265
+ 23, 23, 23, 23, 23, 23, 23, 23,
266
+ 23, 23, 23, 23, 23, 23, 23, 23,
267
+ 23, 23, 23, 23, 23, 23, 23, 23,
268
+ 23, 23, 17, 24, 24, 24, 24, 24,
269
+ 24, 24, 24, 24, 24, 17, 20, 17,
270
+ 17, 17, 17, 17, 17, 17, 17, 24,
285
271
  24, 24, 24, 24, 24, 24, 24, 24,
286
- 24, 14, 26, 14, 26, 14, 14, 24,
287
- 24, 24, 24, 24, 24, 24, 24, 24,
288
- 24, 14, 14, 14, 14, 20, 14, 27,
289
- 27, 27, 27, 27, 27, 27, 27, 27,
290
- 27, 14, 27, 27, 27, 27, 27, 27,
291
- 27, 27, 27, 27, 14, 14, 14, 14,
292
- 20, 14, 26, 14, 26, 14, 14, 25,
293
- 25, 25, 25, 25, 25, 25, 25, 25,
294
- 25, 14, 14, 14, 14, 20, 14, 14,
295
- 25, 25, 25, 25, 25, 25, 25, 25,
296
- 25, 25, 25, 25, 25, 25, 25, 25,
297
- 25, 25, 25, 25, 25, 25, 25, 25,
298
- 25, 25, 14, 14, 14, 14, 14, 14,
272
+ 24, 17, 24, 25, 25, 25, 25, 25,
273
+ 25, 25, 25, 25, 17, 20, 17, 17,
274
+ 17, 21, 17, 21, 17, 17, 25, 25,
299
275
  25, 25, 25, 25, 25, 25, 25, 25,
300
- 25, 25, 25, 25, 25, 25, 25, 25,
301
- 25, 25, 25, 25, 25, 25, 25, 25,
302
- 25, 25, 14, 29, 28, 28, 28, 30,
303
- 30, 30, 30, 30, 30, 30, 30, 30,
304
- 30, 28, 28, 28, 28, 28, 28, 28,
305
- 28, 28, 28, 28, 28, 28, 28, 28,
306
- 28, 28, 28, 28, 28, 28, 28, 28,
276
+ 17, 20, 17, 17, 17, 21, 17, 21,
277
+ 17, 17, 23, 23, 23, 23, 23, 23,
278
+ 23, 23, 23, 23, 17, 17, 17, 17,
279
+ 17, 17, 17, 23, 23, 23, 23, 23,
280
+ 23, 23, 23, 23, 23, 23, 23, 23,
281
+ 23, 23, 23, 23, 23, 23, 23, 23,
282
+ 23, 23, 23, 23, 23, 17, 17, 17,
283
+ 17, 17, 17, 23, 23, 23, 23, 23,
284
+ 23, 23, 23, 23, 23, 23, 23, 23,
285
+ 23, 23, 23, 23, 23, 23, 23, 23,
286
+ 23, 23, 23, 23, 23, 17, 26, 17,
287
+ 27, 17, 17, 28, 28, 28, 28, 28,
288
+ 28, 28, 28, 28, 28, 17, 17, 17,
289
+ 17, 20, 17, 17, 28, 28, 28, 28,
307
290
  28, 28, 28, 28, 28, 28, 28, 28,
308
291
  28, 28, 28, 28, 28, 28, 28, 28,
292
+ 28, 28, 28, 28, 28, 28, 17, 17,
293
+ 17, 17, 17, 17, 28, 28, 28, 28,
309
294
  28, 28, 28, 28, 28, 28, 28, 28,
310
295
  28, 28, 28, 28, 28, 28, 28, 28,
311
- 28, 28, 28, 28, 28, 28, 28, 28,
312
- 28, 28, 28, 28, 31, 28, 29, 29,
296
+ 28, 28, 28, 28, 28, 28, 17, 29,
313
297
  29, 29, 29, 29, 29, 29, 29, 29,
298
+ 29, 17, 29, 29, 29, 29, 29, 29,
299
+ 29, 29, 29, 29, 17, 17, 17, 17,
300
+ 20, 17, 29, 30, 30, 30, 30, 30,
301
+ 30, 30, 30, 30, 17, 26, 17, 26,
302
+ 17, 17, 30, 30, 30, 30, 30, 30,
303
+ 30, 30, 30, 30, 17, 17, 17, 17,
304
+ 20, 17, 26, 17, 26, 17, 17, 28,
314
305
  28, 28, 28, 28, 28, 28, 28, 28,
306
+ 28, 17, 17, 17, 17, 20, 17, 17,
315
307
  28, 28, 28, 28, 28, 28, 28, 28,
316
308
  28, 28, 28, 28, 28, 28, 28, 28,
317
309
  28, 28, 28, 28, 28, 28, 28, 28,
310
+ 28, 28, 17, 17, 17, 17, 17, 17,
318
311
  28, 28, 28, 28, 28, 28, 28, 28,
319
312
  28, 28, 28, 28, 28, 28, 28, 28,
320
313
  28, 28, 28, 28, 28, 28, 28, 28,
321
- 28, 28, 28, 28, 28, 28, 28, 28,
322
- 28, 28, 28, 31, 28, 32, 33, 34,
323
- 34, 34, 34, 34, 33, 33, 33, 33,
324
- 33, 33, 33, 33, 33, 33, 33, 33,
325
- 33, 33, 33, 33, 33, 33, 34, 33,
326
- 33, 33, 33, 33, 33, 33, 33, 33,
327
- 33, 33, 33, 33, 33, 33, 33, 33,
328
- 33, 33, 33, 33, 33, 33, 33, 33,
329
- 33, 33, 33, 33, 33, 33, 33, 35,
330
- 34, 34, 34, 34, 34, 34, 34, 34,
331
- 34, 34, 34, 34, 34, 34, 34, 34,
332
- 34, 34, 34, 34, 34, 34, 34, 34,
333
- 34, 33, 33, 33, 36, 34, 33, 35,
334
- 34, 34, 34, 34, 34, 34, 34, 34,
335
- 34, 34, 34, 34, 34, 34, 34, 34,
336
- 34, 34, 34, 34, 34, 34, 34, 34,
337
- 34, 33, 34, 34, 34, 34, 34, 33,
338
- 33, 33, 33, 33, 33, 33, 33, 33,
339
- 33, 33, 33, 33, 33, 33, 33, 33,
340
- 33, 34, 33, 33, 33, 33, 33, 33,
341
- 33, 33, 33, 33, 33, 33, 33, 33,
342
- 33, 33, 33, 33, 33, 33, 33, 33,
343
- 33, 33, 33, 33, 33, 33, 33, 33,
344
- 33, 33, 34, 34, 34, 34, 34, 34,
345
- 34, 34, 34, 34, 34, 34, 34, 34,
346
- 34, 34, 34, 34, 34, 34, 34, 34,
347
- 34, 34, 34, 34, 33, 33, 33, 33,
348
- 34, 33, 34, 34, 34, 34, 34, 34,
349
- 34, 34, 34, 34, 34, 34, 34, 34,
350
- 34, 34, 34, 34, 34, 34, 34, 34,
351
- 34, 34, 34, 34, 33, 33, 37, 33,
352
- 34, 34, 34, 34, 34, 33, 33, 33,
353
- 33, 33, 33, 33, 33, 33, 33, 33,
354
- 33, 33, 33, 33, 33, 33, 33, 34,
355
- 33, 33, 33, 33, 33, 33, 33, 33,
356
- 33, 33, 33, 33, 33, 33, 33, 33,
357
- 33, 33, 33, 33, 33, 33, 33, 33,
358
- 33, 33, 33, 33, 33, 33, 33, 33,
359
- 34, 34, 34, 34, 34, 34, 38, 34,
360
- 34, 34, 34, 34, 34, 34, 34, 34,
361
- 34, 34, 34, 34, 34, 34, 34, 34,
362
- 34, 34, 33, 33, 33, 33, 34, 33,
363
- 34, 34, 34, 34, 34, 34, 38, 34,
364
- 34, 34, 34, 34, 34, 34, 34, 34,
365
- 34, 34, 34, 34, 34, 34, 34, 34,
366
- 34, 34, 33, 33, 37, 33, 34, 34,
367
- 34, 34, 34, 33, 33, 33, 33, 33,
368
- 33, 33, 33, 33, 33, 33, 33, 33,
369
- 33, 33, 33, 33, 33, 34, 33, 33,
370
- 33, 33, 33, 33, 33, 33, 33, 33,
371
- 33, 33, 33, 33, 33, 33, 33, 33,
372
- 33, 33, 33, 33, 33, 33, 33, 33,
373
- 33, 33, 33, 33, 33, 33, 34, 34,
374
- 34, 34, 39, 34, 34, 34, 34, 34,
375
- 34, 34, 34, 34, 34, 34, 34, 34,
376
- 34, 34, 34, 34, 34, 34, 34, 34,
377
- 33, 33, 33, 33, 34, 33, 34, 34,
378
- 34, 34, 39, 34, 34, 34, 34, 34,
379
- 34, 34, 34, 34, 34, 34, 34, 34,
380
- 34, 34, 34, 34, 34, 34, 34, 34,
381
- 33, 33, 37, 33, 34, 34, 34, 34,
382
- 34, 33, 33, 33, 33, 33, 33, 33,
383
- 33, 33, 33, 33, 33, 33, 33, 33,
384
- 33, 33, 33, 34, 33, 33, 33, 33,
385
- 33, 33, 33, 33, 33, 33, 33, 33,
386
- 33, 33, 33, 33, 33, 33, 33, 33,
387
- 33, 33, 33, 33, 33, 33, 33, 33,
388
- 40, 33, 33, 33, 34, 34, 34, 34,
389
- 34, 34, 34, 34, 34, 34, 34, 34,
390
- 34, 34, 34, 34, 34, 34, 34, 34,
391
- 34, 34, 34, 34, 34, 34, 33, 33,
392
- 33, 33, 34, 33, 34, 34, 34, 34,
393
- 34, 34, 34, 34, 34, 34, 34, 34,
394
- 34, 34, 34, 34, 34, 34, 34, 34,
395
- 34, 34, 34, 34, 34, 34, 33, 33,
396
- 37, 33, 41, 42, 43, 42, 43, 44,
397
- 33, 45, 33, 46, 33, 37, 33, 47,
398
- 33, 46, 46, 33, 48, 33, 46, 46,
399
- 46, 33, 49, 33, 46, 33, 34, 34,
400
- 34, 34, 34, 33, 33, 33, 33, 33,
401
- 33, 33, 33, 33, 33, 33, 33, 33,
402
- 33, 33, 33, 33, 33, 34, 33, 33,
403
- 33, 33, 33, 33, 33, 33, 33, 33,
404
- 33, 33, 33, 33, 33, 33, 33, 33,
405
- 33, 33, 33, 33, 33, 33, 33, 33,
406
- 33, 33, 33, 33, 33, 33, 35, 34,
407
- 34, 34, 34, 34, 34, 34, 34, 34,
408
- 34, 34, 34, 34, 34, 34, 34, 34,
409
- 34, 34, 34, 34, 34, 34, 34, 34,
410
- 33, 33, 33, 33, 34, 33, 35, 34,
411
- 34, 34, 34, 34, 34, 34, 34, 34,
412
- 34, 34, 34, 34, 34, 34, 34, 34,
413
- 34, 34, 34, 34, 34, 34, 34, 34,
414
- 33, 51, 51, 51, 51, 51, 51, 51,
415
- 51, 51, 51, 51, 51, 51, 51, 51,
416
- 51, 51, 51, 51, 51, 51, 51, 51,
417
- 51, 51, 51, 51, 51, 51, 51, 51,
418
- 51, 51, 51, 51, 51, 51, 51, 51,
419
- 51, 51, 51, 51, 51, 51, 51, 51,
420
- 51, 51, 51, 51, 51, 51, 51, 51,
421
- 51, 51, 51, 51, 51, 51, 51, 51,
422
- 51, 50, 52, 52, 52, 52, 52, 52,
423
- 52, 52, 52, 52, 52, 52, 52, 52,
424
- 52, 52, 52, 52, 52, 52, 52, 52,
425
- 52, 52, 52, 52, 52, 52, 52, 52,
426
- 52, 52, 52, 52, 52, 52, 52, 52,
427
- 52, 52, 52, 52, 52, 52, 52, 52,
428
- 52, 52, 52, 52, 52, 52, 52, 52,
429
- 52, 52, 52, 52, 52, 52, 52, 52,
430
- 52, 52, 50, 53, 53, 53, 53, 53,
431
- 53, 53, 53, 53, 53, 53, 53, 53,
432
- 53, 53, 53, 53, 53, 53, 53, 53,
433
- 53, 53, 53, 53, 53, 53, 53, 53,
434
- 53, 53, 53, 53, 53, 53, 53, 53,
435
- 53, 53, 53, 53, 53, 53, 53, 53,
436
- 53, 53, 53, 53, 53, 53, 53, 53,
437
- 53, 53, 53, 53, 53, 53, 53, 53,
438
- 53, 53, 53, 50, 54, 54, 54, 54,
314
+ 28, 28, 17, 32, 31, 31, 31, 33,
315
+ 33, 33, 33, 33, 33, 33, 33, 33,
316
+ 33, 31, 31, 31, 31, 31, 31, 31,
317
+ 31, 31, 31, 31, 31, 31, 31, 31,
318
+ 31, 31, 31, 31, 31, 31, 31, 31,
319
+ 31, 31, 31, 31, 31, 31, 31, 31,
320
+ 31, 31, 31, 31, 31, 31, 31, 31,
321
+ 31, 31, 31, 31, 31, 31, 31, 31,
322
+ 31, 31, 31, 31, 31, 31, 31, 31,
323
+ 31, 31, 31, 31, 31, 31, 31, 31,
324
+ 31, 31, 31, 31, 34, 31, 32, 32,
325
+ 32, 32, 32, 32, 32, 32, 32, 32,
326
+ 31, 31, 31, 31, 31, 31, 31, 31,
327
+ 31, 31, 31, 31, 31, 31, 31, 31,
328
+ 31, 31, 31, 31, 31, 31, 31, 31,
329
+ 31, 31, 31, 31, 31, 31, 31, 31,
330
+ 31, 31, 31, 31, 31, 31, 31, 31,
331
+ 31, 31, 31, 31, 31, 31, 31, 31,
332
+ 31, 31, 31, 31, 31, 31, 31, 31,
333
+ 31, 31, 31, 31, 31, 31, 31, 31,
334
+ 31, 31, 31, 34, 31, 35, 36, 37,
335
+ 37, 37, 37, 37, 36, 36, 36, 36,
336
+ 36, 36, 36, 36, 36, 36, 36, 36,
337
+ 36, 36, 36, 36, 36, 36, 37, 36,
338
+ 36, 36, 36, 36, 36, 36, 36, 36,
339
+ 36, 36, 36, 36, 36, 36, 36, 36,
340
+ 36, 36, 36, 36, 36, 36, 36, 36,
341
+ 36, 36, 36, 36, 36, 36, 36, 38,
342
+ 37, 37, 37, 37, 37, 37, 37, 37,
343
+ 37, 37, 37, 37, 37, 37, 37, 37,
344
+ 37, 37, 37, 37, 37, 37, 37, 37,
345
+ 37, 36, 36, 36, 39, 37, 36, 38,
346
+ 37, 37, 37, 37, 37, 37, 37, 37,
347
+ 37, 37, 37, 37, 37, 37, 37, 37,
348
+ 37, 37, 37, 37, 37, 37, 37, 37,
349
+ 37, 36, 37, 37, 37, 37, 37, 36,
350
+ 36, 36, 36, 36, 36, 36, 36, 36,
351
+ 36, 36, 36, 36, 36, 36, 36, 36,
352
+ 36, 37, 36, 36, 36, 36, 36, 36,
353
+ 36, 36, 36, 36, 36, 36, 36, 36,
354
+ 36, 36, 36, 36, 36, 36, 36, 36,
355
+ 36, 36, 36, 36, 36, 36, 36, 36,
356
+ 36, 36, 37, 37, 37, 37, 37, 37,
357
+ 37, 37, 37, 37, 37, 37, 37, 37,
358
+ 37, 37, 37, 37, 37, 37, 37, 37,
359
+ 37, 37, 37, 37, 36, 36, 36, 36,
360
+ 37, 36, 37, 37, 37, 37, 37, 37,
361
+ 37, 37, 37, 37, 37, 37, 37, 37,
362
+ 37, 37, 37, 37, 37, 37, 37, 37,
363
+ 37, 37, 37, 37, 36, 36, 40, 36,
364
+ 37, 37, 37, 37, 37, 36, 36, 36,
365
+ 36, 36, 36, 36, 36, 36, 36, 36,
366
+ 36, 36, 36, 36, 36, 36, 36, 37,
367
+ 36, 36, 36, 36, 36, 36, 36, 36,
368
+ 36, 36, 36, 36, 36, 36, 36, 36,
369
+ 36, 36, 36, 36, 36, 36, 36, 36,
370
+ 36, 36, 36, 36, 36, 36, 36, 36,
371
+ 37, 37, 37, 37, 37, 37, 41, 37,
372
+ 37, 37, 37, 37, 37, 37, 37, 37,
373
+ 37, 37, 37, 37, 37, 37, 37, 37,
374
+ 37, 37, 36, 36, 36, 36, 37, 36,
375
+ 37, 37, 37, 37, 37, 37, 41, 37,
376
+ 37, 37, 37, 37, 37, 37, 37, 37,
377
+ 37, 37, 37, 37, 37, 37, 37, 37,
378
+ 37, 37, 36, 36, 40, 36, 37, 37,
379
+ 37, 37, 37, 36, 36, 36, 36, 36,
380
+ 36, 36, 36, 36, 36, 36, 36, 36,
381
+ 36, 36, 36, 36, 36, 37, 36, 36,
382
+ 36, 36, 36, 36, 36, 36, 36, 36,
383
+ 36, 36, 36, 36, 36, 36, 36, 36,
384
+ 36, 36, 36, 36, 36, 36, 36, 36,
385
+ 36, 36, 36, 36, 36, 36, 37, 37,
386
+ 37, 37, 42, 37, 37, 37, 37, 37,
387
+ 37, 37, 37, 37, 37, 37, 37, 37,
388
+ 37, 37, 37, 37, 37, 37, 37, 37,
389
+ 36, 36, 36, 36, 37, 36, 37, 37,
390
+ 37, 37, 42, 37, 37, 37, 37, 37,
391
+ 37, 37, 37, 37, 37, 37, 37, 37,
392
+ 37, 37, 37, 37, 37, 37, 37, 37,
393
+ 36, 36, 40, 36, 37, 37, 37, 37,
394
+ 37, 36, 36, 36, 36, 36, 36, 36,
395
+ 36, 36, 36, 36, 36, 36, 36, 36,
396
+ 36, 36, 36, 37, 36, 36, 36, 36,
397
+ 36, 36, 36, 36, 36, 36, 36, 36,
398
+ 36, 36, 36, 36, 36, 36, 36, 36,
399
+ 36, 36, 36, 36, 36, 36, 36, 36,
400
+ 43, 36, 36, 36, 37, 37, 37, 37,
401
+ 37, 37, 37, 37, 37, 37, 37, 37,
402
+ 37, 37, 37, 37, 37, 37, 37, 37,
403
+ 37, 37, 37, 37, 37, 37, 36, 36,
404
+ 36, 36, 37, 36, 37, 37, 37, 37,
405
+ 37, 37, 37, 37, 37, 37, 37, 37,
406
+ 37, 37, 37, 37, 37, 37, 37, 37,
407
+ 37, 37, 37, 37, 37, 37, 36, 36,
408
+ 40, 36, 44, 45, 46, 45, 46, 47,
409
+ 36, 48, 36, 49, 36, 40, 36, 50,
410
+ 36, 49, 49, 36, 51, 36, 49, 49,
411
+ 49, 36, 52, 36, 49, 36, 37, 37,
412
+ 37, 37, 37, 36, 36, 36, 36, 36,
413
+ 36, 36, 36, 36, 36, 36, 36, 36,
414
+ 36, 36, 36, 36, 36, 37, 36, 36,
415
+ 36, 36, 36, 36, 36, 36, 36, 36,
416
+ 36, 36, 36, 36, 36, 36, 36, 36,
417
+ 36, 36, 36, 36, 36, 36, 36, 36,
418
+ 36, 36, 36, 36, 36, 36, 38, 37,
419
+ 37, 37, 37, 37, 37, 37, 37, 37,
420
+ 37, 37, 37, 37, 37, 37, 37, 37,
421
+ 37, 37, 37, 37, 37, 37, 37, 37,
422
+ 36, 36, 36, 36, 37, 36, 38, 37,
423
+ 37, 37, 37, 37, 37, 37, 37, 37,
424
+ 37, 37, 37, 37, 37, 37, 37, 37,
425
+ 37, 37, 37, 37, 37, 37, 37, 37,
426
+ 36, 54, 54, 54, 54, 54, 54, 54,
439
427
  54, 54, 54, 54, 54, 54, 54, 54,
440
428
  54, 54, 54, 54, 54, 54, 54, 54,
441
429
  54, 54, 54, 54, 54, 54, 54, 54,
@@ -443,7 +431,7 @@ self._re_scanner_indicies = [
443
431
  54, 54, 54, 54, 54, 54, 54, 54,
444
432
  54, 54, 54, 54, 54, 54, 54, 54,
445
433
  54, 54, 54, 54, 54, 54, 54, 54,
446
- 54, 54, 54, 54, 50, 55, 55, 55,
434
+ 54, 53, 55, 55, 55, 55, 55, 55,
447
435
  55, 55, 55, 55, 55, 55, 55, 55,
448
436
  55, 55, 55, 55, 55, 55, 55, 55,
449
437
  55, 55, 55, 55, 55, 55, 55, 55,
@@ -451,7 +439,7 @@ self._re_scanner_indicies = [
451
439
  55, 55, 55, 55, 55, 55, 55, 55,
452
440
  55, 55, 55, 55, 55, 55, 55, 55,
453
441
  55, 55, 55, 55, 55, 55, 55, 55,
454
- 55, 55, 55, 55, 55, 50, 56, 56,
442
+ 55, 55, 53, 56, 56, 56, 56, 56,
455
443
  56, 56, 56, 56, 56, 56, 56, 56,
456
444
  56, 56, 56, 56, 56, 56, 56, 56,
457
445
  56, 56, 56, 56, 56, 56, 56, 56,
@@ -459,89 +447,88 @@ self._re_scanner_indicies = [
459
447
  56, 56, 56, 56, 56, 56, 56, 56,
460
448
  56, 56, 56, 56, 56, 56, 56, 56,
461
449
  56, 56, 56, 56, 56, 56, 56, 56,
462
- 56, 56, 56, 56, 56, 56, 50, 57,
450
+ 56, 56, 56, 53, 57, 57, 57, 57,
463
451
  57, 57, 57, 57, 57, 57, 57, 57,
464
- 57, 50, 50, 50, 50, 50, 50, 50,
465
452
  57, 57, 57, 57, 57, 57, 57, 57,
466
453
  57, 57, 57, 57, 57, 57, 57, 57,
467
454
  57, 57, 57, 57, 57, 57, 57, 57,
468
- 57, 57, 50, 50, 50, 50, 50, 50,
469
455
  57, 57, 57, 57, 57, 57, 57, 57,
470
456
  57, 57, 57, 57, 57, 57, 57, 57,
471
457
  57, 57, 57, 57, 57, 57, 57, 57,
472
- 57, 57, 50, 60, 59, 59, 59, 59,
458
+ 57, 57, 57, 57, 53, 58, 58, 58,
459
+ 58, 58, 58, 58, 58, 58, 58, 58,
460
+ 58, 58, 58, 58, 58, 58, 58, 58,
461
+ 58, 58, 58, 58, 58, 58, 58, 58,
462
+ 58, 58, 58, 58, 58, 58, 58, 58,
463
+ 58, 58, 58, 58, 58, 58, 58, 58,
464
+ 58, 58, 58, 58, 58, 58, 58, 58,
465
+ 58, 58, 58, 58, 58, 58, 58, 58,
466
+ 58, 58, 58, 58, 58, 53, 59, 59,
473
467
  59, 59, 59, 59, 59, 59, 59, 59,
474
- 59, 59, 59, 59, 59, 59, 59, 60,
475
- 60, 60, 60, 60, 60, 60, 60, 60,
476
- 60, 60, 60, 60, 60, 60, 60, 60,
477
- 60, 60, 60, 60, 60, 60, 60, 60,
478
- 60, 59, 59, 59, 59, 59, 59, 60,
479
- 60, 60, 60, 60, 60, 60, 60, 60,
480
- 60, 60, 60, 60, 60, 60, 60, 60,
481
- 60, 60, 60, 60, 60, 60, 60, 60,
482
- 60, 59, 60, 61, 59, 59, 59, 59,
483
468
  59, 59, 59, 59, 59, 59, 59, 59,
484
- 59, 59, 59, 59, 59, 59, 60, 60,
469
+ 59, 59, 59, 59, 59, 59, 59, 59,
470
+ 59, 59, 59, 59, 59, 59, 59, 59,
471
+ 59, 59, 59, 59, 59, 59, 59, 59,
472
+ 59, 59, 59, 59, 59, 59, 59, 59,
473
+ 59, 59, 59, 59, 59, 59, 59, 59,
474
+ 59, 59, 59, 59, 59, 59, 53, 60,
475
+ 60, 60, 60, 60, 60, 60, 60, 60,
476
+ 60, 53, 53, 53, 53, 53, 53, 53,
485
477
  60, 60, 60, 60, 60, 60, 60, 60,
486
478
  60, 60, 60, 60, 60, 60, 60, 60,
487
479
  60, 60, 60, 60, 60, 60, 60, 60,
488
- 59, 59, 59, 59, 59, 59, 60, 60,
480
+ 60, 60, 53, 53, 53, 53, 53, 53,
489
481
  60, 60, 60, 60, 60, 60, 60, 60,
490
482
  60, 60, 60, 60, 60, 60, 60, 60,
491
483
  60, 60, 60, 60, 60, 60, 60, 60,
492
- 59, 62, 59, 63, 59, 59, 64, 65,
493
- 66, 67, 59, 59, 68, 59, 59, 59,
494
- 59, 69, 59, 59, 59, 70, 59, 59,
495
- 71, 59, 72, 59, 73, 74, 59, 64,
496
- 65, 66, 67, 59, 59, 68, 59, 59,
497
- 59, 59, 69, 59, 59, 59, 70, 59,
498
- 59, 71, 59, 72, 59, 73, 74, 59,
499
- 75, 59, 59, 59, 59, 59, 59, 76,
500
- 59, 77, 59, 78, 59, 79, 59, 80,
501
- 59, 81, 59, 82, 59, 83, 59, 80,
502
- 59, 84, 59, 85, 59, 80, 59, 86,
503
- 59, 87, 59, 88, 59, 80, 59, 89,
504
- 59, 90, 59, 91, 59, 80, 59, 92,
505
- 59, 93, 59, 94, 59, 80, 59, 95,
506
- 59, 96, 59, 97, 59, 80, 59, 98,
507
- 59, 99, 59, 100, 59, 80, 59, 101,
508
- 59, 59, 102, 59, 103, 59, 94, 59,
509
- 104, 59, 94, 59, 105, 59, 106, 59,
510
- 107, 59, 80, 59, 108, 59, 99, 59,
511
- 109, 59, 110, 59, 80, 59, 67, 59,
512
- 111, 111, 111, 111, 111, 111, 111, 111,
513
- 111, 111, 111, 111, 111, 111, 111, 111,
514
- 111, 111, 111, 111, 111, 111, 111, 111,
515
- 111, 111, 59, 59, 59, 59, 59, 59,
516
- 111, 111, 111, 111, 111, 111, 111, 111,
517
- 111, 111, 111, 111, 111, 111, 111, 111,
518
- 111, 111, 111, 111, 111, 111, 111, 111,
519
- 111, 111, 59, 112, 59, 113, 59, 115,
520
- 115, 115, 115, 115, 115, 115, 115, 115,
521
- 115, 115, 115, 115, 115, 115, 115, 115,
522
- 115, 115, 115, 115, 115, 115, 115, 115,
523
- 115, 115, 115, 115, 115, 115, 115, 115,
524
- 115, 115, 115, 115, 115, 115, 115, 115,
525
- 115, 115, 115, 115, 115, 115, 115, 115,
526
- 115, 115, 115, 115, 115, 115, 115, 115,
527
- 115, 115, 115, 115, 115, 115, 115, 114,
528
- 116, 116, 116, 116, 116, 116, 116, 116,
529
- 116, 116, 116, 116, 116, 116, 116, 116,
530
- 116, 116, 116, 116, 116, 116, 116, 116,
531
- 116, 116, 116, 116, 116, 116, 116, 116,
532
- 116, 116, 116, 116, 116, 116, 116, 116,
533
- 116, 116, 116, 116, 116, 116, 116, 116,
534
- 116, 116, 116, 116, 116, 116, 116, 116,
535
- 116, 116, 116, 116, 116, 116, 116, 116,
536
- 114, 117, 117, 117, 117, 117, 117, 117,
537
- 117, 117, 117, 117, 117, 117, 117, 117,
538
- 117, 117, 117, 117, 117, 117, 117, 117,
539
- 117, 117, 117, 117, 117, 117, 117, 117,
540
- 117, 117, 117, 117, 117, 117, 117, 117,
541
- 117, 117, 117, 117, 117, 117, 117, 117,
542
- 117, 117, 117, 117, 117, 117, 117, 117,
543
- 117, 117, 117, 117, 117, 117, 117, 117,
544
- 117, 114, 118, 118, 118, 118, 118, 118,
484
+ 60, 60, 53, 63, 62, 62, 62, 62,
485
+ 62, 62, 62, 62, 62, 62, 62, 62,
486
+ 62, 62, 62, 62, 62, 62, 62, 63,
487
+ 63, 63, 63, 63, 63, 63, 63, 63,
488
+ 63, 63, 63, 63, 63, 63, 63, 63,
489
+ 63, 63, 63, 63, 63, 63, 63, 63,
490
+ 63, 62, 62, 62, 62, 62, 62, 63,
491
+ 63, 63, 63, 63, 63, 63, 63, 63,
492
+ 63, 63, 63, 63, 63, 63, 63, 63,
493
+ 63, 63, 63, 63, 63, 63, 63, 63,
494
+ 63, 62, 63, 64, 62, 62, 62, 62,
495
+ 62, 62, 62, 62, 62, 62, 62, 62,
496
+ 62, 62, 62, 62, 62, 62, 63, 63,
497
+ 63, 63, 63, 63, 63, 63, 63, 63,
498
+ 63, 63, 63, 63, 63, 63, 63, 63,
499
+ 63, 63, 63, 63, 63, 63, 63, 63,
500
+ 62, 62, 62, 62, 62, 62, 63, 63,
501
+ 63, 63, 63, 63, 63, 63, 63, 63,
502
+ 63, 63, 63, 63, 63, 63, 63, 63,
503
+ 63, 63, 63, 63, 63, 63, 63, 63,
504
+ 62, 65, 62, 66, 62, 62, 67, 68,
505
+ 69, 70, 62, 62, 71, 62, 62, 62,
506
+ 62, 72, 62, 62, 62, 73, 62, 62,
507
+ 74, 62, 75, 62, 76, 77, 62, 67,
508
+ 68, 69, 70, 62, 62, 71, 62, 62,
509
+ 62, 62, 72, 62, 62, 62, 73, 62,
510
+ 62, 74, 62, 75, 62, 76, 77, 62,
511
+ 78, 62, 62, 62, 62, 62, 62, 79,
512
+ 62, 80, 62, 81, 62, 82, 62, 83,
513
+ 62, 84, 62, 85, 62, 86, 62, 83,
514
+ 62, 87, 62, 88, 62, 83, 62, 89,
515
+ 62, 90, 62, 91, 62, 83, 62, 92,
516
+ 62, 93, 62, 94, 62, 83, 62, 95,
517
+ 62, 96, 62, 97, 62, 83, 62, 98,
518
+ 62, 99, 62, 100, 62, 83, 62, 101,
519
+ 62, 102, 62, 103, 62, 83, 62, 104,
520
+ 62, 62, 105, 62, 106, 62, 97, 62,
521
+ 107, 62, 97, 62, 108, 62, 109, 62,
522
+ 110, 62, 83, 62, 111, 62, 102, 62,
523
+ 112, 62, 113, 62, 83, 62, 70, 62,
524
+ 114, 114, 114, 114, 114, 114, 114, 114,
525
+ 114, 114, 114, 114, 114, 114, 114, 114,
526
+ 114, 114, 114, 114, 114, 114, 114, 114,
527
+ 114, 114, 62, 62, 62, 62, 62, 62,
528
+ 114, 114, 114, 114, 114, 114, 114, 114,
529
+ 114, 114, 114, 114, 114, 114, 114, 114,
530
+ 114, 114, 114, 114, 114, 114, 114, 114,
531
+ 114, 114, 62, 115, 62, 116, 62, 118,
545
532
  118, 118, 118, 118, 118, 118, 118, 118,
546
533
  118, 118, 118, 118, 118, 118, 118, 118,
547
534
  118, 118, 118, 118, 118, 118, 118, 118,
@@ -549,7 +536,7 @@ self._re_scanner_indicies = [
549
536
  118, 118, 118, 118, 118, 118, 118, 118,
550
537
  118, 118, 118, 118, 118, 118, 118, 118,
551
538
  118, 118, 118, 118, 118, 118, 118, 118,
552
- 118, 118, 114, 119, 119, 119, 119, 119,
539
+ 118, 118, 118, 118, 118, 118, 118, 117,
553
540
  119, 119, 119, 119, 119, 119, 119, 119,
554
541
  119, 119, 119, 119, 119, 119, 119, 119,
555
542
  119, 119, 119, 119, 119, 119, 119, 119,
@@ -557,7 +544,8 @@ self._re_scanner_indicies = [
557
544
  119, 119, 119, 119, 119, 119, 119, 119,
558
545
  119, 119, 119, 119, 119, 119, 119, 119,
559
546
  119, 119, 119, 119, 119, 119, 119, 119,
560
- 119, 119, 119, 114, 120, 120, 120, 120,
547
+ 119, 119, 119, 119, 119, 119, 119, 119,
548
+ 117, 120, 120, 120, 120, 120, 120, 120,
561
549
  120, 120, 120, 120, 120, 120, 120, 120,
562
550
  120, 120, 120, 120, 120, 120, 120, 120,
563
551
  120, 120, 120, 120, 120, 120, 120, 120,
@@ -565,227 +553,182 @@ self._re_scanner_indicies = [
565
553
  120, 120, 120, 120, 120, 120, 120, 120,
566
554
  120, 120, 120, 120, 120, 120, 120, 120,
567
555
  120, 120, 120, 120, 120, 120, 120, 120,
568
- 120, 120, 120, 120, 114, 122, 121, 123,
569
- 121, 124, 124, 124, 124, 124, 124, 124,
570
- 124, 124, 124, 121, 121, 121, 121, 121,
571
- 121, 121, 124, 124, 124, 124, 124, 124,
556
+ 120, 117, 121, 121, 121, 121, 121, 121,
572
557
  121, 121, 121, 121, 121, 121, 121, 121,
573
558
  121, 121, 121, 121, 121, 121, 121, 121,
574
559
  121, 121, 121, 121, 121, 121, 121, 121,
575
- 121, 121, 124, 124, 124, 124, 124, 124,
576
- 121, 125, 33, 126, 126, 126, 126, 126,
577
- 126, 126, 126, 126, 126, 126, 126, 126,
578
- 126, 126, 126, 126, 126, 126, 126, 126,
579
- 126, 126, 126, 126, 126, 33, 33, 33,
580
- 33, 33, 33, 126, 126, 126, 126, 126,
581
- 126, 126, 126, 126, 126, 126, 126, 126,
582
- 126, 126, 126, 126, 126, 126, 126, 126,
583
- 126, 126, 126, 126, 126, 33, 127, 33,
584
- 128, 128, 128, 128, 128, 128, 128, 128,
585
- 128, 128, 128, 128, 128, 128, 128, 128,
586
- 128, 128, 128, 128, 128, 128, 128, 128,
587
- 128, 128, 33, 129, 33, 33, 33, 33,
588
- 128, 128, 128, 128, 128, 128, 128, 128,
589
- 128, 128, 128, 128, 128, 128, 128, 128,
590
- 128, 128, 128, 128, 128, 128, 128, 128,
591
- 128, 128, 33, 130, 33, 33, 33, 33,
592
- 33, 33, 33, 33, 33, 33, 33, 33,
593
- 33, 33, 33, 33, 33, 33, 33, 33,
594
- 33, 33, 33, 33, 33, 33, 33, 33,
595
- 33, 33, 33, 131, 33, 131, 33, 128,
596
- 128, 128, 128, 128, 128, 128, 128, 128,
597
- 128, 128, 128, 128, 128, 128, 128, 128,
598
- 128, 128, 128, 128, 128, 128, 128, 128,
599
- 128, 33, 33, 33, 33, 33, 33, 128,
600
- 128, 128, 128, 128, 128, 128, 128, 128,
601
- 128, 128, 128, 128, 128, 128, 128, 128,
602
- 128, 128, 128, 128, 128, 128, 128, 128,
603
- 128, 33, 132, 132, 132, 132, 132, 132,
604
- 132, 132, 132, 132, 33, 33, 33, 33,
605
- 33, 33, 33, 132, 132, 132, 132, 132,
606
- 132, 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, 132, 132, 132, 132, 132,
610
- 132, 33, 33, 33, 33, 33, 33, 33,
611
- 33, 33, 33, 33, 33, 33, 33, 33,
612
- 33, 33, 33, 33, 33, 133, 33, 134,
613
- 134, 134, 134, 134, 134, 134, 134, 134,
614
- 134, 33, 33, 33, 33, 33, 33, 33,
615
- 134, 134, 134, 134, 134, 134, 33, 33,
616
- 33, 33, 33, 33, 33, 33, 33, 33,
617
- 33, 33, 33, 33, 33, 33, 33, 33,
618
- 33, 33, 33, 33, 33, 33, 33, 33,
619
- 134, 134, 134, 134, 134, 134, 33, 135,
620
- 135, 135, 135, 135, 135, 135, 135, 135,
621
- 135, 33, 33, 33, 33, 33, 33, 33,
622
- 135, 135, 135, 135, 135, 135, 33, 33,
623
- 33, 33, 33, 33, 33, 33, 33, 33,
624
- 33, 33, 33, 33, 33, 33, 33, 33,
625
- 33, 33, 33, 33, 33, 33, 33, 33,
626
- 135, 135, 135, 135, 135, 135, 33, 136,
560
+ 121, 121, 121, 121, 121, 121, 121, 121,
561
+ 121, 121, 121, 121, 121, 121, 121, 121,
562
+ 121, 121, 121, 121, 121, 121, 121, 121,
563
+ 121, 121, 121, 121, 121, 121, 121, 121,
564
+ 121, 121, 117, 122, 122, 122, 122, 122,
565
+ 122, 122, 122, 122, 122, 122, 122, 122,
566
+ 122, 122, 122, 122, 122, 122, 122, 122,
567
+ 122, 122, 122, 122, 122, 122, 122, 122,
568
+ 122, 122, 122, 122, 122, 122, 122, 122,
569
+ 122, 122, 122, 122, 122, 122, 122, 122,
570
+ 122, 122, 122, 122, 122, 122, 122, 122,
571
+ 122, 122, 122, 122, 122, 122, 122, 122,
572
+ 122, 122, 122, 117, 123, 123, 123, 123,
573
+ 123, 123, 123, 123, 123, 123, 123, 123,
574
+ 123, 123, 123, 123, 123, 123, 123, 123,
575
+ 123, 123, 123, 123, 123, 123, 123, 123,
576
+ 123, 123, 123, 123, 123, 123, 123, 123,
577
+ 123, 123, 123, 123, 123, 123, 123, 123,
578
+ 123, 123, 123, 123, 123, 123, 123, 123,
579
+ 123, 123, 123, 123, 123, 123, 123, 123,
580
+ 123, 123, 123, 123, 117, 125, 124, 126,
581
+ 124, 127, 127, 127, 127, 127, 127, 127,
582
+ 127, 127, 127, 124, 124, 124, 124, 124,
583
+ 124, 124, 127, 127, 127, 127, 127, 127,
584
+ 124, 124, 124, 124, 124, 124, 124, 124,
585
+ 124, 124, 124, 124, 124, 124, 124, 124,
586
+ 124, 124, 124, 124, 124, 124, 124, 124,
587
+ 124, 124, 127, 127, 127, 127, 127, 127,
588
+ 124, 128, 36, 129, 36, 132, 131, 131,
589
+ 131, 131, 131, 131, 131, 131, 131, 131,
590
+ 131, 131, 131, 131, 131, 131, 131, 131,
591
+ 131, 131, 131, 131, 131, 131, 131, 131,
592
+ 131, 131, 131, 131, 131, 133, 131, 133,
593
+ 131, 134, 134, 134, 134, 134, 134, 134,
594
+ 134, 134, 134, 36, 36, 36, 36, 36,
595
+ 36, 36, 134, 134, 134, 134, 134, 134,
596
+ 36, 36, 36, 36, 36, 36, 36, 36,
597
+ 36, 36, 36, 36, 36, 36, 36, 36,
598
+ 36, 36, 36, 36, 36, 36, 36, 36,
599
+ 36, 36, 134, 134, 134, 134, 134, 134,
600
+ 36, 36, 36, 36, 36, 36, 36, 36,
601
+ 36, 36, 36, 36, 36, 36, 36, 36,
602
+ 36, 36, 36, 36, 135, 36, 136, 136,
627
603
  136, 136, 136, 136, 136, 136, 136, 136,
628
- 136, 33, 33, 33, 33, 33, 33, 33,
629
- 136, 136, 136, 136, 136, 136, 33, 33,
630
- 33, 33, 33, 33, 33, 33, 33, 33,
631
- 33, 33, 33, 33, 33, 33, 33, 33,
632
- 33, 33, 33, 33, 33, 33, 33, 33,
633
- 136, 136, 136, 136, 136, 136, 33, 137,
604
+ 36, 36, 36, 36, 36, 36, 36, 136,
605
+ 136, 136, 136, 136, 136, 36, 36, 36,
606
+ 36, 36, 36, 36, 36, 36, 36, 36,
607
+ 36, 36, 36, 36, 36, 36, 36, 36,
608
+ 36, 36, 36, 36, 36, 36, 36, 136,
609
+ 136, 136, 136, 136, 136, 36, 137, 137,
634
610
  137, 137, 137, 137, 137, 137, 137, 137,
635
- 137, 33, 33, 33, 33, 33, 33, 33,
636
- 137, 137, 137, 137, 137, 137, 33, 33,
637
- 33, 33, 33, 33, 33, 33, 33, 33,
638
- 33, 33, 33, 33, 33, 33, 33, 33,
639
- 33, 33, 33, 33, 33, 33, 33, 33,
640
- 137, 137, 137, 137, 137, 137, 33, 138,
611
+ 36, 36, 36, 36, 36, 36, 36, 137,
612
+ 137, 137, 137, 137, 137, 36, 36, 36,
613
+ 36, 36, 36, 36, 36, 36, 36, 36,
614
+ 36, 36, 36, 36, 36, 36, 36, 36,
615
+ 36, 36, 36, 36, 36, 36, 36, 137,
616
+ 137, 137, 137, 137, 137, 36, 138, 138,
641
617
  138, 138, 138, 138, 138, 138, 138, 138,
642
- 138, 33, 33, 33, 33, 33, 33, 33,
643
- 138, 138, 138, 138, 138, 138, 33, 33,
644
- 33, 33, 33, 33, 33, 33, 33, 33,
645
- 33, 33, 33, 33, 33, 33, 33, 33,
646
- 33, 33, 33, 33, 33, 33, 33, 33,
647
- 138, 138, 138, 138, 138, 138, 33, 139,
618
+ 36, 36, 36, 36, 36, 36, 36, 138,
619
+ 138, 138, 138, 138, 138, 36, 36, 36,
620
+ 36, 36, 36, 36, 36, 36, 36, 36,
621
+ 36, 36, 36, 36, 36, 36, 36, 36,
622
+ 36, 36, 36, 36, 36, 36, 36, 138,
623
+ 138, 138, 138, 138, 138, 36, 139, 139,
648
624
  139, 139, 139, 139, 139, 139, 139, 139,
649
- 139, 33, 33, 33, 33, 33, 33, 33,
650
- 139, 139, 139, 139, 139, 139, 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
- 139, 139, 139, 139, 139, 139, 33, 140,
625
+ 36, 36, 36, 36, 36, 36, 36, 139,
626
+ 139, 139, 139, 139, 139, 36, 36, 36,
627
+ 36, 36, 36, 36, 36, 36, 36, 36,
628
+ 36, 36, 36, 36, 36, 36, 36, 36,
629
+ 36, 36, 36, 36, 36, 36, 36, 139,
630
+ 139, 139, 139, 139, 139, 36, 140, 140,
655
631
  140, 140, 140, 140, 140, 140, 140, 140,
656
- 140, 33, 33, 33, 33, 33, 33, 33,
657
- 140, 140, 140, 140, 140, 140, 33, 33,
658
- 33, 33, 33, 33, 33, 33, 33, 33,
659
- 33, 33, 33, 33, 33, 33, 33, 33,
660
- 33, 33, 33, 33, 33, 33, 33, 33,
661
- 140, 140, 140, 140, 140, 140, 33, 141,
662
- 141, 141, 141, 141, 33, 33, 33, 33,
663
- 33, 33, 33, 33, 33, 33, 33, 33,
664
- 33, 33, 33, 33, 33, 33, 141, 33,
665
- 33, 33, 33, 33, 33, 33, 33, 33,
666
- 33, 33, 33, 33, 33, 33, 137, 137,
667
- 137, 137, 137, 137, 137, 137, 137, 137,
668
- 33, 33, 33, 33, 33, 33, 33, 137,
669
- 137, 137, 137, 137, 137, 33, 33, 33,
670
- 33, 33, 33, 33, 33, 33, 33, 33,
671
- 33, 33, 33, 33, 33, 33, 33, 33,
672
- 33, 33, 33, 33, 33, 33, 33, 137,
673
- 137, 137, 137, 137, 137, 33, 33, 33,
674
- 33, 33, 33, 33, 33, 33, 33, 33,
675
- 33, 33, 33, 33, 33, 33, 33, 33,
676
- 33, 33, 33, 136, 33, 137, 137, 137,
677
- 137, 137, 137, 137, 137, 137, 137, 33,
678
- 33, 33, 33, 33, 33, 33, 137, 137,
679
- 137, 137, 137, 137, 33, 33, 33, 33,
680
- 33, 33, 33, 33, 33, 33, 33, 33,
681
- 33, 33, 33, 33, 33, 33, 33, 33,
682
- 33, 33, 33, 33, 33, 33, 137, 137,
683
- 137, 137, 137, 137, 33, 33, 33, 33,
684
- 33, 33, 33, 33, 33, 33, 33, 33,
685
- 33, 33, 33, 33, 33, 33, 33, 33,
686
- 33, 33, 136, 33, 142, 142, 142, 142,
687
- 142, 142, 142, 142, 142, 142, 33, 33,
688
- 33, 33, 33, 33, 33, 142, 142, 142,
689
- 142, 142, 142, 33, 33, 33, 33, 33,
690
- 33, 33, 33, 33, 33, 33, 33, 33,
691
- 33, 33, 33, 33, 33, 33, 33, 33,
692
- 33, 33, 33, 33, 33, 142, 142, 142,
693
- 142, 142, 142, 33, 33, 33, 33, 33,
694
- 33, 33, 33, 33, 33, 33, 33, 33,
695
- 33, 33, 33, 33, 33, 33, 33, 143,
696
- 33, 144, 144, 144, 144, 144, 144, 144,
697
- 144, 144, 144, 33, 33, 33, 33, 33,
698
- 33, 33, 144, 144, 144, 144, 144, 144,
699
- 33, 33, 33, 33, 33, 33, 33, 33,
700
- 33, 33, 33, 33, 33, 33, 33, 33,
701
- 33, 33, 33, 33, 33, 33, 33, 33,
702
- 33, 33, 144, 144, 144, 144, 144, 144,
703
- 33, 145, 145, 145, 145, 145, 145, 145,
704
- 145, 145, 145, 33, 33, 33, 33, 33,
705
- 33, 33, 145, 145, 145, 145, 145, 145,
706
- 33, 33, 33, 33, 33, 33, 33, 33,
707
- 33, 33, 33, 33, 33, 33, 33, 33,
708
- 33, 33, 33, 33, 33, 33, 33, 33,
709
- 33, 33, 145, 145, 145, 145, 145, 145,
710
- 33, 33, 33, 33, 33, 33, 33, 33,
711
- 33, 33, 33, 33, 33, 33, 33, 33,
712
- 33, 33, 33, 33, 33, 33, 146, 33,
632
+ 36, 36, 36, 36, 36, 36, 36, 140,
633
+ 140, 140, 140, 140, 140, 36, 36, 36,
634
+ 36, 36, 36, 36, 36, 36, 36, 36,
635
+ 36, 36, 36, 36, 36, 36, 36, 36,
636
+ 36, 36, 36, 36, 36, 36, 36, 140,
637
+ 140, 140, 140, 140, 140, 36, 141, 141,
638
+ 141, 141, 141, 141, 141, 141, 141, 141,
639
+ 36, 36, 36, 36, 36, 36, 36, 141,
640
+ 141, 141, 141, 141, 141, 36, 36, 36,
641
+ 36, 36, 36, 36, 36, 36, 36, 36,
642
+ 36, 36, 36, 36, 36, 36, 36, 36,
643
+ 36, 36, 36, 36, 36, 36, 36, 141,
644
+ 141, 141, 141, 141, 141, 36, 142, 142,
645
+ 142, 142, 142, 142, 142, 142, 142, 142,
646
+ 36, 36, 36, 36, 36, 36, 36, 142,
647
+ 142, 142, 142, 142, 142, 36, 36, 36,
648
+ 36, 36, 36, 36, 36, 36, 36, 36,
649
+ 36, 36, 36, 36, 36, 36, 36, 36,
650
+ 36, 36, 36, 36, 36, 36, 36, 142,
651
+ 142, 142, 142, 142, 142, 36, 143, 143,
652
+ 143, 143, 143, 36, 36, 36, 36, 36,
653
+ 36, 36, 36, 36, 36, 36, 36, 36,
654
+ 36, 36, 36, 36, 36, 143, 36, 36,
655
+ 36, 36, 36, 36, 36, 36, 36, 36,
656
+ 36, 36, 36, 36, 36, 139, 139, 139,
657
+ 139, 139, 139, 139, 139, 139, 139, 36,
658
+ 36, 36, 36, 36, 36, 36, 139, 139,
659
+ 139, 139, 139, 139, 36, 36, 36, 36,
660
+ 36, 36, 36, 36, 36, 36, 36, 36,
661
+ 36, 36, 36, 36, 36, 36, 36, 36,
662
+ 36, 36, 36, 36, 36, 36, 139, 139,
663
+ 139, 139, 139, 139, 36, 36, 36, 36,
664
+ 36, 36, 36, 36, 36, 36, 36, 36,
665
+ 36, 36, 36, 36, 36, 36, 36, 36,
666
+ 36, 36, 138, 36, 139, 139, 139, 139,
667
+ 139, 139, 139, 139, 139, 139, 36, 36,
668
+ 36, 36, 36, 36, 36, 139, 139, 139,
669
+ 139, 139, 139, 36, 36, 36, 36, 36,
670
+ 36, 36, 36, 36, 36, 36, 36, 36,
671
+ 36, 36, 36, 36, 36, 36, 36, 36,
672
+ 36, 36, 36, 36, 36, 139, 139, 139,
673
+ 139, 139, 139, 36, 36, 36, 36, 36,
674
+ 36, 36, 36, 36, 36, 36, 36, 36,
675
+ 36, 36, 36, 36, 36, 36, 36, 36,
676
+ 36, 138, 36, 145, 145, 145, 145, 145,
677
+ 145, 145, 145, 145, 145, 144, 144, 144,
678
+ 144, 144, 144, 144, 145, 145, 145, 145,
679
+ 145, 145, 144, 144, 144, 144, 144, 144,
680
+ 144, 144, 144, 144, 144, 144, 144, 144,
681
+ 144, 144, 144, 144, 144, 144, 144, 144,
682
+ 144, 144, 144, 144, 145, 145, 145, 145,
683
+ 145, 145, 144, 144, 144, 144, 144, 144,
684
+ 144, 144, 144, 144, 144, 144, 144, 144,
685
+ 144, 144, 144, 144, 144, 144, 146, 144,
686
+ 148, 148, 148, 148, 148, 147, 147, 147,
713
687
  147, 147, 147, 147, 147, 147, 147, 147,
714
- 147, 147, 33, 33, 33, 33, 33, 33,
715
- 33, 147, 147, 147, 147, 147, 147, 33,
716
- 33, 33, 33, 33, 33, 33, 33, 33,
717
- 33, 33, 33, 33, 33, 33, 33, 33,
718
- 33, 33, 33, 33, 33, 33, 33, 33,
719
- 33, 147, 147, 147, 147, 147, 147, 33,
720
- 33, 33, 33, 33, 33, 33, 33, 33,
721
- 33, 33, 33, 33, 33, 33, 33, 33,
722
- 33, 33, 33, 33, 33, 146, 33, 148,
723
- 148, 148, 148, 148, 148, 148, 148, 148,
724
- 148, 33, 33, 33, 33, 33, 33, 33,
725
- 148, 148, 148, 148, 148, 148, 33, 33,
726
- 33, 33, 33, 33, 33, 33, 33, 33,
727
- 33, 33, 33, 33, 33, 33, 33, 33,
728
- 33, 33, 33, 33, 33, 33, 33, 33,
729
- 148, 148, 148, 148, 148, 148, 33, 33,
730
- 33, 33, 33, 33, 33, 33, 33, 33,
731
- 33, 33, 33, 33, 33, 33, 33, 33,
732
- 33, 33, 33, 33, 146, 33, 149, 149,
688
+ 147, 147, 147, 147, 147, 147, 147, 148,
689
+ 147, 147, 147, 147, 147, 147, 147, 147,
690
+ 147, 147, 147, 147, 147, 147, 147, 149,
733
691
  149, 149, 149, 149, 149, 149, 149, 149,
734
- 33, 33, 33, 33, 33, 33, 33, 149,
735
- 149, 149, 149, 149, 149, 33, 33, 33,
736
- 33, 33, 33, 33, 33, 33, 33, 33,
737
- 33, 33, 33, 33, 33, 33, 33, 33,
738
- 33, 33, 33, 33, 33, 33, 33, 149,
739
- 149, 149, 149, 149, 149, 33, 33, 33,
740
- 33, 33, 33, 33, 33, 33, 33, 33,
741
- 33, 33, 33, 33, 33, 33, 33, 33,
742
- 33, 33, 33, 146, 33, 150, 150, 150,
743
- 150, 150, 150, 150, 150, 150, 150, 33,
744
- 33, 33, 33, 33, 33, 33, 150, 150,
745
- 150, 150, 150, 150, 33, 33, 33, 33,
746
- 33, 33, 33, 33, 33, 33, 33, 33,
747
- 33, 33, 33, 33, 33, 33, 33, 33,
748
- 33, 33, 33, 33, 33, 33, 150, 150,
749
- 150, 150, 150, 150, 33, 33, 33, 33,
750
- 33, 33, 33, 33, 33, 33, 33, 33,
751
- 33, 33, 33, 33, 33, 33, 33, 33,
752
- 33, 33, 146, 33, 151, 151, 151, 151,
753
- 151, 151, 151, 151, 151, 151, 33, 33,
754
- 33, 33, 33, 33, 33, 151, 151, 151,
755
- 151, 151, 151, 33, 33, 33, 33, 33,
756
- 33, 33, 33, 33, 33, 33, 33, 33,
757
- 33, 33, 33, 33, 33, 33, 33, 33,
758
- 33, 33, 33, 33, 33, 151, 151, 151,
759
- 151, 151, 151, 33, 33, 33, 33, 33,
760
- 33, 33, 33, 33, 33, 33, 33, 33,
761
- 33, 33, 33, 33, 33, 33, 33, 33,
762
- 33, 146, 33, 152, 152, 152, 152, 152,
763
- 152, 152, 152, 152, 152, 33, 33, 33,
764
- 33, 33, 33, 33, 152, 152, 152, 152,
765
- 152, 152, 33, 33, 33, 33, 33, 33,
766
- 33, 33, 33, 33, 33, 33, 33, 33,
767
- 33, 33, 33, 33, 33, 33, 33, 33,
768
- 33, 33, 33, 33, 152, 152, 152, 152,
769
- 152, 152, 33, 33, 33, 33, 33, 33,
770
- 33, 33, 33, 33, 33, 33, 33, 33,
771
- 33, 33, 33, 33, 33, 33, 33, 33,
772
- 146, 33, 146, 33, 28, 28, 28, 28,
773
- 28, 28, 28, 28, 28, 28, 28, 28,
774
- 28, 28, 28, 28, 28, 28, 28, 28,
775
- 28, 28, 28, 28, 28, 28, 28, 28,
776
- 28, 28, 28, 28, 28, 28, 28, 28,
777
- 28, 28, 28, 28, 28, 28, 28, 28,
778
- 28, 28, 28, 28, 28, 28, 28, 28,
779
- 28, 28, 28, 28, 28, 28, 28, 28,
780
- 28, 28, 28, 28, 28, 28, 153, 153,
692
+ 149, 147, 147, 147, 147, 147, 147, 147,
693
+ 149, 149, 149, 149, 149, 149, 147, 147,
694
+ 147, 147, 147, 147, 147, 147, 147, 147,
695
+ 147, 147, 147, 147, 147, 147, 147, 147,
696
+ 147, 147, 147, 147, 147, 147, 147, 147,
697
+ 149, 149, 149, 149, 149, 149, 147, 147,
698
+ 147, 147, 147, 147, 147, 147, 147, 147,
699
+ 147, 147, 147, 147, 147, 147, 147, 147,
700
+ 147, 147, 147, 147, 150, 147, 152, 152,
701
+ 152, 152, 152, 151, 151, 151, 151, 151,
702
+ 151, 151, 151, 151, 151, 151, 151, 151,
703
+ 151, 151, 151, 151, 151, 152, 151, 151,
704
+ 151, 151, 151, 151, 151, 151, 151, 151,
705
+ 151, 151, 151, 151, 151, 151, 151, 151,
706
+ 151, 151, 151, 151, 151, 151, 151, 151,
707
+ 151, 151, 151, 151, 151, 151, 151, 151,
708
+ 151, 151, 151, 151, 151, 151, 151, 151,
709
+ 151, 151, 151, 151, 151, 151, 151, 151,
710
+ 151, 151, 151, 151, 151, 151, 151, 151,
711
+ 151, 151, 151, 151, 151, 151, 151, 151,
712
+ 151, 151, 151, 151, 151, 151, 151, 151,
713
+ 151, 151, 151, 151, 151, 151, 151, 151,
714
+ 151, 151, 151, 151, 151, 151, 151, 151,
715
+ 151, 151, 150, 151, 31, 31, 31, 31,
716
+ 31, 31, 31, 31, 31, 31, 31, 31,
717
+ 31, 31, 31, 31, 31, 31, 31, 31,
718
+ 31, 31, 31, 31, 31, 31, 31, 31,
719
+ 31, 31, 31, 31, 31, 31, 31, 31,
720
+ 31, 31, 31, 31, 31, 31, 31, 31,
721
+ 31, 31, 31, 31, 31, 31, 31, 31,
722
+ 31, 31, 31, 31, 31, 31, 31, 31,
723
+ 31, 31, 31, 31, 31, 31, 153, 153,
781
724
  153, 153, 153, 153, 153, 153, 153, 153,
782
725
  153, 153, 153, 153, 153, 153, 153, 153,
783
726
  153, 153, 153, 153, 153, 153, 153, 153,
784
727
  153, 153, 153, 153, 154, 154, 154, 154,
785
728
  154, 154, 154, 154, 154, 154, 154, 154,
786
729
  154, 154, 154, 154, 155, 155, 155, 155,
787
- 155, 28, 28, 28, 28, 28, 28, 28,
788
- 28, 28, 28, 28, 28, 156, 156, 156,
730
+ 155, 31, 31, 31, 31, 31, 31, 31,
731
+ 31, 31, 31, 31, 31, 156, 156, 156,
789
732
  156, 156, 156, 156, 156, 156, 156, 156,
790
733
  156, 156, 156, 156, 156, 156, 156, 156,
791
734
  156, 156, 156, 156, 156, 156, 156, 156,
@@ -797,11 +740,11 @@ self._re_scanner_indicies = [
797
740
  157, 157, 157, 157, 157, 157, 157, 157,
798
741
  157, 157, 157, 157, 157, 157, 157, 157,
799
742
  157, 157, 157, 157, 157, 157, 157, 165,
800
- 166, 28, 167, 157, 157, 157, 157, 157,
743
+ 166, 31, 167, 157, 157, 157, 157, 157,
801
744
  157, 157, 157, 157, 157, 157, 157, 157,
802
745
  157, 157, 157, 157, 157, 157, 157, 157,
803
- 157, 157, 157, 157, 157, 157, 157, 30,
804
- 168, 28, 157, 156, 157, 153, 153, 153,
746
+ 157, 157, 157, 157, 157, 157, 157, 33,
747
+ 168, 31, 157, 156, 157, 153, 153, 153,
805
748
  153, 153, 153, 153, 153, 153, 153, 153,
806
749
  153, 153, 153, 153, 153, 153, 153, 153,
807
750
  153, 153, 153, 153, 153, 153, 153, 153,
@@ -836,122 +779,66 @@ self._re_scanner_indicies = [
836
779
  157, 157, 157, 157, 157, 157, 157, 157,
837
780
  157, 157, 157, 157, 157, 157, 157, 157,
838
781
  157, 157, 157, 157, 157, 157, 169, 169,
839
- 169, 157, 169, 171, 170, 12, 172, 173,
840
- 172, 172, 172, 174, 172, 172, 172, 172,
841
- 172, 175, 172, 172, 172, 172, 172, 172,
842
- 172, 172, 172, 172, 172, 172, 11, 172,
843
- 176, 12, 11, 172, 172, 172, 172, 172,
844
- 172, 172, 172, 172, 172, 172, 172, 172,
845
- 172, 172, 172, 172, 172, 172, 172, 172,
846
- 172, 172, 172, 172, 172, 172, 172, 172,
847
- 172, 172, 172, 172, 172, 172, 172, 172,
848
- 172, 172, 172, 172, 172, 177, 172, 172,
849
- 172, 177, 172, 172, 172, 172, 172, 172,
850
- 172, 172, 172, 172, 177, 172, 178, 172,
851
- 172, 172, 178, 172, 172, 172, 172, 172,
852
- 172, 172, 172, 172, 172, 178, 172, 179,
853
- 172, 172, 172, 179, 172, 172, 172, 172,
854
- 172, 172, 172, 172, 172, 172, 179, 172,
855
- 180, 172, 172, 172, 180, 172, 172, 172,
856
- 172, 172, 172, 172, 172, 172, 172, 180,
857
- 172, 175, 172, 172, 172, 172, 172, 172,
858
- 172, 172, 172, 172, 172, 172, 172, 172,
859
- 172, 172, 172, 172, 172, 172, 172, 172,
860
- 172, 172, 172, 172, 172, 172, 172, 172,
861
- 172, 172, 172, 172, 172, 172, 172, 172,
862
- 172, 172, 172, 172, 172, 172, 172, 172,
863
- 172, 172, 172, 172, 172, 172, 172, 172,
864
- 172, 172, 172, 172, 172, 181, 172, 172,
865
- 172, 181, 172, 172, 172, 172, 172, 172,
866
- 172, 172, 172, 172, 181, 172, 175, 172,
867
- 172, 172, 172, 172, 172, 172, 172, 172,
868
- 172, 172, 172, 172, 172, 172, 172, 172,
782
+ 169, 157, 169, 171, 170, 173, 172, 172,
869
783
  172, 172, 172, 172, 172, 172, 172, 172,
870
784
  172, 172, 172, 172, 172, 172, 172, 172,
871
- 172, 172, 172, 172, 172, 172, 172, 172,
872
- 172, 172, 172, 172, 172, 172, 172, 172,
873
- 172, 172, 172, 172, 172, 172, 172, 172,
874
- 172, 172, 182, 172, 172, 172, 182, 172,
875
- 172, 172, 172, 172, 172, 172, 172, 172,
876
- 172, 182, 172, 175, 172, 172, 172, 172,
877
- 172, 172, 172, 172, 172, 172, 172, 172,
878
- 172, 172, 172, 172, 172, 172, 172, 172,
879
- 172, 172, 172, 172, 172, 172, 172, 172,
880
- 172, 172, 172, 172, 172, 172, 172, 172,
881
- 172, 172, 172, 172, 172, 172, 172, 172,
882
- 172, 172, 172, 172, 172, 172, 172, 172,
883
- 172, 172, 172, 172, 172, 172, 172, 178,
884
- 172, 172, 172, 178, 172, 172, 172, 172,
885
- 172, 172, 172, 172, 172, 172, 178, 172,
886
- 184, 183, 183, 183, 183, 183, 183, 183,
887
- 183, 183, 183, 183, 183, 183, 183, 183,
888
- 183, 183, 183, 183, 184, 183, 186, 185,
889
- 185, 185, 185, 185, 185, 185, 185, 185,
890
- 185, 185, 185, 185, 185, 185, 185, 185,
891
- 185, 185, 186, 185, 188, 187, 187, 187,
785
+ 172, 173, 172, 175, 174, 174, 174, 174,
786
+ 174, 174, 174, 174, 174, 174, 174, 174,
787
+ 174, 174, 174, 174, 174, 174, 174, 175,
788
+ 174, 177, 176, 176, 176, 176, 176, 176,
789
+ 176, 176, 176, 176, 176, 176, 176, 176,
790
+ 176, 176, 176, 176, 176, 177, 176, 179,
791
+ 179, 178, 180, 178, 178, 179, 180, 178,
792
+ 178, 178, 178, 178, 178, 178, 178, 178,
793
+ 178, 180, 178, 178, 178, 180, 178, 178,
794
+ 179, 178, 178, 178, 178, 178, 178, 178,
795
+ 179, 178, 180, 178, 178, 181, 180, 178,
796
+ 178, 181, 178, 178, 178, 178, 178, 178,
797
+ 178, 180, 178, 178, 178, 180, 178, 178,
798
+ 179, 178, 183, 182, 182, 182, 182, 182,
799
+ 182, 182, 182, 182, 182, 182, 182, 182,
800
+ 182, 182, 182, 182, 182, 182, 183, 182,
801
+ 184, 36, 36, 36, 36, 36, 36, 36,
802
+ 36, 36, 36, 36, 36, 36, 36, 36,
803
+ 36, 36, 36, 36, 36, 36, 36, 36,
804
+ 36, 36, 36, 36, 36, 36, 36, 36,
805
+ 184, 36, 186, 186, 186, 186, 186, 186,
806
+ 186, 186, 186, 186, 186, 186, 186, 186,
807
+ 186, 186, 186, 186, 186, 186, 186, 186,
808
+ 186, 186, 186, 186, 186, 186, 186, 186,
892
809
  187, 187, 187, 187, 187, 187, 187, 187,
893
810
  187, 187, 187, 187, 187, 187, 187, 187,
894
- 188, 187, 190, 190, 189, 191, 189, 189,
895
- 190, 191, 189, 189, 189, 189, 189, 189,
896
- 189, 189, 189, 189, 191, 189, 189, 189,
897
- 191, 189, 189, 190, 189, 189, 189, 189,
898
- 189, 189, 189, 190, 189, 191, 189, 189,
899
- 192, 191, 189, 189, 192, 189, 189, 189,
900
- 189, 189, 189, 189, 191, 189, 189, 189,
901
- 191, 189, 189, 190, 189, 194, 193, 193,
811
+ 188, 188, 188, 188, 188, 185, 185, 185,
812
+ 185, 185, 185, 185, 185, 185, 185, 185,
813
+ 185, 189, 189, 189, 189, 189, 189, 189,
814
+ 189, 189, 189, 189, 189, 189, 189, 189,
815
+ 189, 189, 189, 189, 189, 189, 189, 189,
816
+ 189, 189, 189, 189, 189, 189, 189, 189,
817
+ 185, 185, 185, 185, 190, 185, 191, 185,
818
+ 190, 190, 190, 190, 185, 192, 190, 185,
902
819
  193, 193, 193, 193, 193, 193, 193, 193,
820
+ 193, 193, 185, 185, 185, 185, 185, 190,
821
+ 185, 193, 193, 193, 193, 193, 193, 193,
903
822
  193, 193, 193, 193, 193, 193, 193, 193,
904
- 193, 194, 193, 195, 33, 33, 33, 33,
905
- 33, 33, 33, 33, 33, 33, 33, 33,
906
- 33, 33, 33, 33, 33, 33, 33, 33,
907
- 33, 33, 33, 33, 33, 33, 33, 33,
908
- 33, 33, 33, 195, 33, 197, 197, 197,
909
- 197, 197, 197, 197, 197, 197, 197, 197,
910
- 197, 197, 197, 197, 197, 197, 197, 197,
911
- 197, 197, 197, 197, 197, 197, 197, 197,
912
- 197, 197, 197, 198, 198, 198, 198, 198,
913
- 198, 198, 198, 198, 198, 198, 198, 198,
914
- 198, 198, 198, 199, 199, 199, 199, 199,
915
- 196, 196, 196, 196, 196, 196, 196, 196,
916
- 196, 196, 196, 196, 200, 200, 200, 200,
917
- 200, 200, 200, 200, 200, 200, 200, 200,
918
- 200, 200, 200, 200, 200, 200, 200, 200,
919
- 200, 200, 200, 200, 200, 200, 200, 200,
920
- 200, 200, 200, 196, 196, 196, 196, 201,
921
- 196, 202, 196, 201, 201, 201, 201, 196,
922
- 203, 201, 196, 204, 204, 204, 204, 204,
923
- 204, 204, 204, 204, 204, 196, 196, 196,
924
- 196, 196, 201, 196, 204, 204, 204, 204,
925
- 204, 204, 204, 204, 204, 204, 204, 204,
926
- 204, 204, 204, 204, 204, 204, 204, 204,
927
- 204, 204, 204, 204, 204, 204, 205, 206,
928
- 207, 208, 196, 196, 204, 204, 204, 204,
929
- 204, 204, 204, 204, 204, 204, 204, 204,
930
- 204, 204, 204, 204, 204, 204, 204, 204,
931
- 204, 204, 204, 204, 204, 204, 201, 201,
932
- 201, 196, 200, 196, 51, 51, 51, 51,
933
- 51, 51, 51, 51, 51, 51, 51, 51,
934
- 51, 51, 51, 51, 51, 51, 51, 51,
935
- 51, 51, 51, 51, 51, 51, 51, 51,
936
- 51, 51, 51, 51, 51, 51, 51, 51,
937
- 51, 51, 51, 51, 51, 51, 51, 51,
938
- 51, 51, 51, 51, 51, 51, 51, 51,
939
- 51, 51, 51, 51, 51, 51, 51, 51,
940
- 51, 51, 51, 51, 209, 210, 210, 210,
941
- 210, 210, 210, 210, 210, 210, 210, 210,
942
- 210, 210, 210, 210, 210, 210, 210, 210,
943
- 210, 210, 210, 210, 210, 210, 210, 210,
944
- 210, 210, 210, 209, 53, 53, 53, 53,
945
- 53, 53, 53, 53, 53, 53, 53, 53,
946
- 53, 53, 53, 53, 53, 53, 53, 53,
947
- 53, 53, 53, 53, 53, 53, 53, 53,
948
- 53, 53, 53, 53, 53, 53, 53, 53,
949
- 53, 53, 53, 53, 53, 53, 53, 53,
950
- 53, 53, 53, 53, 53, 53, 53, 53,
951
- 53, 53, 53, 53, 53, 53, 53, 53,
952
- 53, 53, 53, 53, 209, 211, 211, 211,
953
- 211, 211, 211, 211, 211, 211, 211, 211,
954
- 211, 211, 211, 211, 211, 209, 56, 56,
823
+ 193, 193, 193, 193, 193, 193, 193, 193,
824
+ 193, 193, 193, 194, 195, 196, 197, 185,
825
+ 185, 193, 193, 193, 193, 193, 193, 193,
826
+ 193, 193, 193, 193, 193, 193, 193, 193,
827
+ 193, 193, 193, 193, 193, 193, 193, 193,
828
+ 193, 193, 193, 190, 190, 190, 185, 189,
829
+ 185, 54, 54, 54, 54, 54, 54, 54,
830
+ 54, 54, 54, 54, 54, 54, 54, 54,
831
+ 54, 54, 54, 54, 54, 54, 54, 54,
832
+ 54, 54, 54, 54, 54, 54, 54, 54,
833
+ 54, 54, 54, 54, 54, 54, 54, 54,
834
+ 54, 54, 54, 54, 54, 54, 54, 54,
835
+ 54, 54, 54, 54, 54, 54, 54, 54,
836
+ 54, 54, 54, 54, 54, 54, 54, 54,
837
+ 54, 198, 199, 199, 199, 199, 199, 199,
838
+ 199, 199, 199, 199, 199, 199, 199, 199,
839
+ 199, 199, 199, 199, 199, 199, 199, 199,
840
+ 199, 199, 199, 199, 199, 199, 199, 199,
841
+ 198, 56, 56, 56, 56, 56, 56, 56,
955
842
  56, 56, 56, 56, 56, 56, 56, 56,
956
843
  56, 56, 56, 56, 56, 56, 56, 56,
957
844
  56, 56, 56, 56, 56, 56, 56, 56,
@@ -959,149 +846,352 @@ self._re_scanner_indicies = [
959
846
  56, 56, 56, 56, 56, 56, 56, 56,
960
847
  56, 56, 56, 56, 56, 56, 56, 56,
961
848
  56, 56, 56, 56, 56, 56, 56, 56,
962
- 56, 56, 56, 56, 56, 56, 209, 212,
963
- 212, 212, 212, 212, 209, 200, 200, 200,
849
+ 56, 198, 200, 200, 200, 200, 200, 200,
964
850
  200, 200, 200, 200, 200, 200, 200, 200,
965
- 200, 200, 200, 200, 200, 200, 200, 200,
966
- 200, 200, 200, 200, 200, 200, 200, 200,
967
- 200, 200, 200, 200, 209, 209, 209, 209,
968
- 209, 209, 209, 209, 209, 209, 209, 209,
969
- 209, 209, 209, 209, 209, 209, 209, 209,
970
- 209, 209, 209, 209, 209, 209, 209, 209,
971
- 209, 209, 209, 209, 209, 209, 209, 209,
972
- 209, 209, 209, 209, 209, 209, 209, 209,
973
- 209, 209, 209, 209, 209, 209, 209, 209,
974
- 209, 209, 209, 209, 209, 209, 209, 209,
975
- 209, 209, 209, 209, 209, 209, 209, 209,
976
- 209, 209, 209, 209, 209, 209, 209, 209,
977
- 209, 209, 209, 209, 209, 209, 209, 209,
978
- 209, 209, 209, 209, 209, 209, 209, 209,
979
- 209, 209, 209, 200, 209, 213, 209, 214,
980
- 209, 215, 209, 218, 217, 217, 217, 217,
981
- 217, 217, 217, 217, 217, 217, 217, 219,
982
- 217, 217, 220, 217, 221, 221, 221, 221,
851
+ 200, 200, 198, 59, 59, 59, 59, 59,
852
+ 59, 59, 59, 59, 59, 59, 59, 59,
853
+ 59, 59, 59, 59, 59, 59, 59, 59,
854
+ 59, 59, 59, 59, 59, 59, 59, 59,
855
+ 59, 59, 59, 59, 59, 59, 59, 59,
856
+ 59, 59, 59, 59, 59, 59, 59, 59,
857
+ 59, 59, 59, 59, 59, 59, 59, 59,
858
+ 59, 59, 59, 59, 59, 59, 59, 59,
859
+ 59, 59, 59, 198, 201, 201, 201, 201,
860
+ 201, 198, 189, 189, 189, 189, 189, 189,
861
+ 189, 189, 189, 189, 189, 189, 189, 189,
862
+ 189, 189, 189, 189, 189, 189, 189, 189,
863
+ 189, 189, 189, 189, 189, 189, 189, 189,
864
+ 189, 198, 198, 198, 198, 198, 198, 198,
865
+ 198, 198, 198, 198, 198, 198, 198, 198,
866
+ 198, 198, 198, 198, 198, 198, 198, 198,
867
+ 198, 198, 198, 198, 198, 198, 198, 198,
868
+ 198, 198, 198, 198, 198, 198, 198, 198,
869
+ 198, 198, 198, 198, 198, 198, 198, 198,
870
+ 198, 198, 198, 198, 198, 198, 198, 198,
871
+ 198, 198, 198, 198, 198, 198, 198, 198,
872
+ 198, 198, 198, 198, 198, 198, 198, 198,
873
+ 198, 198, 198, 198, 198, 198, 198, 198,
874
+ 198, 198, 198, 198, 198, 198, 198, 198,
875
+ 198, 198, 198, 198, 198, 198, 198, 198,
876
+ 189, 198, 202, 198, 203, 198, 204, 198,
877
+ 207, 206, 206, 206, 206, 206, 206, 206,
878
+ 206, 206, 206, 206, 208, 206, 206, 209,
879
+ 206, 210, 210, 210, 210, 210, 210, 210,
880
+ 210, 210, 210, 210, 210, 210, 210, 210,
881
+ 210, 210, 210, 210, 210, 210, 210, 210,
882
+ 210, 210, 210, 210, 210, 210, 210, 211,
883
+ 211, 211, 211, 211, 211, 211, 211, 211,
884
+ 211, 211, 211, 211, 211, 211, 211, 212,
885
+ 212, 212, 212, 212, 36, 36, 36, 36,
886
+ 36, 36, 36, 36, 36, 36, 36, 36,
887
+ 213, 213, 213, 213, 213, 213, 213, 213,
888
+ 213, 213, 213, 213, 213, 213, 213, 213,
889
+ 213, 213, 213, 213, 213, 213, 213, 213,
890
+ 213, 213, 213, 213, 213, 213, 213, 214,
891
+ 214, 214, 214, 215, 214, 214, 214, 215,
892
+ 215, 215, 215, 216, 215, 215, 214, 214,
893
+ 214, 214, 214, 214, 214, 214, 214, 214,
894
+ 214, 214, 214, 214, 214, 214, 215, 214,
895
+ 214, 214, 214, 217, 214, 214, 214, 217,
896
+ 214, 214, 214, 214, 214, 214, 214, 218,
897
+ 214, 214, 217, 214, 214, 214, 217, 214,
898
+ 214, 214, 215, 215, 215, 215, 214, 214,
899
+ 214, 219, 214, 217, 214, 214, 214, 217,
900
+ 214, 214, 214, 214, 214, 214, 214, 218,
901
+ 214, 214, 217, 214, 214, 214, 217, 220,
902
+ 214, 214, 215, 215, 215, 214, 213, 36,
903
+ 210, 210, 210, 210, 210, 210, 210, 210,
904
+ 210, 210, 210, 210, 210, 210, 210, 210,
905
+ 210, 210, 210, 210, 210, 210, 210, 210,
906
+ 210, 210, 210, 210, 210, 210, 221, 211,
907
+ 211, 211, 211, 211, 211, 211, 211, 211,
908
+ 211, 211, 211, 211, 211, 211, 211, 221,
909
+ 212, 212, 212, 212, 212, 221, 213, 213,
910
+ 213, 213, 213, 213, 213, 213, 213, 213,
911
+ 213, 213, 213, 213, 213, 213, 213, 213,
912
+ 213, 213, 213, 213, 213, 213, 213, 213,
913
+ 213, 213, 213, 213, 213, 221, 221, 221,
914
+ 221, 221, 221, 221, 221, 221, 221, 221,
915
+ 221, 221, 221, 221, 221, 221, 221, 221,
916
+ 221, 221, 221, 221, 221, 221, 221, 221,
917
+ 221, 221, 221, 221, 221, 221, 221, 221,
983
918
  221, 221, 221, 221, 221, 221, 221, 221,
984
919
  221, 221, 221, 221, 221, 221, 221, 221,
985
920
  221, 221, 221, 221, 221, 221, 221, 221,
986
- 221, 221, 222, 222, 222, 222, 222, 222,
987
- 222, 222, 222, 222, 222, 222, 222, 222,
988
- 222, 222, 223, 223, 223, 223, 223, 33,
989
- 33, 33, 33, 33, 33, 33, 33, 33,
990
- 33, 33, 33, 224, 224, 224, 224, 224,
991
- 224, 224, 224, 224, 224, 224, 224, 224,
992
- 224, 224, 224, 224, 224, 224, 224, 224,
993
- 224, 224, 224, 224, 224, 224, 224, 224,
994
- 224, 224, 225, 225, 225, 225, 226, 225,
995
- 225, 225, 226, 226, 226, 226, 227, 226,
996
- 226, 225, 225, 225, 225, 225, 225, 225,
997
- 225, 225, 225, 225, 225, 225, 225, 225,
998
- 225, 226, 225, 225, 225, 225, 228, 225,
999
- 225, 225, 228, 225, 225, 225, 225, 225,
1000
- 225, 225, 229, 225, 225, 228, 225, 225,
1001
- 225, 228, 225, 225, 225, 226, 226, 226,
1002
- 226, 225, 225, 225, 230, 225, 228, 225,
1003
- 225, 225, 228, 225, 225, 225, 225, 225,
1004
- 225, 225, 229, 225, 225, 228, 225, 225,
1005
- 225, 228, 231, 225, 225, 226, 226, 226,
1006
- 225, 224, 33, 221, 221, 221, 221, 221,
1007
921
  221, 221, 221, 221, 221, 221, 221, 221,
1008
922
  221, 221, 221, 221, 221, 221, 221, 221,
1009
923
  221, 221, 221, 221, 221, 221, 221, 221,
1010
- 221, 232, 222, 222, 222, 222, 222, 222,
924
+ 221, 221, 221, 221, 221, 221, 221, 221,
925
+ 221, 221, 221, 221, 213, 221, 214, 214,
926
+ 214, 214, 117, 214, 214, 214, 117, 117,
927
+ 117, 117, 214, 117, 117, 214, 214, 214,
928
+ 214, 214, 214, 214, 214, 214, 214, 214,
929
+ 214, 214, 214, 214, 214, 117, 214, 214,
930
+ 214, 214, 214, 214, 214, 214, 214, 214,
931
+ 214, 214, 214, 214, 214, 214, 214, 214,
932
+ 214, 214, 214, 214, 214, 214, 214, 214,
933
+ 214, 117, 117, 117, 117, 214, 214, 214,
934
+ 214, 214, 214, 214, 214, 214, 214, 214,
935
+ 214, 214, 214, 214, 214, 214, 214, 214,
936
+ 214, 214, 214, 214, 214, 214, 214, 214,
937
+ 214, 117, 117, 117, 214, 117, 214, 214,
938
+ 214, 214, 221, 214, 214, 214, 221, 221,
939
+ 221, 221, 214, 221, 221, 214, 222, 222,
1011
940
  222, 222, 222, 222, 222, 222, 222, 222,
1012
- 222, 222, 232, 223, 223, 223, 223, 223,
1013
- 232, 224, 224, 224, 224, 224, 224, 224,
1014
- 224, 224, 224, 224, 224, 224, 224, 224,
1015
- 224, 224, 224, 224, 224, 224, 224, 224,
1016
- 224, 224, 224, 224, 224, 224, 224, 224,
1017
- 232, 232, 232, 232, 232, 232, 232, 232,
1018
- 232, 232, 232, 232, 232, 232, 232, 232,
1019
- 232, 232, 232, 232, 232, 232, 232, 232,
1020
- 232, 232, 232, 232, 232, 232, 232, 232,
1021
- 232, 232, 232, 232, 232, 232, 232, 232,
1022
- 232, 232, 232, 232, 232, 232, 232, 232,
1023
- 232, 232, 232, 232, 232, 232, 232, 232,
1024
- 232, 232, 232, 232, 232, 232, 232, 232,
1025
- 232, 232, 232, 232, 232, 232, 232, 232,
1026
- 232, 232, 232, 232, 232, 232, 232, 232,
1027
- 232, 232, 232, 232, 232, 232, 232, 232,
1028
- 232, 232, 232, 232, 232, 232, 232, 224,
1029
- 232, 225, 225, 225, 225, 114, 225, 225,
1030
- 225, 114, 114, 114, 114, 225, 114, 114,
1031
- 225, 225, 225, 225, 225, 225, 225, 225,
1032
- 225, 225, 225, 225, 225, 225, 225, 225,
1033
- 114, 225, 225, 225, 225, 225, 225, 225,
1034
- 225, 225, 225, 225, 225, 225, 225, 225,
1035
- 225, 225, 225, 225, 225, 225, 225, 225,
1036
- 225, 225, 225, 225, 114, 114, 114, 114,
1037
- 225, 225, 225, 225, 225, 225, 225, 225,
1038
- 225, 225, 225, 225, 225, 225, 225, 225,
1039
- 225, 225, 225, 225, 225, 225, 225, 225,
1040
- 225, 225, 225, 225, 114, 114, 114, 225,
1041
- 114, 225, 225, 225, 225, 232, 225, 225,
1042
- 225, 232, 232, 232, 232, 225, 232, 232,
1043
- 225, 233, 233, 233, 233, 233, 233, 233,
1044
- 233, 233, 233, 225, 225, 225, 225, 225,
1045
- 232, 225, 233, 233, 233, 233, 233, 233,
1046
- 225, 225, 225, 225, 225, 225, 225, 225,
1047
- 225, 225, 225, 225, 225, 225, 225, 225,
1048
- 225, 225, 225, 225, 232, 232, 232, 232,
1049
- 225, 225, 233, 233, 233, 233, 233, 233,
1050
- 225, 225, 225, 225, 225, 225, 225, 225,
1051
- 225, 225, 225, 225, 225, 225, 225, 225,
1052
- 225, 225, 225, 225, 232, 232, 232, 225,
1053
- 232, 225, 225, 225, 225, 234, 225, 225,
1054
- 225, 234, 234, 234, 234, 225, 235, 234,
1055
- 225, 236, 236, 236, 236, 236, 236, 236,
1056
- 236, 236, 236, 225, 225, 225, 225, 225,
1057
- 234, 225, 236, 236, 236, 236, 236, 236,
1058
- 225, 225, 225, 225, 225, 225, 225, 225,
1059
- 225, 225, 225, 225, 225, 225, 225, 225,
1060
- 225, 225, 225, 225, 234, 234, 234, 234,
1061
- 225, 225, 236, 236, 236, 236, 236, 236,
1062
- 225, 225, 225, 225, 225, 225, 225, 225,
1063
- 225, 225, 225, 225, 225, 225, 225, 225,
1064
- 225, 225, 225, 225, 234, 234, 234, 225,
1065
- 234, 238, 238, 238, 238, 238, 238, 238,
1066
- 238, 238, 238, 237, 237, 237, 237, 237,
1067
- 237, 237, 238, 238, 238, 238, 238, 238,
1068
- 237, 237, 237, 237, 237, 237, 237, 237,
1069
- 237, 237, 237, 237, 237, 237, 237, 237,
1070
- 237, 237, 237, 237, 237, 237, 237, 237,
1071
- 237, 237, 238, 238, 238, 238, 238, 238,
1072
- 237, 225, 225, 225, 225, 234, 225, 225,
1073
- 225, 234, 234, 234, 234, 225, 235, 234,
1074
- 225, 225, 225, 225, 225, 225, 225, 225,
941
+ 214, 214, 214, 214, 214, 221, 214, 222,
942
+ 222, 222, 222, 222, 222, 214, 214, 214,
943
+ 214, 214, 214, 214, 214, 214, 214, 214,
944
+ 214, 214, 214, 214, 214, 214, 214, 214,
945
+ 214, 221, 221, 221, 221, 214, 214, 222,
946
+ 222, 222, 222, 222, 222, 214, 214, 214,
947
+ 214, 214, 214, 214, 214, 214, 214, 214,
948
+ 214, 214, 214, 214, 214, 214, 214, 214,
949
+ 214, 221, 221, 221, 214, 221, 214, 214,
950
+ 214, 214, 223, 214, 214, 214, 223, 223,
951
+ 223, 223, 214, 224, 223, 214, 225, 225,
1075
952
  225, 225, 225, 225, 225, 225, 225, 225,
1076
- 234, 225, 225, 225, 225, 225, 225, 225,
1077
- 225, 225, 225, 225, 225, 225, 225, 225,
1078
- 225, 225, 225, 225, 225, 225, 225, 225,
1079
- 225, 225, 225, 225, 234, 234, 234, 234,
1080
- 225, 225, 225, 225, 225, 225, 225, 225,
1081
- 225, 225, 225, 225, 225, 225, 225, 225,
1082
- 225, 225, 225, 225, 225, 225, 225, 225,
1083
- 225, 225, 225, 225, 234, 234, 234, 225,
1084
- 234, 240, 239, 239, 239, 240, 240, 240,
1085
- 240, 239, 239, 240, 239, 241, 242, 242,
1086
- 242, 242, 242, 242, 242, 243, 243, 239,
1087
- 239, 239, 239, 239, 240, 239, 33, 33,
1088
- 244, 33, 239, 239, 33, 33, 239, 239,
1089
- 239, 239, 245, 239, 239, 246, 239, 239,
1090
- 33, 239, 239, 239, 33, 239, 239, 33,
1091
- 240, 240, 240, 240, 239, 239, 247, 247,
1092
- 125, 33, 247, 247, 33, 33, 239, 239,
1093
- 33, 239, 239, 247, 239, 246, 239, 247,
1094
- 247, 247, 248, 247, 33, 249, 239, 33,
1095
- 240, 240, 240, 239, 251, 251, 251, 251,
1096
- 251, 251, 251, 251, 250, 253, 253, 253,
1097
- 253, 253, 253, 253, 253, 252, 255, 255,
953
+ 214, 214, 214, 214, 214, 223, 214, 225,
954
+ 225, 225, 225, 225, 225, 214, 214, 214,
955
+ 214, 214, 214, 214, 214, 214, 214, 214,
956
+ 214, 214, 214, 214, 214, 214, 214, 214,
957
+ 214, 223, 223, 223, 223, 214, 214, 225,
958
+ 225, 225, 225, 225, 225, 214, 214, 214,
959
+ 214, 214, 214, 214, 214, 214, 214, 214,
960
+ 214, 214, 214, 214, 214, 214, 214, 214,
961
+ 214, 223, 223, 223, 214, 223, 227, 227,
962
+ 227, 227, 227, 227, 227, 227, 227, 227,
963
+ 226, 226, 226, 226, 226, 226, 226, 227,
964
+ 227, 227, 227, 227, 227, 226, 226, 226,
965
+ 226, 226, 226, 226, 226, 226, 226, 226,
966
+ 226, 226, 226, 226, 226, 226, 226, 226,
967
+ 226, 226, 226, 226, 226, 226, 226, 227,
968
+ 227, 227, 227, 227, 227, 226, 214, 214,
969
+ 214, 214, 223, 214, 214, 214, 223, 223,
970
+ 223, 223, 214, 224, 223, 214, 214, 214,
971
+ 214, 214, 214, 214, 214, 214, 214, 214,
972
+ 214, 214, 214, 214, 214, 223, 214, 214,
973
+ 214, 214, 214, 214, 214, 214, 214, 214,
974
+ 214, 214, 214, 214, 214, 214, 214, 214,
975
+ 214, 214, 214, 214, 214, 214, 214, 214,
976
+ 214, 223, 223, 223, 223, 214, 214, 214,
977
+ 214, 214, 214, 214, 214, 214, 214, 214,
978
+ 214, 214, 214, 214, 214, 214, 214, 214,
979
+ 214, 214, 214, 214, 214, 214, 214, 214,
980
+ 214, 223, 223, 223, 214, 223, 229, 228,
981
+ 228, 228, 229, 229, 229, 229, 228, 228,
982
+ 229, 228, 230, 231, 231, 231, 231, 231,
983
+ 231, 231, 232, 232, 228, 228, 228, 228,
984
+ 228, 229, 228, 36, 36, 233, 36, 228,
985
+ 228, 36, 36, 228, 228, 228, 228, 234,
986
+ 228, 228, 235, 228, 228, 36, 228, 228,
987
+ 228, 36, 228, 228, 36, 229, 229, 229,
988
+ 229, 228, 228, 236, 236, 128, 36, 236,
989
+ 236, 36, 36, 228, 228, 36, 228, 228,
990
+ 236, 228, 235, 228, 236, 236, 236, 237,
991
+ 236, 36, 238, 228, 36, 229, 229, 229,
992
+ 228, 240, 240, 240, 240, 240, 240, 240,
993
+ 240, 239, 242, 242, 242, 242, 242, 242,
994
+ 242, 242, 241, 245, 244, 248, 248, 248,
995
+ 248, 248, 248, 248, 248, 248, 248, 247,
996
+ 247, 247, 247, 247, 247, 247, 248, 248,
997
+ 248, 248, 248, 248, 247, 247, 247, 247,
998
+ 247, 247, 247, 247, 247, 247, 247, 247,
999
+ 247, 247, 247, 247, 247, 247, 247, 247,
1000
+ 247, 247, 247, 247, 247, 247, 248, 248,
1001
+ 248, 248, 248, 248, 247, 249, 250, 249,
1002
+ 251, 249, 252, 249, 253, 249, 254, 249,
1003
+ 255, 249, 256, 249, 150, 257, 257, 257,
1004
+ 257, 257, 250, 250, 250, 250, 250, 250,
1005
+ 250, 250, 250, 250, 250, 250, 250, 250,
1006
+ 250, 250, 250, 250, 257, 250, 250, 250,
1007
+ 250, 250, 250, 250, 250, 250, 250, 250,
1008
+ 250, 250, 250, 250, 250, 250, 250, 250,
1009
+ 250, 250, 250, 250, 250, 250, 250, 250,
1010
+ 250, 250, 250, 250, 250, 250, 250, 250,
1011
+ 250, 250, 250, 250, 250, 250, 250, 250,
1012
+ 250, 250, 250, 250, 250, 250, 250, 250,
1013
+ 250, 250, 250, 250, 250, 250, 250, 250,
1014
+ 250, 250, 250, 250, 250, 250, 250, 250,
1015
+ 250, 250, 250, 250, 250, 250, 250, 250,
1016
+ 250, 250, 250, 250, 250, 250, 250, 250,
1017
+ 250, 250, 250, 250, 250, 250, 250, 250,
1018
+ 250, 150, 250, 258, 258, 258, 258, 258,
1019
+ 251, 251, 251, 251, 251, 251, 251, 251,
1020
+ 251, 251, 251, 251, 251, 251, 251, 251,
1021
+ 251, 251, 258, 251, 251, 251, 251, 251,
1022
+ 251, 251, 251, 251, 251, 251, 251, 251,
1023
+ 251, 251, 251, 251, 251, 251, 251, 251,
1024
+ 251, 251, 251, 251, 251, 251, 251, 251,
1025
+ 251, 251, 251, 251, 251, 251, 251, 251,
1026
+ 251, 251, 251, 251, 251, 251, 251, 251,
1027
+ 251, 251, 251, 251, 251, 251, 251, 251,
1028
+ 251, 251, 251, 251, 251, 251, 251, 251,
1029
+ 251, 251, 251, 251, 251, 251, 251, 251,
1030
+ 251, 251, 251, 251, 251, 251, 251, 251,
1031
+ 251, 251, 251, 251, 251, 251, 251, 251,
1032
+ 251, 251, 251, 251, 251, 251, 251, 150,
1033
+ 251, 259, 259, 259, 259, 259, 252, 252,
1034
+ 252, 252, 252, 252, 252, 252, 252, 252,
1035
+ 252, 252, 252, 252, 252, 252, 252, 252,
1036
+ 259, 252, 252, 252, 252, 252, 252, 252,
1037
+ 252, 252, 252, 252, 252, 252, 252, 252,
1038
+ 252, 252, 252, 252, 252, 252, 252, 252,
1039
+ 252, 252, 252, 252, 252, 252, 252, 252,
1040
+ 252, 252, 252, 252, 252, 252, 252, 252,
1041
+ 252, 252, 252, 252, 252, 252, 252, 252,
1042
+ 252, 252, 252, 252, 252, 252, 252, 252,
1043
+ 252, 252, 252, 252, 252, 252, 252, 252,
1044
+ 252, 252, 252, 252, 252, 252, 252, 252,
1045
+ 252, 252, 252, 252, 252, 252, 252, 252,
1046
+ 252, 252, 252, 252, 252, 252, 252, 252,
1047
+ 252, 252, 252, 252, 252, 150, 252, 260,
1048
+ 260, 260, 260, 260, 253, 253, 253, 253,
1049
+ 253, 253, 253, 253, 253, 253, 253, 253,
1050
+ 253, 253, 253, 253, 253, 253, 260, 253,
1051
+ 253, 253, 253, 253, 253, 253, 253, 253,
1052
+ 253, 253, 253, 253, 253, 253, 253, 253,
1053
+ 253, 253, 253, 253, 253, 253, 253, 253,
1054
+ 253, 253, 253, 253, 253, 253, 253, 253,
1055
+ 253, 253, 253, 253, 253, 253, 253, 253,
1056
+ 253, 253, 253, 253, 253, 253, 253, 253,
1057
+ 253, 253, 253, 253, 253, 253, 253, 253,
1058
+ 253, 253, 253, 253, 253, 253, 253, 253,
1059
+ 253, 253, 253, 253, 253, 253, 253, 253,
1060
+ 253, 253, 253, 253, 253, 253, 253, 253,
1061
+ 253, 253, 253, 253, 253, 253, 253, 253,
1062
+ 253, 253, 253, 150, 253, 261, 261, 261,
1063
+ 261, 261, 254, 254, 254, 254, 254, 254,
1064
+ 254, 254, 254, 254, 254, 254, 254, 254,
1065
+ 254, 254, 254, 254, 261, 254, 254, 254,
1066
+ 254, 254, 254, 254, 254, 254, 254, 254,
1067
+ 254, 254, 254, 254, 254, 254, 254, 254,
1068
+ 254, 254, 254, 254, 254, 254, 254, 254,
1069
+ 254, 254, 254, 254, 254, 254, 254, 254,
1070
+ 254, 254, 254, 254, 254, 254, 254, 254,
1071
+ 254, 254, 254, 254, 254, 254, 254, 254,
1072
+ 254, 254, 254, 254, 254, 254, 254, 254,
1073
+ 254, 254, 254, 254, 254, 254, 254, 254,
1074
+ 254, 254, 254, 254, 254, 254, 254, 254,
1075
+ 254, 254, 254, 254, 254, 254, 254, 254,
1076
+ 254, 254, 254, 254, 254, 254, 254, 254,
1077
+ 254, 150, 254, 262, 262, 262, 262, 262,
1098
1078
  255, 255, 255, 255, 255, 255, 255, 255,
1099
- 254, 254, 254, 254, 254, 254, 254, 255,
1100
- 255, 255, 255, 255, 255, 254, 254, 254,
1079
+ 255, 255, 255, 255, 255, 255, 255, 255,
1080
+ 255, 255, 262, 255, 255, 255, 255, 255,
1081
+ 255, 255, 255, 255, 255, 255, 255, 255,
1082
+ 255, 255, 255, 255, 255, 255, 255, 255,
1083
+ 255, 255, 255, 255, 255, 255, 255, 255,
1084
+ 255, 255, 255, 255, 255, 255, 255, 255,
1085
+ 255, 255, 255, 255, 255, 255, 255, 255,
1086
+ 255, 255, 255, 255, 255, 255, 255, 255,
1087
+ 255, 255, 255, 255, 255, 255, 255, 255,
1088
+ 255, 255, 255, 255, 255, 255, 255, 255,
1089
+ 255, 255, 255, 255, 255, 255, 255, 255,
1090
+ 255, 255, 255, 255, 255, 255, 255, 255,
1091
+ 255, 255, 255, 255, 255, 255, 255, 150,
1092
+ 255, 263, 263, 263, 263, 263, 256, 256,
1093
+ 256, 256, 256, 256, 256, 256, 256, 256,
1094
+ 256, 256, 256, 256, 256, 256, 256, 256,
1095
+ 263, 256, 256, 256, 256, 256, 256, 256,
1096
+ 256, 256, 256, 256, 256, 256, 256, 256,
1097
+ 256, 256, 256, 256, 256, 256, 256, 256,
1098
+ 256, 256, 256, 256, 256, 256, 256, 256,
1099
+ 256, 256, 256, 256, 256, 256, 256, 256,
1100
+ 256, 256, 256, 256, 256, 256, 256, 256,
1101
+ 256, 256, 256, 256, 256, 256, 256, 256,
1102
+ 256, 256, 256, 256, 256, 256, 256, 256,
1103
+ 256, 256, 256, 256, 256, 256, 256, 256,
1104
+ 256, 256, 256, 256, 256, 256, 256, 256,
1105
+ 256, 256, 256, 256, 256, 256, 256, 256,
1106
+ 256, 256, 256, 256, 256, 150, 256, 264,
1107
+ 264, 264, 264, 264, 150, 150, 150, 150,
1108
+ 150, 150, 150, 150, 150, 150, 150, 150,
1109
+ 150, 150, 150, 150, 150, 150, 264, 150,
1110
+ 152, 152, 152, 152, 152, 249, 249, 249,
1111
+ 249, 249, 249, 249, 249, 249, 249, 249,
1112
+ 249, 249, 249, 249, 249, 249, 249, 152,
1113
+ 249, 249, 249, 249, 249, 249, 249, 249,
1114
+ 249, 249, 249, 249, 249, 249, 249, 249,
1115
+ 249, 249, 249, 249, 249, 249, 249, 249,
1116
+ 249, 249, 249, 249, 249, 249, 249, 249,
1117
+ 249, 249, 249, 249, 249, 249, 249, 249,
1118
+ 249, 249, 249, 249, 249, 249, 249, 249,
1119
+ 249, 249, 249, 249, 249, 249, 249, 249,
1120
+ 249, 249, 249, 249, 249, 249, 249, 249,
1121
+ 249, 249, 249, 249, 249, 249, 249, 249,
1122
+ 249, 249, 249, 249, 249, 249, 249, 249,
1123
+ 249, 249, 249, 249, 249, 249, 249, 249,
1124
+ 249, 249, 249, 249, 150, 249, 266, 266,
1125
+ 266, 266, 266, 266, 266, 266, 266, 266,
1126
+ 250, 250, 250, 250, 250, 250, 250, 266,
1127
+ 266, 266, 266, 266, 266, 250, 250, 250,
1128
+ 250, 250, 250, 250, 250, 250, 250, 250,
1129
+ 250, 250, 250, 250, 250, 250, 250, 250,
1130
+ 250, 250, 250, 250, 250, 250, 250, 266,
1131
+ 266, 266, 266, 266, 266, 250, 250, 250,
1132
+ 250, 250, 250, 250, 250, 250, 250, 250,
1133
+ 250, 250, 250, 250, 250, 250, 250, 250,
1134
+ 250, 250, 250, 267, 250, 268, 268, 268,
1135
+ 268, 268, 268, 268, 268, 268, 268, 251,
1136
+ 251, 251, 251, 251, 251, 251, 268, 268,
1137
+ 268, 268, 268, 268, 251, 251, 251, 251,
1138
+ 251, 251, 251, 251, 251, 251, 251, 251,
1139
+ 251, 251, 251, 251, 251, 251, 251, 251,
1140
+ 251, 251, 251, 251, 251, 251, 268, 268,
1141
+ 268, 268, 268, 268, 251, 251, 251, 251,
1142
+ 251, 251, 251, 251, 251, 251, 251, 251,
1143
+ 251, 251, 251, 251, 251, 251, 251, 251,
1144
+ 251, 251, 267, 251, 269, 269, 269, 269,
1145
+ 269, 269, 269, 269, 269, 269, 252, 252,
1146
+ 252, 252, 252, 252, 252, 269, 269, 269,
1147
+ 269, 269, 269, 252, 252, 252, 252, 252,
1148
+ 252, 252, 252, 252, 252, 252, 252, 252,
1149
+ 252, 252, 252, 252, 252, 252, 252, 252,
1150
+ 252, 252, 252, 252, 252, 269, 269, 269,
1151
+ 269, 269, 269, 252, 252, 252, 252, 252,
1152
+ 252, 252, 252, 252, 252, 252, 252, 252,
1153
+ 252, 252, 252, 252, 252, 252, 252, 252,
1154
+ 252, 267, 252, 270, 270, 270, 270, 270,
1155
+ 270, 270, 270, 270, 270, 253, 253, 253,
1156
+ 253, 253, 253, 253, 270, 270, 270, 270,
1157
+ 270, 270, 253, 253, 253, 253, 253, 253,
1158
+ 253, 253, 253, 253, 253, 253, 253, 253,
1159
+ 253, 253, 253, 253, 253, 253, 253, 253,
1160
+ 253, 253, 253, 253, 270, 270, 270, 270,
1161
+ 270, 270, 253, 253, 253, 253, 253, 253,
1162
+ 253, 253, 253, 253, 253, 253, 253, 253,
1163
+ 253, 253, 253, 253, 253, 253, 253, 253,
1164
+ 267, 253, 271, 271, 271, 271, 271, 271,
1165
+ 271, 271, 271, 271, 254, 254, 254, 254,
1166
+ 254, 254, 254, 271, 271, 271, 271, 271,
1167
+ 271, 254, 254, 254, 254, 254, 254, 254,
1168
+ 254, 254, 254, 254, 254, 254, 254, 254,
1101
1169
  254, 254, 254, 254, 254, 254, 254, 254,
1170
+ 254, 254, 254, 271, 271, 271, 271, 271,
1171
+ 271, 254, 254, 254, 254, 254, 254, 254,
1102
1172
  254, 254, 254, 254, 254, 254, 254, 254,
1103
- 254, 254, 254, 254, 254, 254, 254, 255,
1104
- 255, 255, 255, 255, 255, 254, 0
1173
+ 254, 254, 254, 254, 254, 254, 254, 267,
1174
+ 254, 272, 272, 272, 272, 272, 272, 272,
1175
+ 272, 272, 272, 255, 255, 255, 255, 255,
1176
+ 255, 255, 272, 272, 272, 272, 272, 272,
1177
+ 255, 255, 255, 255, 255, 255, 255, 255,
1178
+ 255, 255, 255, 255, 255, 255, 255, 255,
1179
+ 255, 255, 255, 255, 255, 255, 255, 255,
1180
+ 255, 255, 272, 272, 272, 272, 272, 272,
1181
+ 255, 255, 255, 255, 255, 255, 255, 255,
1182
+ 255, 255, 255, 255, 255, 255, 255, 255,
1183
+ 255, 255, 255, 255, 255, 255, 267, 255,
1184
+ 273, 273, 273, 273, 273, 273, 273, 273,
1185
+ 273, 273, 256, 256, 256, 256, 256, 256,
1186
+ 256, 273, 273, 273, 273, 273, 273, 256,
1187
+ 256, 256, 256, 256, 256, 256, 256, 256,
1188
+ 256, 256, 256, 256, 256, 256, 256, 256,
1189
+ 256, 256, 256, 256, 256, 256, 256, 256,
1190
+ 256, 273, 273, 273, 273, 273, 273, 256,
1191
+ 256, 256, 256, 256, 256, 256, 256, 256,
1192
+ 256, 256, 256, 256, 256, 256, 256, 256,
1193
+ 256, 256, 256, 256, 256, 267, 256, 267,
1194
+ 150, 0
1105
1195
  ]
1106
1196
 
1107
1197
  class << self
@@ -1109,38 +1199,41 @@ class << self
1109
1199
  private :_re_scanner_trans_targs, :_re_scanner_trans_targs=
1110
1200
  end
1111
1201
  self._re_scanner_trans_targs = [
1112
- 142, 143, 3, 144, 5, 6, 145, 142,
1113
- 8, 142, 10, 142, 142, 12, 142, 14,
1114
- 20, 15, 16, 19, 142, 17, 18, 21,
1115
- 22, 25, 23, 24, 0, 27, 26, 160,
1116
- 29, 0, 30, 31, 44, 161, 32, 33,
1117
- 34, 35, 38, 40, 42, 36, 37, 39,
1118
- 41, 43, 162, 164, 166, 46, 49, 168,
1119
- 48, 162, 162, 162, 53, 54, 162, 56,
1120
- 57, 68, 72, 76, 80, 84, 88, 93,
1121
- 97, 99, 102, 58, 65, 59, 63, 60,
1122
- 61, 62, 162, 64, 66, 67, 69, 70,
1123
- 71, 73, 74, 75, 77, 78, 79, 81,
1124
- 82, 83, 85, 86, 87, 89, 91, 90,
1125
- 92, 94, 95, 96, 98, 100, 101, 104,
1126
- 105, 162, 174, 175, 108, 176, 110, 111,
1127
- 177, 174, 113, 114, 182, 116, 184, 118,
1128
- 184, 119, 120, 121, 123, 126, 124, 125,
1129
- 184, 127, 128, 129, 130, 131, 187, 133,
1130
- 134, 135, 184, 136, 137, 138, 139, 140,
1131
- 141, 1, 2, 4, 146, 147, 142, 148,
1132
- 142, 156, 157, 142, 158, 142, 159, 142,
1133
- 142, 142, 142, 149, 142, 7, 9, 150,
1134
- 11, 153, 151, 152, 142, 154, 155, 142,
1135
- 142, 142, 142, 142, 142, 142, 142, 142,
1136
- 13, 142, 142, 28, 162, 163, 165, 167,
1137
- 169, 162, 170, 171, 172, 173, 162, 162,
1138
- 162, 162, 45, 47, 50, 162, 162, 51,
1139
- 162, 162, 52, 55, 103, 106, 107, 109,
1140
- 178, 179, 174, 179, 179, 174, 179, 180,
1141
- 174, 181, 174, 112, 183, 174, 174, 184,
1142
- 184, 185, 185, 184, 115, 117, 184, 184,
1143
- 122, 132, 184, 186, 184, 184, 184, 184
1202
+ 132, 133, 3, 134, 5, 6, 135, 132,
1203
+ 132, 8, 10, 132, 132, 11, 9, 132,
1204
+ 12, 132, 14, 20, 132, 15, 17, 19,
1205
+ 16, 18, 21, 23, 25, 22, 24, 0,
1206
+ 27, 26, 143, 29, 0, 30, 31, 44,
1207
+ 144, 32, 33, 34, 35, 38, 40, 42,
1208
+ 36, 37, 39, 41, 43, 145, 147, 149,
1209
+ 46, 49, 151, 48, 145, 145, 145, 53,
1210
+ 54, 145, 56, 57, 68, 72, 76, 80,
1211
+ 84, 88, 93, 97, 99, 102, 58, 65,
1212
+ 59, 63, 60, 61, 62, 145, 64, 66,
1213
+ 67, 69, 70, 71, 73, 74, 75, 77,
1214
+ 78, 79, 81, 82, 83, 85, 86, 87,
1215
+ 89, 91, 90, 92, 94, 95, 96, 98,
1216
+ 100, 101, 104, 105, 145, 157, 158, 108,
1217
+ 159, 110, 111, 160, 157, 113, 114, 165,
1218
+ 167, 170, 167, 167, 118, 167, 120, 123,
1219
+ 121, 122, 167, 124, 125, 126, 127, 128,
1220
+ 167, 171, 130, 172, 180, 189, 167, 167,
1221
+ 131, 1, 2, 4, 136, 137, 132, 138,
1222
+ 132, 139, 140, 132, 141, 132, 142, 132,
1223
+ 132, 132, 132, 7, 132, 132, 132, 132,
1224
+ 132, 132, 132, 132, 132, 13, 132, 132,
1225
+ 28, 145, 146, 148, 150, 152, 145, 153,
1226
+ 154, 155, 156, 145, 145, 145, 145, 45,
1227
+ 47, 50, 145, 145, 51, 145, 145, 52,
1228
+ 55, 103, 106, 107, 109, 161, 162, 157,
1229
+ 162, 162, 157, 157, 163, 157, 164, 157,
1230
+ 112, 166, 157, 157, 167, 167, 168, 168,
1231
+ 167, 115, 116, 167, 167, 119, 129, 167,
1232
+ 169, 167, 167, 167, 167, 117, 167, 167,
1233
+ 167, 167, 173, 174, 175, 176, 177, 178,
1234
+ 179, 181, 182, 183, 184, 185, 186, 187,
1235
+ 188, 167, 190, 167, 191, 192, 193, 194,
1236
+ 195, 196
1144
1237
  ]
1145
1238
 
1146
1239
  class << self
@@ -1149,37 +1242,40 @@ class << self
1149
1242
  end
1150
1243
  self._re_scanner_trans_actions = [
1151
1244
  1, 2, 0, 2, 0, 0, 2, 3,
1152
- 4, 5, 0, 6, 7, 0, 8, 0,
1153
- 0, 0, 0, 0, 9, 0, 0, 0,
1154
- 0, 0, 0, 0, 10, 0, 0, 0,
1155
- 0, 0, 0, 0, 0, 12, 0, 0,
1156
- 0, 0, 0, 0, 0, 0, 0, 0,
1157
- 0, 0, 13, 14, 14, 0, 0, 14,
1158
- 0, 15, 16, 17, 0, 0, 18, 0,
1159
- 0, 0, 0, 0, 0, 0, 0, 0,
1160
- 0, 0, 0, 0, 0, 0, 0, 0,
1161
- 0, 0, 19, 0, 0, 0, 0, 0,
1162
- 0, 0, 0, 0, 0, 0, 0, 0,
1163
- 0, 0, 0, 0, 0, 0, 0, 0,
1164
- 0, 0, 0, 0, 0, 0, 0, 0,
1165
- 0, 20, 21, 22, 0, 22, 0, 0,
1166
- 22, 23, 0, 0, 0, 0, 24, 0,
1167
- 25, 0, 0, 0, 0, 0, 0, 0,
1168
- 26, 0, 0, 0, 0, 0, 0, 0,
1169
- 0, 0, 27, 0, 0, 0, 0, 0,
1170
- 0, 0, 0, 0, 0, 0, 30, 31,
1171
- 32, 0, 0, 33, 0, 34, 14, 35,
1172
- 36, 37, 38, 39, 40, 4, 0, 0,
1173
- 0, 0, 0, 0, 41, 0, 0, 42,
1174
- 43, 44, 45, 46, 47, 48, 49, 50,
1175
- 0, 51, 52, 0, 54, 0, 14, 14,
1176
- 0, 55, 0, 0, 14, 14, 56, 57,
1177
- 58, 59, 0, 0, 0, 60, 61, 0,
1178
- 62, 63, 0, 0, 0, 0, 0, 0,
1179
- 0, 22, 64, 65, 66, 67, 68, 0,
1180
- 69, 14, 70, 0, 14, 71, 72, 73,
1181
- 74, 75, 76, 77, 0, 0, 78, 79,
1182
- 0, 0, 80, 0, 81, 82, 83, 84
1245
+ 4, 5, 0, 6, 7, 0, 5, 8,
1246
+ 0, 9, 0, 0, 10, 0, 0, 0,
1247
+ 0, 0, 0, 0, 0, 0, 0, 11,
1248
+ 0, 0, 0, 0, 0, 0, 0, 0,
1249
+ 13, 0, 0, 0, 0, 0, 0, 0,
1250
+ 0, 0, 0, 0, 0, 14, 15, 15,
1251
+ 0, 0, 15, 0, 16, 17, 18, 0,
1252
+ 0, 19, 0, 0, 0, 0, 0, 0,
1253
+ 0, 0, 0, 0, 0, 0, 0, 0,
1254
+ 0, 0, 0, 0, 0, 20, 0, 0,
1255
+ 0, 0, 0, 0, 0, 0, 0, 0,
1256
+ 0, 0, 0, 0, 0, 0, 0, 0,
1257
+ 0, 0, 0, 0, 0, 0, 0, 0,
1258
+ 0, 0, 0, 0, 21, 22, 23, 0,
1259
+ 23, 0, 0, 23, 24, 0, 0, 0,
1260
+ 25, 15, 26, 27, 0, 28, 0, 0,
1261
+ 0, 0, 29, 0, 0, 0, 0, 0,
1262
+ 30, 0, 0, 0, 0, 0, 31, 32,
1263
+ 0, 0, 0, 0, 0, 0, 35, 36,
1264
+ 37, 0, 0, 38, 0, 39, 15, 40,
1265
+ 41, 42, 43, 44, 45, 46, 47, 48,
1266
+ 49, 50, 51, 52, 53, 0, 54, 55,
1267
+ 0, 57, 0, 15, 15, 0, 58, 0,
1268
+ 0, 15, 15, 59, 60, 61, 62, 0,
1269
+ 0, 0, 63, 64, 0, 65, 66, 0,
1270
+ 0, 0, 0, 0, 0, 0, 23, 67,
1271
+ 68, 69, 70, 71, 0, 72, 15, 73,
1272
+ 0, 15, 74, 75, 76, 77, 78, 79,
1273
+ 80, 0, 0, 81, 82, 0, 0, 83,
1274
+ 0, 84, 85, 86, 87, 0, 88, 89,
1275
+ 90, 91, 0, 0, 0, 0, 0, 0,
1276
+ 0, 0, 0, 0, 0, 0, 0, 0,
1277
+ 15, 92, 0, 93, 0, 0, 0, 0,
1278
+ 0, 0
1183
1279
  ]
1184
1280
 
1185
1281
  class << self
@@ -1203,14 +1299,15 @@ self._re_scanner_to_state_actions = [
1203
1299
  0, 0, 0, 0, 0, 0, 0, 0,
1204
1300
  0, 0, 0, 0, 0, 0, 0, 0,
1205
1301
  0, 0, 0, 0, 0, 0, 0, 0,
1302
+ 0, 0, 0, 0, 33, 0, 0, 0,
1206
1303
  0, 0, 0, 0, 0, 0, 0, 0,
1207
- 0, 0, 0, 0, 0, 0, 28, 0,
1304
+ 56, 56, 0, 0, 0, 0, 0, 0,
1305
+ 0, 0, 0, 0, 0, 33, 0, 0,
1306
+ 0, 0, 0, 0, 0, 0, 0, 56,
1208
1307
  0, 0, 0, 0, 0, 0, 0, 0,
1209
1308
  0, 0, 0, 0, 0, 0, 0, 0,
1210
- 0, 53, 53, 0, 0, 0, 0, 0,
1211
- 0, 0, 0, 0, 0, 0, 28, 0,
1212
1309
  0, 0, 0, 0, 0, 0, 0, 0,
1213
- 53, 0, 0, 0
1310
+ 0, 0, 0, 0, 0
1214
1311
  ]
1215
1312
 
1216
1313
  class << self
@@ -1234,14 +1331,15 @@ self._re_scanner_from_state_actions = [
1234
1331
  0, 0, 0, 0, 0, 0, 0, 0,
1235
1332
  0, 0, 0, 0, 0, 0, 0, 0,
1236
1333
  0, 0, 0, 0, 0, 0, 0, 0,
1334
+ 0, 0, 0, 0, 34, 0, 0, 0,
1237
1335
  0, 0, 0, 0, 0, 0, 0, 0,
1238
- 0, 0, 0, 0, 0, 0, 29, 0,
1336
+ 34, 34, 0, 0, 0, 0, 0, 0,
1337
+ 0, 0, 0, 0, 0, 34, 0, 0,
1338
+ 0, 0, 0, 0, 0, 0, 0, 34,
1239
1339
  0, 0, 0, 0, 0, 0, 0, 0,
1240
1340
  0, 0, 0, 0, 0, 0, 0, 0,
1241
- 0, 29, 29, 0, 0, 0, 0, 0,
1242
- 0, 0, 0, 0, 0, 0, 29, 0,
1243
1341
  0, 0, 0, 0, 0, 0, 0, 0,
1244
- 29, 0, 0, 0
1342
+ 0, 0, 0, 0, 0
1245
1343
  ]
1246
1344
 
1247
1345
  class << self
@@ -1252,12 +1350,9 @@ self._re_scanner_eof_actions = [
1252
1350
  0, 0, 0, 0, 0, 0, 0, 0,
1253
1351
  0, 0, 0, 0, 0, 0, 0, 0,
1254
1352
  0, 0, 0, 0, 0, 0, 0, 0,
1255
- 0, 0, 10, 10, 11, 11, 11, 11,
1256
- 11, 11, 11, 11, 11, 11, 11, 11,
1257
- 11, 11, 11, 11, 11, 0, 0, 0,
1258
- 0, 0, 0, 0, 0, 0, 0, 0,
1259
- 0, 0, 0, 0, 0, 0, 0, 0,
1260
- 0, 0, 0, 0, 0, 0, 0, 0,
1353
+ 0, 0, 11, 11, 12, 12, 12, 12,
1354
+ 12, 12, 12, 12, 12, 12, 12, 12,
1355
+ 12, 12, 12, 12, 12, 0, 0, 0,
1261
1356
  0, 0, 0, 0, 0, 0, 0, 0,
1262
1357
  0, 0, 0, 0, 0, 0, 0, 0,
1263
1358
  0, 0, 0, 0, 0, 0, 0, 0,
@@ -1266,13 +1361,17 @@ self._re_scanner_eof_actions = [
1266
1361
  0, 0, 0, 0, 0, 0, 0, 0,
1267
1362
  0, 0, 0, 0, 0, 0, 0, 0,
1268
1363
  0, 0, 0, 0, 0, 0, 0, 0,
1364
+ 0, 0, 0, 11, 11, 0, 0, 11,
1365
+ 11, 11, 11, 11, 11, 11, 11, 11,
1366
+ 11, 11, 11, 0, 0, 0, 0, 0,
1269
1367
  0, 0, 0, 0, 0, 0, 0, 0,
1368
+ 0, 11, 0, 0, 0, 0, 0, 0,
1270
1369
  0, 0, 0, 0, 0, 0, 0, 0,
1370
+ 0, 0, 0, 0, 0, 0, 0, 11,
1271
1371
  0, 0, 0, 0, 0, 0, 0, 0,
1272
- 0, 0, 10, 0, 0, 0, 0, 0,
1273
1372
  0, 0, 0, 0, 0, 0, 0, 0,
1274
1373
  0, 0, 0, 0, 0, 0, 0, 0,
1275
- 0, 0, 0, 0
1374
+ 0, 0, 0, 0, 0
1276
1375
  ]
1277
1376
 
1278
1377
  class << self
@@ -1281,39 +1380,40 @@ class << self
1281
1380
  end
1282
1381
  self._re_scanner_eof_trans = [
1283
1382
  0, 1, 1, 1, 1, 1, 1, 8,
1284
- 8, 8, 8, 8, 8, 15, 15, 15,
1285
- 15, 15, 15, 15, 15, 15, 15, 15,
1286
- 15, 15, 0, 0, 0, 0, 0, 0,
1287
- 0, 0, 0, 0, 0, 0, 0, 0,
1288
- 0, 0, 0, 0, 0, 51, 51, 51,
1289
- 51, 51, 51, 51, 59, 59, 59, 59,
1290
- 59, 59, 59, 59, 59, 59, 59, 59,
1291
- 59, 59, 59, 59, 59, 59, 59, 59,
1292
- 59, 59, 59, 59, 59, 59, 59, 59,
1293
- 59, 59, 59, 59, 59, 59, 59, 59,
1294
- 59, 59, 59, 59, 59, 59, 59, 59,
1295
- 59, 59, 59, 59, 59, 59, 59, 59,
1296
- 59, 59, 115, 115, 115, 115, 115, 115,
1297
- 122, 122, 122, 0, 0, 0, 0, 0,
1298
- 0, 0, 0, 0, 0, 0, 0, 0,
1299
- 0, 0, 0, 0, 0, 0, 0, 0,
1300
- 0, 0, 0, 0, 0, 0, 0, 170,
1301
- 170, 170, 170, 170, 171, 173, 173, 173,
1302
- 173, 173, 173, 173, 184, 186, 188, 190,
1303
- 194, 0, 0, 210, 210, 210, 210, 210,
1304
- 210, 210, 210, 210, 210, 217, 0, 233,
1305
- 233, 233, 233, 115, 233, 235, 238, 235,
1306
- 0, 251, 253, 255
1383
+ 8, 8, 8, 8, 8, 18, 18, 18,
1384
+ 18, 18, 18, 18, 18, 18, 18, 18,
1385
+ 18, 18, 0, 0, 0, 0, 0, 0,
1386
+ 0, 0, 0, 0, 0, 0, 0, 0,
1387
+ 0, 0, 0, 0, 0, 54, 54, 54,
1388
+ 54, 54, 54, 54, 62, 62, 62, 62,
1389
+ 62, 62, 62, 62, 62, 62, 62, 62,
1390
+ 62, 62, 62, 62, 62, 62, 62, 62,
1391
+ 62, 62, 62, 62, 62, 62, 62, 62,
1392
+ 62, 62, 62, 62, 62, 62, 62, 62,
1393
+ 62, 62, 62, 62, 62, 62, 62, 62,
1394
+ 62, 62, 62, 62, 62, 62, 62, 62,
1395
+ 62, 62, 118, 118, 118, 118, 118, 118,
1396
+ 125, 125, 125, 0, 0, 131, 131, 0,
1397
+ 0, 0, 0, 0, 0, 0, 0, 0,
1398
+ 0, 0, 0, 152, 0, 170, 170, 170,
1399
+ 170, 170, 171, 173, 175, 177, 179, 183,
1400
+ 0, 0, 199, 199, 199, 199, 199, 199,
1401
+ 199, 199, 199, 199, 206, 0, 222, 222,
1402
+ 222, 222, 118, 222, 224, 227, 224, 0,
1403
+ 240, 242, 244, 247, 250, 250, 250, 250,
1404
+ 250, 250, 250, 250, 250, 250, 250, 250,
1405
+ 250, 250, 250, 250, 250, 266, 266, 266,
1406
+ 266, 266, 266, 266, 266
1307
1407
  ]
1308
1408
 
1309
1409
  class << self
1310
1410
  attr_accessor :re_scanner_start
1311
1411
  end
1312
- self.re_scanner_start = 142;
1412
+ self.re_scanner_start = 132;
1313
1413
  class << self
1314
1414
  attr_accessor :re_scanner_first_final
1315
1415
  end
1316
- self.re_scanner_first_final = 142;
1416
+ self.re_scanner_first_final = 132;
1317
1417
  class << self
1318
1418
  attr_accessor :re_scanner_error
1319
1419
  end
@@ -1322,46 +1422,76 @@ self.re_scanner_error = 0;
1322
1422
  class << self
1323
1423
  attr_accessor :re_scanner_en_unicode_property
1324
1424
  end
1325
- self.re_scanner_en_unicode_property = 161;
1425
+ self.re_scanner_en_unicode_property = 144;
1326
1426
  class << self
1327
1427
  attr_accessor :re_scanner_en_character_set
1328
1428
  end
1329
- self.re_scanner_en_character_set = 162;
1429
+ self.re_scanner_en_character_set = 145;
1330
1430
  class << self
1331
1431
  attr_accessor :re_scanner_en_set_escape_sequence
1332
1432
  end
1333
- self.re_scanner_en_set_escape_sequence = 174;
1433
+ self.re_scanner_en_set_escape_sequence = 157;
1334
1434
  class << self
1335
1435
  attr_accessor :re_scanner_en_escape_sequence
1336
1436
  end
1337
- self.re_scanner_en_escape_sequence = 184;
1437
+ self.re_scanner_en_escape_sequence = 167;
1338
1438
  class << self
1339
1439
  attr_accessor :re_scanner_en_main
1340
1440
  end
1341
- self.re_scanner_en_main = 142;
1441
+ self.re_scanner_en_main = 132;
1342
1442
 
1343
1443
 
1344
- # line 626 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1444
+ # line 684 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1345
1445
 
1446
+ # General scanner error (catch all)
1346
1447
  class ScannerError < StandardError
1347
1448
  def initialize(what)
1348
1449
  super what
1349
1450
  end
1350
1451
  end
1351
1452
 
1453
+ # Base for all scanner validation errors
1454
+ class ValidationError < StandardError
1455
+ def initialize(reason)
1456
+ super reason
1457
+ end
1458
+ end
1459
+
1460
+ # Unexpected end of pattern
1352
1461
  class PrematureEndError < ScannerError
1353
1462
  def initialize(where = '')
1354
- super "Premature end of pattern: #{where}"
1463
+ super "Premature end of pattern at #{where}"
1464
+ end
1465
+ end
1466
+
1467
+ # Invalid sequence format. Used for escape sequences, mainly.
1468
+ class InvalidSequenceError < ValidationError
1469
+ def initialize(what = 'sequence', where = '')
1470
+ super "Invalid #{what} at #{where}"
1471
+ end
1472
+ end
1473
+
1474
+ # Invalid group. Used for named groups.
1475
+ class InvalidGroupError < ValidationError
1476
+ def initialize(what, reason)
1477
+ super "Invalid #{what}, #{reason}."
1478
+ end
1479
+ end
1480
+
1481
+ # Invalid back reference. Used for name a number refs/calls.
1482
+ class InvalidBackrefError < ValidationError
1483
+ def initialize(what, reason)
1484
+ super "Invalid back reference #{what}, #{reason}"
1355
1485
  end
1356
1486
  end
1357
1487
 
1358
- class UnknownUnicodePropertyError < ScannerError
1488
+ # The property name was not recognized by the scanner.
1489
+ class UnknownUnicodePropertyError < ValidationError
1359
1490
  def initialize(name)
1360
1491
  super "Unknown unicode character property name #{name}"
1361
1492
  end
1362
1493
  end
1363
1494
 
1364
-
1365
1495
  # Scans the given regular expression text, or Regexp object and collects the
1366
1496
  # emitted token into an array that gets returned at the end. If a block is
1367
1497
  # given, it gets called for each emitted token.
@@ -1382,7 +1512,7 @@ self.re_scanner_en_main = 142;
1382
1512
  in_set, set_depth, set_type = false, 0, :set
1383
1513
 
1384
1514
 
1385
- # line 1386 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
1515
+ # line 1516 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
1386
1516
  begin
1387
1517
  p ||= 0
1388
1518
  pe ||= data.length
@@ -1393,9 +1523,9 @@ begin
1393
1523
  act = 0
1394
1524
  end
1395
1525
 
1396
- # line 666 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1526
+ # line 754 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1397
1527
 
1398
- # line 1399 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
1528
+ # line 1529 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
1399
1529
  begin
1400
1530
  testEof = false
1401
1531
  _slen, _trans, _keys, _inds, _acts, _nacts = nil
@@ -1418,22 +1548,21 @@ begin
1418
1548
  end
1419
1549
  if _goto_level <= _resume
1420
1550
  case _re_scanner_from_state_actions[cs]
1421
- when 29 then
1422
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1551
+ when 34 then
1552
+ # line 1 "NONE"
1423
1553
  begin
1424
1554
  ts = p
1425
1555
  end
1426
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1427
- # line 1428 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
1556
+ # line 1557 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
1428
1557
  end
1429
1558
  _keys = cs << 1
1430
1559
  _inds = _re_scanner_index_offsets[cs]
1431
1560
  _slen = _re_scanner_key_spans[cs]
1432
1561
  _trans = if ( _slen > 0 &&
1433
- _re_scanner_trans_keys[_keys] <= data[p] &&
1434
- data[p] <= _re_scanner_trans_keys[_keys + 1]
1562
+ _re_scanner_trans_keys[_keys] <= data[p].ord &&
1563
+ data[p].ord <= _re_scanner_trans_keys[_keys + 1]
1435
1564
  ) then
1436
- _re_scanner_indicies[ _inds + data[p] - _re_scanner_trans_keys[_keys] ]
1565
+ _re_scanner_indicies[ _inds + data[p].ord - _re_scanner_trans_keys[_keys] ]
1437
1566
  else
1438
1567
  _re_scanner_indicies[ _inds + _slen ]
1439
1568
  end
@@ -1442,33 +1571,28 @@ ts = p
1442
1571
  cs = _re_scanner_trans_targs[_trans]
1443
1572
  if _re_scanner_trans_actions[_trans] != 0
1444
1573
  case _re_scanner_trans_actions[_trans]
1445
- when 10 then
1446
- # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1447
- begin
1448
- raise PrematureEndError end
1449
- # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1450
- when 31 then
1451
- # line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1574
+ when 11 then
1575
+ # line 124 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1452
1576
  begin
1453
- group_depth += 1; in_group = true end
1454
- # line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1455
- when 4 then
1456
- # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1577
+
1578
+ text = ts ? copy(data, ts-1..-1) : data.pack('c*')
1579
+ raise PrematureEndError.new( text )
1580
+ end
1581
+ when 5 then
1582
+ # line 137 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1457
1583
  begin
1458
1584
  group_depth -= 1; in_group = group_depth > 0 ? true : false end
1459
- # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1460
- when 14 then
1461
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1585
+ when 15 then
1586
+ # line 1 "NONE"
1462
1587
  begin
1463
1588
  te = p+1
1464
1589
  end
1465
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1466
- when 12 then
1467
- # line 60 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1590
+ when 13 then
1591
+ # line 60 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/property.rl"
1468
1592
  begin
1469
1593
  te = p+1
1470
1594
  begin
1471
- text = data[ts-1..te-1].pack('c*')
1595
+ text = text(data, ts, te, 1).first
1472
1596
  if in_set
1473
1597
  type = :set
1474
1598
  else
@@ -1935,9 +2059,14 @@ te = p+1
1935
2059
  self.emit(type, :script_unknown, text, ts-1, te)
1936
2060
 
1937
2061
  else
1938
- raise UnknownUnicodePropertyError.new(name)
2062
+ # Should this really be an error? Or would emitting
2063
+ # an :unknown for the property be better?
2064
+ #
2065
+ # self.emit(type, :unknown, text, ts-1, te)
1939
2066
 
2067
+ raise UnknownUnicodePropertyError.new(name)
1940
2068
  end
2069
+
1941
2070
  begin
1942
2071
  top -= 1
1943
2072
  cs = stack[top]
@@ -1947,20 +2076,19 @@ te = p+1
1947
2076
 
1948
2077
  end
1949
2078
  end
1950
- # line 60 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1951
- when 57 then
1952
- # line 126 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2079
+ when 60 then
2080
+ # line 143 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1953
2081
  begin
1954
2082
  te = p+1
1955
2083
  begin
1956
2084
  set_type = set_depth > 1 ? :subset : :set
1957
2085
  set_depth -= 1; in_set = set_depth > 0 ? true : false
1958
2086
 
1959
- self.emit(set_type, :close, data[ts..te-1].pack('c*'), ts, te)
2087
+ emit(set_type, :close, *text(data, ts, te))
1960
2088
 
1961
2089
  if set_depth == 0
1962
2090
  begin
1963
- cs = 142
2091
+ cs = 132
1964
2092
  _goto_level = _again
1965
2093
  next
1966
2094
  end
@@ -1976,21 +2104,20 @@ te = p+1
1976
2104
  end
1977
2105
  end
1978
2106
  end
1979
- # line 126 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1980
- when 61 then
1981
- # line 139 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2107
+ when 64 then
2108
+ # line 156 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1982
2109
  begin
1983
2110
  te = p+1
1984
2111
  begin # special case, emits two tokens
1985
2112
  set_type = set_depth > 1 ? :subset : :set
1986
2113
  set_depth -= 1; in_set = set_depth > 0 ? true : false
1987
2114
 
1988
- self.emit(set_type, :member, data[ts..te-2].pack('c*'), ts, te)
1989
- self.emit(set_type, :close, data[ts+1..te-1].pack('c*'), ts, te)
2115
+ emit(set_type, :member, copy(data, ts..te-2), ts, te)
2116
+ emit(set_type, :close, copy(data, ts+1..te-1), ts, te)
1990
2117
 
1991
2118
  if set_depth == 0
1992
2119
  begin
1993
- cs = 142
2120
+ cs = 132
1994
2121
  _goto_level = _again
1995
2122
  next
1996
2123
  end
@@ -2006,61 +2133,56 @@ te = p+1
2006
2133
  end
2007
2134
  end
2008
2135
  end
2009
- # line 139 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2010
- when 58 then
2011
- # line 153 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2136
+ when 61 then
2137
+ # line 170 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2012
2138
  begin
2013
2139
  te = p+1
2014
2140
  begin
2015
- text = data[ts..te-1].pack('c*')
2141
+ text = text(data, ts, te).first
2016
2142
  if @tokens.last[1] == :open
2017
- self.emit(set_type, :negate, text, ts, te)
2143
+ emit(set_type, :negate, text, ts, te)
2018
2144
  else
2019
- self.emit(set_type, :member, text, ts, te)
2145
+ emit(set_type, :member, text, ts, te)
2020
2146
  end
2021
2147
  end
2022
2148
  end
2023
- # line 153 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2024
- when 15 then
2025
- # line 162 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2149
+ when 16 then
2150
+ # line 179 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2026
2151
  begin
2027
2152
  te = p+1
2028
2153
  begin
2029
- self.emit(set_type, :range, data[ts..te-1].pack('c*'), ts, te)
2154
+ emit(set_type, :range, *text(data, ts, te))
2030
2155
  end
2031
2156
  end
2032
- # line 162 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2033
- when 60 then
2034
- # line 166 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2157
+ when 63 then
2158
+ # line 183 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2035
2159
  begin
2036
2160
  te = p+1
2037
2161
  begin
2038
- self.emit(set_type, :intersection, data[ts..te-1].pack('c*'), ts, te)
2162
+ emit(set_type, :intersection, *text(data, ts, te))
2039
2163
  end
2040
2164
  end
2041
- # line 166 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2042
- when 56 then
2043
- # line 170 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2165
+ when 59 then
2166
+ # line 187 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2044
2167
  begin
2045
2168
  te = p+1
2046
2169
  begin
2047
2170
  begin
2048
2171
  stack[top] = cs
2049
2172
  top+= 1
2050
- cs = 174
2173
+ cs = 157
2051
2174
  _goto_level = _again
2052
2175
  next
2053
2176
  end
2054
2177
 
2055
2178
  end
2056
2179
  end
2057
- # line 170 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2058
- when 19 then
2059
- # line 182 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2180
+ when 20 then
2181
+ # line 199 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2060
2182
  begin
2061
2183
  te = p+1
2062
2184
  begin
2063
- text = data[ts..te-1].pack('c*')
2185
+ text = text(data, ts, te).first
2064
2186
 
2065
2187
  class_name = text[2..-3]
2066
2188
  if class_name[0].chr == '^'
@@ -2068,110 +2190,101 @@ te = p+1
2068
2190
  end
2069
2191
 
2070
2192
  token_sym = "class_#{class_name}".to_sym
2071
- self.emit(set_type, token_sym, text, ts, te)
2193
+ emit(set_type, token_sym, text, ts, te)
2072
2194
  end
2073
2195
  end
2074
- # line 182 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2075
- when 18 then
2076
- # line 194 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2196
+ when 19 then
2197
+ # line 211 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2077
2198
  begin
2078
2199
  te = p+1
2079
2200
  begin
2080
- self.emit(set_type, :collation, data[ts..te-1].pack('c*'), ts, te)
2201
+ emit(set_type, :collation, *text(data, ts, te))
2081
2202
  end
2082
2203
  end
2083
- # line 194 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2084
- when 20 then
2085
- # line 198 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2204
+ when 21 then
2205
+ # line 215 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2086
2206
  begin
2087
2207
  te = p+1
2088
2208
  begin
2089
- self.emit(set_type, :equivalent, data[ts..te-1].pack('c*'), ts, te)
2209
+ emit(set_type, :equivalent, *text(data, ts, te))
2090
2210
  end
2091
2211
  end
2092
- # line 198 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2093
- when 55 then
2094
- # line 204 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2212
+ when 58 then
2213
+ # line 221 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2095
2214
  begin
2096
2215
  te = p+1
2097
2216
  begin
2098
- self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
2217
+ emit(set_type, :member, *text(data, ts, te))
2099
2218
  end
2100
2219
  end
2101
- # line 204 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2102
- when 54 then
2103
- # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2220
+ when 57 then
2221
+ # line 229 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2104
2222
  begin
2105
2223
  te = p+1
2106
2224
  begin
2107
- self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
2225
+ emit(set_type, :member, *text(data, ts, te))
2108
2226
  end
2109
2227
  end
2110
- # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2111
- when 63 then
2112
- # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2228
+ when 66 then
2229
+ # line 191 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2113
2230
  begin
2114
2231
  te = p
2115
2232
  p = p - 1; begin
2116
2233
  set_depth += 1; in_set = true
2117
2234
  set_type = set_depth > 1 ? :subset : :set
2118
2235
 
2119
- self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
2236
+ emit(set_type, :open, *text(data, ts, te))
2120
2237
  begin
2121
2238
  stack[top] = cs
2122
2239
  top+= 1
2123
- cs = 162
2240
+ cs = 145
2124
2241
  _goto_level = _again
2125
2242
  next
2126
2243
  end
2127
2244
 
2128
2245
  end
2129
2246
  end
2130
- # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2131
- when 59 then
2132
- # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2247
+ when 62 then
2248
+ # line 229 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2133
2249
  begin
2134
2250
  te = p
2135
2251
  p = p - 1; begin
2136
- self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
2252
+ emit(set_type, :member, *text(data, ts, te))
2137
2253
  end
2138
2254
  end
2139
- # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2140
- when 17 then
2141
- # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2255
+ when 18 then
2256
+ # line 191 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2142
2257
  begin
2143
2258
  begin p = ((te))-1; end
2144
2259
  begin
2145
2260
  set_depth += 1; in_set = true
2146
2261
  set_type = set_depth > 1 ? :subset : :set
2147
2262
 
2148
- self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
2263
+ emit(set_type, :open, *text(data, ts, te))
2149
2264
  begin
2150
2265
  stack[top] = cs
2151
2266
  top+= 1
2152
- cs = 162
2267
+ cs = 145
2153
2268
  _goto_level = _again
2154
2269
  next
2155
2270
  end
2156
2271
 
2157
2272
  end
2158
2273
  end
2159
- # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2160
- when 13 then
2161
- # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2274
+ when 14 then
2275
+ # line 229 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2162
2276
  begin
2163
2277
  begin p = ((te))-1; end
2164
2278
  begin
2165
- self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
2279
+ emit(set_type, :member, *text(data, ts, te))
2166
2280
  end
2167
2281
  end
2168
- # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2169
- when 72 then
2170
- # line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2282
+ when 71 then
2283
+ # line 237 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2171
2284
  begin
2172
2285
  te = p+1
2173
2286
  begin
2174
- self.emit(set_type, :range_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2287
+ emit(set_type, :backspace, *text(data, ts, te, 1))
2175
2288
  begin
2176
2289
  top -= 1
2177
2290
  cs = stack[top]
@@ -2181,13 +2294,12 @@ te = p+1
2181
2294
 
2182
2295
  end
2183
2296
  end
2184
- # line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2185
- when 64 then
2186
- # line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2297
+ when 75 then
2298
+ # line 256 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2187
2299
  begin
2188
2300
  te = p+1
2189
2301
  begin
2190
- self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
2302
+ emit(set_type, :range_hex, *text(data, ts, te, 1))
2191
2303
  begin
2192
2304
  top -= 1
2193
2305
  cs = stack[top]
@@ -2197,18 +2309,32 @@ te = p+1
2197
2309
 
2198
2310
  end
2199
2311
  end
2200
- # line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2201
2312
  when 67 then
2202
- # line 254 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2313
+ # line 266 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2314
+ begin
2315
+ te = p+1
2316
+ begin
2317
+ emit(set_type, :escape, *text(data, ts, te, 1))
2318
+ begin
2319
+ top -= 1
2320
+ cs = stack[top]
2321
+ _goto_level = _again
2322
+ next
2323
+ end
2324
+
2325
+ end
2326
+ end
2327
+ when 70 then
2328
+ # line 271 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2203
2329
  begin
2204
2330
  te = p+1
2205
2331
  begin
2206
2332
  p = p - 1;
2207
- cs = 162;
2333
+ cs = 145;
2208
2334
  begin
2209
2335
  stack[top] = cs
2210
2336
  top+= 1
2211
- cs = 161
2337
+ cs = 144
2212
2338
  _goto_level = _again
2213
2339
  next
2214
2340
  end
@@ -2222,13 +2348,12 @@ te = p+1
2222
2348
 
2223
2349
  end
2224
2350
  end
2225
- # line 254 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2226
- when 71 then
2227
- # line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2351
+ when 74 then
2352
+ # line 256 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2228
2353
  begin
2229
2354
  te = p
2230
2355
  p = p - 1; begin
2231
- self.emit(set_type, :range_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2356
+ emit(set_type, :range_hex, *text(data, ts, te, 1))
2232
2357
  begin
2233
2358
  top -= 1
2234
2359
  cs = stack[top]
@@ -2238,13 +2363,12 @@ p = p - 1; begin
2238
2363
 
2239
2364
  end
2240
2365
  end
2241
- # line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2242
- when 70 then
2243
- # line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2366
+ when 73 then
2367
+ # line 261 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2244
2368
  begin
2245
2369
  te = p
2246
2370
  p = p - 1; begin
2247
- self.emit(set_type, :member_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2371
+ emit(set_type, :member_hex, *text(data, ts, te, 1))
2248
2372
  begin
2249
2373
  top -= 1
2250
2374
  cs = stack[top]
@@ -2254,13 +2378,12 @@ p = p - 1; begin
2254
2378
 
2255
2379
  end
2256
2380
  end
2257
- # line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2258
- when 69 then
2259
- # line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2381
+ when 72 then
2382
+ # line 283 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2260
2383
  begin
2261
2384
  te = p
2262
2385
  p = p - 1; begin
2263
- self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
2386
+ emit(set_type, :escape, *text(data, ts, te, 1))
2264
2387
  begin
2265
2388
  top -= 1
2266
2389
  cs = stack[top]
@@ -2270,13 +2393,12 @@ p = p - 1; begin
2270
2393
 
2271
2394
  end
2272
2395
  end
2273
- # line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2274
- when 23 then
2275
- # line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2396
+ when 24 then
2397
+ # line 261 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2276
2398
  begin
2277
2399
  begin p = ((te))-1; end
2278
2400
  begin
2279
- self.emit(set_type, :member_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2401
+ emit(set_type, :member_hex, *text(data, ts, te, 1))
2280
2402
  begin
2281
2403
  top -= 1
2282
2404
  cs = stack[top]
@@ -2286,9 +2408,8 @@ p = p - 1; begin
2286
2408
 
2287
2409
  end
2288
2410
  end
2289
- # line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2290
- when 21 then
2291
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2411
+ when 22 then
2412
+ # line 1 "NONE"
2292
2413
  begin
2293
2414
  case act
2294
2415
  when 0 then
@@ -2298,30 +2419,18 @@ p = p - 1; begin
2298
2419
  next
2299
2420
  end
2300
2421
  end
2301
- when 14 then
2302
- begin begin p = ((te))-1; end
2303
-
2304
- self.emit(set_type, :backspace, data[ts-1..te-1].pack('c*'), ts-1, te)
2305
- begin
2306
- top -= 1
2307
- cs = stack[top]
2308
- _goto_level = _again
2309
- next
2310
- end
2311
-
2312
- end
2313
2422
  when 15 then
2314
2423
  begin begin p = ((te))-1; end
2315
2424
 
2316
- case text = data[ts-1..te-1].pack('c*')
2317
- when '\d'; self.emit(set_type, :type_digit, text, ts-1, te)
2318
- when '\D'; self.emit(set_type, :type_nondigit, text, ts-1, te)
2319
- when '\h'; self.emit(set_type, :type_hex, text, ts-1, te)
2320
- when '\H'; self.emit(set_type, :type_nonhex, text, ts-1, te)
2321
- when '\s'; self.emit(set_type, :type_space, text, ts-1, te)
2322
- when '\S'; self.emit(set_type, :type_nonspace, text, ts-1, te)
2323
- when '\w'; self.emit(set_type, :type_word, text, ts-1, te)
2324
- when '\W'; self.emit(set_type, :type_nonword, text, ts-1, te)
2425
+ case text = text(data, ts, te, 1).first
2426
+ when '\d'; emit(set_type, :type_digit, text, ts-1, te)
2427
+ when '\D'; emit(set_type, :type_nondigit, text, ts-1, te)
2428
+ when '\h'; emit(set_type, :type_hex, text, ts-1, te)
2429
+ when '\H'; emit(set_type, :type_nonhex, text, ts-1, te)
2430
+ when '\s'; emit(set_type, :type_space, text, ts-1, te)
2431
+ when '\S'; emit(set_type, :type_nonspace, text, ts-1, te)
2432
+ when '\w'; emit(set_type, :type_word, text, ts-1, te)
2433
+ when '\W'; emit(set_type, :type_nonword, text, ts-1, te)
2325
2434
  end
2326
2435
  begin
2327
2436
  top -= 1
@@ -2334,7 +2443,7 @@ end
2334
2443
  when 18 then
2335
2444
  begin begin p = ((te))-1; end
2336
2445
 
2337
- self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
2446
+ emit(set_type, :escape, *text(data, ts, te, 1))
2338
2447
  begin
2339
2448
  top -= 1
2340
2449
  cs = stack[top]
@@ -2346,7 +2455,7 @@ end
2346
2455
  when 20 then
2347
2456
  begin begin p = ((te))-1; end
2348
2457
 
2349
- self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
2458
+ emit(set_type, :escape, *text(data, ts, te, 1))
2350
2459
  begin
2351
2460
  top -= 1
2352
2461
  cs = stack[top]
@@ -2357,14 +2466,13 @@ end
2357
2466
  end
2358
2467
  end
2359
2468
  end
2360
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2361
- when 77 then
2362
- # line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2469
+ when 80 then
2470
+ # line 293 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2363
2471
  begin
2364
2472
  te = p+1
2365
2473
  begin
2366
- text = data[ts-1..te-1].pack('c*')
2367
- self.emit(:backref, :number, text, ts-1, te)
2474
+ text = text(data, ts, te, 1).first
2475
+ emit(:backref, :number, text, ts-1, te)
2368
2476
  begin
2369
2477
  top -= 1
2370
2478
  cs = stack[top]
@@ -2374,13 +2482,12 @@ te = p+1
2374
2482
 
2375
2483
  end
2376
2484
  end
2377
- # line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2378
- when 82 then
2379
- # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2485
+ when 85 then
2486
+ # line 299 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2380
2487
  begin
2381
2488
  te = p+1
2382
2489
  begin
2383
- self.emit(:escape, :octal, data[ts-1..te-1].pack('c*'), ts-1, te)
2490
+ emit(:escape, :octal, *text(data, ts, te, 1))
2384
2491
  begin
2385
2492
  top -= 1
2386
2493
  cs = stack[top]
@@ -2390,28 +2497,27 @@ te = p+1
2390
2497
 
2391
2498
  end
2392
2499
  end
2393
- # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2394
- when 74 then
2395
- # line 287 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2500
+ when 77 then
2501
+ # line 304 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2396
2502
  begin
2397
2503
  te = p+1
2398
2504
  begin
2399
- case text = data[ts-1..te-1].pack('c*')
2400
- when '\.'; self.emit(:escape, :dot, text, ts-1, te)
2401
- when '\|'; self.emit(:escape, :alternation, text, ts-1, te)
2402
- when '\^'; self.emit(:escape, :beginning_of_line, text, ts-1, te)
2403
- when '\$'; self.emit(:escape, :end_of_line, text, ts-1, te)
2404
- when '\?'; self.emit(:escape, :zero_or_one, text, ts-1, te)
2405
- when '\*'; self.emit(:escape, :zero_or_more, text, ts-1, te)
2406
- when '\+'; self.emit(:escape, :one_or_more, text, ts-1, te)
2407
- when '\('; self.emit(:escape, :group_open, text, ts-1, te)
2408
- when '\)'; self.emit(:escape, :group_close, text, ts-1, te)
2409
- when '\{'; self.emit(:escape, :interval_open, text, ts-1, te)
2410
- when '\}'; self.emit(:escape, :interval_close, text, ts-1, te)
2411
- when '\['; self.emit(:escape, :set_open, text, ts-1, te)
2412
- when '\]'; self.emit(:escape, :set_close, text, ts-1, te)
2505
+ case text = text(data, ts, te, 1).first
2506
+ when '\.'; emit(:escape, :dot, text, ts-1, te)
2507
+ when '\|'; emit(:escape, :alternation, text, ts-1, te)
2508
+ when '\^'; emit(:escape, :bol, text, ts-1, te)
2509
+ when '\$'; emit(:escape, :eol, text, ts-1, te)
2510
+ when '\?'; emit(:escape, :zero_or_one, text, ts-1, te)
2511
+ when '\*'; emit(:escape, :zero_or_more, text, ts-1, te)
2512
+ when '\+'; emit(:escape, :one_or_more, text, ts-1, te)
2513
+ when '\('; emit(:escape, :group_open, text, ts-1, te)
2514
+ when '\)'; emit(:escape, :group_close, text, ts-1, te)
2515
+ when '\{'; emit(:escape, :interval_open, text, ts-1, te)
2516
+ when '\}'; emit(:escape, :interval_close, text, ts-1, te)
2517
+ when '\['; emit(:escape, :set_open, text, ts-1, te)
2518
+ when '\]'; emit(:escape, :set_close, text, ts-1, te)
2413
2519
  when "\\\\";
2414
- self.emit(:escape, :backslash, text, ts-1, te)
2520
+ emit(:escape, :backslash, text, ts-1, te)
2415
2521
  end
2416
2522
  begin
2417
2523
  top -= 1
@@ -2422,23 +2528,22 @@ te = p+1
2422
2528
 
2423
2529
  end
2424
2530
  end
2425
- # line 287 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2426
- when 79 then
2427
- # line 308 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2531
+ when 82 then
2532
+ # line 325 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2428
2533
  begin
2429
2534
  te = p+1
2430
2535
  begin
2431
2536
  # \b is emitted as backspace only when inside a character set, otherwise
2432
2537
  # it is a word boundary anchor. A syntax might "normalize" it if needed.
2433
- case text = data[ts-1..te-1].pack('c*')
2434
- when '\a'; self.emit(:escape, :bell, text, ts-1, te)
2435
- when '\e'; self.emit(:escape, :escape, text, ts-1, te)
2436
- when '\f'; self.emit(:escape, :form_feed, text, ts-1, te)
2437
- when '\n'; self.emit(:escape, :newline, text, ts-1, te)
2438
- when '\r'; self.emit(:escape, :carriage, text, ts-1, te)
2439
- when '\s'; self.emit(:escape, :space, text, ts-1, te)
2440
- when '\t'; self.emit(:escape, :tab, text, ts-1, te)
2441
- when '\v'; self.emit(:escape, :vertical_tab, text, ts-1, te)
2538
+ case text = text(data, ts, te, 1).first
2539
+ when '\a'; emit(:escape, :bell, text, ts-1, te)
2540
+ when '\e'; emit(:escape, :escape, text, ts-1, te)
2541
+ when '\f'; emit(:escape, :form_feed, text, ts-1, te)
2542
+ when '\n'; emit(:escape, :newline, text, ts-1, te)
2543
+ when '\r'; emit(:escape, :carriage, text, ts-1, te)
2544
+ when '\s'; emit(:escape, :space, text, ts-1, te)
2545
+ when '\t'; emit(:escape, :tab, text, ts-1, te)
2546
+ when '\v'; emit(:escape, :vertical_tab, text, ts-1, te)
2442
2547
  end
2443
2548
  begin
2444
2549
  top -= 1
@@ -2449,17 +2554,16 @@ te = p+1
2449
2554
 
2450
2555
  end
2451
2556
  end
2452
- # line 308 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2453
- when 26 then
2454
- # line 324 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2557
+ when 29 then
2558
+ # line 341 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2455
2559
  begin
2456
2560
  te = p+1
2457
2561
  begin
2458
- text = data[ts-1..te-1].pack('c*')
2562
+ text = text(data, ts, te, 1).first
2459
2563
  if text[2].chr == '{'
2460
- self.emit(:escape, :codepoint_list, text, ts-1, te)
2564
+ emit(:escape, :codepoint_list, text, ts-1, te)
2461
2565
  else
2462
- self.emit(:escape, :codepoint, text, ts-1, te)
2566
+ emit(:escape, :codepoint, text, ts-1, te)
2463
2567
  end
2464
2568
  begin
2465
2569
  top -= 1
@@ -2470,13 +2574,12 @@ te = p+1
2470
2574
 
2471
2575
  end
2472
2576
  end
2473
- # line 324 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2474
- when 84 then
2475
- # line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2577
+ when 90 then
2578
+ # line 351 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2476
2579
  begin
2477
2580
  te = p+1
2478
2581
  begin
2479
- self.emit(:escape, :hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2582
+ emit(:escape, :hex, *text(data, ts, te, 1))
2480
2583
  begin
2481
2584
  top -= 1
2482
2585
  cs = stack[top]
@@ -2486,13 +2589,12 @@ te = p+1
2486
2589
 
2487
2590
  end
2488
2591
  end
2489
- # line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2490
- when 27 then
2491
- # line 339 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2592
+ when 93 then
2593
+ # line 356 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2492
2594
  begin
2493
2595
  te = p+1
2494
2596
  begin
2495
- self.emit(:escape, :hex_wide, data[ts-1..te-1].pack('c*'), ts-1, te)
2597
+ emit(:escape, :hex_wide, *text(data, ts, te, 1))
2496
2598
  begin
2497
2599
  top -= 1
2498
2600
  cs = stack[top]
@@ -2502,13 +2604,12 @@ te = p+1
2502
2604
 
2503
2605
  end
2504
2606
  end
2505
- # line 339 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2506
- when 24 then
2507
- # line 344 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2607
+ when 31 then
2608
+ # line 365 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2508
2609
  begin
2509
2610
  te = p+1
2510
2611
  begin
2511
- self.emit(:escape, :control, data[ts-1..te-1].pack('c*'), ts-1, te)
2612
+ raise InvalidSequenceError.new("wide hex sequence")
2512
2613
  begin
2513
2614
  top -= 1
2514
2615
  cs = stack[top]
@@ -2518,27 +2619,67 @@ te = p+1
2518
2619
 
2519
2620
  end
2520
2621
  end
2521
- # line 344 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2522
2622
  when 25 then
2523
- # line 349 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2623
+ # line 370 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2524
2624
  begin
2525
2625
  te = p+1
2526
2626
  begin
2527
- self.emit(:escape, :meta_sequence, data[ts-1..te-1].pack('c*'), ts-1, te)
2627
+ if data[te]
2628
+ c = data[te].chr
2629
+ if c =~ /[\x00-\x7F]/
2630
+ emit(:escape, :control, copy(data, ts-1..te), ts-1, te+1)
2631
+ p += 1
2632
+ else
2633
+ raise InvalidSequenceError.new("control sequence")
2634
+ end
2635
+ else
2636
+ raise PrematureEndError.new("control sequence")
2637
+ end
2638
+ begin
2639
+ top -= 1
2640
+ cs = stack[top]
2641
+ _goto_level = _again
2642
+ next
2643
+ end
2644
+
2528
2645
  end
2529
2646
  end
2530
- # line 349 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2531
- when 78 then
2532
- # line 353 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2647
+ when 28 then
2648
+ # line 385 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2649
+ begin
2650
+ te = p+1
2651
+ begin
2652
+ if data[te]
2653
+ c = data[te].chr
2654
+ if c =~ /[\x00-\x7F]/
2655
+ emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
2656
+ p += 1
2657
+ else
2658
+ raise InvalidSequenceError.new("meta sequence")
2659
+ end
2660
+ else
2661
+ raise PrematureEndError.new("meta sequence")
2662
+ end
2663
+ begin
2664
+ top -= 1
2665
+ cs = stack[top]
2666
+ _goto_level = _again
2667
+ next
2668
+ end
2669
+
2670
+ end
2671
+ end
2672
+ when 81 then
2673
+ # line 400 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2533
2674
  begin
2534
2675
  te = p+1
2535
2676
  begin
2536
2677
  p = p - 1;
2537
- cs = 142;
2678
+ cs = 132;
2538
2679
  begin
2539
2680
  stack[top] = cs
2540
2681
  top+= 1
2541
- cs = 161
2682
+ cs = 144
2542
2683
  _goto_level = _again
2543
2684
  next
2544
2685
  end
@@ -2551,13 +2692,12 @@ te = p+1
2551
2692
 
2552
2693
  end
2553
2694
  end
2554
- # line 353 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2555
- when 73 then
2556
- # line 359 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2695
+ when 76 then
2696
+ # line 406 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2557
2697
  begin
2558
2698
  te = p+1
2559
2699
  begin
2560
- self.emit(:escape, :literal, data[ts-1..te-1].pack('c*'), ts-1, te)
2700
+ emit(:escape, :literal, *text(data, ts, te, 1))
2561
2701
  begin
2562
2702
  top -= 1
2563
2703
  cs = stack[top]
@@ -2567,13 +2707,12 @@ te = p+1
2567
2707
 
2568
2708
  end
2569
2709
  end
2570
- # line 359 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2571
- when 81 then
2572
- # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2710
+ when 84 then
2711
+ # line 299 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2573
2712
  begin
2574
2713
  te = p
2575
2714
  p = p - 1; begin
2576
- self.emit(:escape, :octal, data[ts-1..te-1].pack('c*'), ts-1, te)
2715
+ emit(:escape, :octal, *text(data, ts, te, 1))
2577
2716
  begin
2578
2717
  top -= 1
2579
2718
  cs = stack[top]
@@ -2583,13 +2722,12 @@ p = p - 1; begin
2583
2722
 
2584
2723
  end
2585
2724
  end
2586
- # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2587
- when 83 then
2588
- # line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2725
+ when 89 then
2726
+ # line 351 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2589
2727
  begin
2590
2728
  te = p
2591
2729
  p = p - 1; begin
2592
- self.emit(:escape, :hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2730
+ emit(:escape, :hex, *text(data, ts, te, 1))
2593
2731
  begin
2594
2732
  top -= 1
2595
2733
  cs = stack[top]
@@ -2599,16 +2737,95 @@ p = p - 1; begin
2599
2737
 
2600
2738
  end
2601
2739
  end
2602
- # line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2603
- when 80 then
2604
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2740
+ when 91 then
2741
+ # line 365 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2742
+ begin
2743
+ te = p
2744
+ p = p - 1; begin
2745
+ raise InvalidSequenceError.new("wide hex sequence")
2746
+ begin
2747
+ top -= 1
2748
+ cs = stack[top]
2749
+ _goto_level = _again
2750
+ next
2751
+ end
2752
+
2753
+ end
2754
+ end
2755
+ when 87 then
2756
+ # line 385 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2757
+ begin
2758
+ te = p
2759
+ p = p - 1; begin
2760
+ if data[te]
2761
+ c = data[te].chr
2762
+ if c =~ /[\x00-\x7F]/
2763
+ emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
2764
+ p += 1
2765
+ else
2766
+ raise InvalidSequenceError.new("meta sequence")
2767
+ end
2768
+ else
2769
+ raise PrematureEndError.new("meta sequence")
2770
+ end
2771
+ begin
2772
+ top -= 1
2773
+ cs = stack[top]
2774
+ _goto_level = _again
2775
+ next
2776
+ end
2777
+
2778
+ end
2779
+ end
2780
+ when 32 then
2781
+ # line 365 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2782
+ begin
2783
+ begin p = ((te))-1; end
2784
+ begin
2785
+ raise InvalidSequenceError.new("wide hex sequence")
2786
+ begin
2787
+ top -= 1
2788
+ cs = stack[top]
2789
+ _goto_level = _again
2790
+ next
2791
+ end
2792
+
2793
+ end
2794
+ end
2795
+ when 27 then
2796
+ # line 385 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2797
+ begin
2798
+ begin p = ((te))-1; end
2799
+ begin
2800
+ if data[te]
2801
+ c = data[te].chr
2802
+ if c =~ /[\x00-\x7F]/
2803
+ emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
2804
+ p += 1
2805
+ else
2806
+ raise InvalidSequenceError.new("meta sequence")
2807
+ end
2808
+ else
2809
+ raise PrematureEndError.new("meta sequence")
2810
+ end
2811
+ begin
2812
+ top -= 1
2813
+ cs = stack[top]
2814
+ _goto_level = _again
2815
+ next
2816
+ end
2817
+
2818
+ end
2819
+ end
2820
+ when 83 then
2821
+ # line 1 "NONE"
2605
2822
  begin
2606
2823
  case act
2607
2824
  when 21 then
2608
2825
  begin begin p = ((te))-1; end
2609
2826
 
2610
- text = data[ts-1..te-1].pack('c*')
2611
- self.emit(:backref, :number, text, ts-1, te)
2827
+ text = text(data, ts, te, 1).first
2828
+ emit(:backref, :number, text, ts-1, te)
2612
2829
  begin
2613
2830
  top -= 1
2614
2831
  cs = stack[top]
@@ -2620,7 +2837,7 @@ p = p - 1; begin
2620
2837
  when 22 then
2621
2838
  begin begin p = ((te))-1; end
2622
2839
 
2623
- self.emit(:escape, :octal, data[ts-1..te-1].pack('c*'), ts-1, te)
2840
+ emit(:escape, :octal, *text(data, ts, te, 1))
2624
2841
  begin
2625
2842
  top -= 1
2626
2843
  cs = stack[top]
@@ -2631,411 +2848,359 @@ p = p - 1; begin
2631
2848
  end
2632
2849
  end
2633
2850
  end
2634
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2635
- when 33 then
2636
- # line 372 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2851
+ when 38 then
2852
+ # line 419 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2637
2853
  begin
2638
2854
  te = p+1
2639
2855
  begin
2640
- self.emit(:meta, :dot, data[ts..te-1].pack('c*'), ts, te)
2856
+ emit(:meta, :dot, *text(data, ts, te))
2641
2857
  end
2642
2858
  end
2643
- # line 372 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2644
- when 36 then
2645
- # line 376 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2859
+ when 41 then
2860
+ # line 423 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2646
2861
  begin
2647
2862
  te = p+1
2648
2863
  begin
2649
- self.emit(:meta, :alternation, data[ts..te-1].pack('c*'), ts, te)
2864
+ emit(:meta, :alternation, *text(data, ts, te))
2650
2865
  end
2651
2866
  end
2652
- # line 376 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2653
- when 35 then
2654
- # line 382 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2867
+ when 40 then
2868
+ # line 429 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2655
2869
  begin
2656
2870
  te = p+1
2657
2871
  begin
2658
- self.emit(:anchor, :beginning_of_line, data[ts..te-1].pack('c*'), ts, te)
2872
+ emit(:anchor, :bol, *text(data, ts, te))
2659
2873
  end
2660
2874
  end
2661
- # line 382 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2662
- when 30 then
2663
- # line 386 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2875
+ when 35 then
2876
+ # line 433 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2664
2877
  begin
2665
2878
  te = p+1
2666
2879
  begin
2667
- self.emit(:anchor, :end_of_line, data[ts..te-1].pack('c*'), ts, te)
2880
+ emit(:anchor, :eol, *text(data, ts, te))
2668
2881
  end
2669
2882
  end
2670
- # line 386 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2671
- when 49 then
2672
- # line 390 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2883
+ when 52 then
2884
+ # line 437 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2673
2885
  begin
2674
2886
  te = p+1
2675
2887
  begin
2676
- case text = data[ts..te-1].pack('c*')
2677
- when '\\A'; self.emit(:anchor, :bos, text, ts, te)
2678
- when '\\z'; self.emit(:anchor, :eos, text, ts, te)
2679
- when '\\Z'; self.emit(:anchor, :eos_ob_eol, text, ts, te)
2680
- when '\\b'; self.emit(:anchor, :word_boundary, text, ts, te)
2681
- when '\\B'; self.emit(:anchor, :nonword_boundary, text, ts, te)
2682
- when '\\G'; self.emit(:anchor, :match_start, text, ts, te)
2683
- else raise ScannerError.new("Unsupported anchor at #{text} (char #{ts})")
2888
+ case text = text(data, ts, te).first
2889
+ when '\\A'; emit(:anchor, :bos, text, ts, te)
2890
+ when '\\z'; emit(:anchor, :eos, text, ts, te)
2891
+ when '\\Z'; emit(:anchor, :eos_ob_eol, text, ts, te)
2892
+ when '\\b'; emit(:anchor, :word_boundary, text, ts, te)
2893
+ when '\\B'; emit(:anchor, :nonword_boundary, text, ts, te)
2894
+ when '\\G'; emit(:anchor, :match_start, text, ts, te)
2895
+ else
2896
+ raise ScannerError.new(
2897
+ "Unexpected character in anchor at #{text} (char #{ts})")
2684
2898
  end
2685
2899
  end
2686
2900
  end
2687
- # line 390 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2688
- when 50 then
2689
- # line 408 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2901
+ when 53 then
2902
+ # line 457 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2690
2903
  begin
2691
2904
  te = p+1
2692
2905
  begin
2693
- case text = data[ts..te-1].pack('c*')
2694
- when '\\d'; self.emit(:type, :digit, text, ts, te)
2695
- when '\\D'; self.emit(:type, :nondigit, text, ts, te)
2696
- when '\\h'; self.emit(:type, :hex, text, ts, te)
2697
- when '\\H'; self.emit(:type, :nonhex, text, ts, te)
2698
- when '\\s'; self.emit(:type, :space, text, ts, te)
2699
- when '\\S'; self.emit(:type, :nonspace, text, ts, te)
2700
- when '\\w'; self.emit(:type, :word, text, ts, te)
2701
- when '\\W'; self.emit(:type, :nonword, text, ts, te)
2906
+ case text = text(data, ts, te).first
2907
+ when '\\d'; emit(:type, :digit, text, ts, te)
2908
+ when '\\D'; emit(:type, :nondigit, text, ts, te)
2909
+ when '\\h'; emit(:type, :hex, text, ts, te)
2910
+ when '\\H'; emit(:type, :nonhex, text, ts, te)
2911
+ when '\\s'; emit(:type, :space, text, ts, te)
2912
+ when '\\S'; emit(:type, :nonspace, text, ts, te)
2913
+ when '\\w'; emit(:type, :word, text, ts, te)
2914
+ when '\\W'; emit(:type, :nonword, text, ts, te)
2915
+ else
2916
+ raise ScannerError.new(
2917
+ "Unexpected character in type at #{text} (char #{ts})")
2702
2918
  end
2703
2919
  end
2704
2920
  end
2705
- # line 408 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2706
- when 34 then
2707
- # line 424 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2921
+ when 39 then
2922
+ # line 476 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2708
2923
  begin
2709
2924
  te = p+1
2710
2925
  begin
2711
2926
  set_depth += 1; in_set = true
2712
2927
  set_type = set_depth > 1 ? :subset : :set
2713
2928
 
2714
- self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
2929
+ emit(set_type, :open, *text(data, ts, te))
2715
2930
  begin
2716
2931
  stack[top] = cs
2717
2932
  top+= 1
2718
- cs = 162
2933
+ cs = 145
2719
2934
  _goto_level = _again
2720
2935
  next
2721
2936
  end
2722
2937
 
2723
2938
  end
2724
2939
  end
2725
- # line 424 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2726
- when 41 then
2727
- # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2940
+ when 6 then
2941
+ # line 501 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2728
2942
  begin
2729
2943
  te = p+1
2730
2944
  begin
2731
- # special handling to resolve ambiguity with passive groups
2732
- if data[te]
2733
- c = data[te].chr
2734
- if c == ':' # include the ':'
2735
- self.emit(:group, :options, data[ts..te].pack('c*'), ts, te+1)
2736
- p += 1
2737
- elsif c == ')' # just options by themselves
2738
- self.emit(:group, :options, data[ts..te-1].pack('c*'), ts, te)
2739
- else
2740
- raise ScannerError.new(
2741
- "Unexpected '#{c}' in options sequence, ':' or ')' expected")
2742
- end
2743
- else
2744
- raise PrematureEndError.new("options") unless data[te]
2745
- end
2945
+ p = scan_options(p, data, ts, te)
2746
2946
  end
2747
2947
  end
2748
- # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2749
- when 7 then
2750
- # line 473 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2948
+ when 4 then
2949
+ # line 511 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2751
2950
  begin
2752
2951
  te = p+1
2753
2952
  begin
2754
- case text = data[ts..te-1].pack('c*')
2755
- when '(?='; self.emit(:assertion, :lookahead, text, ts, te)
2756
- when '(?!'; self.emit(:assertion, :nlookahead, text, ts, te)
2757
- when '(?<='; self.emit(:assertion, :lookbehind, text, ts, te)
2758
- when '(?<!'; self.emit(:assertion, :nlookbehind, text, ts, te)
2953
+ case text = text(data, ts, te).first
2954
+ when '(?='; emit(:assertion, :lookahead, text, ts, te)
2955
+ when '(?!'; emit(:assertion, :nlookahead, text, ts, te)
2956
+ when '(?<='; emit(:assertion, :lookbehind, text, ts, te)
2957
+ when '(?<!'; emit(:assertion, :nlookbehind, text, ts, te)
2759
2958
  end
2760
2959
  end
2761
2960
  end
2762
- # line 473 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2763
- when 6 then
2764
- # line 489 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2961
+ when 7 then
2962
+ # line 527 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2765
2963
  begin
2766
2964
  te = p+1
2767
2965
  begin
2768
- case text = data[ts..te-1].pack('c*')
2769
- when '(?:'; self.emit(:group, :passive, text, ts, te)
2770
- when '(?>'; self.emit(:group, :atomic, text, ts, te)
2771
-
2772
- when /\(\?<\w+>/
2773
- self.emit(:group, :named_ab, text, ts, te)
2774
- when /\(\?'\w+'/
2775
- self.emit(:group, :named_sq, text, ts, te)
2966
+ case text = text(data, ts, te).first
2967
+ when '(?:'; emit(:group, :passive, text, ts, te)
2968
+ when '(?>'; emit(:group, :atomic, text, ts, te)
2969
+
2970
+ when /^\(\?<(\w*)>/
2971
+ empty_name_error(:group, 'named group (ab)') if $1.empty?
2972
+
2973
+ emit(:group, :named_ab, text, ts, te)
2974
+
2975
+ when /^\(\?'(\w*)'/
2976
+ empty_name_error(:group, 'named group (sq)') if $1.empty?
2977
+
2978
+ emit(:group, :named_sq, text, ts, te)
2979
+
2980
+ else
2981
+ raise ScannerError.new(
2982
+ "Unknown subexpression group format '#{text}'")
2776
2983
  end
2777
2984
  end
2778
2985
  end
2779
- # line 489 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2780
- when 9 then
2781
- # line 513 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2986
+ when 10 then
2987
+ # line 560 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2782
2988
  begin
2783
2989
  te = p+1
2784
2990
  begin
2785
- case text = data[ts..te-1].pack('c*')
2786
- when /\\([gk])<[^\d-](\w+)?>/ # angle-brackets
2991
+ case text = text(data, ts, te).first
2992
+ when /^\\([gk])<>/ # angle brackets
2993
+ empty_backref_error("ref/call (ab)")
2994
+
2995
+ when /^\\([gk])''/ # single quotes
2996
+ empty_backref_error("ref/call (sq)")
2997
+
2998
+ when /^\\([gk])<[^\d-](\w+)?>/ # angle-brackets
2787
2999
  if $1 == 'k'
2788
- self.emit(:backref, :name_ref_ab, text, ts, te)
3000
+ emit(:backref, :name_ref_ab, text, ts, te)
2789
3001
  else
2790
- self.emit(:backref, :name_call_ab, text, ts, te)
3002
+ emit(:backref, :name_call_ab, text, ts, te)
2791
3003
  end
2792
3004
 
2793
- when /\\([gk])'[^\d-](\w+)?'/ #single quotes
3005
+ when /^\\([gk])'[^\d-](\w+)?'/ #single quotes
2794
3006
  if $1 == 'k'
2795
- self.emit(:backref, :name_ref_sq, text, ts, te)
3007
+ emit(:backref, :name_ref_sq, text, ts, te)
2796
3008
  else
2797
- self.emit(:backref, :name_call_sq, text, ts, te)
3009
+ emit(:backref, :name_call_sq, text, ts, te)
2798
3010
  end
2799
3011
 
2800
- when /\\([gk])<\d+>/ # angle-brackets
3012
+ when /^\\([gk])<\d+>/ # angle-brackets
2801
3013
  if $1 == 'k'
2802
- self.emit(:backref, :number_ref_ab, text, ts, te)
3014
+ emit(:backref, :number_ref_ab, text, ts, te)
2803
3015
  else
2804
- self.emit(:backref, :number_call_ab, text, ts, te)
3016
+ emit(:backref, :number_call_ab, text, ts, te)
2805
3017
  end
2806
3018
 
2807
- when /\\([gk])'\d+'/ # single quotes
3019
+ when /^\\([gk])'\d+'/ # single quotes
2808
3020
  if $1 == 'k'
2809
- self.emit(:backref, :number_ref_sq, text, ts, te)
3021
+ emit(:backref, :number_ref_sq, text, ts, te)
2810
3022
  else
2811
- self.emit(:backref, :number_call_sq, text, ts, te)
3023
+ emit(:backref, :number_call_sq, text, ts, te)
2812
3024
  end
2813
3025
 
2814
- when /\\([gk])<-\d+>/ # angle-brackets
3026
+ when /^\\([gk])<-\d+>/ # angle-brackets
2815
3027
  if $1 == 'k'
2816
- self.emit(:backref, :number_rel_ref_ab, text, ts, te)
3028
+ emit(:backref, :number_rel_ref_ab, text, ts, te)
2817
3029
  else
2818
- self.emit(:backref, :number_rel_call_ab, text, ts, te)
3030
+ emit(:backref, :number_rel_call_ab, text, ts, te)
2819
3031
  end
2820
3032
 
2821
- when /\\([gk])'-\d+'/ # single quotes
3033
+ when /^\\([gk])'-\d+'/ # single quotes
2822
3034
  if $1 == 'k'
2823
- self.emit(:backref, :number_rel_ref_sq, text, ts, te)
3035
+ emit(:backref, :number_rel_ref_sq, text, ts, te)
2824
3036
  else
2825
- self.emit(:backref, :number_rel_call_sq, text, ts, te)
3037
+ emit(:backref, :number_rel_call_sq, text, ts, te)
2826
3038
  end
2827
3039
 
2828
- when /\\k<[^\d-](\w+)?[+\-]\d+>/ # angle-brackets
2829
- self.emit(:backref, :name_nest_ref_ab, text, ts, te)
3040
+ when /^\\k<[^\d-](\w+)?[+\-]\d+>/ # angle-brackets
3041
+ emit(:backref, :name_nest_ref_ab, text, ts, te)
2830
3042
 
2831
- when /\\k'[^\d-](\w+)?[+\-]\d+'/ # single-quotes
2832
- self.emit(:backref, :name_nest_ref_sq, text, ts, te)
3043
+ when /^\\k'[^\d-](\w+)?[+\-]\d+'/ # single-quotes
3044
+ emit(:backref, :name_nest_ref_sq, text, ts, te)
2833
3045
 
2834
- when /\\([gk])<\d+[+\-]\d+>/ # angle-brackets
2835
- self.emit(:backref, :number_nest_ref_ab, text, ts, te)
3046
+ when /^\\([gk])<\d+[+\-]\d+>/ # angle-brackets
3047
+ emit(:backref, :number_nest_ref_ab, text, ts, te)
2836
3048
 
2837
- when /\\([gk])'\d+[+\-]\d+'/ # single-quotes
2838
- self.emit(:backref, :number_nest_ref_sq, text, ts, te)
3049
+ when /^\\([gk])'\d+[+\-]\d+'/ # single-quotes
3050
+ emit(:backref, :number_nest_ref_sq, text, ts, te)
2839
3051
 
3052
+ else
3053
+ raise ScannerError.new(
3054
+ "Unknown backreference format '#{text}'")
2840
3055
  end
2841
3056
  end
2842
3057
  end
2843
- # line 513 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2844
- when 47 then
2845
- # line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3058
+ when 50 then
3059
+ # line 631 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2846
3060
  begin
2847
3061
  te = p+1
2848
3062
  begin
2849
- case text = data[ts..te-1].pack('c*')
2850
- when '?' ; self.emit(:quantifier, :zero_or_one, text, ts, te)
2851
- when '??'; self.emit(:quantifier, :zero_or_one_reluctant, text, ts, te)
2852
- when '?+'; self.emit(:quantifier, :zero_or_one_possessive, text, ts, te)
3063
+ case text = text(data, ts, te).first
3064
+ when '?' ; emit(:quantifier, :zero_or_one, text, ts, te)
3065
+ when '??'; emit(:quantifier, :zero_or_one_reluctant, text, ts, te)
3066
+ when '?+'; emit(:quantifier, :zero_or_one_possessive, text, ts, te)
2853
3067
  end
2854
3068
  end
2855
3069
  end
2856
- # line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2857
- when 43 then
2858
- # line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3070
+ when 46 then
3071
+ # line 639 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2859
3072
  begin
2860
3073
  te = p+1
2861
3074
  begin
2862
- case text = data[ts..te-1].pack('c*')
2863
- when '*' ; self.emit(:quantifier, :zero_or_more, text, ts, te)
2864
- when '*?'; self.emit(:quantifier, :zero_or_more_reluctant, text, ts, te)
2865
- when '*+'; self.emit(:quantifier, :zero_or_more_possessive, text, ts, te)
3075
+ case text = text(data, ts, te).first
3076
+ when '*' ; emit(:quantifier, :zero_or_more, text, ts, te)
3077
+ when '*?'; emit(:quantifier, :zero_or_more_reluctant, text, ts, te)
3078
+ when '*+'; emit(:quantifier, :zero_or_more_possessive, text, ts, te)
2866
3079
  end
2867
3080
  end
2868
3081
  end
2869
- # line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2870
- when 45 then
2871
- # line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3082
+ when 48 then
3083
+ # line 647 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2872
3084
  begin
2873
3085
  te = p+1
2874
3086
  begin
2875
- case text = data[ts..te-1].pack('c*')
2876
- when '+' ; self.emit(:quantifier, :one_or_more, text, ts, te)
2877
- when '+?'; self.emit(:quantifier, :one_or_more_reluctant, text, ts, te)
2878
- when '++'; self.emit(:quantifier, :one_or_more_possessive, text, ts, te)
3087
+ case text = text(data, ts, te).first
3088
+ when '+' ; emit(:quantifier, :one_or_more, text, ts, te)
3089
+ when '+?'; emit(:quantifier, :one_or_more_reluctant, text, ts, te)
3090
+ when '++'; emit(:quantifier, :one_or_more_possessive, text, ts, te)
2879
3091
  end
2880
3092
  end
2881
3093
  end
2882
- # line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2883
- when 52 then
2884
- # line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3094
+ when 55 then
3095
+ # line 655 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2885
3096
  begin
2886
3097
  te = p+1
2887
3098
  begin
2888
- self.emit(:quantifier, :interval, data[ts..te-1].pack('c*'), ts, te)
2889
- end
2890
- end
2891
- # line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2892
- when 40 then
2893
- # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2894
- begin
2895
- te = p
2896
- p = p - 1; begin
2897
- # special handling to resolve ambiguity with passive groups
2898
- if data[te]
2899
- c = data[te].chr
2900
- if c == ':' # include the ':'
2901
- self.emit(:group, :options, data[ts..te].pack('c*'), ts, te+1)
2902
- p += 1
2903
- elsif c == ')' # just options by themselves
2904
- self.emit(:group, :options, data[ts..te-1].pack('c*'), ts, te)
2905
- else
2906
- raise ScannerError.new(
2907
- "Unexpected '#{c}' in options sequence, ':' or ')' expected")
2908
- end
2909
- else
2910
- raise PrematureEndError.new("options") unless data[te]
2911
- end
3099
+ emit(:quantifier, :interval, *text(data, ts, te))
2912
3100
  end
2913
3101
  end
2914
- # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2915
- when 38 then
2916
- # line 501 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3102
+ when 43 then
3103
+ # line 548 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2917
3104
  begin
2918
3105
  te = p
2919
3106
  p = p - 1; begin
2920
- text = data[ts..te-1].pack('c*')
2921
- self.emit(:group, :capture, text, ts, te)
3107
+ text = text(data, ts, te).first
3108
+ emit(:group, :capture, text, ts, te)
2922
3109
  end
2923
3110
  end
2924
- # line 501 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2925
- when 46 then
2926
- # line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3111
+ when 49 then
3112
+ # line 631 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2927
3113
  begin
2928
3114
  te = p
2929
3115
  p = p - 1; begin
2930
- case text = data[ts..te-1].pack('c*')
2931
- when '?' ; self.emit(:quantifier, :zero_or_one, text, ts, te)
2932
- when '??'; self.emit(:quantifier, :zero_or_one_reluctant, text, ts, te)
2933
- when '?+'; self.emit(:quantifier, :zero_or_one_possessive, text, ts, te)
3116
+ case text = text(data, ts, te).first
3117
+ when '?' ; emit(:quantifier, :zero_or_one, text, ts, te)
3118
+ when '??'; emit(:quantifier, :zero_or_one_reluctant, text, ts, te)
3119
+ when '?+'; emit(:quantifier, :zero_or_one_possessive, text, ts, te)
2934
3120
  end
2935
3121
  end
2936
3122
  end
2937
- # line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2938
- when 42 then
2939
- # line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3123
+ when 45 then
3124
+ # line 639 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2940
3125
  begin
2941
3126
  te = p
2942
3127
  p = p - 1; begin
2943
- case text = data[ts..te-1].pack('c*')
2944
- when '*' ; self.emit(:quantifier, :zero_or_more, text, ts, te)
2945
- when '*?'; self.emit(:quantifier, :zero_or_more_reluctant, text, ts, te)
2946
- when '*+'; self.emit(:quantifier, :zero_or_more_possessive, text, ts, te)
3128
+ case text = text(data, ts, te).first
3129
+ when '*' ; emit(:quantifier, :zero_or_more, text, ts, te)
3130
+ when '*?'; emit(:quantifier, :zero_or_more_reluctant, text, ts, te)
3131
+ when '*+'; emit(:quantifier, :zero_or_more_possessive, text, ts, te)
2947
3132
  end
2948
3133
  end
2949
3134
  end
2950
- # line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2951
- when 44 then
2952
- # line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3135
+ when 47 then
3136
+ # line 647 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2953
3137
  begin
2954
3138
  te = p
2955
3139
  p = p - 1; begin
2956
- case text = data[ts..te-1].pack('c*')
2957
- when '+' ; self.emit(:quantifier, :one_or_more, text, ts, te)
2958
- when '+?'; self.emit(:quantifier, :one_or_more_reluctant, text, ts, te)
2959
- when '++'; self.emit(:quantifier, :one_or_more_possessive, text, ts, te)
3140
+ case text = text(data, ts, te).first
3141
+ when '+' ; emit(:quantifier, :one_or_more, text, ts, te)
3142
+ when '+?'; emit(:quantifier, :one_or_more_reluctant, text, ts, te)
3143
+ when '++'; emit(:quantifier, :one_or_more_possessive, text, ts, te)
2960
3144
  end
2961
3145
  end
2962
3146
  end
2963
- # line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2964
- when 51 then
2965
- # line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3147
+ when 54 then
3148
+ # line 655 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2966
3149
  begin
2967
3150
  te = p
2968
3151
  p = p - 1; begin
2969
- self.emit(:quantifier, :interval, data[ts..te-1].pack('c*'), ts, te)
3152
+ emit(:quantifier, :interval, *text(data, ts, te))
2970
3153
  end
2971
3154
  end
2972
- # line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2973
- when 48 then
2974
- # line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3155
+ when 51 then
3156
+ # line 661 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2975
3157
  begin
2976
3158
  te = p
2977
3159
  p = p - 1; begin
2978
3160
  begin
2979
3161
  stack[top] = cs
2980
3162
  top+= 1
2981
- cs = 184
3163
+ cs = 167
2982
3164
  _goto_level = _again
2983
3165
  next
2984
3166
  end
2985
3167
 
2986
3168
  end
2987
3169
  end
2988
- # line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2989
- when 37 then
2990
- # line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3170
+ when 42 then
3171
+ # line 672 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2991
3172
  begin
2992
3173
  te = p
2993
3174
  p = p - 1; begin
2994
- self.append_literal(data, ts, te)
3175
+ append_literal(data, ts, te)
2995
3176
  end
2996
3177
  end
2997
- # line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2998
3178
  when 3 then
2999
- # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3179
+ # line 548 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3000
3180
  begin
3001
3181
  begin p = ((te))-1; end
3002
3182
  begin
3003
- # special handling to resolve ambiguity with passive groups
3004
- if data[te]
3005
- c = data[te].chr
3006
- if c == ':' # include the ':'
3007
- self.emit(:group, :options, data[ts..te].pack('c*'), ts, te+1)
3008
- p += 1
3009
- elsif c == ')' # just options by themselves
3010
- self.emit(:group, :options, data[ts..te-1].pack('c*'), ts, te)
3011
- else
3012
- raise ScannerError.new(
3013
- "Unexpected '#{c}' in options sequence, ':' or ')' expected")
3014
- end
3015
- else
3016
- raise PrematureEndError.new("options") unless data[te]
3017
- end
3183
+ text = text(data, ts, te).first
3184
+ emit(:group, :capture, text, ts, te)
3018
3185
  end
3019
3186
  end
3020
- # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3021
- when 8 then
3022
- # line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3187
+ when 9 then
3188
+ # line 661 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3023
3189
  begin
3024
3190
  begin p = ((te))-1; end
3025
3191
  begin
3026
3192
  begin
3027
3193
  stack[top] = cs
3028
3194
  top+= 1
3029
- cs = 184
3195
+ cs = 167
3030
3196
  _goto_level = _again
3031
3197
  next
3032
3198
  end
3033
3199
 
3034
3200
  end
3035
3201
  end
3036
- # line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3037
3202
  when 1 then
3038
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3203
+ # line 1 "NONE"
3039
3204
  begin
3040
3205
  case act
3041
3206
  when 0 then
@@ -3045,194 +3210,291 @@ p = p - 1; begin
3045
3210
  next
3046
3211
  end
3047
3212
  end
3048
- when 51 then
3213
+ when 53 then
3049
3214
  begin begin p = ((te))-1; end
3050
3215
 
3051
- self.append_literal(data, ts, te)
3216
+ append_literal(data, ts, te)
3052
3217
  end
3053
3218
  end
3054
3219
  end
3055
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3056
- when 62 then
3057
- # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3220
+ when 65 then
3221
+ # line 124 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3058
3222
  begin
3059
- raise PrematureEndError end
3060
- # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3061
- # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3223
+
3224
+ text = ts ? copy(data, ts-1..-1) : data.pack('c*')
3225
+ raise PrematureEndError.new( text )
3226
+ end
3227
+ # line 191 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3062
3228
  begin
3063
3229
  te = p
3064
3230
  p = p - 1; begin
3065
3231
  set_depth += 1; in_set = true
3066
3232
  set_type = set_depth > 1 ? :subset : :set
3067
3233
 
3068
- self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
3234
+ emit(set_type, :open, *text(data, ts, te))
3069
3235
  begin
3070
3236
  stack[top] = cs
3071
3237
  top+= 1
3072
- cs = 162
3238
+ cs = 145
3073
3239
  _goto_level = _again
3074
3240
  next
3075
3241
  end
3076
3242
 
3077
3243
  end
3078
3244
  end
3079
- # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3080
- when 16 then
3081
- # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3245
+ when 17 then
3246
+ # line 124 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3082
3247
  begin
3083
- raise PrematureEndError end
3084
- # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3085
- # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3248
+
3249
+ text = ts ? copy(data, ts-1..-1) : data.pack('c*')
3250
+ raise PrematureEndError.new( text )
3251
+ end
3252
+ # line 191 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3086
3253
  begin
3087
3254
  begin p = ((te))-1; end
3088
3255
  begin
3089
3256
  set_depth += 1; in_set = true
3090
3257
  set_type = set_depth > 1 ? :subset : :set
3091
3258
 
3092
- self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
3259
+ emit(set_type, :open, *text(data, ts, te))
3093
3260
  begin
3094
3261
  stack[top] = cs
3095
3262
  top+= 1
3096
- cs = 162
3263
+ cs = 145
3097
3264
  _goto_level = _again
3098
3265
  next
3099
3266
  end
3100
3267
 
3101
3268
  end
3102
3269
  end
3103
- # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3104
- when 5 then
3105
- # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3270
+ when 88 then
3271
+ # line 124 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3272
+ begin
3273
+
3274
+ text = ts ? copy(data, ts-1..-1) : data.pack('c*')
3275
+ raise PrematureEndError.new( text )
3276
+ end
3277
+ # line 351 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3278
+ begin
3279
+ te = p
3280
+ p = p - 1; begin
3281
+ emit(:escape, :hex, *text(data, ts, te, 1))
3282
+ begin
3283
+ top -= 1
3284
+ cs = stack[top]
3285
+ _goto_level = _again
3286
+ next
3287
+ end
3288
+
3289
+ end
3290
+ end
3291
+ when 92 then
3292
+ # line 124 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3293
+ begin
3294
+
3295
+ text = ts ? copy(data, ts-1..-1) : data.pack('c*')
3296
+ raise PrematureEndError.new( text )
3297
+ end
3298
+ # line 365 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3299
+ begin
3300
+ te = p
3301
+ p = p - 1; begin
3302
+ raise InvalidSequenceError.new("wide hex sequence")
3303
+ begin
3304
+ top -= 1
3305
+ cs = stack[top]
3306
+ _goto_level = _again
3307
+ next
3308
+ end
3309
+
3310
+ end
3311
+ end
3312
+ when 86 then
3313
+ # line 124 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3314
+ begin
3315
+
3316
+ text = ts ? copy(data, ts-1..-1) : data.pack('c*')
3317
+ raise PrematureEndError.new( text )
3318
+ end
3319
+ # line 385 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3320
+ begin
3321
+ te = p
3322
+ p = p - 1; begin
3323
+ if data[te]
3324
+ c = data[te].chr
3325
+ if c =~ /[\x00-\x7F]/
3326
+ emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
3327
+ p += 1
3328
+ else
3329
+ raise InvalidSequenceError.new("meta sequence")
3330
+ end
3331
+ else
3332
+ raise PrematureEndError.new("meta sequence")
3333
+ end
3334
+ begin
3335
+ top -= 1
3336
+ cs = stack[top]
3337
+ _goto_level = _again
3338
+ next
3339
+ end
3340
+
3341
+ end
3342
+ end
3343
+ when 26 then
3344
+ # line 124 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3345
+ begin
3346
+
3347
+ text = ts ? copy(data, ts-1..-1) : data.pack('c*')
3348
+ raise PrematureEndError.new( text )
3349
+ end
3350
+ # line 385 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3351
+ begin
3352
+ begin p = ((te))-1; end
3353
+ begin
3354
+ if data[te]
3355
+ c = data[te].chr
3356
+ if c =~ /[\x00-\x7F]/
3357
+ emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
3358
+ p += 1
3359
+ else
3360
+ raise InvalidSequenceError.new("meta sequence")
3361
+ end
3362
+ else
3363
+ raise PrematureEndError.new("meta sequence")
3364
+ end
3365
+ begin
3366
+ top -= 1
3367
+ cs = stack[top]
3368
+ _goto_level = _again
3369
+ next
3370
+ end
3371
+
3372
+ end
3373
+ end
3374
+ when 30 then
3375
+ # line 130 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3376
+ begin
3377
+
3378
+ text = ts ? copy(data, ts-1..-1) : data.pack('c*')
3379
+ raise InvalidSequenceError.new('sequence', text)
3380
+ end
3381
+ # line 361 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3382
+ begin
3383
+ te = p+1
3384
+ begin
3385
+ begin
3386
+ top -= 1
3387
+ cs = stack[top]
3388
+ _goto_level = _again
3389
+ next
3390
+ end
3391
+
3392
+ end
3393
+ end
3394
+ when 44 then
3395
+ # line 137 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3396
+ begin
3397
+ group_depth -= 1; in_group = group_depth > 0 ? true : false end
3398
+ # line 136 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3399
+ begin
3400
+ group_depth += 1; in_group = true end
3401
+ when 8 then
3402
+ # line 137 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3106
3403
  begin
3107
3404
  group_depth -= 1; in_group = group_depth > 0 ? true : false end
3108
- # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3109
- # line 437 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3405
+ # line 489 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3110
3406
  begin
3111
3407
  te = p+1
3112
3408
  begin
3113
- self.emit(:group, :comment, data[ts..te-1].pack('c*'), ts, te)
3409
+ emit(:group, :comment, *text(data, ts, te))
3114
3410
  end
3115
3411
  end
3116
- # line 437 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3117
- when 32 then
3118
- # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3412
+ when 37 then
3413
+ # line 137 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3119
3414
  begin
3120
3415
  group_depth -= 1; in_group = group_depth > 0 ? true : false end
3121
- # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3122
- # line 506 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3416
+ # line 553 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3123
3417
  begin
3124
3418
  te = p+1
3125
3419
  begin
3126
- self.emit(:group, :close, data[ts..te-1].pack('c*'), ts, te)
3420
+ emit(:group, :close, *text(data, ts, te))
3127
3421
  end
3128
3422
  end
3129
- # line 506 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3130
- when 68 then
3131
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3423
+ when 36 then
3424
+ # line 1 "NONE"
3132
3425
  begin
3133
3426
  te = p+1
3134
3427
  end
3135
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3136
- # line 220 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3428
+ # line 136 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3137
3429
  begin
3138
- act = 14; end
3139
- # line 220 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3140
- when 66 then
3141
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3430
+ group_depth += 1; in_group = true end
3431
+ when 69 then
3432
+ # line 1 "NONE"
3142
3433
  begin
3143
3434
  te = p+1
3144
3435
  end
3145
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3146
- # line 225 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3436
+ # line 242 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3147
3437
  begin
3148
3438
  act = 15; end
3149
- # line 225 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3150
- when 65 then
3151
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3439
+ when 68 then
3440
+ # line 1 "NONE"
3152
3441
  begin
3153
3442
  te = p+1
3154
3443
  end
3155
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3156
- # line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3444
+ # line 266 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3157
3445
  begin
3158
3446
  act = 18; end
3159
- # line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3160
- when 22 then
3161
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3447
+ when 23 then
3448
+ # line 1 "NONE"
3162
3449
  begin
3163
3450
  te = p+1
3164
3451
  end
3165
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3166
- # line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3452
+ # line 283 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3167
3453
  begin
3168
3454
  act = 20; end
3169
- # line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3170
- when 76 then
3171
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3455
+ when 79 then
3456
+ # line 1 "NONE"
3172
3457
  begin
3173
3458
  te = p+1
3174
3459
  end
3175
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3176
- # line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3460
+ # line 293 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3177
3461
  begin
3178
3462
  act = 21; end
3179
- # line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3180
- when 75 then
3181
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3463
+ when 78 then
3464
+ # line 1 "NONE"
3182
3465
  begin
3183
3466
  te = p+1
3184
3467
  end
3185
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3186
- # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3468
+ # line 299 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3187
3469
  begin
3188
3470
  act = 22; end
3189
- # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3190
3471
  when 2 then
3191
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3192
- begin
3193
- te = p+1
3194
- end
3195
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3196
- # line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3197
- begin
3198
- act = 51; end
3199
- # line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3200
- when 39 then
3201
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3472
+ # line 1 "NONE"
3202
3473
  begin
3203
3474
  te = p+1
3204
3475
  end
3205
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3206
- # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3476
+ # line 672 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3207
3477
  begin
3208
- group_depth -= 1; in_group = group_depth > 0 ? true : false end
3209
- # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3210
- # line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3211
- begin
3212
- group_depth += 1; in_group = true end
3213
- # line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3214
- # line 3215 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
3478
+ act = 53; end
3479
+ # line 3480 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
3215
3480
  end
3216
3481
  end
3217
3482
  end
3218
3483
  if _goto_level <= _again
3219
3484
  case _re_scanner_to_state_actions[cs]
3220
- when 53 then
3221
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3485
+ when 56 then
3486
+ # line 1 "NONE"
3222
3487
  begin
3223
3488
  ts = nil; end
3224
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3225
- when 28 then
3226
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3489
+ when 33 then
3490
+ # line 1 "NONE"
3227
3491
  begin
3228
3492
  ts = nil; end
3229
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3230
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3493
+ # line 1 "NONE"
3231
3494
  begin
3232
3495
  act = 0
3233
3496
  end
3234
- # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3235
- # line 3236 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
3497
+ # line 3498 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
3236
3498
  end
3237
3499
 
3238
3500
  if cs == 0
@@ -3253,19 +3515,20 @@ act = 0
3253
3515
  next;
3254
3516
  end
3255
3517
  case _re_scanner_eof_actions[cs]
3256
- when 11 then
3257
- # line 52 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3518
+ when 12 then
3519
+ # line 52 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/property.rl"
3258
3520
  begin
3259
3521
 
3260
3522
  raise PrematureEndError.new('unicode property')
3261
3523
  end
3262
- # line 52 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3263
- when 10 then
3264
- # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3524
+ when 11 then
3525
+ # line 124 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3265
3526
  begin
3266
- raise PrematureEndError end
3267
- # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3268
- # line 3269 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
3527
+
3528
+ text = ts ? copy(data, ts-1..-1) : data.pack('c*')
3529
+ raise PrematureEndError.new( text )
3530
+ end
3531
+ # line 3532 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
3269
3532
  end
3270
3533
  end
3271
3534
 
@@ -3276,7 +3539,12 @@ act = 0
3276
3539
  end
3277
3540
  end
3278
3541
 
3279
- # line 667 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3542
+ # line 755 "/Users/ammar/src/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3543
+
3544
+ if cs == re_scanner_error
3545
+ text = ts ? copy(data, ts-1..-1) : data.pack('c*')
3546
+ raise ScannerError.new("Scan error at '#{text}'")
3547
+ end
3280
3548
 
3281
3549
  raise PrematureEndError.new("(missing group closing paranthesis) "+
3282
3550
  "[#{in_group}:#{group_depth}]") if in_group
@@ -3284,36 +3552,96 @@ end
3284
3552
  "[#{in_set}:#{set_depth}]") if in_set
3285
3553
 
3286
3554
  # when the entire expression is a literal run
3287
- self.emit_literal if @literal
3555
+ emit_literal if @literal
3288
3556
 
3289
3557
  @tokens
3290
3558
  end
3291
3559
 
3292
- # appends one or more characters to the literal buffer, to be emitted later
3293
- # by a call to emit_literal. contents a mix of ASCII and UTF-8
3560
+ private
3561
+
3562
+ # Ragel's regex-based scan of the group options introduced a lot of
3563
+ # ambiguity, so we just ask it to find the beginning of what looks
3564
+ # like an options run and handle the rest in here.
3565
+ def self.scan_options(p, data, ts, te)
3566
+ text = text(data, ts, te).first
3567
+
3568
+ options_char, options_length = true, 0
3569
+
3570
+ # Copy while we have option characters, the maximum is 7, for (?mix-mix,
3571
+ # even though it doesn't make sense it is possible.
3572
+ while options_char and options_length < 7
3573
+ if data[te + options_length]
3574
+ c = data[te + options_length].chr
3575
+
3576
+ if c =~ /[-mix]/
3577
+ text << c ; p += 1 ; options_length += 1
3578
+ else
3579
+ options_char = false
3580
+ end
3581
+ else
3582
+ raise PrematureEndError.new("expression options `#{text}'")
3583
+ end
3584
+ end
3585
+
3586
+ if data[te + options_length]
3587
+ c = data[te + options_length].chr
3588
+
3589
+ if c == ':'
3590
+ # Include the ':' in the options text
3591
+ text << c ; p += 1 ; options_length += 1
3592
+ emit(:group, :options, text, ts, te + options_length)
3593
+
3594
+ elsif c == ')'
3595
+ # Don't include the closing ')', let group_close handle it.
3596
+ emit(:group, :options, text, ts, te + options_length)
3597
+
3598
+ else
3599
+ # Plain Regexp reports this as 'undefined group option'
3600
+ raise ScannerError.new(
3601
+ "Unexpected `#{c}' in options sequence, ':' or ')' expected")
3602
+ end
3603
+ else
3604
+ raise PrematureEndError.new("expression options `#{text}'")
3605
+ end
3606
+
3607
+ p # return the new value of the data pointer
3608
+ end
3609
+
3610
+ # Copy from ts to te from data as text
3611
+ def self.copy(data, range)
3612
+ data[range].pack('c*')
3613
+ end
3614
+
3615
+ # Copy from ts to te from data as text, returning an array with the text
3616
+ # and the offsets used to copy it.
3617
+ def self.text(data, ts, te, soff = 0)
3618
+ [copy(data, ts-soff..te-1), ts-soff, te]
3619
+ end
3620
+
3621
+ # Appends one or more characters to the literal buffer, to be emitted later
3622
+ # by a call to emit_literal. Contents can be a mix of ASCII and UTF-8.
3294
3623
  def self.append_literal(data, ts, te)
3295
3624
  @literal ||= []
3296
- @literal << [data[ts..te-1].pack('c*'), ts, te]
3625
+ @literal << text(data, ts, te)
3297
3626
  end
3298
3627
 
3299
- # emits the collected literal run collected by one or more calls to the
3300
- # append_literal method
3628
+ # Emits the literal run collected by calls to the append_literal method,
3629
+ # using the total start (ts) and end (te) offsets of the run.
3301
3630
  def self.emit_literal
3302
3631
  ts, te = @literal.first[1], @literal.last[2]
3303
3632
  text = @literal.map {|t| t[0]}.join
3304
3633
 
3305
3634
  text.force_encoding('utf-8') if text.respond_to?(:force_encoding)
3306
3635
 
3307
- self.emit(:literal, :literal, text, ts, te)
3308
3636
  @literal = nil
3637
+ emit(:literal, :literal, text, ts, te)
3309
3638
  end
3310
3639
 
3640
+ # Emits an array with the details of the scanned pattern
3311
3641
  def self.emit(type, token, text, ts, te)
3312
- #puts " > emit: #{type}:#{token} '#{text}' [#{ts}..#{te}]"
3642
+ #puts "EMIT: type: #{type}, token: #{token}, text: #{text}, ts: #{ts}, te: #{te}"
3313
3643
 
3314
- if @literal and type != :literal
3315
- self.emit_literal
3316
- end
3644
+ emit_literal if @literal
3317
3645
 
3318
3646
  if @block
3319
3647
  @block.call type, token, text, ts, te
@@ -3322,4 +3650,37 @@ end
3322
3650
  @tokens << [type, token, text, ts, te]
3323
3651
  end
3324
3652
 
3653
+ # Centralizes and unifies the handling of validation related
3654
+ # errors.
3655
+ def self.validation_error(type, what, reason)
3656
+ case type
3657
+ when :group
3658
+ error = InvalidGroupError.new(what, reason)
3659
+ when :backref
3660
+ error = InvalidBackrefError.new(what, reason)
3661
+ when :sequence
3662
+ error = InvalidSequenceError.new(what, reason)
3663
+ else
3664
+ error = ValidationError.new('expression')
3665
+ end
3666
+
3667
+ # TODO: configuration option to treat scanner level validation
3668
+ # errors as warnings or ignore them
3669
+ if false # @@config.validation_warn
3670
+ $stderr.puts error.to_s # unless @@config.validation_ignore
3671
+ else
3672
+ raise error # unless @@config.validation_ignore
3673
+ end
3674
+ end
3675
+
3676
+ # Used for references with an empty name or number
3677
+ def self.empty_backref_error(type, what)
3678
+ validation_error(:backref, what, 'ref ID is empty')
3679
+ end
3680
+
3681
+ # Used for named expressions with an empty name
3682
+ def self.empty_name_error(type, what)
3683
+ validation_error(type, what, 'name is empty')
3684
+ end
3685
+
3325
3686
  end # module Regexp::Scanner