regexp_parser 1.3.0 → 1.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +72 -1
  3. data/Gemfile +3 -3
  4. data/README.md +12 -19
  5. data/Rakefile +3 -4
  6. data/lib/regexp_parser/expression.rb +28 -53
  7. data/lib/regexp_parser/expression/classes/backref.rb +18 -10
  8. data/lib/regexp_parser/expression/classes/conditional.rb +7 -2
  9. data/lib/regexp_parser/expression/classes/escape.rb +0 -4
  10. data/lib/regexp_parser/expression/classes/group.rb +4 -2
  11. data/lib/regexp_parser/expression/classes/keep.rb +1 -3
  12. data/lib/regexp_parser/expression/methods/match.rb +13 -0
  13. data/lib/regexp_parser/expression/methods/match_length.rb +172 -0
  14. data/lib/regexp_parser/expression/methods/options.rb +35 -0
  15. data/lib/regexp_parser/expression/methods/strfregexp.rb +0 -1
  16. data/lib/regexp_parser/expression/methods/tests.rb +6 -15
  17. data/lib/regexp_parser/expression/methods/traverse.rb +3 -1
  18. data/lib/regexp_parser/expression/quantifier.rb +2 -2
  19. data/lib/regexp_parser/expression/sequence.rb +3 -6
  20. data/lib/regexp_parser/expression/sequence_operation.rb +2 -6
  21. data/lib/regexp_parser/expression/subexpression.rb +3 -5
  22. data/lib/regexp_parser/lexer.rb +30 -44
  23. data/lib/regexp_parser/parser.rb +47 -24
  24. data/lib/regexp_parser/scanner.rb +1228 -1367
  25. data/lib/regexp_parser/scanner/char_type.rl +0 -3
  26. data/lib/regexp_parser/scanner/properties/long.yml +34 -1
  27. data/lib/regexp_parser/scanner/properties/short.yml +12 -0
  28. data/lib/regexp_parser/scanner/scanner.rl +101 -194
  29. data/lib/regexp_parser/syntax/tokens.rb +2 -10
  30. data/lib/regexp_parser/syntax/tokens/unicode_property.rb +72 -21
  31. data/lib/regexp_parser/syntax/versions/2.6.0.rb +10 -0
  32. data/lib/regexp_parser/syntax/versions/2.6.2.rb +10 -0
  33. data/lib/regexp_parser/syntax/versions/2.6.3.rb +10 -0
  34. data/lib/regexp_parser/version.rb +1 -1
  35. data/regexp_parser.gemspec +3 -3
  36. data/spec/expression/base_spec.rb +94 -0
  37. data/spec/expression/clone_spec.rb +120 -0
  38. data/spec/expression/conditional_spec.rb +89 -0
  39. data/spec/expression/free_space_spec.rb +27 -0
  40. data/spec/expression/methods/match_length_spec.rb +161 -0
  41. data/spec/expression/methods/match_spec.rb +25 -0
  42. data/spec/expression/methods/strfregexp_spec.rb +224 -0
  43. data/spec/expression/methods/tests_spec.rb +99 -0
  44. data/spec/expression/methods/traverse_spec.rb +161 -0
  45. data/spec/expression/options_spec.rb +128 -0
  46. data/spec/expression/root_spec.rb +9 -0
  47. data/spec/expression/sequence_spec.rb +9 -0
  48. data/spec/expression/subexpression_spec.rb +50 -0
  49. data/spec/expression/to_h_spec.rb +26 -0
  50. data/spec/expression/to_s_spec.rb +100 -0
  51. data/spec/lexer/all_spec.rb +22 -0
  52. data/spec/lexer/conditionals_spec.rb +53 -0
  53. data/spec/lexer/delimiters_spec.rb +68 -0
  54. data/spec/lexer/escapes_spec.rb +14 -0
  55. data/spec/lexer/keep_spec.rb +10 -0
  56. data/spec/lexer/literals_spec.rb +89 -0
  57. data/spec/lexer/nesting_spec.rb +99 -0
  58. data/spec/lexer/refcalls_spec.rb +55 -0
  59. data/spec/parser/all_spec.rb +43 -0
  60. data/spec/parser/alternation_spec.rb +88 -0
  61. data/spec/parser/anchors_spec.rb +17 -0
  62. data/spec/parser/conditionals_spec.rb +179 -0
  63. data/spec/parser/errors_spec.rb +30 -0
  64. data/spec/parser/escapes_spec.rb +121 -0
  65. data/spec/parser/free_space_spec.rb +130 -0
  66. data/spec/parser/groups_spec.rb +108 -0
  67. data/spec/parser/keep_spec.rb +6 -0
  68. data/spec/parser/posix_classes_spec.rb +8 -0
  69. data/spec/parser/properties_spec.rb +115 -0
  70. data/spec/parser/quantifiers_spec.rb +52 -0
  71. data/spec/parser/refcalls_spec.rb +112 -0
  72. data/spec/parser/set/intersections_spec.rb +127 -0
  73. data/spec/parser/set/ranges_spec.rb +111 -0
  74. data/spec/parser/sets_spec.rb +178 -0
  75. data/spec/parser/types_spec.rb +18 -0
  76. data/spec/scanner/all_spec.rb +18 -0
  77. data/spec/scanner/anchors_spec.rb +21 -0
  78. data/spec/scanner/conditionals_spec.rb +128 -0
  79. data/spec/scanner/delimiters_spec.rb +52 -0
  80. data/spec/scanner/errors_spec.rb +67 -0
  81. data/spec/scanner/escapes_spec.rb +53 -0
  82. data/spec/scanner/free_space_spec.rb +133 -0
  83. data/spec/scanner/groups_spec.rb +52 -0
  84. data/spec/scanner/keep_spec.rb +10 -0
  85. data/spec/scanner/literals_spec.rb +49 -0
  86. data/spec/scanner/meta_spec.rb +18 -0
  87. data/spec/scanner/properties_spec.rb +64 -0
  88. data/spec/scanner/quantifiers_spec.rb +20 -0
  89. data/spec/scanner/refcalls_spec.rb +36 -0
  90. data/spec/scanner/sets_spec.rb +102 -0
  91. data/spec/scanner/types_spec.rb +14 -0
  92. data/spec/spec_helper.rb +15 -0
  93. data/{test → spec}/support/runner.rb +9 -8
  94. data/spec/support/shared_examples.rb +77 -0
  95. data/{test → spec}/support/warning_extractor.rb +5 -7
  96. data/spec/syntax/syntax_spec.rb +48 -0
  97. data/spec/syntax/syntax_token_map_spec.rb +23 -0
  98. data/spec/syntax/versions/1.8.6_spec.rb +17 -0
  99. data/spec/syntax/versions/1.9.1_spec.rb +10 -0
  100. data/spec/syntax/versions/1.9.3_spec.rb +9 -0
  101. data/spec/syntax/versions/2.0.0_spec.rb +13 -0
  102. data/spec/syntax/versions/2.2.0_spec.rb +9 -0
  103. data/spec/syntax/versions/aliases_spec.rb +37 -0
  104. data/spec/token/token_spec.rb +85 -0
  105. metadata +151 -146
  106. data/test/expression/test_all.rb +0 -12
  107. data/test/expression/test_base.rb +0 -90
  108. data/test/expression/test_clone.rb +0 -89
  109. data/test/expression/test_conditionals.rb +0 -113
  110. data/test/expression/test_free_space.rb +0 -35
  111. data/test/expression/test_set.rb +0 -84
  112. data/test/expression/test_strfregexp.rb +0 -230
  113. data/test/expression/test_subexpression.rb +0 -58
  114. data/test/expression/test_tests.rb +0 -99
  115. data/test/expression/test_to_h.rb +0 -59
  116. data/test/expression/test_to_s.rb +0 -104
  117. data/test/expression/test_traverse.rb +0 -161
  118. data/test/helpers.rb +0 -10
  119. data/test/lexer/test_all.rb +0 -41
  120. data/test/lexer/test_conditionals.rb +0 -127
  121. data/test/lexer/test_keep.rb +0 -24
  122. data/test/lexer/test_literals.rb +0 -130
  123. data/test/lexer/test_nesting.rb +0 -132
  124. data/test/lexer/test_refcalls.rb +0 -56
  125. data/test/parser/set/test_intersections.rb +0 -127
  126. data/test/parser/set/test_ranges.rb +0 -111
  127. data/test/parser/test_all.rb +0 -64
  128. data/test/parser/test_alternation.rb +0 -92
  129. data/test/parser/test_anchors.rb +0 -34
  130. data/test/parser/test_conditionals.rb +0 -187
  131. data/test/parser/test_errors.rb +0 -63
  132. data/test/parser/test_escapes.rb +0 -134
  133. data/test/parser/test_free_space.rb +0 -139
  134. data/test/parser/test_groups.rb +0 -289
  135. data/test/parser/test_keep.rb +0 -21
  136. data/test/parser/test_posix_classes.rb +0 -27
  137. data/test/parser/test_properties.rb +0 -133
  138. data/test/parser/test_quantifiers.rb +0 -301
  139. data/test/parser/test_refcalls.rb +0 -186
  140. data/test/parser/test_sets.rb +0 -179
  141. data/test/parser/test_types.rb +0 -50
  142. data/test/scanner/test_all.rb +0 -38
  143. data/test/scanner/test_anchors.rb +0 -38
  144. data/test/scanner/test_conditionals.rb +0 -184
  145. data/test/scanner/test_errors.rb +0 -91
  146. data/test/scanner/test_escapes.rb +0 -56
  147. data/test/scanner/test_free_space.rb +0 -200
  148. data/test/scanner/test_groups.rb +0 -79
  149. data/test/scanner/test_keep.rb +0 -35
  150. data/test/scanner/test_literals.rb +0 -89
  151. data/test/scanner/test_meta.rb +0 -40
  152. data/test/scanner/test_properties.rb +0 -312
  153. data/test/scanner/test_quantifiers.rb +0 -37
  154. data/test/scanner/test_refcalls.rb +0 -52
  155. data/test/scanner/test_scripts.rb +0 -53
  156. data/test/scanner/test_sets.rb +0 -119
  157. data/test/scanner/test_types.rb +0 -35
  158. data/test/scanner/test_unicode_blocks.rb +0 -30
  159. data/test/support/disable_autotest.rb +0 -8
  160. data/test/syntax/test_all.rb +0 -6
  161. data/test/syntax/test_syntax.rb +0 -61
  162. data/test/syntax/test_syntax_token_map.rb +0 -25
  163. data/test/syntax/versions/test_1.8.rb +0 -55
  164. data/test/syntax/versions/test_1.9.1.rb +0 -36
  165. data/test/syntax/versions/test_1.9.3.rb +0 -32
  166. data/test/syntax/versions/test_2.0.0.rb +0 -37
  167. data/test/syntax/versions/test_2.2.0.rb +0 -32
  168. data/test/syntax/versions/test_aliases.rb +0 -129
  169. data/test/syntax/versions/test_all.rb +0 -5
  170. data/test/test_all.rb +0 -5
  171. data/test/token/test_all.rb +0 -2
  172. data/test/token/test_token.rb +0 -107
@@ -39,6 +39,8 @@ class Regexp::Parser
39
39
  parse_token(token)
40
40
  end
41
41
 
42
+ assign_referenced_expressions
43
+
42
44
  if block_given?
43
45
  block.call(root)
44
46
  else
@@ -163,14 +165,18 @@ class Regexp::Parser
163
165
  node << Backreference::NameCall.new(token, active_opts)
164
166
  when :number, :number_ref
165
167
  node << Backreference::Number.new(token, active_opts)
166
- when :number_rel_ref
167
- node << Backreference::NumberRelative.new(token, active_opts)
168
168
  when :number_recursion_ref
169
169
  node << Backreference::NumberRecursionLevel.new(token, active_opts)
170
170
  when :number_call
171
171
  node << Backreference::NumberCall.new(token, active_opts)
172
+ when :number_rel_ref
173
+ node << Backreference::NumberRelative.new(token, active_opts).tap do |exp|
174
+ assign_effective_number(exp)
175
+ end
172
176
  when :number_rel_call
173
- node << Backreference::NumberCallRelative.new(token, active_opts)
177
+ node << Backreference::NumberCallRelative.new(token, active_opts).tap do |exp|
178
+ assign_effective_number(exp)
179
+ end
174
180
  else
175
181
  raise UnknownTokenError.new('Backreference', token)
176
182
  end
@@ -209,9 +215,9 @@ class Regexp::Parser
209
215
  nest_conditional(Conditional::Expression.new(token, active_opts))
210
216
  when :condition
211
217
  conditional_nesting.last.condition = Conditional::Condition.new(token, active_opts)
212
- conditional_nesting.last.branch
218
+ conditional_nesting.last.add_sequence(active_opts)
213
219
  when :separator
214
- conditional_nesting.last.branch
220
+ conditional_nesting.last.add_sequence(active_opts)
215
221
  self.node = conditional_nesting.last.branches.last
216
222
  when :close
217
223
  conditional_nesting.pop
@@ -229,7 +235,7 @@ class Regexp::Parser
229
235
  end
230
236
 
231
237
  def posixclass(token)
232
- node << PosixClass.new(token)
238
+ node << PosixClass.new(token, active_opts)
233
239
  end
234
240
 
235
241
  include Regexp::Expression::UnicodeProperty
@@ -491,6 +497,9 @@ class Regexp::Parser
491
497
  end
492
498
  end
493
499
 
500
+ MOD_FLAGS = %w[i m x].map(&:to_sym)
501
+ ENC_FLAGS = %w[a d u].map(&:to_sym)
502
+
494
503
  def options_group(token)
495
504
  positive, negative = token.text.split('-', 2)
496
505
  negative ||= ''
@@ -499,23 +508,23 @@ class Regexp::Parser
499
508
  opt_changes = {}
500
509
  new_active_opts = active_opts.dup
501
510
 
502
- # Negative options have precedence. E.g. /(?i-i)a/ is case-sensitive.
503
- %w[i m x].each do |flag|
504
- if positive.include?(flag)
505
- opt_changes[flag.to_sym] = new_active_opts[flag.to_sym] = true
511
+ MOD_FLAGS.each do |flag|
512
+ if positive.include?(flag.to_s)
513
+ opt_changes[flag] = new_active_opts[flag] = true
506
514
  end
507
- if negative.include?(flag)
508
- opt_changes[flag.to_sym] = false
509
- new_active_opts.delete(flag.to_sym)
515
+ if negative.include?(flag.to_s)
516
+ opt_changes[flag] = false
517
+ new_active_opts.delete(flag)
510
518
  end
511
519
  end
512
520
 
513
- # Any encoding flag overrides all previous encoding flags. If there are
514
- # multiple encoding flags in an options string, the last one wins.
515
- # E.g. /(?dau)\w/ matches UTF8 chars but /(?dua)\w/ only ASCII chars.
516
- if (flag = positive.reverse[/[adu]/])
517
- %w[a d u].each { |key| new_active_opts.delete(key.to_sym) }
518
- opt_changes[flag.to_sym] = new_active_opts[flag.to_sym] = true
521
+ if (enc_flag = positive.reverse[/[adu]/])
522
+ enc_flag = enc_flag.to_sym
523
+ (ENC_FLAGS - [enc_flag]).each do |other|
524
+ opt_changes[other] = false if new_active_opts[other]
525
+ new_active_opts.delete(other)
526
+ end
527
+ opt_changes[enc_flag] = new_active_opts[enc_flag] = true
519
528
  end
520
529
 
521
530
  options_stack << new_active_opts
@@ -600,16 +609,14 @@ class Regexp::Parser
600
609
  end
601
610
 
602
611
  def sequence_operation(klass, token)
603
- if node.last.is_a?(klass)
604
- self.node = node.last
605
- elsif !node.is_a?(klass)
612
+ unless node.is_a?(klass)
606
613
  operator = klass.new(token, active_opts)
607
- sequence = operator.add_sequence
614
+ sequence = operator.add_sequence(active_opts)
608
615
  sequence.expressions = node.expressions
609
616
  node.expressions = []
610
617
  nest(operator)
611
618
  end
612
- node.add_sequence
619
+ node.add_sequence(active_opts)
613
620
  end
614
621
 
615
622
  def active_opts
@@ -627,4 +634,20 @@ class Regexp::Parser
627
634
  def count_captured_group
628
635
  captured_group_counts[node.level] += 1
629
636
  end
637
+
638
+ def assign_effective_number(exp)
639
+ exp.effective_number =
640
+ exp.number + total_captured_group_count + (exp.number < 0 ? 1 : 0)
641
+ end
642
+
643
+ def assign_referenced_expressions
644
+ targets = {}
645
+ root.each_expression do |exp|
646
+ exp.is_a?(Group::Capture) && targets[exp.identifier] = exp
647
+ end
648
+ root.each_expression do |exp|
649
+ exp.respond_to?(:reference) &&
650
+ exp.referenced_expression = targets[exp.reference]
651
+ end
652
+ end
630
653
  end # module Regexp::Parser
@@ -1,8 +1,8 @@
1
1
  # -*- warn-indent:false; -*-
2
2
 
3
- # line 1 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3
+ # line 1 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
4
4
 
5
- # line 710 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
5
+ # line 676 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
6
6
 
7
7
 
8
8
  # THIS IS A GENERATED FILE, DO NOT EDIT DIRECTLY
@@ -82,7 +82,7 @@ class Regexp::Scanner
82
82
  input = input_object
83
83
  self.free_spacing = false
84
84
  end
85
-
85
+ self.spacing_stack = [{:free_spacing => free_spacing, :depth => 0}]
86
86
 
87
87
  data = input.unpack("c*") if input.is_a?(String)
88
88
  eof = data.length
@@ -90,18 +90,12 @@ class Regexp::Scanner
90
90
  self.tokens = []
91
91
  self.block = block_given? ? block : nil
92
92
 
93
- self.in_group = false
93
+ self.set_depth = 0
94
94
  self.group_depth = 0
95
- self.spacing_stack = [{:free_spacing => free_spacing, :depth => 0}]
96
-
97
- in_set = false
98
- set_depth = 0
99
- in_conditional = false
100
- conditional_depth = 0
101
- conditional_stack = []
95
+ self.conditional_stack = []
102
96
 
103
97
 
104
- # line 104 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
98
+ # line 98 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
105
99
  class << self
106
100
  attr_accessor :_re_scanner_trans_keys
107
101
  private :_re_scanner_trans_keys, :_re_scanner_trans_keys=
@@ -110,14 +104,14 @@ self._re_scanner_trans_keys = [
110
104
  0, 0, -128, -65, -128, -65,
111
105
  -128, -65, -128, -65, -128,
112
106
  -65, -128, -65, 10, 10,
113
- 33, 126, 41, 41, 39, 122,
114
- 33, 122, 48, 122, 39,
115
- 60, 39, 122, 48, 57,
116
- 39, 57, 48, 57, 39, 57,
117
- 39, 122, 43, 122, 48,
118
- 57, 48, 62, 48, 57,
119
- 43, 62, 43, 122, 44, 125,
120
- 48, 125, 123, 123, 9,
107
+ 41, 41, 39, 122, 33, 122,
108
+ 48, 122, 39, 60, 39,
109
+ 122, 48, 57, 39, 57,
110
+ 48, 57, 39, 57, 39, 122,
111
+ 43, 122, 48, 57, 48,
112
+ 62, 48, 57, 43, 62,
113
+ 43, 122, 48, 57, 48, 125,
114
+ 44, 125, 123, 123, 9,
121
115
  122, 9, 125, 9, 122,
122
116
  -128, -65, -128, -65, 38, 38,
123
117
  45, 122, 45, 122, 93,
@@ -140,30 +134,32 @@ self._re_scanner_trans_keys = [
140
134
  112, 112, 112, 112, 111, 111,
141
135
  114, 114, 100, 100, 100,
142
136
  100, 65, 122, 61, 61,
143
- 93, 93, 45, 45, 77, 77,
144
- 45, 45, 45, 45, 67,
145
- 99, 45, 45, 77, 77,
146
- 45, 45, 48, 123, 48, 102,
147
- 48, 102, 48, 102, 48,
148
- 102, 9, 125, 9, 125,
149
- 9, 125, 9, 125, 9, 125,
150
- 9, 125, 48, 123, 41,
151
- 41, 39, 122, 41, 57,
152
- 48, 122, -62, 127, -62, -33,
153
- -32, -17, -16, -12, 1,
154
- 127, 1, 127, 9, 32,
155
- 33, 126, 10, 126, 63, 63,
137
+ 93, 93, 45, 45, 92, 92,
138
+ 92, 92, 45, 45, 92,
139
+ 92, 92, 92, 48, 123,
140
+ 48, 102, 48, 102, 48, 102,
141
+ 48, 102, 9, 125, 9,
142
+ 125, 9, 125, 9, 125,
143
+ 9, 125, 9, 125, 48, 123,
144
+ 41, 41, 39, 122, 41,
145
+ 57, 48, 122, -128, 127,
146
+ -62, -33, -32, -17, -16, -12,
147
+ 1, 127, 1, 127, 9,
148
+ 32, 33, 126, 10, 126,
149
+ 63, 63, 33, 126, 33, 126,
156
150
  43, 63, 43, 63, 43,
157
- 63, 65, 122, 43, 63,
158
- 68, 119, 80, 112, -62, 125,
159
- -128, -65, -128, -65, -128,
160
- -65, 38, 38, 38, 93,
161
- 46, 61, 48, 122, 36, 125,
162
- 48, 55, 48, 55, 92,
163
- 92, 92, 92, 92, 92,
164
- 48, 102, 39, 60, 39, 122,
165
- 49, 57, 41, 57, 48,
166
- 122, 0
151
+ 63, 65, 122, 44, 57,
152
+ 43, 63, 68, 119, 80, 112,
153
+ -62, 125, -128, -65, -128,
154
+ -65, -128, -65, 38, 38,
155
+ 38, 93, 46, 61, 48, 122,
156
+ 36, 125, 48, 55, 48,
157
+ 55, 77, 77, 45, 45,
158
+ 0, 0, 67, 99, 45, 45,
159
+ 0, 0, 92, 92, 48,
160
+ 102, 39, 60, 39, 122,
161
+ 49, 57, 41, 57, 48, 122,
162
+ 0
167
163
  ]
168
164
 
169
165
  class << self
@@ -172,9 +168,9 @@ class << self
172
168
  end
173
169
  self._re_scanner_key_spans = [
174
170
  0, 64, 64, 64, 64, 64, 64, 1,
175
- 94, 1, 84, 90, 75, 22, 84, 10,
176
- 19, 10, 19, 84, 80, 10, 15, 10,
177
- 20, 80, 82, 78, 1, 114, 117, 114,
171
+ 1, 84, 90, 75, 22, 84, 10, 19,
172
+ 10, 19, 84, 80, 10, 15, 10, 20,
173
+ 80, 10, 78, 82, 1, 114, 117, 114,
178
174
  64, 64, 1, 78, 78, 1, 27, 24,
179
175
  8, 3, 1, 1, 1, 1, 1, 1,
180
176
  1, 1, 1, 1, 1, 1, 1, 1,
@@ -182,14 +178,15 @@ self._re_scanner_key_spans = [
182
178
  1, 1, 1, 1, 1, 1, 1, 4,
183
179
  1, 1, 1, 1, 1, 1, 1, 1,
184
180
  1, 1, 1, 1, 1, 1, 58, 1,
185
- 1, 1, 1, 1, 1, 33, 1, 1,
186
- 1, 76, 55, 55, 55, 55, 117, 117,
187
- 117, 117, 117, 117, 76, 1, 84, 17,
188
- 75, 190, 30, 16, 5, 127, 127, 24,
189
- 94, 117, 1, 21, 21, 21, 58, 21,
190
- 52, 33, 188, 64, 64, 64, 1, 56,
191
- 16, 75, 90, 8, 8, 1, 1, 1,
192
- 55, 22, 84, 9, 17, 75
181
+ 1, 1, 1, 1, 1, 1, 1, 76,
182
+ 55, 55, 55, 55, 117, 117, 117, 117,
183
+ 117, 117, 76, 1, 84, 17, 75, 256,
184
+ 30, 16, 5, 127, 127, 24, 94, 117,
185
+ 1, 94, 94, 21, 21, 21, 58, 14,
186
+ 21, 52, 33, 188, 64, 64, 64, 1,
187
+ 56, 16, 75, 90, 8, 8, 1, 1,
188
+ 0, 33, 1, 0, 1, 55, 22, 84,
189
+ 9, 17, 75
193
190
  ]
194
191
 
195
192
  class << self
@@ -198,24 +195,25 @@ class << self
198
195
  end
199
196
  self._re_scanner_index_offsets = [
200
197
  0, 0, 65, 130, 195, 260, 325, 390,
201
- 392, 487, 489, 574, 665, 741, 764, 849,
202
- 860, 880, 891, 911, 996, 1077, 1088, 1104,
203
- 1115, 1136, 1217, 1300, 1379, 1381, 1496, 1614,
204
- 1729, 1794, 1859, 1861, 1940, 2019, 2021, 2049,
205
- 2074, 2083, 2087, 2089, 2091, 2093, 2095, 2097,
206
- 2099, 2101, 2103, 2105, 2107, 2109, 2111, 2113,
207
- 2115, 2117, 2119, 2121, 2123, 2125, 2127, 2129,
208
- 2131, 2133, 2135, 2137, 2139, 2141, 2143, 2145,
209
- 2150, 2152, 2154, 2156, 2158, 2160, 2162, 2164,
210
- 2166, 2168, 2170, 2172, 2174, 2176, 2178, 2237,
211
- 2239, 2241, 2243, 2245, 2247, 2249, 2283, 2285,
212
- 2287, 2289, 2366, 2422, 2478, 2534, 2590, 2708,
213
- 2826, 2944, 3062, 3180, 3298, 3375, 3377, 3462,
214
- 3480, 3556, 3747, 3778, 3795, 3801, 3929, 4057,
215
- 4082, 4177, 4295, 4297, 4319, 4341, 4363, 4422,
216
- 4444, 4497, 4531, 4720, 4785, 4850, 4915, 4917,
217
- 4974, 4991, 5067, 5158, 5167, 5176, 5178, 5180,
218
- 5182, 5238, 5261, 5346, 5356, 5374
198
+ 392, 394, 479, 570, 646, 669, 754, 765,
199
+ 785, 796, 816, 901, 982, 993, 1009, 1020,
200
+ 1041, 1122, 1133, 1212, 1295, 1297, 1412, 1530,
201
+ 1645, 1710, 1775, 1777, 1856, 1935, 1937, 1965,
202
+ 1990, 1999, 2003, 2005, 2007, 2009, 2011, 2013,
203
+ 2015, 2017, 2019, 2021, 2023, 2025, 2027, 2029,
204
+ 2031, 2033, 2035, 2037, 2039, 2041, 2043, 2045,
205
+ 2047, 2049, 2051, 2053, 2055, 2057, 2059, 2061,
206
+ 2066, 2068, 2070, 2072, 2074, 2076, 2078, 2080,
207
+ 2082, 2084, 2086, 2088, 2090, 2092, 2094, 2153,
208
+ 2155, 2157, 2159, 2161, 2163, 2165, 2167, 2169,
209
+ 2246, 2302, 2358, 2414, 2470, 2588, 2706, 2824,
210
+ 2942, 3060, 3178, 3255, 3257, 3342, 3360, 3436,
211
+ 3693, 3724, 3741, 3747, 3875, 4003, 4028, 4123,
212
+ 4241, 4243, 4338, 4433, 4455, 4477, 4499, 4558,
213
+ 4573, 4595, 4648, 4682, 4871, 4936, 5001, 5066,
214
+ 5068, 5125, 5142, 5218, 5309, 5318, 5327, 5329,
215
+ 5331, 5332, 5366, 5368, 5369, 5371, 5427, 5450,
216
+ 5535, 5545, 5563
219
217
  ]
220
218
 
221
219
  class << self
@@ -272,639 +270,662 @@ self._re_scanner_indicies = [
272
270
  6, 6, 6, 6, 6, 6, 6, 6,
273
271
  6, 6, 6, 6, 6, 6, 6, 6,
274
272
  6, 6, 6, 6, 6, 0, 9, 8,
275
- 11, 10, 12, 10, 10, 10, 13, 14,
276
- 10, 10, 10, 10, 15, 10, 10, 10,
277
- 10, 10, 10, 10, 10, 10, 10, 10,
278
- 10, 16, 10, 17, 11, 16, 10, 10,
279
- 10, 10, 10, 10, 10, 10, 10, 10,
280
- 10, 10, 10, 10, 10, 10, 10, 10,
273
+ 12, 11, 13, 10, 10, 10, 10, 10,
274
+ 10, 10, 10, 14, 14, 14, 14, 14,
275
+ 14, 14, 14, 14, 14, 10, 10, 10,
276
+ 10, 10, 10, 10, 14, 14, 14, 14,
277
+ 14, 14, 14, 14, 14, 14, 14, 14,
278
+ 14, 14, 14, 14, 14, 14, 14, 14,
279
+ 14, 14, 14, 14, 14, 14, 10, 10,
280
+ 10, 10, 14, 10, 14, 14, 14, 14,
281
+ 14, 14, 14, 14, 14, 14, 14, 14,
282
+ 14, 14, 14, 14, 14, 14, 14, 14,
283
+ 14, 14, 14, 14, 14, 14, 10, 15,
281
284
  10, 10, 10, 10, 10, 10, 10, 10,
282
- 10, 10, 10, 10, 10, 10, 10, 10,
283
- 15, 10, 10, 15, 10, 10, 10, 10,
284
- 15, 10, 10, 10, 15, 10, 10, 10,
285
- 10, 10, 10, 10, 15, 10, 10, 15,
286
- 10, 10, 10, 10, 10, 16, 10, 18,
287
- 12, 16, 10, 10, 10, 10, 10, 10,
288
- 10, 10, 13, 13, 13, 13, 13, 13,
289
- 13, 13, 13, 13, 10, 10, 10, 10,
290
- 10, 10, 10, 13, 13, 13, 13, 13,
291
- 13, 13, 13, 13, 13, 13, 13, 13,
292
- 13, 13, 13, 13, 13, 13, 13, 13,
293
- 13, 13, 13, 13, 13, 10, 10, 10,
294
- 10, 13, 10, 13, 13, 13, 13, 13,
295
- 13, 13, 13, 13, 13, 13, 13, 13,
296
- 13, 13, 13, 13, 13, 13, 13, 13,
297
- 13, 13, 13, 13, 13, 10, 11, 10,
298
- 10, 10, 10, 10, 10, 10, 10, 10,
299
- 10, 10, 10, 10, 10, 19, 19, 19,
300
- 19, 19, 19, 19, 19, 19, 19, 10,
301
- 10, 10, 11, 16, 10, 10, 19, 19,
302
- 19, 19, 19, 19, 19, 19, 19, 19,
303
- 19, 19, 19, 19, 19, 19, 19, 19,
304
- 19, 19, 19, 19, 19, 19, 19, 19,
305
- 10, 10, 10, 10, 19, 10, 19, 19,
306
- 19, 19, 19, 19, 19, 19, 19, 19,
307
- 19, 19, 19, 19, 19, 19, 19, 19,
308
- 19, 19, 19, 19, 19, 19, 19, 19,
309
- 10, 19, 19, 19, 19, 19, 19, 19,
310
- 19, 19, 19, 10, 10, 10, 10, 16,
311
- 10, 10, 19, 19, 19, 19, 19, 19,
312
- 19, 19, 19, 19, 19, 19, 19, 19,
313
- 19, 19, 19, 19, 19, 19, 19, 19,
314
- 19, 19, 19, 19, 10, 10, 10, 10,
315
- 19, 10, 19, 19, 19, 19, 19, 19,
316
- 19, 19, 19, 19, 19, 19, 19, 19,
317
- 19, 19, 19, 19, 19, 19, 19, 19,
318
- 19, 19, 19, 19, 10, 21, 20, 20,
319
- 20, 20, 20, 20, 20, 20, 20, 20,
320
- 20, 20, 20, 20, 20, 20, 20, 20,
321
- 20, 20, 22, 20, 23, 20, 20, 20,
322
- 24, 20, 25, 20, 20, 26, 26, 26,
323
- 26, 26, 26, 26, 26, 26, 26, 20,
324
- 20, 20, 20, 20, 20, 20, 26, 26,
325
- 26, 26, 26, 26, 26, 26, 26, 26,
326
- 26, 26, 26, 26, 26, 26, 26, 26,
327
- 26, 26, 26, 26, 26, 26, 26, 26,
328
- 20, 20, 20, 20, 26, 20, 26, 26,
329
- 26, 26, 26, 26, 26, 26, 26, 26,
330
- 26, 26, 26, 26, 26, 26, 26, 26,
331
- 26, 26, 26, 26, 26, 26, 26, 26,
332
- 20, 27, 27, 27, 27, 27, 27, 27,
333
- 27, 27, 27, 20, 23, 20, 20, 20,
334
- 20, 20, 20, 20, 20, 27, 27, 27,
335
- 27, 27, 27, 27, 27, 27, 27, 20,
336
- 27, 28, 28, 28, 28, 28, 28, 28,
337
- 28, 28, 20, 23, 20, 20, 20, 24,
338
- 20, 24, 20, 20, 28, 28, 28, 28,
339
- 28, 28, 28, 28, 28, 28, 20, 23,
340
- 20, 20, 20, 24, 20, 24, 20, 20,
341
- 26, 26, 26, 26, 26, 26, 26, 26,
342
- 26, 26, 20, 20, 20, 20, 20, 20,
343
- 20, 26, 26, 26, 26, 26, 26, 26,
344
- 26, 26, 26, 26, 26, 26, 26, 26,
345
- 26, 26, 26, 26, 26, 26, 26, 26,
346
- 26, 26, 26, 20, 20, 20, 20, 26,
347
- 20, 26, 26, 26, 26, 26, 26, 26,
348
- 26, 26, 26, 26, 26, 26, 26, 26,
349
- 26, 26, 26, 26, 26, 26, 26, 26,
350
- 26, 26, 26, 20, 29, 20, 30, 20,
351
- 20, 31, 31, 31, 31, 31, 31, 31,
352
- 31, 31, 31, 20, 20, 20, 20, 23,
353
- 20, 20, 31, 31, 31, 31, 31, 31,
285
+ 10, 10, 10, 10, 10, 10, 16, 16,
286
+ 16, 16, 16, 16, 16, 16, 16, 16,
287
+ 10, 10, 10, 15, 13, 10, 10, 16,
288
+ 16, 16, 16, 16, 16, 16, 16, 16,
289
+ 16, 16, 16, 16, 16, 16, 16, 16,
290
+ 16, 16, 16, 16, 16, 16, 16, 16,
291
+ 16, 10, 10, 10, 10, 16, 10, 16,
292
+ 16, 16, 16, 16, 16, 16, 16, 16,
293
+ 16, 16, 16, 16, 16, 16, 16, 16,
294
+ 16, 16, 16, 16, 16, 16, 16, 16,
295
+ 16, 10, 16, 16, 16, 16, 16, 16,
296
+ 16, 16, 16, 16, 10, 10, 10, 10,
297
+ 13, 10, 10, 16, 16, 16, 16, 16,
298
+ 16, 16, 16, 16, 16, 16, 16, 16,
299
+ 16, 16, 16, 16, 16, 16, 16, 16,
300
+ 16, 16, 16, 16, 16, 10, 10, 10,
301
+ 10, 16, 10, 16, 16, 16, 16, 16,
302
+ 16, 16, 16, 16, 16, 16, 16, 16,
303
+ 16, 16, 16, 16, 16, 16, 16, 16,
304
+ 16, 16, 16, 16, 16, 10, 18, 17,
305
+ 17, 17, 17, 17, 17, 17, 17, 17,
306
+ 17, 17, 17, 17, 17, 17, 17, 17,
307
+ 17, 17, 17, 19, 17, 20, 17, 17,
308
+ 17, 21, 17, 22, 17, 17, 23, 23,
309
+ 23, 23, 23, 23, 23, 23, 23, 23,
310
+ 17, 17, 17, 17, 17, 17, 17, 23,
311
+ 23, 23, 23, 23, 23, 23, 23, 23,
312
+ 23, 23, 23, 23, 23, 23, 23, 23,
313
+ 23, 23, 23, 23, 23, 23, 23, 23,
314
+ 23, 17, 17, 17, 17, 23, 17, 23,
315
+ 23, 23, 23, 23, 23, 23, 23, 23,
316
+ 23, 23, 23, 23, 23, 23, 23, 23,
317
+ 23, 23, 23, 23, 23, 23, 23, 23,
318
+ 23, 17, 24, 24, 24, 24, 24, 24,
319
+ 24, 24, 24, 24, 17, 20, 17, 17,
320
+ 17, 17, 17, 17, 17, 17, 24, 24,
321
+ 24, 24, 24, 24, 24, 24, 24, 24,
322
+ 17, 24, 25, 25, 25, 25, 25, 25,
323
+ 25, 25, 25, 17, 20, 17, 17, 17,
324
+ 21, 17, 21, 17, 17, 25, 25, 25,
325
+ 25, 25, 25, 25, 25, 25, 25, 17,
326
+ 20, 17, 17, 17, 21, 17, 21, 17,
327
+ 17, 23, 23, 23, 23, 23, 23, 23,
328
+ 23, 23, 23, 17, 17, 17, 17, 17,
329
+ 17, 17, 23, 23, 23, 23, 23, 23,
330
+ 23, 23, 23, 23, 23, 23, 23, 23,
331
+ 23, 23, 23, 23, 23, 23, 23, 23,
332
+ 23, 23, 23, 23, 17, 17, 17, 17,
333
+ 23, 17, 23, 23, 23, 23, 23, 23,
334
+ 23, 23, 23, 23, 23, 23, 23, 23,
335
+ 23, 23, 23, 23, 23, 23, 23, 23,
336
+ 23, 23, 23, 23, 17, 26, 17, 27,
337
+ 17, 17, 28, 28, 28, 28, 28, 28,
338
+ 28, 28, 28, 28, 17, 17, 17, 17,
339
+ 20, 17, 17, 28, 28, 28, 28, 28,
340
+ 28, 28, 28, 28, 28, 28, 28, 28,
341
+ 28, 28, 28, 28, 28, 28, 28, 28,
342
+ 28, 28, 28, 28, 28, 17, 17, 17,
343
+ 17, 28, 17, 28, 28, 28, 28, 28,
344
+ 28, 28, 28, 28, 28, 28, 28, 28,
345
+ 28, 28, 28, 28, 28, 28, 28, 28,
346
+ 28, 28, 28, 28, 28, 17, 29, 29,
347
+ 29, 29, 29, 29, 29, 29, 29, 29,
348
+ 17, 29, 29, 29, 29, 29, 29, 29,
349
+ 29, 29, 29, 17, 17, 17, 17, 20,
350
+ 17, 29, 30, 30, 30, 30, 30, 30,
351
+ 30, 30, 30, 17, 26, 17, 26, 17,
352
+ 17, 30, 30, 30, 30, 30, 30, 30,
353
+ 30, 30, 30, 17, 17, 17, 17, 20,
354
+ 17, 26, 17, 26, 17, 17, 28, 28,
355
+ 28, 28, 28, 28, 28, 28, 28, 28,
356
+ 17, 17, 17, 17, 20, 17, 17, 28,
357
+ 28, 28, 28, 28, 28, 28, 28, 28,
358
+ 28, 28, 28, 28, 28, 28, 28, 28,
359
+ 28, 28, 28, 28, 28, 28, 28, 28,
360
+ 28, 17, 17, 17, 17, 28, 17, 28,
361
+ 28, 28, 28, 28, 28, 28, 28, 28,
362
+ 28, 28, 28, 28, 28, 28, 28, 28,
363
+ 28, 28, 28, 28, 28, 28, 28, 28,
364
+ 28, 17, 32, 32, 32, 32, 32, 32,
365
+ 32, 32, 32, 32, 31, 32, 32, 32,
366
+ 32, 32, 32, 32, 32, 32, 32, 31,
354
367
  31, 31, 31, 31, 31, 31, 31, 31,
355
368
  31, 31, 31, 31, 31, 31, 31, 31,
356
- 31, 31, 31, 31, 20, 20, 20, 20,
357
- 31, 20, 31, 31, 31, 31, 31, 31,
358
369
  31, 31, 31, 31, 31, 31, 31, 31,
359
370
  31, 31, 31, 31, 31, 31, 31, 31,
360
- 31, 31, 31, 31, 20, 32, 32, 32,
361
- 32, 32, 32, 32, 32, 32, 32, 20,
362
- 32, 32, 32, 32, 32, 32, 32, 32,
363
- 32, 32, 20, 20, 20, 20, 23, 20,
364
- 32, 33, 33, 33, 33, 33, 33, 33,
365
- 33, 33, 20, 29, 20, 29, 20, 20,
366
- 33, 33, 33, 33, 33, 33, 33, 33,
367
- 33, 33, 20, 20, 20, 20, 23, 20,
368
- 29, 20, 29, 20, 20, 31, 31, 31,
369
- 31, 31, 31, 31, 31, 31, 31, 20,
370
- 20, 20, 20, 23, 20, 20, 31, 31,
371
371
  31, 31, 31, 31, 31, 31, 31, 31,
372
372
  31, 31, 31, 31, 31, 31, 31, 31,
373
373
  31, 31, 31, 31, 31, 31, 31, 31,
374
- 20, 20, 20, 20, 31, 20, 31, 31,
375
374
  31, 31, 31, 31, 31, 31, 31, 31,
375
+ 31, 31, 33, 31, 32, 31, 31, 31,
376
+ 34, 34, 34, 34, 34, 34, 34, 34,
377
+ 34, 34, 31, 31, 31, 31, 31, 31,
376
378
  31, 31, 31, 31, 31, 31, 31, 31,
377
379
  31, 31, 31, 31, 31, 31, 31, 31,
378
- 20, 35, 34, 34, 34, 36, 36, 36,
379
- 36, 36, 36, 36, 36, 36, 36, 34,
380
- 34, 34, 34, 34, 34, 34, 34, 34,
381
- 34, 34, 34, 34, 34, 34, 34, 34,
382
- 34, 34, 34, 34, 34, 34, 34, 34,
383
- 34, 34, 34, 34, 34, 34, 34, 34,
384
- 34, 34, 34, 34, 34, 34, 34, 34,
385
- 34, 34, 34, 34, 34, 34, 34, 34,
386
- 34, 34, 34, 34, 34, 34, 34, 34,
387
- 34, 34, 34, 34, 34, 34, 34, 34,
388
- 34, 34, 37, 34, 35, 35, 35, 35,
389
- 35, 35, 35, 35, 35, 35, 34, 34,
390
- 34, 34, 34, 34, 34, 34, 34, 34,
391
- 34, 34, 34, 34, 34, 34, 34, 34,
392
- 34, 34, 34, 34, 34, 34, 34, 34,
393
- 34, 34, 34, 34, 34, 34, 34, 34,
394
- 34, 34, 34, 34, 34, 34, 34, 34,
395
- 34, 34, 34, 34, 34, 34, 34, 34,
396
- 34, 34, 34, 34, 34, 34, 34, 34,
397
- 34, 34, 34, 34, 34, 34, 34, 34,
398
- 34, 37, 34, 38, 39, 40, 40, 40,
399
- 40, 40, 39, 39, 39, 39, 39, 39,
400
- 39, 39, 39, 39, 39, 39, 39, 39,
401
- 39, 39, 39, 39, 40, 39, 39, 39,
402
- 39, 39, 39, 39, 39, 39, 39, 39,
403
- 39, 40, 40, 39, 40, 40, 40, 40,
404
- 40, 40, 40, 40, 40, 40, 39, 39,
405
- 39, 40, 39, 39, 39, 40, 40, 40,
406
- 40, 40, 40, 40, 40, 40, 40, 40,
407
- 40, 40, 40, 40, 40, 40, 40, 40,
408
- 40, 40, 40, 40, 40, 40, 40, 39,
409
- 39, 39, 41, 40, 39, 40, 40, 40,
410
- 40, 40, 40, 40, 40, 40, 40, 40,
411
- 40, 40, 40, 40, 40, 40, 40, 40,
412
- 40, 40, 40, 40, 40, 40, 40, 39,
413
- 40, 40, 40, 40, 40, 39, 39, 39,
414
- 39, 39, 39, 39, 39, 39, 39, 39,
415
- 39, 39, 39, 39, 39, 39, 39, 40,
416
- 39, 39, 39, 39, 39, 39, 39, 39,
417
- 39, 39, 39, 39, 40, 40, 39, 40,
418
- 40, 40, 40, 40, 40, 40, 40, 40,
419
- 40, 39, 39, 39, 40, 39, 39, 39,
420
- 40, 40, 40, 40, 40, 40, 40, 40,
421
- 40, 40, 40, 40, 40, 40, 40, 40,
422
- 40, 40, 40, 40, 40, 40, 40, 40,
423
- 40, 40, 39, 39, 39, 39, 40, 39,
424
- 40, 40, 40, 40, 40, 40, 40, 40,
425
- 40, 40, 40, 40, 40, 40, 40, 40,
426
- 40, 40, 40, 40, 40, 40, 40, 40,
427
- 40, 40, 39, 39, 42, 39, 40, 40,
428
- 40, 40, 40, 39, 39, 39, 39, 39,
429
- 39, 39, 39, 39, 39, 39, 39, 39,
430
- 39, 39, 39, 39, 39, 40, 39, 39,
431
- 39, 39, 39, 39, 39, 39, 39, 39,
432
- 39, 39, 40, 40, 39, 40, 40, 40,
433
- 40, 40, 40, 40, 40, 40, 40, 39,
434
- 39, 39, 40, 39, 39, 39, 40, 40,
435
- 40, 40, 40, 40, 40, 40, 40, 40,
436
- 40, 40, 40, 40, 40, 40, 40, 40,
437
- 40, 40, 40, 40, 40, 40, 40, 40,
438
- 39, 39, 39, 39, 40, 39, 40, 40,
439
- 40, 40, 40, 40, 40, 40, 40, 40,
440
- 40, 40, 40, 40, 40, 40, 40, 40,
441
- 40, 40, 40, 40, 40, 40, 40, 40,
442
- 39, 44, 44, 44, 44, 44, 44, 44,
443
- 44, 44, 44, 44, 44, 44, 44, 44,
444
- 44, 44, 44, 44, 44, 44, 44, 44,
445
- 44, 44, 44, 44, 44, 44, 44, 44,
446
- 44, 44, 44, 44, 44, 44, 44, 44,
447
- 44, 44, 44, 44, 44, 44, 44, 44,
448
- 44, 44, 44, 44, 44, 44, 44, 44,
449
- 44, 44, 44, 44, 44, 44, 44, 44,
450
- 44, 43, 45, 45, 45, 45, 45, 45,
451
- 45, 45, 45, 45, 45, 45, 45, 45,
452
- 45, 45, 45, 45, 45, 45, 45, 45,
453
- 45, 45, 45, 45, 45, 45, 45, 45,
454
- 45, 45, 45, 45, 45, 45, 45, 45,
455
- 45, 45, 45, 45, 45, 45, 45, 45,
456
- 45, 45, 45, 45, 45, 45, 45, 45,
457
- 45, 45, 45, 45, 45, 45, 45, 45,
458
- 45, 45, 43, 47, 46, 50, 49, 49,
459
- 49, 49, 49, 49, 49, 49, 49, 49,
460
- 49, 49, 49, 49, 49, 49, 49, 49,
461
- 49, 50, 50, 50, 50, 50, 50, 50,
462
- 50, 50, 50, 50, 50, 50, 50, 50,
463
- 50, 50, 50, 50, 50, 50, 50, 50,
464
- 50, 50, 50, 49, 49, 49, 49, 49,
465
- 49, 50, 50, 50, 50, 50, 50, 50,
466
- 50, 50, 50, 50, 50, 50, 50, 50,
467
- 50, 50, 50, 50, 50, 50, 50, 50,
468
- 50, 50, 50, 49, 50, 51, 49, 49,
469
- 49, 49, 49, 49, 49, 49, 49, 49,
470
- 49, 49, 49, 49, 49, 49, 49, 49,
471
- 50, 50, 50, 50, 50, 50, 50, 50,
472
- 50, 50, 50, 50, 50, 50, 50, 50,
473
- 50, 50, 50, 50, 50, 50, 50, 50,
474
- 50, 50, 49, 49, 49, 49, 49, 49,
475
- 50, 50, 50, 50, 50, 50, 50, 50,
476
- 50, 50, 50, 50, 50, 50, 50, 50,
477
- 50, 50, 50, 50, 50, 50, 50, 50,
478
- 50, 50, 49, 52, 49, 53, 49, 49,
479
- 54, 55, 56, 57, 49, 49, 58, 49,
480
- 49, 49, 49, 59, 49, 49, 49, 60,
481
- 49, 49, 61, 49, 62, 49, 63, 64,
482
- 49, 54, 55, 56, 57, 49, 49, 58,
483
- 49, 49, 49, 49, 59, 49, 49, 49,
484
- 60, 49, 49, 61, 49, 62, 49, 63,
485
- 64, 49, 65, 49, 49, 49, 49, 49,
486
- 49, 66, 49, 67, 49, 68, 49, 69,
487
- 49, 70, 49, 71, 49, 72, 49, 73,
488
- 49, 70, 49, 74, 49, 75, 49, 70,
489
- 49, 76, 49, 77, 49, 78, 49, 70,
490
- 49, 79, 49, 80, 49, 81, 49, 70,
491
- 49, 82, 49, 83, 49, 84, 49, 70,
492
- 49, 85, 49, 86, 49, 87, 49, 70,
493
- 49, 88, 49, 89, 49, 90, 49, 70,
494
- 49, 91, 49, 49, 92, 49, 93, 49,
495
- 84, 49, 94, 49, 84, 49, 95, 49,
496
- 96, 49, 97, 49, 70, 49, 98, 49,
497
- 89, 49, 99, 49, 100, 49, 70, 49,
498
- 57, 49, 101, 101, 101, 101, 101, 101,
499
- 101, 101, 101, 101, 101, 101, 101, 101,
500
- 101, 101, 101, 101, 101, 101, 101, 101,
501
- 101, 101, 101, 101, 49, 49, 49, 49,
502
- 49, 49, 101, 101, 101, 101, 101, 101,
503
- 101, 101, 101, 101, 101, 101, 101, 101,
504
- 101, 101, 101, 101, 101, 101, 101, 101,
505
- 101, 101, 101, 101, 49, 102, 49, 103,
506
- 49, 104, 39, 107, 106, 108, 106, 109,
507
- 39, 112, 111, 111, 111, 111, 111, 111,
508
- 111, 111, 111, 111, 111, 111, 111, 111,
509
- 111, 111, 111, 111, 111, 111, 111, 111,
510
- 111, 111, 111, 111, 111, 111, 111, 111,
511
- 111, 113, 111, 113, 111, 114, 111, 115,
512
- 111, 116, 116, 116, 116, 116, 116, 116,
513
- 116, 116, 116, 39, 39, 39, 39, 39,
514
- 39, 39, 116, 116, 116, 116, 116, 116,
515
- 39, 39, 39, 39, 39, 39, 39, 39,
516
- 39, 39, 39, 39, 39, 39, 39, 39,
517
- 39, 39, 39, 39, 39, 39, 39, 39,
518
- 39, 39, 116, 116, 116, 116, 116, 116,
519
- 39, 39, 39, 39, 39, 39, 39, 39,
520
- 39, 39, 39, 39, 39, 39, 39, 39,
521
- 39, 39, 39, 39, 117, 39, 118, 118,
522
- 118, 118, 118, 118, 118, 118, 118, 118,
523
- 39, 39, 39, 39, 39, 39, 39, 118,
524
- 118, 118, 118, 118, 118, 39, 39, 39,
525
- 39, 39, 39, 39, 39, 39, 39, 39,
526
- 39, 39, 39, 39, 39, 39, 39, 39,
527
- 39, 39, 39, 39, 39, 39, 39, 118,
528
- 118, 118, 118, 118, 118, 39, 119, 119,
529
- 119, 119, 119, 119, 119, 119, 119, 119,
530
- 39, 39, 39, 39, 39, 39, 39, 119,
531
- 119, 119, 119, 119, 119, 39, 39, 39,
532
- 39, 39, 39, 39, 39, 39, 39, 39,
533
- 39, 39, 39, 39, 39, 39, 39, 39,
534
- 39, 39, 39, 39, 39, 39, 39, 119,
535
- 119, 119, 119, 119, 119, 39, 120, 120,
380
+ 31, 31, 31, 31, 31, 31, 31, 31,
381
+ 31, 31, 31, 31, 31, 31, 31, 31,
382
+ 31, 31, 31, 31, 31, 31, 31, 31,
383
+ 31, 31, 31, 31, 31, 31, 31, 31,
384
+ 31, 31, 31, 31, 31, 31, 31, 31,
385
+ 31, 31, 31, 31, 31, 33, 31, 35,
386
+ 36, 37, 37, 37, 37, 37, 36, 36,
387
+ 36, 36, 36, 36, 36, 36, 36, 36,
388
+ 36, 36, 36, 36, 36, 36, 36, 36,
389
+ 37, 36, 36, 36, 36, 36, 36, 36,
390
+ 36, 36, 36, 36, 36, 37, 37, 36,
391
+ 37, 37, 37, 37, 37, 37, 37, 37,
392
+ 37, 37, 36, 36, 36, 37, 36, 36,
393
+ 36, 37, 37, 37, 37, 37, 37, 37,
394
+ 37, 37, 37, 37, 37, 37, 37, 37,
395
+ 37, 37, 37, 37, 37, 37, 37, 37,
396
+ 37, 37, 37, 36, 36, 36, 38, 37,
397
+ 36, 37, 37, 37, 37, 37, 37, 37,
398
+ 37, 37, 37, 37, 37, 37, 37, 37,
399
+ 37, 37, 37, 37, 37, 37, 37, 37,
400
+ 37, 37, 37, 36, 37, 37, 37, 37,
401
+ 37, 36, 36, 36, 36, 36, 36, 36,
402
+ 36, 36, 36, 36, 36, 36, 36, 36,
403
+ 36, 36, 36, 37, 36, 36, 36, 36,
404
+ 36, 36, 36, 36, 36, 36, 36, 36,
405
+ 37, 37, 36, 37, 37, 37, 37, 37,
406
+ 37, 37, 37, 37, 37, 36, 36, 36,
407
+ 37, 36, 36, 36, 37, 37, 37, 37,
408
+ 37, 37, 37, 37, 37, 37, 37, 37,
409
+ 37, 37, 37, 37, 37, 37, 37, 37,
410
+ 37, 37, 37, 37, 37, 37, 36, 36,
411
+ 36, 36, 37, 36, 37, 37, 37, 37,
412
+ 37, 37, 37, 37, 37, 37, 37, 37,
413
+ 37, 37, 37, 37, 37, 37, 37, 37,
414
+ 37, 37, 37, 37, 37, 37, 36, 36,
415
+ 39, 36, 37, 37, 37, 37, 37, 36,
416
+ 36, 36, 36, 36, 36, 36, 36, 36,
417
+ 36, 36, 36, 36, 36, 36, 36, 36,
418
+ 36, 37, 36, 36, 36, 36, 36, 36,
419
+ 36, 36, 36, 36, 36, 36, 37, 37,
420
+ 36, 37, 37, 37, 37, 37, 37, 37,
421
+ 37, 37, 37, 36, 36, 36, 37, 36,
422
+ 36, 36, 37, 37, 37, 37, 37, 37,
423
+ 37, 37, 37, 37, 37, 37, 37, 37,
424
+ 37, 37, 37, 37, 37, 37, 37, 37,
425
+ 37, 37, 37, 37, 36, 36, 36, 36,
426
+ 37, 36, 37, 37, 37, 37, 37, 37,
427
+ 37, 37, 37, 37, 37, 37, 37, 37,
428
+ 37, 37, 37, 37, 37, 37, 37, 37,
429
+ 37, 37, 37, 37, 36, 41, 41, 41,
430
+ 41, 41, 41, 41, 41, 41, 41, 41,
431
+ 41, 41, 41, 41, 41, 41, 41, 41,
432
+ 41, 41, 41, 41, 41, 41, 41, 41,
433
+ 41, 41, 41, 41, 41, 41, 41, 41,
434
+ 41, 41, 41, 41, 41, 41, 41, 41,
435
+ 41, 41, 41, 41, 41, 41, 41, 41,
436
+ 41, 41, 41, 41, 41, 41, 41, 41,
437
+ 41, 41, 41, 41, 41, 40, 42, 42,
438
+ 42, 42, 42, 42, 42, 42, 42, 42,
439
+ 42, 42, 42, 42, 42, 42, 42, 42,
440
+ 42, 42, 42, 42, 42, 42, 42, 42,
441
+ 42, 42, 42, 42, 42, 42, 42, 42,
442
+ 42, 42, 42, 42, 42, 42, 42, 42,
443
+ 42, 42, 42, 42, 42, 42, 42, 42,
444
+ 42, 42, 42, 42, 42, 42, 42, 42,
445
+ 42, 42, 42, 42, 42, 42, 40, 44,
446
+ 43, 47, 46, 46, 46, 46, 46, 46,
447
+ 46, 46, 46, 46, 46, 46, 46, 46,
448
+ 46, 46, 46, 46, 46, 47, 47, 47,
449
+ 47, 47, 47, 47, 47, 47, 47, 47,
450
+ 47, 47, 47, 47, 47, 47, 47, 47,
451
+ 47, 47, 47, 47, 47, 47, 47, 46,
452
+ 46, 46, 46, 46, 46, 47, 47, 47,
453
+ 47, 47, 47, 47, 47, 47, 47, 47,
454
+ 47, 47, 47, 47, 47, 47, 47, 47,
455
+ 47, 47, 47, 47, 47, 47, 47, 46,
456
+ 47, 48, 46, 46, 46, 46, 46, 46,
457
+ 46, 46, 46, 46, 46, 46, 46, 46,
458
+ 46, 46, 46, 46, 47, 47, 47, 47,
459
+ 47, 47, 47, 47, 47, 47, 47, 47,
460
+ 47, 47, 47, 47, 47, 47, 47, 47,
461
+ 47, 47, 47, 47, 47, 47, 46, 46,
462
+ 46, 46, 46, 46, 47, 47, 47, 47,
463
+ 47, 47, 47, 47, 47, 47, 47, 47,
464
+ 47, 47, 47, 47, 47, 47, 47, 47,
465
+ 47, 47, 47, 47, 47, 47, 46, 49,
466
+ 46, 50, 46, 46, 51, 52, 53, 54,
467
+ 46, 46, 55, 46, 46, 46, 46, 56,
468
+ 46, 46, 46, 57, 46, 46, 58, 46,
469
+ 59, 46, 60, 61, 46, 51, 52, 53,
470
+ 54, 46, 46, 55, 46, 46, 46, 46,
471
+ 56, 46, 46, 46, 57, 46, 46, 58,
472
+ 46, 59, 46, 60, 61, 46, 62, 46,
473
+ 46, 46, 46, 46, 46, 63, 46, 64,
474
+ 46, 65, 46, 66, 46, 67, 46, 68,
475
+ 46, 69, 46, 70, 46, 67, 46, 71,
476
+ 46, 72, 46, 67, 46, 73, 46, 74,
477
+ 46, 75, 46, 67, 46, 76, 46, 77,
478
+ 46, 78, 46, 67, 46, 79, 46, 80,
479
+ 46, 81, 46, 67, 46, 82, 46, 83,
480
+ 46, 84, 46, 67, 46, 85, 46, 86,
481
+ 46, 87, 46, 67, 46, 88, 46, 46,
482
+ 89, 46, 90, 46, 81, 46, 91, 46,
483
+ 81, 46, 92, 46, 93, 46, 94, 46,
484
+ 67, 46, 95, 46, 86, 46, 96, 46,
485
+ 97, 46, 67, 46, 54, 46, 98, 98,
486
+ 98, 98, 98, 98, 98, 98, 98, 98,
487
+ 98, 98, 98, 98, 98, 98, 98, 98,
488
+ 98, 98, 98, 98, 98, 98, 98, 98,
489
+ 46, 46, 46, 46, 46, 46, 98, 98,
490
+ 98, 98, 98, 98, 98, 98, 98, 98,
491
+ 98, 98, 98, 98, 98, 98, 98, 98,
492
+ 98, 98, 98, 98, 98, 98, 98, 98,
493
+ 46, 99, 46, 100, 46, 101, 36, 103,
494
+ 102, 105, 102, 106, 36, 108, 107, 110,
495
+ 107, 111, 111, 111, 111, 111, 111, 111,
496
+ 111, 111, 111, 36, 36, 36, 36, 36,
497
+ 36, 36, 111, 111, 111, 111, 111, 111,
498
+ 36, 36, 36, 36, 36, 36, 36, 36,
499
+ 36, 36, 36, 36, 36, 36, 36, 36,
500
+ 36, 36, 36, 36, 36, 36, 36, 36,
501
+ 36, 36, 111, 111, 111, 111, 111, 111,
502
+ 36, 36, 36, 36, 36, 36, 36, 36,
503
+ 36, 36, 36, 36, 36, 36, 36, 36,
504
+ 36, 36, 36, 36, 112, 36, 113, 113,
505
+ 113, 113, 113, 113, 113, 113, 113, 113,
506
+ 36, 36, 36, 36, 36, 36, 36, 113,
507
+ 113, 113, 113, 113, 113, 36, 36, 36,
508
+ 36, 36, 36, 36, 36, 36, 36, 36,
509
+ 36, 36, 36, 36, 36, 36, 36, 36,
510
+ 36, 36, 36, 36, 36, 36, 36, 113,
511
+ 113, 113, 113, 113, 113, 36, 114, 114,
512
+ 114, 114, 114, 114, 114, 114, 114, 114,
513
+ 36, 36, 36, 36, 36, 36, 36, 114,
514
+ 114, 114, 114, 114, 114, 36, 36, 36,
515
+ 36, 36, 36, 36, 36, 36, 36, 36,
516
+ 36, 36, 36, 36, 36, 36, 36, 36,
517
+ 36, 36, 36, 36, 36, 36, 36, 114,
518
+ 114, 114, 114, 114, 114, 36, 115, 115,
519
+ 115, 115, 115, 115, 115, 115, 115, 115,
520
+ 36, 36, 36, 36, 36, 36, 36, 115,
521
+ 115, 115, 115, 115, 115, 36, 36, 36,
522
+ 36, 36, 36, 36, 36, 36, 36, 36,
523
+ 36, 36, 36, 36, 36, 36, 36, 36,
524
+ 36, 36, 36, 36, 36, 36, 36, 115,
525
+ 115, 115, 115, 115, 115, 36, 116, 116,
526
+ 116, 116, 116, 116, 116, 116, 116, 116,
527
+ 36, 36, 36, 36, 36, 36, 36, 116,
528
+ 116, 116, 116, 116, 116, 36, 36, 36,
529
+ 36, 36, 36, 36, 36, 36, 36, 36,
530
+ 36, 36, 36, 36, 36, 36, 36, 36,
531
+ 36, 36, 36, 36, 36, 36, 36, 116,
532
+ 116, 116, 116, 116, 116, 36, 112, 112,
533
+ 112, 112, 112, 36, 36, 36, 36, 36,
534
+ 36, 36, 36, 36, 36, 36, 36, 36,
535
+ 36, 36, 36, 36, 36, 112, 36, 36,
536
+ 36, 36, 36, 36, 36, 36, 36, 36,
537
+ 36, 36, 36, 36, 36, 117, 117, 117,
538
+ 117, 117, 117, 117, 117, 117, 117, 36,
539
+ 36, 36, 36, 36, 36, 36, 117, 117,
540
+ 117, 117, 117, 117, 36, 36, 36, 36,
541
+ 36, 36, 36, 36, 36, 36, 36, 36,
542
+ 36, 36, 36, 36, 36, 36, 36, 36,
543
+ 36, 36, 36, 36, 36, 36, 117, 117,
544
+ 117, 117, 117, 117, 36, 36, 36, 36,
545
+ 36, 36, 36, 36, 36, 36, 36, 36,
546
+ 36, 36, 36, 36, 36, 36, 36, 36,
547
+ 36, 36, 115, 36, 112, 112, 112, 112,
548
+ 112, 36, 36, 36, 36, 36, 36, 36,
549
+ 36, 36, 36, 36, 36, 36, 36, 36,
550
+ 36, 36, 36, 112, 36, 36, 36, 36,
551
+ 36, 36, 36, 36, 36, 36, 36, 36,
552
+ 36, 36, 36, 118, 118, 118, 118, 118,
553
+ 118, 118, 118, 118, 118, 36, 36, 36,
554
+ 36, 36, 36, 36, 118, 118, 118, 118,
555
+ 118, 118, 36, 36, 36, 36, 36, 36,
556
+ 36, 36, 36, 36, 36, 36, 36, 36,
557
+ 36, 36, 36, 36, 36, 36, 36, 36,
558
+ 36, 36, 36, 36, 118, 118, 118, 118,
559
+ 118, 118, 36, 36, 36, 36, 36, 36,
560
+ 36, 36, 36, 36, 36, 36, 36, 36,
561
+ 36, 36, 36, 36, 36, 36, 36, 36,
562
+ 115, 36, 112, 112, 112, 112, 112, 36,
563
+ 36, 36, 36, 36, 36, 36, 36, 36,
564
+ 36, 36, 36, 36, 36, 36, 36, 36,
565
+ 36, 112, 36, 36, 36, 36, 36, 36,
566
+ 36, 36, 36, 36, 36, 36, 36, 36,
567
+ 36, 119, 119, 119, 119, 119, 119, 119,
568
+ 119, 119, 119, 36, 36, 36, 36, 36,
569
+ 36, 36, 119, 119, 119, 119, 119, 119,
570
+ 36, 36, 36, 36, 36, 36, 36, 36,
571
+ 36, 36, 36, 36, 36, 36, 36, 36,
572
+ 36, 36, 36, 36, 36, 36, 36, 36,
573
+ 36, 36, 119, 119, 119, 119, 119, 119,
574
+ 36, 36, 36, 36, 36, 36, 36, 36,
575
+ 36, 36, 36, 36, 36, 36, 36, 36,
576
+ 36, 36, 36, 36, 36, 36, 115, 36,
577
+ 112, 112, 112, 112, 112, 36, 36, 36,
578
+ 36, 36, 36, 36, 36, 36, 36, 36,
579
+ 36, 36, 36, 36, 36, 36, 36, 112,
580
+ 36, 36, 36, 36, 36, 36, 36, 36,
581
+ 36, 36, 36, 36, 36, 36, 36, 120,
536
582
  120, 120, 120, 120, 120, 120, 120, 120,
537
- 39, 39, 39, 39, 39, 39, 39, 120,
538
- 120, 120, 120, 120, 120, 39, 39, 39,
539
- 39, 39, 39, 39, 39, 39, 39, 39,
540
- 39, 39, 39, 39, 39, 39, 39, 39,
541
- 39, 39, 39, 39, 39, 39, 39, 120,
542
- 120, 120, 120, 120, 120, 39, 121, 121,
543
- 121, 121, 121, 121, 121, 121, 121, 121,
544
- 39, 39, 39, 39, 39, 39, 39, 121,
545
- 121, 121, 121, 121, 121, 39, 39, 39,
546
- 39, 39, 39, 39, 39, 39, 39, 39,
547
- 39, 39, 39, 39, 39, 39, 39, 39,
548
- 39, 39, 39, 39, 39, 39, 39, 121,
549
- 121, 121, 121, 121, 121, 39, 117, 117,
550
- 117, 117, 117, 39, 39, 39, 39, 39,
551
- 39, 39, 39, 39, 39, 39, 39, 39,
552
- 39, 39, 39, 39, 39, 117, 39, 39,
553
- 39, 39, 39, 39, 39, 39, 39, 39,
554
- 39, 39, 39, 39, 39, 122, 122, 122,
555
- 122, 122, 122, 122, 122, 122, 122, 39,
556
- 39, 39, 39, 39, 39, 39, 122, 122,
557
- 122, 122, 122, 122, 39, 39, 39, 39,
558
- 39, 39, 39, 39, 39, 39, 39, 39,
559
- 39, 39, 39, 39, 39, 39, 39, 39,
560
- 39, 39, 39, 39, 39, 39, 122, 122,
561
- 122, 122, 122, 122, 39, 39, 39, 39,
562
- 39, 39, 39, 39, 39, 39, 39, 39,
563
- 39, 39, 39, 39, 39, 39, 39, 39,
564
- 39, 39, 120, 39, 117, 117, 117, 117,
565
- 117, 39, 39, 39, 39, 39, 39, 39,
566
- 39, 39, 39, 39, 39, 39, 39, 39,
567
- 39, 39, 39, 117, 39, 39, 39, 39,
568
- 39, 39, 39, 39, 39, 39, 39, 39,
569
- 39, 39, 39, 123, 123, 123, 123, 123,
570
- 123, 123, 123, 123, 123, 39, 39, 39,
571
- 39, 39, 39, 39, 123, 123, 123, 123,
572
- 123, 123, 39, 39, 39, 39, 39, 39,
573
- 39, 39, 39, 39, 39, 39, 39, 39,
574
- 39, 39, 39, 39, 39, 39, 39, 39,
575
- 39, 39, 39, 39, 123, 123, 123, 123,
576
- 123, 123, 39, 39, 39, 39, 39, 39,
577
- 39, 39, 39, 39, 39, 39, 39, 39,
578
- 39, 39, 39, 39, 39, 39, 39, 39,
579
- 120, 39, 117, 117, 117, 117, 117, 39,
580
- 39, 39, 39, 39, 39, 39, 39, 39,
581
- 39, 39, 39, 39, 39, 39, 39, 39,
582
- 39, 117, 39, 39, 39, 39, 39, 39,
583
- 39, 39, 39, 39, 39, 39, 39, 39,
584
- 39, 124, 124, 124, 124, 124, 124, 124,
585
- 124, 124, 124, 39, 39, 39, 39, 39,
586
- 39, 39, 124, 124, 124, 124, 124, 124,
587
- 39, 39, 39, 39, 39, 39, 39, 39,
588
- 39, 39, 39, 39, 39, 39, 39, 39,
589
- 39, 39, 39, 39, 39, 39, 39, 39,
590
- 39, 39, 124, 124, 124, 124, 124, 124,
591
- 39, 39, 39, 39, 39, 39, 39, 39,
592
- 39, 39, 39, 39, 39, 39, 39, 39,
593
- 39, 39, 39, 39, 39, 39, 120, 39,
594
- 117, 117, 117, 117, 117, 39, 39, 39,
595
- 39, 39, 39, 39, 39, 39, 39, 39,
596
- 39, 39, 39, 39, 39, 39, 39, 117,
597
- 39, 39, 39, 39, 39, 39, 39, 39,
598
- 39, 39, 39, 39, 39, 39, 39, 125,
599
- 125, 125, 125, 125, 125, 125, 125, 125,
600
- 125, 39, 39, 39, 39, 39, 39, 39,
601
- 125, 125, 125, 125, 125, 125, 39, 39,
602
- 39, 39, 39, 39, 39, 39, 39, 39,
603
- 39, 39, 39, 39, 39, 39, 39, 39,
604
- 39, 39, 39, 39, 39, 39, 39, 39,
605
- 125, 125, 125, 125, 125, 125, 39, 39,
606
- 39, 39, 39, 39, 39, 39, 39, 39,
607
- 39, 39, 39, 39, 39, 39, 39, 39,
608
- 39, 39, 39, 39, 120, 39, 117, 117,
609
- 117, 117, 117, 39, 39, 39, 39, 39,
610
- 39, 39, 39, 39, 39, 39, 39, 39,
611
- 39, 39, 39, 39, 39, 117, 39, 39,
612
- 39, 39, 39, 39, 39, 39, 39, 39,
613
- 39, 39, 39, 39, 39, 126, 126, 126,
614
- 126, 126, 126, 126, 126, 126, 126, 39,
615
- 39, 39, 39, 39, 39, 39, 126, 126,
616
- 126, 126, 126, 126, 39, 39, 39, 39,
617
- 39, 39, 39, 39, 39, 39, 39, 39,
618
- 39, 39, 39, 39, 39, 39, 39, 39,
619
- 39, 39, 39, 39, 39, 39, 126, 126,
620
- 126, 126, 126, 126, 39, 39, 39, 39,
621
- 39, 39, 39, 39, 39, 39, 39, 39,
622
- 39, 39, 39, 39, 39, 39, 39, 39,
623
- 39, 39, 120, 39, 117, 117, 117, 117,
624
- 117, 39, 39, 39, 39, 39, 39, 39,
625
- 39, 39, 39, 39, 39, 39, 39, 39,
626
- 39, 39, 39, 117, 39, 39, 39, 39,
627
- 39, 39, 39, 39, 39, 39, 39, 39,
628
- 39, 39, 39, 39, 39, 39, 39, 39,
629
- 39, 39, 39, 39, 39, 39, 39, 39,
630
- 39, 39, 39, 39, 39, 39, 39, 39,
631
- 39, 39, 39, 39, 39, 39, 39, 39,
632
- 39, 39, 39, 39, 39, 39, 39, 39,
633
- 39, 39, 39, 39, 39, 39, 39, 39,
634
- 39, 39, 39, 39, 39, 39, 39, 39,
635
- 39, 39, 39, 39, 39, 39, 39, 39,
636
- 39, 39, 39, 39, 39, 39, 39, 39,
637
- 39, 39, 39, 39, 39, 39, 39, 39,
638
- 120, 39, 128, 128, 128, 128, 128, 128,
639
- 128, 128, 128, 128, 127, 127, 127, 127,
640
- 127, 127, 127, 128, 128, 128, 128, 128,
641
- 128, 127, 127, 127, 127, 127, 127, 127,
583
+ 120, 36, 36, 36, 36, 36, 36, 36,
584
+ 120, 120, 120, 120, 120, 120, 36, 36,
585
+ 36, 36, 36, 36, 36, 36, 36, 36,
586
+ 36, 36, 36, 36, 36, 36, 36, 36,
587
+ 36, 36, 36, 36, 36, 36, 36, 36,
588
+ 120, 120, 120, 120, 120, 120, 36, 36,
589
+ 36, 36, 36, 36, 36, 36, 36, 36,
590
+ 36, 36, 36, 36, 36, 36, 36, 36,
591
+ 36, 36, 36, 36, 115, 36, 112, 112,
592
+ 112, 112, 112, 36, 36, 36, 36, 36,
593
+ 36, 36, 36, 36, 36, 36, 36, 36,
594
+ 36, 36, 36, 36, 36, 112, 36, 36,
595
+ 36, 36, 36, 36, 36, 36, 36, 36,
596
+ 36, 36, 36, 36, 36, 121, 121, 121,
597
+ 121, 121, 121, 121, 121, 121, 121, 36,
598
+ 36, 36, 36, 36, 36, 36, 121, 121,
599
+ 121, 121, 121, 121, 36, 36, 36, 36,
600
+ 36, 36, 36, 36, 36, 36, 36, 36,
601
+ 36, 36, 36, 36, 36, 36, 36, 36,
602
+ 36, 36, 36, 36, 36, 36, 121, 121,
603
+ 121, 121, 121, 121, 36, 36, 36, 36,
604
+ 36, 36, 36, 36, 36, 36, 36, 36,
605
+ 36, 36, 36, 36, 36, 36, 36, 36,
606
+ 36, 36, 115, 36, 112, 112, 112, 112,
607
+ 112, 36, 36, 36, 36, 36, 36, 36,
608
+ 36, 36, 36, 36, 36, 36, 36, 36,
609
+ 36, 36, 36, 112, 36, 36, 36, 36,
610
+ 36, 36, 36, 36, 36, 36, 36, 36,
611
+ 36, 36, 36, 36, 36, 36, 36, 36,
612
+ 36, 36, 36, 36, 36, 36, 36, 36,
613
+ 36, 36, 36, 36, 36, 36, 36, 36,
614
+ 36, 36, 36, 36, 36, 36, 36, 36,
615
+ 36, 36, 36, 36, 36, 36, 36, 36,
616
+ 36, 36, 36, 36, 36, 36, 36, 36,
617
+ 36, 36, 36, 36, 36, 36, 36, 36,
618
+ 36, 36, 36, 36, 36, 36, 36, 36,
619
+ 36, 36, 36, 36, 36, 36, 36, 36,
620
+ 36, 36, 36, 36, 36, 36, 36, 36,
621
+ 115, 36, 123, 123, 123, 123, 123, 123,
622
+ 123, 123, 123, 123, 122, 122, 122, 122,
623
+ 122, 122, 122, 123, 123, 123, 123, 123,
624
+ 123, 122, 122, 122, 122, 122, 122, 122,
625
+ 122, 122, 122, 122, 122, 122, 122, 122,
626
+ 122, 122, 122, 122, 122, 122, 122, 122,
627
+ 122, 122, 122, 123, 123, 123, 123, 123,
628
+ 123, 122, 122, 122, 122, 122, 122, 122,
629
+ 122, 122, 122, 122, 122, 122, 122, 122,
630
+ 122, 122, 122, 122, 122, 36, 122, 125,
631
+ 124, 126, 124, 124, 124, 124, 124, 124,
632
+ 124, 124, 127, 127, 127, 127, 127, 127,
633
+ 127, 127, 127, 127, 124, 124, 124, 124,
634
+ 124, 124, 124, 127, 127, 127, 127, 127,
635
+ 127, 127, 127, 127, 127, 127, 127, 127,
642
636
  127, 127, 127, 127, 127, 127, 127, 127,
637
+ 127, 127, 127, 127, 127, 124, 124, 124,
638
+ 124, 127, 124, 127, 127, 127, 127, 127,
643
639
  127, 127, 127, 127, 127, 127, 127, 127,
644
- 127, 127, 127, 128, 128, 128, 128, 128,
645
- 128, 127, 127, 127, 127, 127, 127, 127,
646
640
  127, 127, 127, 127, 127, 127, 127, 127,
647
- 127, 127, 127, 127, 127, 39, 127, 130,
648
- 129, 131, 129, 129, 129, 129, 129, 129,
649
- 129, 129, 132, 132, 132, 132, 132, 132,
650
- 132, 132, 132, 132, 129, 129, 129, 129,
651
- 129, 129, 129, 132, 132, 132, 132, 132,
652
- 132, 132, 132, 132, 132, 132, 132, 132,
653
- 132, 132, 132, 132, 132, 132, 132, 132,
654
- 132, 132, 132, 132, 132, 129, 129, 129,
655
- 129, 132, 129, 132, 132, 132, 132, 132,
656
- 132, 132, 132, 132, 132, 132, 132, 132,
657
- 132, 132, 132, 132, 132, 132, 132, 132,
658
- 132, 132, 132, 132, 132, 129, 130, 129,
659
- 129, 129, 129, 129, 129, 133, 133, 133,
660
- 133, 133, 133, 133, 133, 133, 133, 129,
661
- 134, 134, 134, 134, 134, 134, 134, 134,
662
- 134, 134, 129, 129, 129, 129, 131, 129,
663
- 129, 134, 134, 134, 134, 134, 134, 134,
664
- 134, 134, 134, 134, 134, 134, 134, 134,
665
- 134, 134, 134, 134, 134, 134, 134, 134,
666
- 134, 134, 134, 129, 129, 129, 129, 134,
667
- 129, 134, 134, 134, 134, 134, 134, 134,
668
- 134, 134, 134, 134, 134, 134, 134, 134,
669
- 134, 134, 134, 134, 134, 134, 134, 134,
670
- 134, 134, 134, 129, 135, 135, 135, 135,
671
- 135, 135, 135, 135, 135, 135, 135, 135,
672
- 135, 135, 135, 135, 135, 135, 135, 135,
673
- 135, 135, 135, 135, 135, 135, 135, 135,
674
- 135, 135, 136, 136, 136, 136, 136, 136,
641
+ 127, 127, 127, 127, 127, 124, 125, 124,
642
+ 124, 124, 124, 124, 124, 128, 128, 128,
643
+ 128, 128, 128, 128, 128, 128, 128, 124,
644
+ 129, 129, 129, 129, 129, 129, 129, 129,
645
+ 129, 129, 124, 124, 124, 124, 126, 124,
646
+ 124, 129, 129, 129, 129, 129, 129, 129,
647
+ 129, 129, 129, 129, 129, 129, 129, 129,
648
+ 129, 129, 129, 129, 129, 129, 129, 129,
649
+ 129, 129, 129, 124, 124, 124, 124, 129,
650
+ 124, 129, 129, 129, 129, 129, 129, 129,
651
+ 129, 129, 129, 129, 129, 129, 129, 129,
652
+ 129, 129, 129, 129, 129, 129, 129, 129,
653
+ 129, 129, 129, 124, 36, 36, 36, 36,
654
+ 36, 36, 36, 36, 36, 36, 36, 36,
655
+ 36, 36, 36, 36, 36, 36, 36, 36,
656
+ 36, 36, 36, 36, 36, 36, 36, 36,
657
+ 36, 36, 36, 36, 36, 36, 36, 36,
658
+ 36, 36, 36, 36, 36, 36, 36, 36,
659
+ 36, 36, 36, 36, 36, 36, 36, 36,
660
+ 36, 36, 36, 36, 36, 36, 36, 36,
661
+ 36, 36, 36, 36, 36, 36, 130, 130,
662
+ 130, 130, 130, 130, 130, 130, 130, 130,
663
+ 130, 130, 130, 130, 130, 130, 130, 130,
664
+ 130, 130, 130, 130, 130, 130, 130, 130,
665
+ 130, 130, 130, 130, 131, 131, 131, 131,
666
+ 131, 131, 131, 131, 131, 131, 131, 131,
667
+ 131, 131, 131, 131, 132, 132, 132, 132,
668
+ 132, 36, 36, 36, 36, 36, 36, 36,
669
+ 36, 36, 36, 36, 36, 133, 133, 133,
670
+ 133, 133, 133, 133, 133, 134, 134, 134,
671
+ 134, 134, 133, 133, 133, 133, 133, 133,
672
+ 133, 133, 133, 133, 133, 133, 133, 133,
673
+ 133, 133, 133, 133, 135, 136, 136, 137,
674
+ 138, 136, 136, 136, 139, 140, 141, 142,
675
+ 136, 136, 143, 136, 136, 136, 136, 136,
676
+ 136, 136, 136, 136, 136, 136, 136, 136,
677
+ 136, 136, 136, 144, 136, 136, 136, 136,
678
+ 136, 136, 136, 136, 136, 136, 136, 136,
679
+ 136, 136, 136, 136, 136, 136, 136, 136,
680
+ 136, 136, 136, 136, 136, 136, 136, 145,
681
+ 146, 147, 148, 136, 136, 136, 136, 136,
675
682
  136, 136, 136, 136, 136, 136, 136, 136,
676
- 136, 136, 137, 137, 137, 137, 137, 34,
677
- 34, 34, 34, 34, 34, 34, 34, 34,
678
- 34, 34, 34, 138, 138, 138, 138, 138,
679
- 138, 138, 138, 139, 139, 139, 139, 139,
680
- 138, 138, 138, 138, 138, 138, 138, 138,
681
- 138, 138, 138, 138, 138, 138, 138, 138,
682
- 138, 138, 140, 141, 141, 142, 143, 141,
683
- 141, 141, 144, 145, 146, 147, 141, 141,
684
- 148, 141, 141, 141, 141, 141, 141, 141,
685
- 141, 141, 141, 141, 141, 141, 141, 141,
686
- 141, 149, 141, 141, 141, 141, 141, 141,
687
- 141, 141, 141, 141, 141, 141, 141, 141,
688
- 141, 141, 141, 141, 141, 141, 141, 141,
689
- 141, 141, 141, 141, 141, 150, 151, 34,
690
- 152, 141, 141, 141, 141, 141, 141, 141,
691
- 141, 141, 141, 141, 141, 141, 141, 141,
692
- 141, 141, 141, 141, 141, 141, 141, 141,
693
- 141, 141, 141, 141, 141, 36, 153, 34,
694
- 141, 138, 34, 135, 135, 135, 135, 135,
695
- 135, 135, 135, 135, 135, 135, 135, 135,
696
- 135, 135, 135, 135, 135, 135, 135, 135,
697
- 135, 135, 135, 135, 135, 135, 135, 135,
698
- 135, 154, 136, 136, 136, 136, 136, 136,
699
683
  136, 136, 136, 136, 136, 136, 136, 136,
700
- 136, 136, 154, 137, 137, 137, 137, 137,
701
- 154, 138, 138, 138, 138, 138, 138, 138,
702
- 138, 138, 138, 138, 138, 138, 138, 138,
703
- 138, 138, 138, 138, 138, 138, 138, 138,
704
- 138, 138, 138, 138, 138, 138, 138, 138,
705
- 154, 154, 154, 154, 154, 154, 154, 154,
706
- 154, 154, 154, 154, 154, 154, 154, 154,
707
- 154, 154, 154, 154, 154, 154, 154, 154,
708
- 154, 154, 154, 154, 154, 154, 154, 154,
709
- 154, 154, 154, 154, 154, 154, 154, 154,
710
- 154, 154, 154, 154, 154, 154, 154, 154,
711
- 154, 154, 154, 154, 154, 154, 154, 154,
712
- 154, 154, 154, 154, 154, 154, 154, 154,
713
- 154, 154, 154, 154, 154, 154, 154, 154,
714
- 154, 154, 154, 154, 154, 154, 154, 154,
715
- 154, 154, 154, 154, 154, 154, 154, 154,
716
- 154, 154, 154, 154, 154, 154, 154, 138,
717
- 154, 138, 138, 138, 138, 138, 138, 138,
718
- 138, 139, 139, 139, 139, 139, 138, 138,
719
- 138, 138, 138, 138, 138, 138, 138, 138,
720
- 138, 138, 138, 138, 138, 138, 138, 138,
721
- 140, 155, 155, 155, 155, 155, 155, 155,
722
- 155, 155, 155, 155, 155, 155, 155, 155,
723
- 155, 155, 155, 155, 155, 155, 155, 155,
724
- 155, 155, 155, 155, 155, 155, 155, 155,
725
- 155, 155, 155, 155, 155, 155, 155, 155,
726
- 155, 155, 155, 155, 155, 155, 155, 155,
727
- 155, 155, 155, 155, 155, 155, 155, 155,
728
- 155, 155, 155, 155, 155, 155, 155, 155,
729
- 155, 155, 155, 155, 155, 155, 155, 155,
730
- 155, 155, 155, 155, 155, 155, 155, 155,
731
- 155, 155, 155, 155, 155, 155, 155, 155,
732
- 155, 155, 155, 155, 155, 155, 155, 138,
733
- 155, 140, 140, 140, 140, 140, 155, 155,
734
- 155, 155, 155, 155, 155, 155, 155, 155,
735
- 155, 155, 155, 155, 155, 155, 155, 155,
736
- 140, 155, 141, 141, 141, 154, 141, 141,
737
- 141, 154, 154, 154, 154, 141, 141, 154,
738
- 141, 141, 141, 141, 141, 141, 141, 141,
739
- 141, 141, 141, 141, 141, 141, 141, 141,
740
- 154, 141, 141, 141, 141, 141, 141, 141,
741
- 141, 141, 141, 141, 141, 141, 141, 141,
742
- 141, 141, 141, 141, 141, 141, 141, 141,
743
- 141, 141, 141, 141, 154, 154, 154, 154,
744
- 141, 141, 141, 141, 141, 141, 141, 141,
745
- 141, 141, 141, 141, 141, 141, 141, 141,
746
- 141, 141, 141, 141, 141, 141, 141, 141,
747
- 141, 141, 141, 141, 154, 154, 154, 141,
748
- 154, 9, 8, 8, 8, 8, 8, 8,
684
+ 136, 136, 136, 136, 136, 136, 136, 149,
685
+ 150, 147, 136, 133, 136, 130, 130, 130,
686
+ 130, 130, 130, 130, 130, 130, 130, 130,
687
+ 130, 130, 130, 130, 130, 130, 130, 130,
688
+ 130, 130, 130, 130, 130, 130, 130, 130,
689
+ 130, 130, 130, 151, 131, 131, 131, 131,
690
+ 131, 131, 131, 131, 131, 131, 131, 131,
691
+ 131, 131, 131, 131, 151, 132, 132, 132,
692
+ 132, 132, 151, 133, 133, 133, 133, 133,
693
+ 133, 133, 133, 133, 133, 133, 133, 133,
694
+ 133, 133, 133, 133, 133, 133, 133, 133,
695
+ 133, 133, 133, 133, 133, 133, 133, 133,
696
+ 133, 133, 151, 151, 151, 151, 151, 151,
697
+ 151, 151, 151, 151, 151, 151, 151, 151,
698
+ 151, 151, 151, 151, 151, 151, 151, 151,
699
+ 151, 151, 151, 151, 151, 151, 151, 151,
700
+ 151, 151, 151, 151, 151, 151, 151, 151,
701
+ 151, 151, 151, 151, 151, 151, 151, 151,
702
+ 151, 151, 151, 151, 151, 151, 151, 151,
703
+ 151, 151, 151, 151, 151, 151, 151, 151,
704
+ 151, 151, 151, 151, 151, 151, 151, 151,
705
+ 151, 151, 151, 151, 151, 151, 151, 151,
706
+ 151, 151, 151, 151, 151, 151, 151, 151,
707
+ 151, 151, 151, 151, 151, 151, 151, 151,
708
+ 151, 133, 151, 133, 133, 133, 133, 133,
709
+ 133, 133, 133, 134, 134, 134, 134, 134,
710
+ 133, 133, 133, 133, 133, 133, 133, 133,
711
+ 133, 133, 133, 133, 133, 133, 133, 133,
712
+ 133, 133, 135, 152, 152, 152, 152, 152,
713
+ 152, 152, 152, 152, 152, 152, 152, 152,
714
+ 152, 152, 152, 152, 152, 152, 152, 152,
715
+ 152, 152, 152, 152, 152, 152, 152, 152,
716
+ 152, 152, 152, 152, 152, 152, 152, 152,
717
+ 152, 152, 152, 152, 152, 152, 152, 152,
718
+ 152, 152, 152, 152, 152, 152, 152, 152,
719
+ 152, 152, 152, 152, 152, 152, 152, 152,
720
+ 152, 152, 152, 152, 152, 152, 152, 152,
721
+ 152, 152, 152, 152, 152, 152, 152, 152,
722
+ 152, 152, 152, 152, 152, 152, 152, 152,
723
+ 152, 152, 152, 152, 152, 152, 152, 152,
724
+ 152, 133, 152, 135, 135, 135, 135, 135,
725
+ 152, 152, 152, 152, 152, 152, 152, 152,
726
+ 152, 152, 152, 152, 152, 152, 152, 152,
727
+ 152, 152, 135, 152, 136, 136, 136, 151,
728
+ 136, 136, 136, 151, 151, 151, 151, 136,
729
+ 136, 151, 136, 136, 136, 136, 136, 136,
730
+ 136, 136, 136, 136, 136, 136, 136, 136,
731
+ 136, 136, 151, 136, 136, 136, 136, 136,
732
+ 136, 136, 136, 136, 136, 136, 136, 136,
733
+ 136, 136, 136, 136, 136, 136, 136, 136,
734
+ 136, 136, 136, 136, 136, 136, 151, 151,
735
+ 151, 151, 136, 136, 136, 136, 136, 136,
736
+ 136, 136, 136, 136, 136, 136, 136, 136,
737
+ 136, 136, 136, 136, 136, 136, 136, 136,
738
+ 136, 136, 136, 136, 136, 136, 151, 151,
739
+ 151, 136, 151, 9, 8, 8, 8, 8,
749
740
  8, 8, 8, 8, 8, 8, 8, 8,
750
741
  8, 8, 8, 8, 8, 8, 8, 8,
751
- 142, 142, 142, 8, 142, 142, 142, 8,
752
- 8, 8, 8, 142, 142, 8, 142, 142,
753
- 142, 142, 142, 142, 142, 142, 142, 142,
754
- 142, 142, 142, 142, 142, 142, 8, 142,
755
- 142, 142, 142, 142, 142, 142, 142, 142,
756
- 142, 142, 142, 142, 142, 142, 142, 142,
757
- 142, 142, 142, 142, 142, 142, 142, 142,
758
- 142, 142, 8, 8, 8, 8, 142, 142,
759
- 142, 142, 142, 142, 142, 142, 142, 142,
760
- 142, 142, 142, 142, 142, 142, 142, 142,
761
- 142, 142, 142, 142, 142, 142, 142, 142,
762
- 142, 142, 8, 8, 8, 142, 8, 157,
763
- 156, 159, 158, 158, 158, 158, 158, 158,
764
- 158, 158, 158, 158, 158, 158, 158, 158,
765
- 158, 158, 158, 158, 158, 159, 158, 161,
766
- 160, 160, 160, 160, 160, 160, 160, 160,
742
+ 8, 8, 137, 137, 137, 8, 137, 137,
743
+ 137, 8, 8, 8, 8, 137, 137, 8,
744
+ 137, 137, 137, 137, 137, 137, 137, 137,
745
+ 137, 137, 137, 137, 137, 137, 137, 137,
746
+ 8, 137, 137, 137, 137, 137, 137, 137,
747
+ 137, 137, 137, 137, 137, 137, 137, 137,
748
+ 137, 137, 137, 137, 137, 137, 137, 137,
749
+ 137, 137, 137, 137, 8, 8, 8, 8,
750
+ 137, 137, 137, 137, 137, 137, 137, 137,
751
+ 137, 137, 137, 137, 137, 137, 137, 137,
752
+ 137, 137, 137, 137, 137, 137, 137, 137,
753
+ 137, 137, 137, 137, 8, 8, 8, 137,
754
+ 8, 154, 153, 15, 156, 11, 156, 156,
755
+ 156, 14, 157, 155, 156, 156, 156, 156,
756
+ 156, 156, 156, 156, 156, 156, 156, 156,
757
+ 156, 156, 156, 156, 13, 156, 158, 15,
758
+ 13, 156, 156, 156, 156, 156, 156, 156,
759
+ 156, 156, 156, 156, 156, 156, 156, 156,
760
+ 156, 156, 156, 156, 156, 156, 156, 156,
761
+ 156, 156, 156, 156, 156, 156, 156, 156,
762
+ 156, 156, 156, 156, 156, 156, 156, 156,
763
+ 156, 156, 156, 156, 156, 156, 156, 156,
764
+ 156, 156, 156, 156, 156, 156, 156, 156,
765
+ 156, 156, 156, 156, 156, 156, 156, 156,
766
+ 13, 156, 155, 156, 155, 156, 156, 156,
767
+ 155, 155, 155, 156, 156, 156, 156, 156,
768
+ 156, 156, 156, 156, 156, 156, 156, 156,
769
+ 156, 156, 156, 159, 156, 155, 155, 155,
770
+ 156, 156, 156, 156, 156, 156, 156, 156,
771
+ 156, 156, 156, 156, 156, 156, 156, 156,
772
+ 156, 156, 156, 156, 156, 156, 156, 156,
773
+ 156, 156, 156, 156, 156, 156, 156, 156,
774
+ 156, 156, 156, 156, 156, 156, 156, 156,
775
+ 156, 156, 156, 156, 156, 156, 156, 156,
776
+ 156, 156, 156, 156, 156, 156, 156, 156,
777
+ 156, 156, 156, 156, 156, 156, 156, 155,
778
+ 156, 161, 160, 160, 160, 160, 160, 160,
767
779
  160, 160, 160, 160, 160, 160, 160, 160,
768
- 160, 160, 160, 161, 160, 163, 162, 162,
780
+ 160, 160, 160, 160, 160, 161, 160, 163,
769
781
  162, 162, 162, 162, 162, 162, 162, 162,
770
782
  162, 162, 162, 162, 162, 162, 162, 162,
771
- 162, 163, 162, 165, 165, 164, 164, 164,
772
- 164, 165, 164, 164, 164, 166, 164, 164,
783
+ 162, 162, 162, 163, 162, 165, 164, 164,
773
784
  164, 164, 164, 164, 164, 164, 164, 164,
774
- 164, 164, 164, 164, 165, 164, 164, 164,
775
- 164, 164, 164, 164, 165, 164, 164, 164,
776
- 164, 167, 164, 164, 164, 167, 164, 164,
777
785
  164, 164, 164, 164, 164, 164, 164, 164,
778
- 164, 164, 164, 164, 165, 164, 169, 168,
779
- 168, 168, 168, 168, 168, 168, 168, 168,
780
- 168, 168, 168, 168, 168, 168, 168, 168,
781
- 168, 168, 169, 168, 170, 39, 39, 39,
782
- 170, 39, 39, 39, 39, 39, 39, 39,
783
- 39, 39, 170, 170, 39, 39, 39, 170,
784
- 170, 39, 39, 39, 39, 39, 39, 39,
785
- 39, 39, 39, 39, 170, 39, 39, 39,
786
- 170, 39, 39, 39, 39, 39, 39, 39,
787
- 39, 39, 39, 170, 39, 39, 39, 170,
788
- 39, 171, 39, 39, 39, 39, 39, 39,
789
- 39, 39, 39, 39, 39, 39, 39, 39,
790
- 39, 39, 39, 39, 39, 39, 39, 39,
791
- 39, 39, 39, 39, 39, 39, 39, 39,
792
- 39, 171, 39, 172, 172, 172, 172, 172,
786
+ 164, 165, 164, 167, 167, 166, 166, 166,
787
+ 166, 167, 166, 166, 166, 168, 166, 166,
788
+ 166, 166, 166, 166, 166, 166, 166, 166,
789
+ 166, 166, 166, 166, 167, 166, 166, 166,
790
+ 166, 166, 166, 166, 167, 166, 166, 166,
791
+ 166, 169, 166, 166, 166, 169, 166, 166,
792
+ 166, 166, 166, 166, 166, 166, 166, 166,
793
+ 166, 166, 166, 166, 167, 166, 171, 170,
794
+ 170, 170, 34, 34, 34, 34, 34, 34,
795
+ 34, 34, 34, 34, 170, 173, 172, 172,
793
796
  172, 172, 172, 172, 172, 172, 172, 172,
794
797
  172, 172, 172, 172, 172, 172, 172, 172,
795
- 172, 172, 172, 172, 172, 172, 172, 172,
796
- 172, 173, 173, 173, 173, 173, 173, 173,
797
- 173, 173, 173, 173, 173, 173, 173, 173,
798
- 173, 174, 174, 174, 174, 174, 44, 44,
799
- 44, 44, 44, 44, 44, 44, 44, 44,
800
- 44, 44, 44, 44, 44, 44, 44, 44,
801
- 44, 44, 44, 44, 44, 44, 44, 44,
802
- 44, 44, 44, 44, 44, 44, 44, 44,
803
- 44, 44, 44, 44, 44, 44, 44, 44,
804
- 44, 44, 44, 44, 44, 175, 44, 176,
805
- 44, 175, 175, 175, 175, 44, 177, 175,
806
- 44, 44, 44, 44, 44, 44, 44, 44,
807
- 44, 44, 44, 44, 44, 44, 44, 44,
808
- 175, 44, 44, 44, 44, 44, 44, 44,
809
- 44, 44, 44, 44, 44, 44, 44, 44,
810
- 44, 44, 44, 44, 44, 44, 44, 44,
811
- 44, 44, 44, 44, 178, 179, 180, 181,
812
- 44, 44, 44, 44, 44, 44, 44, 44,
813
- 44, 44, 44, 44, 44, 44, 44, 44,
814
- 44, 44, 44, 44, 44, 44, 44, 44,
815
- 44, 44, 44, 44, 175, 175, 175, 44,
816
- 44, 44, 44, 44, 44, 44, 44, 44,
817
- 44, 44, 44, 44, 44, 44, 44, 44,
818
- 44, 44, 44, 44, 44, 44, 44, 44,
819
- 44, 44, 44, 44, 44, 44, 44, 44,
820
- 44, 44, 44, 44, 44, 44, 44, 44,
821
- 44, 44, 44, 44, 44, 44, 44, 44,
822
- 44, 44, 44, 44, 44, 44, 44, 44,
823
- 44, 44, 44, 44, 44, 44, 44, 44,
824
- 182, 45, 45, 45, 45, 45, 45, 45,
825
- 45, 45, 45, 45, 45, 45, 45, 45,
826
- 45, 45, 45, 45, 45, 45, 45, 45,
827
- 45, 45, 45, 45, 45, 45, 45, 45,
828
- 45, 45, 45, 45, 45, 45, 45, 45,
829
- 45, 45, 45, 45, 45, 45, 45, 45,
830
- 45, 45, 45, 45, 45, 45, 45, 45,
831
- 45, 45, 45, 45, 45, 45, 45, 45,
832
- 45, 182, 183, 183, 183, 183, 183, 183,
833
- 183, 183, 183, 183, 183, 183, 183, 183,
834
- 183, 183, 183, 183, 183, 183, 183, 183,
835
- 183, 183, 183, 183, 183, 183, 183, 183,
836
- 183, 183, 183, 183, 183, 183, 183, 183,
837
- 183, 183, 183, 183, 183, 183, 183, 183,
838
- 183, 183, 183, 183, 183, 183, 183, 183,
839
- 183, 183, 183, 183, 183, 183, 183, 183,
840
- 183, 183, 182, 184, 182, 186, 185, 185,
841
- 185, 185, 185, 185, 185, 185, 185, 185,
842
- 185, 185, 185, 185, 185, 185, 185, 185,
843
- 185, 185, 185, 185, 185, 185, 185, 185,
844
- 185, 185, 185, 185, 185, 185, 185, 185,
845
- 185, 185, 185, 185, 185, 185, 185, 185,
846
- 185, 185, 185, 185, 185, 185, 185, 185,
847
- 185, 185, 185, 185, 187, 185, 190, 189,
798
+ 172, 173, 172, 174, 36, 36, 36, 174,
799
+ 36, 36, 36, 36, 36, 36, 36, 36,
800
+ 36, 174, 174, 36, 36, 36, 174, 174,
801
+ 36, 36, 36, 36, 36, 36, 36, 36,
802
+ 36, 36, 36, 174, 36, 36, 36, 174,
803
+ 36, 36, 36, 36, 36, 36, 36, 36,
804
+ 36, 36, 174, 36, 36, 36, 174, 36,
805
+ 175, 36, 36, 36, 36, 36, 36, 36,
806
+ 36, 36, 36, 36, 36, 36, 36, 36,
807
+ 36, 36, 36, 36, 36, 36, 36, 36,
808
+ 36, 36, 36, 36, 36, 36, 36, 36,
809
+ 175, 36, 176, 176, 176, 176, 176, 176,
810
+ 176, 176, 176, 176, 176, 176, 176, 176,
811
+ 176, 176, 176, 176, 176, 176, 176, 176,
812
+ 176, 176, 176, 176, 176, 176, 176, 176,
813
+ 177, 177, 177, 177, 177, 177, 177, 177,
814
+ 177, 177, 177, 177, 177, 177, 177, 177,
815
+ 178, 178, 178, 178, 178, 41, 41, 41,
816
+ 41, 41, 41, 41, 41, 41, 41, 41,
817
+ 41, 41, 41, 41, 41, 41, 41, 41,
818
+ 41, 41, 41, 41, 41, 41, 41, 41,
819
+ 41, 41, 41, 41, 41, 41, 41, 41,
820
+ 41, 41, 41, 41, 41, 41, 41, 41,
821
+ 41, 41, 41, 41, 179, 41, 180, 41,
822
+ 179, 179, 179, 179, 41, 181, 179, 41,
823
+ 41, 41, 41, 41, 41, 41, 41, 41,
824
+ 41, 41, 41, 41, 41, 41, 41, 179,
825
+ 41, 41, 41, 41, 41, 41, 41, 41,
826
+ 41, 41, 41, 41, 41, 41, 41, 41,
827
+ 41, 41, 41, 41, 41, 41, 41, 41,
828
+ 41, 41, 41, 182, 183, 184, 185, 41,
829
+ 41, 41, 41, 41, 41, 41, 41, 41,
830
+ 41, 41, 41, 41, 41, 41, 41, 41,
831
+ 41, 41, 41, 41, 41, 41, 41, 41,
832
+ 41, 41, 41, 179, 179, 179, 41, 41,
833
+ 41, 41, 41, 41, 41, 41, 41, 41,
834
+ 41, 41, 41, 41, 41, 41, 41, 41,
835
+ 41, 41, 41, 41, 41, 41, 41, 41,
836
+ 41, 41, 41, 41, 41, 41, 41, 41,
837
+ 41, 41, 41, 41, 41, 41, 41, 41,
838
+ 41, 41, 41, 41, 41, 41, 41, 41,
839
+ 41, 41, 41, 41, 41, 41, 41, 41,
840
+ 41, 41, 41, 41, 41, 41, 41, 186,
841
+ 42, 42, 42, 42, 42, 42, 42, 42,
842
+ 42, 42, 42, 42, 42, 42, 42, 42,
843
+ 42, 42, 42, 42, 42, 42, 42, 42,
844
+ 42, 42, 42, 42, 42, 42, 42, 42,
845
+ 42, 42, 42, 42, 42, 42, 42, 42,
846
+ 42, 42, 42, 42, 42, 42, 42, 42,
847
+ 42, 42, 42, 42, 42, 42, 42, 42,
848
+ 42, 42, 42, 42, 42, 42, 42, 42,
849
+ 186, 187, 187, 187, 187, 187, 187, 187,
850
+ 187, 187, 187, 187, 187, 187, 187, 187,
851
+ 187, 187, 187, 187, 187, 187, 187, 187,
852
+ 187, 187, 187, 187, 187, 187, 187, 187,
853
+ 187, 187, 187, 187, 187, 187, 187, 187,
854
+ 187, 187, 187, 187, 187, 187, 187, 187,
855
+ 187, 187, 187, 187, 187, 187, 187, 187,
856
+ 187, 187, 187, 187, 187, 187, 187, 187,
857
+ 187, 186, 188, 186, 190, 189, 189, 189,
858
+ 189, 189, 189, 189, 189, 189, 189, 189,
848
859
  189, 189, 189, 189, 189, 189, 189, 189,
849
- 189, 189, 191, 189, 189, 192, 189, 194,
850
- 194, 194, 194, 194, 194, 194, 194, 194,
851
- 194, 193, 193, 193, 193, 193, 193, 193,
852
- 194, 194, 194, 193, 193, 193, 194, 193,
853
- 193, 193, 194, 193, 194, 193, 193, 193,
854
- 193, 194, 193, 193, 193, 193, 193, 194,
855
- 193, 194, 193, 193, 193, 193, 193, 193,
856
- 193, 193, 194, 193, 193, 193, 194, 193,
857
- 193, 193, 194, 193, 193, 193, 193, 193,
860
+ 189, 189, 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, 189, 189, 191, 189, 194, 193, 193,
858
865
  193, 193, 193, 193, 193, 193, 193, 193,
859
- 193, 194, 193, 196, 195, 195, 195, 196,
860
- 196, 196, 196, 195, 195, 196, 195, 197,
861
- 198, 198, 198, 198, 198, 198, 198, 199,
862
- 199, 195, 195, 195, 195, 195, 196, 195,
863
- 39, 39, 200, 201, 195, 195, 39, 201,
864
- 195, 195, 39, 195, 202, 195, 195, 203,
865
- 195, 201, 201, 195, 195, 195, 201, 201,
866
- 195, 39, 196, 196, 196, 196, 195, 195,
867
- 204, 204, 104, 201, 204, 204, 39, 201,
868
- 195, 195, 39, 195, 195, 204, 195, 203,
869
- 195, 204, 201, 204, 205, 204, 201, 206,
870
- 195, 39, 196, 196, 196, 195, 208, 208,
871
- 208, 208, 208, 208, 208, 208, 207, 210,
872
- 210, 210, 210, 210, 210, 210, 210, 209,
873
- 213, 212, 216, 215, 217, 215, 220, 220,
874
- 220, 220, 220, 220, 220, 220, 220, 220,
875
- 219, 219, 219, 219, 219, 219, 219, 220,
876
- 220, 220, 220, 220, 220, 219, 219, 219,
877
- 219, 219, 219, 219, 219, 219, 219, 219,
878
- 219, 219, 219, 219, 219, 219, 219, 219,
879
- 219, 219, 219, 219, 219, 219, 219, 220,
880
- 220, 220, 220, 220, 220, 219, 222, 221,
881
- 221, 221, 221, 221, 223, 221, 221, 221,
882
- 224, 224, 224, 224, 224, 224, 224, 224,
883
- 224, 221, 221, 225, 221, 131, 226, 226,
884
- 226, 226, 226, 226, 226, 226, 132, 132,
885
- 132, 132, 132, 132, 132, 132, 132, 132,
886
- 226, 226, 226, 226, 226, 226, 226, 132,
887
- 132, 132, 132, 132, 132, 132, 132, 132,
888
- 132, 132, 132, 132, 132, 132, 132, 132,
889
- 132, 132, 132, 132, 132, 132, 132, 132,
890
- 132, 226, 226, 226, 226, 132, 226, 132,
891
- 132, 132, 132, 132, 132, 132, 132, 132,
892
- 132, 132, 132, 132, 132, 132, 132, 132,
893
- 132, 132, 132, 132, 132, 132, 132, 132,
894
- 132, 226, 133, 133, 133, 133, 133, 133,
895
- 133, 133, 133, 226, 130, 226, 226, 226,
896
- 226, 226, 226, 133, 133, 133, 133, 133,
897
- 133, 133, 133, 133, 133, 226, 134, 134,
898
- 134, 134, 134, 134, 134, 134, 134, 134,
899
- 226, 226, 226, 226, 131, 226, 226, 134,
900
- 134, 134, 134, 134, 134, 134, 134, 134,
901
- 134, 134, 134, 134, 134, 134, 134, 134,
902
- 134, 134, 134, 134, 134, 134, 134, 134,
903
- 134, 226, 226, 226, 226, 134, 226, 134,
904
- 134, 134, 134, 134, 134, 134, 134, 134,
905
- 134, 134, 134, 134, 134, 134, 134, 134,
906
- 134, 134, 134, 134, 134, 134, 134, 134,
907
- 134, 226, 0
866
+ 193, 195, 193, 193, 196, 193, 198, 198,
867
+ 198, 198, 198, 198, 198, 198, 198, 198,
868
+ 197, 197, 197, 197, 197, 197, 197, 198,
869
+ 198, 198, 197, 197, 197, 198, 197, 197,
870
+ 197, 198, 197, 198, 197, 197, 197, 197,
871
+ 198, 197, 197, 197, 197, 197, 198, 197,
872
+ 198, 197, 197, 197, 197, 197, 197, 197,
873
+ 197, 198, 197, 197, 197, 198, 197, 197,
874
+ 197, 198, 197, 197, 197, 197, 197, 197,
875
+ 197, 197, 197, 197, 197, 197, 197, 197,
876
+ 198, 197, 200, 199, 199, 199, 200, 200,
877
+ 200, 200, 199, 199, 200, 199, 201, 202,
878
+ 202, 202, 202, 202, 202, 202, 203, 203,
879
+ 199, 199, 199, 199, 199, 200, 199, 36,
880
+ 36, 204, 205, 199, 199, 36, 205, 199,
881
+ 199, 36, 199, 206, 199, 199, 207, 199,
882
+ 205, 205, 199, 199, 199, 205, 205, 199,
883
+ 36, 200, 200, 200, 200, 199, 199, 208,
884
+ 208, 101, 205, 208, 208, 36, 205, 199,
885
+ 199, 36, 199, 199, 208, 199, 207, 199,
886
+ 208, 205, 208, 209, 208, 205, 210, 199,
887
+ 36, 200, 200, 200, 199, 212, 212, 212,
888
+ 212, 212, 212, 212, 212, 211, 214, 214,
889
+ 214, 214, 214, 214, 214, 214, 213, 216,
890
+ 102, 218, 217, 102, 220, 107, 107, 107,
891
+ 107, 107, 107, 107, 107, 107, 107, 107,
892
+ 107, 107, 107, 107, 107, 107, 107, 107,
893
+ 107, 107, 107, 107, 107, 107, 107, 107,
894
+ 107, 107, 107, 107, 221, 107, 223, 222,
895
+ 107, 110, 107, 226, 226, 226, 226, 226,
896
+ 226, 226, 226, 226, 226, 225, 225, 225,
897
+ 225, 225, 225, 225, 226, 226, 226, 226,
898
+ 226, 226, 225, 225, 225, 225, 225, 225,
899
+ 225, 225, 225, 225, 225, 225, 225, 225,
900
+ 225, 225, 225, 225, 225, 225, 225, 225,
901
+ 225, 225, 225, 225, 226, 226, 226, 226,
902
+ 226, 226, 225, 228, 227, 227, 227, 227,
903
+ 227, 229, 227, 227, 227, 230, 230, 230,
904
+ 230, 230, 230, 230, 230, 230, 227, 227,
905
+ 231, 227, 126, 232, 232, 232, 232, 232,
906
+ 232, 232, 232, 127, 127, 127, 127, 127,
907
+ 127, 127, 127, 127, 127, 232, 232, 232,
908
+ 232, 232, 232, 232, 127, 127, 127, 127,
909
+ 127, 127, 127, 127, 127, 127, 127, 127,
910
+ 127, 127, 127, 127, 127, 127, 127, 127,
911
+ 127, 127, 127, 127, 127, 127, 232, 232,
912
+ 232, 232, 127, 232, 127, 127, 127, 127,
913
+ 127, 127, 127, 127, 127, 127, 127, 127,
914
+ 127, 127, 127, 127, 127, 127, 127, 127,
915
+ 127, 127, 127, 127, 127, 127, 232, 128,
916
+ 128, 128, 128, 128, 128, 128, 128, 128,
917
+ 232, 125, 232, 232, 232, 232, 232, 232,
918
+ 128, 128, 128, 128, 128, 128, 128, 128,
919
+ 128, 128, 232, 129, 129, 129, 129, 129,
920
+ 129, 129, 129, 129, 129, 232, 232, 232,
921
+ 232, 126, 232, 232, 129, 129, 129, 129,
922
+ 129, 129, 129, 129, 129, 129, 129, 129,
923
+ 129, 129, 129, 129, 129, 129, 129, 129,
924
+ 129, 129, 129, 129, 129, 129, 232, 232,
925
+ 232, 232, 129, 232, 129, 129, 129, 129,
926
+ 129, 129, 129, 129, 129, 129, 129, 129,
927
+ 129, 129, 129, 129, 129, 129, 129, 129,
928
+ 129, 129, 129, 129, 129, 129, 232, 0
908
929
  ]
909
930
 
910
931
  class << self
@@ -912,35 +933,36 @@ class << self
912
933
  private :_re_scanner_trans_targs, :_re_scanner_trans_targs=
913
934
  end
914
935
  self._re_scanner_trans_targs = [
915
- 113, 114, 3, 115, 5, 6, 116, 113,
916
- 7, 113, 113, 113, 9, 10, 113, 113,
917
- 113, 11, 113, 12, 113, 14, 20, 113,
918
- 15, 17, 19, 16, 18, 21, 23, 25,
919
- 22, 24, 0, 27, 26, 127, 29, 0,
920
- 30, 31, 129, 130, 130, 32, 130, 130,
921
- 130, 130, 36, 37, 130, 39, 40, 51,
922
- 55, 59, 63, 67, 71, 76, 80, 82,
923
- 85, 41, 48, 42, 46, 43, 44, 45,
924
- 130, 47, 49, 50, 52, 53, 54, 56,
925
- 57, 58, 60, 61, 62, 64, 65, 66,
926
- 68, 69, 70, 72, 74, 73, 75, 77,
927
- 78, 79, 81, 83, 84, 87, 88, 130,
928
- 141, 138, 138, 91, 138, 142, 138, 138,
929
- 94, 143, 96, 138, 98, 101, 99, 100,
930
- 138, 102, 103, 104, 105, 106, 107, 138,
931
- 144, 145, 145, 109, 110, 111, 112, 1,
932
- 2, 4, 117, 118, 119, 120, 121, 113,
933
- 122, 113, 123, 124, 113, 125, 113, 126,
934
- 113, 113, 113, 113, 113, 8, 113, 113,
935
- 113, 113, 113, 113, 113, 113, 113, 13,
936
- 113, 113, 128, 28, 131, 132, 133, 130,
937
- 134, 135, 136, 130, 130, 130, 130, 33,
938
- 130, 130, 34, 130, 130, 130, 35, 38,
939
- 86, 137, 137, 138, 138, 139, 139, 138,
940
- 89, 138, 92, 138, 138, 97, 108, 138,
941
- 140, 138, 138, 138, 138, 90, 138, 138,
942
- 93, 95, 138, 138, 138, 145, 146, 147,
943
- 148, 149, 145
936
+ 111, 112, 3, 113, 5, 6, 114, 111,
937
+ 7, 111, 111, 8, 111, 111, 9, 111,
938
+ 11, 111, 13, 19, 111, 14, 16, 18,
939
+ 15, 17, 20, 22, 24, 21, 23, 111,
940
+ 26, 128, 27, 29, 0, 30, 31, 130,
941
+ 131, 131, 32, 131, 131, 131, 131, 36,
942
+ 37, 131, 39, 40, 51, 55, 59, 63,
943
+ 67, 71, 76, 80, 82, 85, 41, 48,
944
+ 42, 46, 43, 44, 45, 131, 47, 49,
945
+ 50, 52, 53, 54, 56, 57, 58, 60,
946
+ 61, 62, 64, 65, 66, 68, 69, 70,
947
+ 72, 74, 73, 75, 77, 78, 79, 81,
948
+ 83, 84, 87, 88, 131, 90, 139, 142,
949
+ 139, 144, 93, 139, 145, 139, 147, 96,
950
+ 99, 97, 98, 139, 100, 101, 102, 103,
951
+ 104, 105, 139, 149, 150, 150, 107, 108,
952
+ 109, 110, 1, 2, 4, 115, 116, 117,
953
+ 118, 119, 111, 120, 111, 123, 124, 111,
954
+ 125, 111, 126, 111, 111, 127, 111, 111,
955
+ 111, 111, 121, 111, 122, 111, 10, 111,
956
+ 111, 111, 111, 111, 111, 111, 111, 111,
957
+ 111, 12, 111, 25, 111, 111, 129, 28,
958
+ 132, 133, 134, 131, 135, 136, 137, 131,
959
+ 131, 131, 131, 33, 131, 131, 34, 131,
960
+ 131, 131, 35, 38, 86, 138, 138, 139,
961
+ 139, 140, 140, 139, 89, 139, 92, 139,
962
+ 139, 95, 106, 139, 141, 139, 139, 139,
963
+ 143, 139, 91, 139, 146, 148, 139, 94,
964
+ 139, 139, 139, 150, 151, 152, 153, 154,
965
+ 150
944
966
  ]
945
967
 
946
968
  class << self
@@ -949,34 +971,35 @@ class << self
949
971
  end
950
972
  self._re_scanner_trans_actions = [
951
973
  1, 2, 0, 2, 0, 0, 2, 3,
952
- 0, 4, 5, 6, 7, 0, 8, 9,
953
- 10, 0, 11, 0, 12, 0, 0, 13,
974
+ 0, 4, 5, 6, 7, 8, 0, 9,
975
+ 0, 10, 0, 0, 11, 0, 0, 0,
976
+ 0, 0, 0, 0, 0, 0, 0, 12,
977
+ 0, 0, 0, 0, 0, 0, 0, 14,
978
+ 15, 16, 0, 17, 18, 19, 20, 0,
979
+ 0, 21, 0, 0, 0, 0, 0, 0,
954
980
  0, 0, 0, 0, 0, 0, 0, 0,
955
- 0, 0, 14, 0, 0, 0, 0, 0,
956
- 0, 0, 16, 17, 18, 0, 19, 20,
957
- 21, 22, 0, 0, 23, 0, 0, 0,
981
+ 0, 0, 0, 0, 0, 22, 0, 0,
958
982
  0, 0, 0, 0, 0, 0, 0, 0,
959
983
  0, 0, 0, 0, 0, 0, 0, 0,
960
- 24, 0, 0, 0, 0, 0, 0, 0,
961
984
  0, 0, 0, 0, 0, 0, 0, 0,
985
+ 0, 0, 0, 0, 23, 0, 25, 0,
986
+ 26, 0, 0, 27, 0, 28, 0, 0,
987
+ 0, 0, 0, 29, 0, 0, 0, 0,
988
+ 0, 0, 30, 0, 31, 32, 0, 0,
962
989
  0, 0, 0, 0, 0, 0, 0, 0,
963
- 0, 0, 0, 0, 0, 0, 0, 25,
964
- 26, 27, 28, 0, 29, 26, 30, 31,
965
- 0, 26, 0, 32, 0, 0, 0, 0,
966
- 33, 0, 0, 0, 0, 0, 0, 34,
967
- 0, 35, 36, 0, 0, 0, 0, 0,
968
- 0, 0, 0, 0, 0, 0, 26, 39,
969
- 40, 41, 0, 0, 42, 0, 43, 26,
970
- 44, 45, 46, 47, 48, 49, 50, 51,
971
- 52, 53, 54, 55, 56, 57, 58, 0,
972
- 59, 60, 62, 0, 0, 26, 26, 63,
973
- 0, 26, 26, 64, 65, 66, 67, 0,
974
- 68, 69, 0, 70, 71, 72, 0, 0,
975
- 0, 73, 74, 75, 76, 77, 78, 79,
976
- 0, 80, 0, 81, 82, 0, 0, 83,
977
- 0, 84, 85, 86, 87, 0, 88, 89,
978
- 0, 0, 90, 91, 92, 93, 26, 26,
979
- 26, 26, 94
990
+ 0, 35, 36, 37, 38, 0, 0, 39,
991
+ 0, 40, 35, 41, 42, 35, 43, 44,
992
+ 45, 46, 47, 48, 0, 49, 0, 50,
993
+ 51, 52, 53, 54, 55, 56, 57, 58,
994
+ 59, 0, 60, 0, 61, 62, 64, 0,
995
+ 0, 35, 35, 65, 0, 35, 66, 67,
996
+ 68, 69, 70, 0, 71, 72, 0, 73,
997
+ 74, 75, 0, 0, 0, 76, 77, 78,
998
+ 79, 80, 81, 82, 0, 83, 0, 84,
999
+ 85, 0, 0, 86, 0, 87, 88, 89,
1000
+ 35, 90, 0, 91, 35, 0, 92, 0,
1001
+ 93, 94, 95, 96, 35, 35, 35, 35,
1002
+ 97
980
1003
  ]
981
1004
 
982
1005
  class << self
@@ -997,12 +1020,13 @@ self._re_scanner_to_state_actions = [
997
1020
  0, 0, 0, 0, 0, 0, 0, 0,
998
1021
  0, 0, 0, 0, 0, 0, 0, 0,
999
1022
  0, 0, 0, 0, 0, 0, 0, 0,
1023
+ 0, 0, 0, 0, 0, 0, 0, 33,
1000
1024
  0, 0, 0, 0, 0, 0, 0, 0,
1001
- 0, 37, 0, 0, 0, 0, 0, 0,
1002
1025
  0, 0, 0, 0, 0, 0, 0, 0,
1003
- 61, 61, 61, 0, 0, 0, 0, 0,
1004
- 0, 61, 61, 0, 0, 0, 0, 0,
1005
- 0, 61, 0, 0, 0, 0
1026
+ 0, 63, 63, 63, 0, 0, 0, 0,
1027
+ 0, 0, 63, 63, 0, 0, 0, 0,
1028
+ 0, 0, 0, 0, 0, 0, 63, 0,
1029
+ 0, 0, 0
1006
1030
  ]
1007
1031
 
1008
1032
  class << self
@@ -1023,12 +1047,13 @@ self._re_scanner_from_state_actions = [
1023
1047
  0, 0, 0, 0, 0, 0, 0, 0,
1024
1048
  0, 0, 0, 0, 0, 0, 0, 0,
1025
1049
  0, 0, 0, 0, 0, 0, 0, 0,
1050
+ 0, 0, 0, 0, 0, 0, 0, 34,
1026
1051
  0, 0, 0, 0, 0, 0, 0, 0,
1027
- 0, 38, 0, 0, 0, 0, 0, 0,
1028
1052
  0, 0, 0, 0, 0, 0, 0, 0,
1029
- 38, 38, 38, 0, 0, 0, 0, 0,
1030
- 0, 38, 38, 0, 0, 0, 0, 0,
1031
- 0, 38, 0, 0, 0, 0
1053
+ 0, 34, 34, 34, 0, 0, 0, 0,
1054
+ 0, 0, 34, 34, 0, 0, 0, 0,
1055
+ 0, 0, 0, 0, 0, 0, 34, 0,
1056
+ 0, 0, 0
1032
1057
  ]
1033
1058
 
1034
1059
  class << self
@@ -1039,22 +1064,23 @@ self._re_scanner_eof_actions = [
1039
1064
  0, 0, 0, 0, 0, 0, 0, 0,
1040
1065
  0, 0, 0, 0, 0, 0, 0, 0,
1041
1066
  0, 0, 0, 0, 0, 0, 0, 0,
1042
- 0, 0, 14, 14, 15, 15, 15, 15,
1067
+ 0, 0, 0, 0, 13, 13, 13, 13,
1068
+ 0, 0, 0, 0, 0, 0, 0, 0,
1043
1069
  0, 0, 0, 0, 0, 0, 0, 0,
1044
1070
  0, 0, 0, 0, 0, 0, 0, 0,
1045
1071
  0, 0, 0, 0, 0, 0, 0, 0,
1046
1072
  0, 0, 0, 0, 0, 0, 0, 0,
1047
1073
  0, 0, 0, 0, 0, 0, 0, 0,
1048
1074
  0, 0, 0, 0, 0, 0, 0, 0,
1075
+ 0, 24, 24, 0, 24, 24, 0, 24,
1076
+ 24, 24, 24, 24, 24, 24, 24, 24,
1077
+ 24, 24, 24, 0, 0, 0, 0, 0,
1049
1078
  0, 0, 0, 0, 0, 0, 0, 0,
1050
- 0, 14, 0, 0, 14, 0, 0, 0,
1051
- 0, 14, 14, 14, 14, 14, 14, 14,
1052
- 14, 14, 14, 14, 14, 0, 0, 0,
1053
1079
  0, 0, 0, 0, 0, 0, 0, 0,
1080
+ 0, 0, 0, 24, 0, 0, 0, 0,
1081
+ 0, 0, 0, 24, 0, 0, 0, 0,
1054
1082
  0, 0, 0, 0, 0, 0, 0, 0,
1055
- 0, 0, 14, 0, 0, 0, 0, 0,
1056
- 0, 0, 14, 0, 0, 0, 0, 0,
1057
- 0, 0, 0, 0, 0, 0
1083
+ 0, 0, 0
1058
1084
  ]
1059
1085
 
1060
1086
  class << self
@@ -1063,34 +1089,35 @@ class << self
1063
1089
  end
1064
1090
  self._re_scanner_eof_trans = [
1065
1091
  0, 1, 1, 1, 1, 1, 1, 8,
1066
- 11, 11, 11, 11, 11, 21, 21, 21,
1067
- 21, 21, 21, 21, 21, 21, 21, 21,
1068
- 21, 21, 0, 0, 0, 0, 0, 0,
1069
- 44, 44, 47, 49, 49, 49, 49, 49,
1070
- 49, 49, 49, 49, 49, 49, 49, 49,
1071
- 49, 49, 49, 49, 49, 49, 49, 49,
1072
- 49, 49, 49, 49, 49, 49, 49, 49,
1073
- 49, 49, 49, 49, 49, 49, 49, 49,
1074
- 49, 49, 49, 49, 49, 49, 49, 49,
1075
- 49, 49, 49, 49, 49, 49, 49, 49,
1076
- 49, 0, 106, 106, 0, 111, 111, 111,
1077
- 111, 0, 0, 0, 0, 0, 0, 0,
1078
- 0, 0, 0, 0, 0, 130, 130, 130,
1079
- 130, 0, 155, 155, 155, 155, 156, 156,
1080
- 155, 155, 157, 159, 161, 163, 165, 169,
1081
- 0, 0, 0, 183, 183, 183, 183, 186,
1082
- 189, 0, 0, 208, 210, 212, 215, 215,
1083
- 219, 0, 227, 227, 227, 227
1092
+ 11, 11, 11, 11, 18, 18, 18, 18,
1093
+ 18, 18, 18, 18, 18, 18, 18, 18,
1094
+ 18, 32, 32, 32, 0, 0, 0, 0,
1095
+ 41, 41, 44, 46, 46, 46, 46, 46,
1096
+ 46, 46, 46, 46, 46, 46, 46, 46,
1097
+ 46, 46, 46, 46, 46, 46, 46, 46,
1098
+ 46, 46, 46, 46, 46, 46, 46, 46,
1099
+ 46, 46, 46, 46, 46, 46, 46, 46,
1100
+ 46, 46, 46, 46, 46, 46, 46, 46,
1101
+ 46, 46, 46, 46, 46, 46, 46, 46,
1102
+ 46, 0, 0, 105, 0, 0, 110, 0,
1103
+ 0, 0, 0, 0, 0, 0, 0, 0,
1104
+ 0, 0, 0, 125, 125, 125, 125, 0,
1105
+ 152, 152, 152, 152, 153, 153, 152, 152,
1106
+ 154, 156, 156, 161, 163, 165, 167, 171,
1107
+ 173, 0, 0, 0, 187, 187, 187, 187,
1108
+ 190, 193, 0, 0, 212, 214, 216, 216,
1109
+ 216, 220, 220, 220, 220, 225, 0, 233,
1110
+ 233, 233, 233
1084
1111
  ]
1085
1112
 
1086
1113
  class << self
1087
1114
  attr_accessor :re_scanner_start
1088
1115
  end
1089
- self.re_scanner_start = 113;
1116
+ self.re_scanner_start = 111;
1090
1117
  class << self
1091
1118
  attr_accessor :re_scanner_first_final
1092
1119
  end
1093
- self.re_scanner_first_final = 113;
1120
+ self.re_scanner_first_final = 111;
1094
1121
  class << self
1095
1122
  attr_accessor :re_scanner_error
1096
1123
  end
@@ -1099,36 +1126,36 @@ self.re_scanner_error = 0;
1099
1126
  class << self
1100
1127
  attr_accessor :re_scanner_en_char_type
1101
1128
  end
1102
- self.re_scanner_en_char_type = 128;
1129
+ self.re_scanner_en_char_type = 129;
1103
1130
  class << self
1104
1131
  attr_accessor :re_scanner_en_unicode_property
1105
1132
  end
1106
- self.re_scanner_en_unicode_property = 129;
1133
+ self.re_scanner_en_unicode_property = 130;
1107
1134
  class << self
1108
1135
  attr_accessor :re_scanner_en_character_set
1109
1136
  end
1110
- self.re_scanner_en_character_set = 130;
1137
+ self.re_scanner_en_character_set = 131;
1111
1138
  class << self
1112
1139
  attr_accessor :re_scanner_en_set_escape_sequence
1113
1140
  end
1114
- self.re_scanner_en_set_escape_sequence = 137;
1141
+ self.re_scanner_en_set_escape_sequence = 138;
1115
1142
  class << self
1116
1143
  attr_accessor :re_scanner_en_escape_sequence
1117
1144
  end
1118
- self.re_scanner_en_escape_sequence = 138;
1145
+ self.re_scanner_en_escape_sequence = 139;
1119
1146
  class << self
1120
1147
  attr_accessor :re_scanner_en_conditional_expression
1121
1148
  end
1122
- self.re_scanner_en_conditional_expression = 145;
1149
+ self.re_scanner_en_conditional_expression = 150;
1123
1150
  class << self
1124
1151
  attr_accessor :re_scanner_en_main
1125
1152
  end
1126
- self.re_scanner_en_main = 113;
1153
+ self.re_scanner_en_main = 111;
1127
1154
 
1128
1155
 
1129
- # line 808 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1156
+ # line 768 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1130
1157
 
1131
- # line 1131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1158
+ # line 1158 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
1132
1159
  begin
1133
1160
  p ||= 0
1134
1161
  pe ||= data.length
@@ -1139,9 +1166,9 @@ begin
1139
1166
  act = 0
1140
1167
  end
1141
1168
 
1142
- # line 809 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1169
+ # line 769 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1143
1170
 
1144
- # line 1144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1171
+ # line 1171 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
1145
1172
  begin
1146
1173
  testEof = false
1147
1174
  _slen, _trans, _keys, _inds, _acts, _nacts = nil
@@ -1164,12 +1191,12 @@ begin
1164
1191
  end
1165
1192
  if _goto_level <= _resume
1166
1193
  case _re_scanner_from_state_actions[cs]
1167
- when 38 then
1194
+ when 34 then
1168
1195
  # line 1 "NONE"
1169
1196
  begin
1170
1197
  ts = p
1171
1198
  end
1172
- # line 1172 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1199
+ # line 1199 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
1173
1200
  end
1174
1201
  _keys = cs << 1
1175
1202
  _inds = _re_scanner_index_offsets[cs]
@@ -1188,24 +1215,21 @@ ts = p
1188
1215
  cs = _re_scanner_trans_targs[_trans]
1189
1216
  if _re_scanner_trans_actions[_trans] != 0
1190
1217
  case _re_scanner_trans_actions[_trans]
1191
- when 14 then
1192
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1218
+ when 37 then
1219
+ # line 149 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1193
1220
  begin
1194
-
1195
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
1196
- raise PrematureEndError.new( text )
1197
- end
1198
- when 7 then
1199
- # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1221
+ self.group_depth = group_depth + 1 end
1222
+ when 6 then
1223
+ # line 150 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1200
1224
  begin
1201
- self.group_depth = group_depth - 1; in_group = group_depth > 0 ? true : false end
1202
- when 26 then
1225
+ self.group_depth = group_depth - 1 end
1226
+ when 35 then
1203
1227
  # line 1 "NONE"
1204
1228
  begin
1205
1229
  te = p+1
1206
1230
  end
1207
- when 62 then
1208
- # line 12 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/char_type.rl"
1231
+ when 64 then
1232
+ # line 12 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/char_type.rl"
1209
1233
  begin
1210
1234
  te = p+1
1211
1235
  begin
@@ -1220,9 +1244,6 @@ te = p+1
1220
1244
  when '\W'; emit(:type, :nonword, text, ts - 1, te)
1221
1245
  when '\R'; emit(:type, :linebreak, text, ts - 1, te)
1222
1246
  when '\X'; emit(:type, :xgrapheme, text, ts - 1, te)
1223
- else
1224
- raise ScannerError.new(
1225
- "Unexpected character in type at #{text} (char #{ts})")
1226
1247
  end
1227
1248
  begin
1228
1249
  top -= 1
@@ -1233,8 +1254,8 @@ te = p+1
1233
1254
 
1234
1255
  end
1235
1256
  end
1236
- when 16 then
1237
- # line 16 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/property.rl"
1257
+ when 14 then
1258
+ # line 16 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/property.rl"
1238
1259
  begin
1239
1260
  te = p+1
1240
1261
  begin
@@ -1257,65 +1278,8 @@ te = p+1
1257
1278
 
1258
1279
  end
1259
1280
  end
1260
- when 65 then
1261
- # line 149 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1262
- begin
1263
- te = p+1
1264
- begin
1265
- set_depth -= 1
1266
- in_set = set_depth > 0 ? true : false
1267
-
1268
- emit(:set, :close, *text(data, ts, te))
1269
-
1270
- if set_depth == 0
1271
- begin
1272
- cs = 113
1273
- _goto_level = _again
1274
- next
1275
- end
1276
-
1277
- else
1278
- begin
1279
- top -= 1
1280
- cs = stack[top]
1281
- _goto_level = _again
1282
- next
1283
- end
1284
-
1285
- end
1286
- end
1287
- end
1288
- when 70 then
1289
- # line 162 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1290
- begin
1291
- te = p+1
1292
- begin # special case, emits two tokens
1293
- set_depth -= 1
1294
- in_set = set_depth > 0 ? true : false
1295
-
1296
- emit(:literal, :literal, copy(data, ts..te-2), ts, te)
1297
- emit(:set, :close, copy(data, ts+1..te-1), ts, te)
1298
-
1299
- if set_depth == 0
1300
- begin
1301
- cs = 113
1302
- _goto_level = _again
1303
- next
1304
- end
1305
-
1306
- else
1307
- begin
1308
- top -= 1
1309
- cs = stack[top]
1310
- _goto_level = _again
1311
- next
1312
- end
1313
-
1314
- end
1315
- end
1316
- end
1317
- when 20 then
1318
- # line 176 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1281
+ when 18 then
1282
+ # line 177 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1319
1283
  begin
1320
1284
  te = p+1
1321
1285
  begin # special case, emits two tokens
@@ -1323,8 +1287,8 @@ te = p+1
1323
1287
  emit(:set, :intersection, '&&', ts, te)
1324
1288
  end
1325
1289
  end
1326
- when 66 then
1327
- # line 181 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1290
+ when 69 then
1291
+ # line 182 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1328
1292
  begin
1329
1293
  te = p+1
1330
1294
  begin
@@ -1336,72 +1300,39 @@ te = p+1
1336
1300
  end
1337
1301
  end
1338
1302
  end
1339
- when 68 then
1340
- # line 202 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1303
+ when 71 then
1304
+ # line 203 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1341
1305
  begin
1342
1306
  te = p+1
1343
1307
  begin
1344
1308
  emit(:set, :intersection, *text(data, ts, te))
1345
1309
  end
1346
1310
  end
1347
- when 64 then
1348
- # line 206 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1311
+ when 67 then
1312
+ # line 207 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1349
1313
  begin
1350
1314
  te = p+1
1351
1315
  begin
1352
1316
  begin
1353
1317
  stack[top] = cs
1354
1318
  top+= 1
1355
- cs = 137
1319
+ cs = 138
1356
1320
  _goto_level = _again
1357
1321
  next
1358
1322
  end
1359
1323
 
1360
1324
  end
1361
1325
  end
1362
- when 24 then
1363
- # line 217 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1364
- begin
1365
- te = p+1
1366
- begin
1367
- text = text(data, ts, te).first
1368
-
1369
- type = :posixclass
1370
- class_name = text[2..-3]
1371
- if class_name[0].chr == '^'
1372
- class_name = class_name[1..-1]
1373
- type = :nonposixclass
1374
- end
1375
-
1376
- emit(type, class_name.to_sym, text, ts, te)
1377
- end
1378
- end
1379
- when 23 then
1380
- # line 230 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1381
- begin
1382
- te = p+1
1383
- begin
1384
- emit(:set, :collation, *text(data, ts, te))
1385
- end
1386
- end
1387
- when 25 then
1388
- # line 234 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1389
- begin
1390
- te = p+1
1391
- begin
1392
- emit(:set, :equivalent, *text(data, ts, te))
1393
- end
1394
- end
1395
- when 63 then
1396
- # line 238 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1326
+ when 65 then
1327
+ # line 237 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1397
1328
  begin
1398
1329
  te = p+1
1399
1330
  begin
1400
1331
  emit(:literal, :literal, *text(data, ts, te))
1401
1332
  end
1402
1333
  end
1403
- when 18 then
1404
- # line 246 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1334
+ when 16 then
1335
+ # line 245 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1405
1336
  begin
1406
1337
  te = p+1
1407
1338
  begin
@@ -1410,8 +1341,8 @@ te = p+1
1410
1341
  emit(:literal, :literal, char, *rest)
1411
1342
  end
1412
1343
  end
1413
- when 69 then
1414
- # line 190 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1344
+ when 72 then
1345
+ # line 191 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1415
1346
  begin
1416
1347
  te = p
1417
1348
  p = p - 1; begin
@@ -1424,26 +1355,24 @@ p = p - 1; begin
1424
1355
  end
1425
1356
  end
1426
1357
  end
1427
- when 72 then
1428
- # line 210 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1358
+ when 75 then
1359
+ # line 211 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1429
1360
  begin
1430
1361
  te = p
1431
1362
  p = p - 1; begin
1432
- set_depth += 1
1433
-
1434
1363
  emit(:set, :open, *text(data, ts, te))
1435
1364
  begin
1436
1365
  stack[top] = cs
1437
1366
  top+= 1
1438
- cs = 130
1367
+ cs = 131
1439
1368
  _goto_level = _again
1440
1369
  next
1441
1370
  end
1442
1371
 
1443
1372
  end
1444
1373
  end
1445
- when 67 then
1446
- # line 246 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1374
+ when 70 then
1375
+ # line 245 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1447
1376
  begin
1448
1377
  te = p
1449
1378
  p = p - 1; begin
@@ -1452,8 +1381,8 @@ p = p - 1; begin
1452
1381
  emit(:literal, :literal, char, *rest)
1453
1382
  end
1454
1383
  end
1455
- when 19 then
1456
- # line 190 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1384
+ when 17 then
1385
+ # line 191 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1457
1386
  begin
1458
1387
  begin p = ((te))-1; end
1459
1388
  begin
@@ -1466,26 +1395,24 @@ p = p - 1; begin
1466
1395
  end
1467
1396
  end
1468
1397
  end
1469
- when 22 then
1470
- # line 210 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1398
+ when 20 then
1399
+ # line 211 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1471
1400
  begin
1472
1401
  begin p = ((te))-1; end
1473
1402
  begin
1474
- set_depth += 1
1475
-
1476
1403
  emit(:set, :open, *text(data, ts, te))
1477
1404
  begin
1478
1405
  stack[top] = cs
1479
1406
  top+= 1
1480
- cs = 130
1407
+ cs = 131
1481
1408
  _goto_level = _again
1482
1409
  next
1483
1410
  end
1484
1411
 
1485
1412
  end
1486
1413
  end
1487
- when 17 then
1488
- # line 246 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1414
+ when 15 then
1415
+ # line 245 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1489
1416
  begin
1490
1417
  begin p = ((te))-1; end
1491
1418
  begin
@@ -1494,8 +1421,8 @@ p = p - 1; begin
1494
1421
  emit(:literal, :literal, char, *rest)
1495
1422
  end
1496
1423
  end
1497
- when 74 then
1498
- # line 256 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1424
+ when 77 then
1425
+ # line 255 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1499
1426
  begin
1500
1427
  te = p+1
1501
1428
  begin
@@ -1509,25 +1436,25 @@ te = p+1
1509
1436
 
1510
1437
  end
1511
1438
  end
1512
- when 73 then
1513
- # line 261 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1439
+ when 76 then
1440
+ # line 260 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1514
1441
  begin
1515
1442
  te = p+1
1516
1443
  begin
1517
1444
  p = p - 1;
1518
- cs = 130;
1445
+ cs = 131;
1519
1446
  begin
1520
1447
  stack[top] = cs
1521
1448
  top+= 1
1522
- cs = 138
1449
+ cs = 139
1523
1450
  _goto_level = _again
1524
1451
  next
1525
1452
  end
1526
1453
 
1527
1454
  end
1528
1455
  end
1529
- when 79 then
1530
- # line 272 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1456
+ when 82 then
1457
+ # line 271 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1531
1458
  begin
1532
1459
  te = p+1
1533
1460
  begin
@@ -1542,8 +1469,8 @@ te = p+1
1542
1469
 
1543
1470
  end
1544
1471
  end
1545
- when 85 then
1546
- # line 278 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1472
+ when 88 then
1473
+ # line 277 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1547
1474
  begin
1548
1475
  te = p+1
1549
1476
  begin
@@ -1557,8 +1484,8 @@ te = p+1
1557
1484
 
1558
1485
  end
1559
1486
  end
1560
- when 76 then
1561
- # line 283 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1487
+ when 79 then
1488
+ # line 282 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1562
1489
  begin
1563
1490
  te = p+1
1564
1491
  begin
@@ -1588,8 +1515,8 @@ te = p+1
1588
1515
 
1589
1516
  end
1590
1517
  end
1591
- when 82 then
1592
- # line 304 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1518
+ when 85 then
1519
+ # line 303 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1593
1520
  begin
1594
1521
  te = p+1
1595
1522
  begin
@@ -1614,8 +1541,8 @@ te = p+1
1614
1541
 
1615
1542
  end
1616
1543
  end
1617
- when 33 then
1618
- # line 320 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1544
+ when 29 then
1545
+ # line 319 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1619
1546
  begin
1620
1547
  te = p+1
1621
1548
  begin
@@ -1634,8 +1561,8 @@ te = p+1
1634
1561
 
1635
1562
  end
1636
1563
  end
1637
- when 92 then
1638
- # line 330 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1564
+ when 95 then
1565
+ # line 329 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1639
1566
  begin
1640
1567
  te = p+1
1641
1568
  begin
@@ -1649,22 +1576,12 @@ te = p+1
1649
1576
 
1650
1577
  end
1651
1578
  end
1652
- when 29 then
1653
- # line 339 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1579
+ when 25 then
1580
+ # line 338 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1654
1581
  begin
1655
1582
  te = p+1
1656
1583
  begin
1657
- if data[te]
1658
- c = data[te].chr
1659
- if c =~ /[\x00-\x7F]/
1660
- emit(:escape, :control, copy(data, ts-1..te), ts-1, te+1)
1661
- p += 1
1662
- else
1663
- raise InvalidSequenceError.new("control sequence")
1664
- end
1665
- else
1666
- raise PrematureEndError.new("control sequence")
1667
- end
1584
+ emit_meta_control_sequence(data, ts, te, :control)
1668
1585
  begin
1669
1586
  top -= 1
1670
1587
  cs = stack[top]
@@ -1674,22 +1591,12 @@ te = p+1
1674
1591
 
1675
1592
  end
1676
1593
  end
1677
- when 32 then
1678
- # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1594
+ when 27 then
1595
+ # line 343 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1679
1596
  begin
1680
1597
  te = p+1
1681
1598
  begin
1682
- if data[te]
1683
- c = data[te].chr
1684
- if c =~ /[\x00-\x7F]/
1685
- emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
1686
- p += 1
1687
- else
1688
- raise InvalidSequenceError.new("meta sequence")
1689
- end
1690
- else
1691
- raise PrematureEndError.new("meta sequence")
1692
- end
1599
+ emit_meta_control_sequence(data, ts, te, :meta_sequence)
1693
1600
  begin
1694
1601
  top -= 1
1695
1602
  cs = stack[top]
@@ -1699,42 +1606,42 @@ te = p+1
1699
1606
 
1700
1607
  end
1701
1608
  end
1702
- when 80 then
1703
- # line 369 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1609
+ when 83 then
1610
+ # line 348 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1704
1611
  begin
1705
1612
  te = p+1
1706
1613
  begin
1707
1614
  p = p - 1;
1708
- cs = ((in_set ? 130 : 113));
1615
+ cs = ((in_set? ? 131 : 111));
1709
1616
  begin
1710
1617
  stack[top] = cs
1711
1618
  top+= 1
1712
- cs = 128
1619
+ cs = 129
1713
1620
  _goto_level = _again
1714
1621
  next
1715
1622
  end
1716
1623
 
1717
1624
  end
1718
1625
  end
1719
- when 81 then
1720
- # line 375 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1626
+ when 84 then
1627
+ # line 354 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1721
1628
  begin
1722
1629
  te = p+1
1723
1630
  begin
1724
1631
  p = p - 1;
1725
- cs = ((in_set ? 130 : 113));
1632
+ cs = ((in_set? ? 131 : 111));
1726
1633
  begin
1727
1634
  stack[top] = cs
1728
1635
  top+= 1
1729
- cs = 129
1636
+ cs = 130
1730
1637
  _goto_level = _again
1731
1638
  next
1732
1639
  end
1733
1640
 
1734
1641
  end
1735
1642
  end
1736
- when 75 then
1737
- # line 381 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1643
+ when 78 then
1644
+ # line 360 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1738
1645
  begin
1739
1646
  te = p+1
1740
1647
  begin
@@ -1748,8 +1655,8 @@ te = p+1
1748
1655
 
1749
1656
  end
1750
1657
  end
1751
- when 84 then
1752
- # line 278 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1658
+ when 87 then
1659
+ # line 277 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1753
1660
  begin
1754
1661
  te = p
1755
1662
  p = p - 1; begin
@@ -1763,8 +1670,8 @@ p = p - 1; begin
1763
1670
 
1764
1671
  end
1765
1672
  end
1766
- when 91 then
1767
- # line 330 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1673
+ when 94 then
1674
+ # line 329 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1768
1675
  begin
1769
1676
  te = p
1770
1677
  p = p - 1; begin
@@ -1778,22 +1685,12 @@ p = p - 1; begin
1778
1685
 
1779
1686
  end
1780
1687
  end
1781
- when 87 then
1782
- # line 339 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1688
+ when 90 then
1689
+ # line 338 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1783
1690
  begin
1784
1691
  te = p
1785
1692
  p = p - 1; begin
1786
- if data[te]
1787
- c = data[te].chr
1788
- if c =~ /[\x00-\x7F]/
1789
- emit(:escape, :control, copy(data, ts-1..te), ts-1, te+1)
1790
- p += 1
1791
- else
1792
- raise InvalidSequenceError.new("control sequence")
1793
- end
1794
- else
1795
- raise PrematureEndError.new("control sequence")
1796
- end
1693
+ emit_meta_control_sequence(data, ts, te, :control)
1797
1694
  begin
1798
1695
  top -= 1
1799
1696
  cs = stack[top]
@@ -1803,22 +1700,12 @@ p = p - 1; begin
1803
1700
 
1804
1701
  end
1805
1702
  end
1806
- when 89 then
1807
- # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1703
+ when 92 then
1704
+ # line 343 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1808
1705
  begin
1809
1706
  te = p
1810
1707
  p = p - 1; begin
1811
- if data[te]
1812
- c = data[te].chr
1813
- if c =~ /[\x00-\x7F]/
1814
- emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
1815
- p += 1
1816
- else
1817
- raise InvalidSequenceError.new("meta sequence")
1818
- end
1819
- else
1820
- raise PrematureEndError.new("meta sequence")
1821
- end
1708
+ emit_meta_control_sequence(data, ts, te, :meta_sequence)
1822
1709
  begin
1823
1710
  top -= 1
1824
1711
  cs = stack[top]
@@ -1828,65 +1715,15 @@ p = p - 1; begin
1828
1715
 
1829
1716
  end
1830
1717
  end
1831
- when 28 then
1832
- # line 339 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1718
+ when 86 then
1719
+ # line 1 "NONE"
1833
1720
  begin
1834
- begin p = ((te))-1; end
1835
- begin
1836
- if data[te]
1837
- c = data[te].chr
1838
- if c =~ /[\x00-\x7F]/
1839
- emit(:escape, :control, copy(data, ts-1..te), ts-1, te+1)
1840
- p += 1
1841
- else
1842
- raise InvalidSequenceError.new("control sequence")
1843
- end
1844
- else
1845
- raise PrematureEndError.new("control sequence")
1846
- end
1847
- begin
1848
- top -= 1
1849
- cs = stack[top]
1850
- _goto_level = _again
1851
- next
1852
- end
1853
-
1854
- end
1855
- end
1856
- when 31 then
1857
- # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1858
- begin
1859
- begin p = ((te))-1; end
1860
- begin
1861
- if data[te]
1862
- c = data[te].chr
1863
- if c =~ /[\x00-\x7F]/
1864
- emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
1865
- p += 1
1866
- else
1867
- raise InvalidSequenceError.new("meta sequence")
1868
- end
1869
- else
1870
- raise PrematureEndError.new("meta sequence")
1871
- end
1872
- begin
1873
- top -= 1
1874
- cs = stack[top]
1875
- _goto_level = _again
1876
- next
1877
- end
1878
-
1879
- end
1880
- end
1881
- when 83 then
1882
- # line 1 "NONE"
1883
- begin
1884
- case act
1885
- when 18 then
1886
- begin begin p = ((te))-1; end
1887
-
1888
- text = text(data, ts, te, 1).first
1889
- emit(:backref, :number, text, ts-1, te)
1721
+ case act
1722
+ when 18 then
1723
+ begin begin p = ((te))-1; end
1724
+
1725
+ text = text(data, ts, te, 1).first
1726
+ emit(:backref, :number, text, ts-1, te)
1890
1727
  begin
1891
1728
  top -= 1
1892
1729
  cs = stack[top]
@@ -1909,8 +1746,8 @@ p = p - 1; begin
1909
1746
  end
1910
1747
  end
1911
1748
  end
1912
- when 36 then
1913
- # line 391 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1749
+ when 32 then
1750
+ # line 370 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1914
1751
  begin
1915
1752
  te = p+1
1916
1753
  begin
@@ -1919,8 +1756,8 @@ te = p+1
1919
1756
  emit(:conditional, :condition_close, ')', te-1, te)
1920
1757
  end
1921
1758
  end
1922
- when 93 then
1923
- # line 397 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1759
+ when 96 then
1760
+ # line 376 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1924
1761
  begin
1925
1762
  te = p+1
1926
1763
  begin
@@ -1928,15 +1765,15 @@ te = p+1
1928
1765
  begin
1929
1766
  stack[top] = cs
1930
1767
  top+= 1
1931
- cs = 113
1768
+ cs = 111
1932
1769
  _goto_level = _again
1933
1770
  next
1934
1771
  end
1935
1772
 
1936
1773
  end
1937
1774
  end
1938
- when 94 then
1939
- # line 397 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1775
+ when 97 then
1776
+ # line 376 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1940
1777
  begin
1941
1778
  te = p
1942
1779
  p = p - 1; begin
@@ -1944,15 +1781,15 @@ p = p - 1; begin
1944
1781
  begin
1945
1782
  stack[top] = cs
1946
1783
  top+= 1
1947
- cs = 113
1784
+ cs = 111
1948
1785
  _goto_level = _again
1949
1786
  next
1950
1787
  end
1951
1788
 
1952
1789
  end
1953
1790
  end
1954
- when 35 then
1955
- # line 397 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1791
+ when 31 then
1792
+ # line 376 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1956
1793
  begin
1957
1794
  begin p = ((te))-1; end
1958
1795
  begin
@@ -1960,60 +1797,59 @@ p = p - 1; begin
1960
1797
  begin
1961
1798
  stack[top] = cs
1962
1799
  top+= 1
1963
- cs = 113
1800
+ cs = 111
1964
1801
  _goto_level = _again
1965
1802
  next
1966
1803
  end
1967
1804
 
1968
1805
  end
1969
1806
  end
1970
- when 42 then
1971
- # line 410 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1807
+ when 39 then
1808
+ # line 389 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1972
1809
  begin
1973
1810
  te = p+1
1974
1811
  begin
1975
1812
  emit(:meta, :dot, *text(data, ts, te))
1976
1813
  end
1977
1814
  end
1978
- when 45 then
1979
- # line 414 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1815
+ when 43 then
1816
+ # line 393 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1980
1817
  begin
1981
1818
  te = p+1
1982
1819
  begin
1983
- if in_conditional and conditional_stack.length > 0 and
1984
- conditional_stack.last[1] == group_depth
1820
+ if conditional_stack.last == group_depth
1985
1821
  emit(:conditional, :separator, *text(data, ts, te))
1986
1822
  else
1987
1823
  emit(:meta, :alternation, *text(data, ts, te))
1988
1824
  end
1989
1825
  end
1990
1826
  end
1991
- when 44 then
1992
- # line 425 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1827
+ when 42 then
1828
+ # line 403 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1993
1829
  begin
1994
1830
  te = p+1
1995
1831
  begin
1996
1832
  emit(:anchor, :bol, *text(data, ts, te))
1997
1833
  end
1998
1834
  end
1999
- when 39 then
2000
- # line 429 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1835
+ when 36 then
1836
+ # line 407 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2001
1837
  begin
2002
1838
  te = p+1
2003
1839
  begin
2004
1840
  emit(:anchor, :eol, *text(data, ts, te))
2005
1841
  end
2006
1842
  end
2007
- when 58 then
2008
- # line 433 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1843
+ when 59 then
1844
+ # line 411 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2009
1845
  begin
2010
1846
  te = p+1
2011
1847
  begin
2012
1848
  emit(:keep, :mark, *text(data, ts, te))
2013
1849
  end
2014
1850
  end
2015
- when 57 then
2016
- # line 437 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1851
+ when 58 then
1852
+ # line 415 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2017
1853
  begin
2018
1854
  te = p+1
2019
1855
  begin
@@ -2024,64 +1860,52 @@ te = p+1
2024
1860
  when '\\b'; emit(:anchor, :word_boundary, text, ts, te)
2025
1861
  when '\\B'; emit(:anchor, :nonword_boundary, text, ts, te)
2026
1862
  when '\\G'; emit(:anchor, :match_start, text, ts, te)
2027
- else
2028
- raise ScannerError.new(
2029
- "Unexpected character in anchor at #{text} (char #{ts})")
2030
1863
  end
2031
1864
  end
2032
1865
  end
2033
- when 43 then
2034
- # line 453 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1866
+ when 41 then
1867
+ # line 426 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2035
1868
  begin
2036
1869
  te = p+1
2037
1870
  begin
2038
- set_depth += 1
2039
- in_set = true
2040
-
2041
- emit(:set, :open, *text(data, ts, te))
2042
- begin
2043
- stack[top] = cs
2044
- top+= 1
2045
- cs = 130
2046
- _goto_level = _again
2047
- next
2048
- end
2049
-
1871
+ append_literal(data, ts, te)
2050
1872
  end
2051
1873
  end
2052
- when 8 then
2053
- # line 465 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1874
+ when 49 then
1875
+ # line 441 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2054
1876
  begin
2055
1877
  te = p+1
2056
1878
  begin
2057
1879
  text = text(data, ts, te).first
2058
1880
 
2059
- in_conditional = true unless in_conditional
2060
- conditional_depth += 1
2061
- conditional_stack << [conditional_depth, group_depth]
1881
+ conditional_stack << group_depth
2062
1882
 
2063
1883
  emit(:conditional, :open, text[0..-2], ts, te-1)
2064
1884
  emit(:conditional, :condition_open, '(', te-1, te)
2065
1885
  begin
2066
1886
  stack[top] = cs
2067
1887
  top+= 1
2068
- cs = 145
1888
+ cs = 150
2069
1889
  _goto_level = _again
2070
1890
  next
2071
1891
  end
2072
1892
 
2073
1893
  end
2074
1894
  end
2075
- when 9 then
2076
- # line 498 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1895
+ when 50 then
1896
+ # line 472 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2077
1897
  begin
2078
1898
  te = p+1
2079
1899
  begin
2080
- p = scan_options(p, data, ts, te)
1900
+ text = text(data, ts, te).first
1901
+ if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
1902
+ raise InvalidGroupOption.new($1 || "-#{$2}", text)
1903
+ end
1904
+ emit_options(text, ts, te)
2081
1905
  end
2082
1906
  end
2083
- when 6 then
2084
- # line 508 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1907
+ when 9 then
1908
+ # line 486 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2085
1909
  begin
2086
1910
  te = p+1
2087
1911
  begin
@@ -2093,8 +1917,8 @@ te = p+1
2093
1917
  end
2094
1918
  end
2095
1919
  end
2096
- when 10 then
2097
- # line 525 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1920
+ when 8 then
1921
+ # line 503 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2098
1922
  begin
2099
1923
  te = p+1
2100
1924
  begin
@@ -2103,33 +1927,26 @@ te = p+1
2103
1927
  when '(?>'; emit(:group, :atomic, text, ts, te)
2104
1928
  when '(?~'; emit(:group, :absence, text, ts, te)
2105
1929
 
2106
- when /^\(\?<(\w*)>/
2107
- empty_name_error(:group, 'named group (ab)') if $1.empty?
1930
+ when /^\(\?(?:<>|'')/
1931
+ validation_error(:group, 'named group', 'name is empty')
2108
1932
 
1933
+ when /^\(\?<\w*>/
2109
1934
  emit(:group, :named_ab, text, ts, te)
2110
1935
 
2111
- when /^\(\?'(\w*)'/
2112
- empty_name_error(:group, 'named group (sq)') if $1.empty?
2113
-
1936
+ when /^\(\?'\w*'/
2114
1937
  emit(:group, :named_sq, text, ts, te)
2115
1938
 
2116
- else
2117
- raise ScannerError.new(
2118
- "Unknown subexpression group format '#{text}'")
2119
1939
  end
2120
1940
  end
2121
1941
  end
2122
- when 13 then
2123
- # line 577 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1942
+ when 11 then
1943
+ # line 544 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2124
1944
  begin
2125
1945
  te = p+1
2126
1946
  begin
2127
1947
  case text = text(data, ts, te).first
2128
- when /^\\([gk])<>/ # angle brackets
2129
- empty_backref_error("ref/call (ab)")
2130
-
2131
- when /^\\([gk])''/ # single quotes
2132
- empty_backref_error("ref/call (sq)")
1948
+ when /^\\([gk])(<>|'')/ # angle brackets
1949
+ validation_error(:backref, 'ref/call', 'ref ID is empty')
2133
1950
 
2134
1951
  when /^\\([gk])<[^\d+-]\w*>/ # angle-brackets
2135
1952
  if $1 == 'k'
@@ -2185,14 +2002,11 @@ te = p+1
2185
2002
  when /^\\([gk])'[+\-]?\d+[+\-]\d+'/ # single-quotes
2186
2003
  emit(:backref, :number_recursion_ref_sq, text, ts, te)
2187
2004
 
2188
- else
2189
- raise ScannerError.new(
2190
- "Unknown backreference format '#{text}'")
2191
2005
  end
2192
2006
  end
2193
2007
  end
2194
- when 55 then
2195
- # line 648 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2008
+ when 56 then
2009
+ # line 609 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2196
2010
  begin
2197
2011
  te = p+1
2198
2012
  begin
@@ -2203,8 +2017,8 @@ te = p+1
2203
2017
  end
2204
2018
  end
2205
2019
  end
2206
- when 51 then
2207
- # line 656 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2020
+ when 52 then
2021
+ # line 617 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2208
2022
  begin
2209
2023
  te = p+1
2210
2024
  begin
@@ -2215,8 +2029,8 @@ te = p+1
2215
2029
  end
2216
2030
  end
2217
2031
  end
2218
- when 53 then
2219
- # line 664 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2032
+ when 54 then
2033
+ # line 625 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2220
2034
  begin
2221
2035
  te = p+1
2222
2036
  begin
@@ -2227,8 +2041,8 @@ te = p+1
2227
2041
  end
2228
2042
  end
2229
2043
  end
2230
- when 60 then
2231
- # line 672 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2044
+ when 62 then
2045
+ # line 633 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2232
2046
  begin
2233
2047
  te = p+1
2234
2048
  begin
@@ -2236,7 +2050,7 @@ te = p+1
2236
2050
  end
2237
2051
  end
2238
2052
  when 4 then
2239
- # line 682 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2053
+ # line 648 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2240
2054
  begin
2241
2055
  te = p+1
2242
2056
  begin
@@ -2248,7 +2062,19 @@ te = p+1
2248
2062
  end
2249
2063
  end
2250
2064
  when 48 then
2251
- # line 547 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2065
+ # line 472 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2066
+ begin
2067
+ te = p
2068
+ p = p - 1; begin
2069
+ text = text(data, ts, te).first
2070
+ if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2071
+ raise InvalidGroupOption.new($1 || "-#{$2}", text)
2072
+ end
2073
+ emit_options(text, ts, te)
2074
+ end
2075
+ end
2076
+ when 46 then
2077
+ # line 521 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2252
2078
  begin
2253
2079
  te = p
2254
2080
  p = p - 1; begin
@@ -2256,8 +2082,8 @@ p = p - 1; begin
2256
2082
  emit(:group, :capture, text, ts, te)
2257
2083
  end
2258
2084
  end
2259
- when 54 then
2260
- # line 648 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2085
+ when 55 then
2086
+ # line 609 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2261
2087
  begin
2262
2088
  te = p
2263
2089
  p = p - 1; begin
@@ -2268,8 +2094,8 @@ p = p - 1; begin
2268
2094
  end
2269
2095
  end
2270
2096
  end
2271
- when 50 then
2272
- # line 656 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2097
+ when 51 then
2098
+ # line 617 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2273
2099
  begin
2274
2100
  te = p
2275
2101
  p = p - 1; begin
@@ -2280,8 +2106,8 @@ p = p - 1; begin
2280
2106
  end
2281
2107
  end
2282
2108
  end
2283
- when 52 then
2284
- # line 664 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2109
+ when 53 then
2110
+ # line 625 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2285
2111
  begin
2286
2112
  te = p
2287
2113
  p = p - 1; begin
@@ -2292,31 +2118,39 @@ p = p - 1; begin
2292
2118
  end
2293
2119
  end
2294
2120
  end
2295
- when 59 then
2296
- # line 672 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2121
+ when 61 then
2122
+ # line 633 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2297
2123
  begin
2298
2124
  te = p
2299
2125
  p = p - 1; begin
2300
2126
  emit(:quantifier, :interval, *text(data, ts, te))
2301
2127
  end
2302
2128
  end
2303
- when 56 then
2304
- # line 678 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2129
+ when 60 then
2130
+ # line 638 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2131
+ begin
2132
+ te = p
2133
+ p = p - 1; begin
2134
+ append_literal(data, ts, te)
2135
+ end
2136
+ end
2137
+ when 57 then
2138
+ # line 644 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2305
2139
  begin
2306
2140
  te = p
2307
2141
  p = p - 1; begin
2308
2142
  begin
2309
2143
  stack[top] = cs
2310
2144
  top+= 1
2311
- cs = 138
2145
+ cs = 139
2312
2146
  _goto_level = _again
2313
2147
  next
2314
2148
  end
2315
2149
 
2316
2150
  end
2317
2151
  end
2318
- when 47 then
2319
- # line 690 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2152
+ when 45 then
2153
+ # line 656 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2320
2154
  begin
2321
2155
  te = p
2322
2156
  p = p - 1; begin
@@ -2327,8 +2161,8 @@ p = p - 1; begin
2327
2161
  end
2328
2162
  end
2329
2163
  end
2330
- when 46 then
2331
- # line 705 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2164
+ when 44 then
2165
+ # line 671 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2332
2166
  begin
2333
2167
  te = p
2334
2168
  p = p - 1; begin
@@ -2336,23 +2170,34 @@ p = p - 1; begin
2336
2170
  end
2337
2171
  end
2338
2172
  when 5 then
2339
- # line 547 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2173
+ # line 472 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2340
2174
  begin
2341
2175
  begin p = ((te))-1; end
2342
2176
  begin
2343
2177
  text = text(data, ts, te).first
2344
- emit(:group, :capture, text, ts, te)
2178
+ if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2179
+ raise InvalidGroupOption.new($1 || "-#{$2}", text)
2180
+ end
2181
+ emit_options(text, ts, te)
2345
2182
  end
2346
2183
  end
2347
2184
  when 12 then
2348
- # line 678 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2185
+ # line 638 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2186
+ begin
2187
+ begin p = ((te))-1; end
2188
+ begin
2189
+ append_literal(data, ts, te)
2190
+ end
2191
+ end
2192
+ when 10 then
2193
+ # line 644 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2349
2194
  begin
2350
2195
  begin p = ((te))-1; end
2351
2196
  begin
2352
2197
  begin
2353
2198
  stack[top] = cs
2354
2199
  top+= 1
2355
- cs = 138
2200
+ cs = 139
2356
2201
  _goto_level = _again
2357
2202
  next
2358
2203
  end
@@ -2360,7 +2205,7 @@ p = p - 1; begin
2360
2205
  end
2361
2206
  end
2362
2207
  when 3 then
2363
- # line 705 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2208
+ # line 671 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2364
2209
  begin
2365
2210
  begin p = ((te))-1; end
2366
2211
  begin
@@ -2378,69 +2223,65 @@ p = p - 1; begin
2378
2223
  next
2379
2224
  end
2380
2225
  end
2381
- when 54 then
2226
+ when 56 then
2382
2227
  begin begin p = ((te))-1; end
2383
2228
 
2384
2229
  append_literal(data, ts, te)
2385
2230
  end
2386
2231
  end
2387
2232
  end
2388
- when 71 then
2389
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2233
+ when 74 then
2234
+ # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2390
2235
  begin
2391
2236
 
2392
2237
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2393
2238
  raise PrematureEndError.new( text )
2394
2239
  end
2395
- # line 210 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2240
+ # line 211 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2396
2241
  begin
2397
2242
  te = p
2398
2243
  p = p - 1; begin
2399
- set_depth += 1
2400
-
2401
2244
  emit(:set, :open, *text(data, ts, te))
2402
2245
  begin
2403
2246
  stack[top] = cs
2404
2247
  top+= 1
2405
- cs = 130
2248
+ cs = 131
2406
2249
  _goto_level = _again
2407
2250
  next
2408
2251
  end
2409
2252
 
2410
2253
  end
2411
2254
  end
2412
- when 21 then
2413
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2255
+ when 19 then
2256
+ # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2414
2257
  begin
2415
2258
 
2416
2259
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2417
2260
  raise PrematureEndError.new( text )
2418
2261
  end
2419
- # line 210 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2262
+ # line 211 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2420
2263
  begin
2421
2264
  begin p = ((te))-1; end
2422
2265
  begin
2423
- set_depth += 1
2424
-
2425
2266
  emit(:set, :open, *text(data, ts, te))
2426
2267
  begin
2427
2268
  stack[top] = cs
2428
2269
  top+= 1
2429
- cs = 130
2270
+ cs = 131
2430
2271
  _goto_level = _again
2431
2272
  next
2432
2273
  end
2433
2274
 
2434
2275
  end
2435
2276
  end
2436
- when 90 then
2437
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2277
+ when 93 then
2278
+ # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2438
2279
  begin
2439
2280
 
2440
2281
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2441
2282
  raise PrematureEndError.new( text )
2442
2283
  end
2443
- # line 330 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2284
+ # line 329 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2444
2285
  begin
2445
2286
  te = p
2446
2287
  p = p - 1; begin
@@ -2454,28 +2295,18 @@ p = p - 1; begin
2454
2295
 
2455
2296
  end
2456
2297
  end
2457
- when 86 then
2458
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2298
+ when 89 then
2299
+ # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2459
2300
  begin
2460
2301
 
2461
2302
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2462
2303
  raise PrematureEndError.new( text )
2463
2304
  end
2464
- # line 339 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2305
+ # line 338 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2465
2306
  begin
2466
2307
  te = p
2467
2308
  p = p - 1; begin
2468
- if data[te]
2469
- c = data[te].chr
2470
- if c =~ /[\x00-\x7F]/
2471
- emit(:escape, :control, copy(data, ts-1..te), ts-1, te+1)
2472
- p += 1
2473
- else
2474
- raise InvalidSequenceError.new("control sequence")
2475
- end
2476
- else
2477
- raise PrematureEndError.new("control sequence")
2478
- end
2309
+ emit_meta_control_sequence(data, ts, te, :control)
2479
2310
  begin
2480
2311
  top -= 1
2481
2312
  cs = stack[top]
@@ -2485,28 +2316,18 @@ p = p - 1; begin
2485
2316
 
2486
2317
  end
2487
2318
  end
2488
- when 88 then
2489
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2319
+ when 91 then
2320
+ # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2490
2321
  begin
2491
2322
 
2492
2323
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2493
2324
  raise PrematureEndError.new( text )
2494
2325
  end
2495
- # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2326
+ # line 343 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2496
2327
  begin
2497
2328
  te = p
2498
2329
  p = p - 1; begin
2499
- if data[te]
2500
- c = data[te].chr
2501
- if c =~ /[\x00-\x7F]/
2502
- emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
2503
- p += 1
2504
- else
2505
- raise InvalidSequenceError.new("meta sequence")
2506
- end
2507
- else
2508
- raise PrematureEndError.new("meta sequence")
2509
- end
2330
+ emit_meta_control_sequence(data, ts, te, :meta_sequence)
2510
2331
  begin
2511
2332
  top -= 1
2512
2333
  cs = stack[top]
@@ -2516,28 +2337,18 @@ p = p - 1; begin
2516
2337
 
2517
2338
  end
2518
2339
  end
2519
- when 27 then
2520
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2340
+ when 26 then
2341
+ # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2521
2342
  begin
2522
2343
 
2523
2344
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2524
2345
  raise PrematureEndError.new( text )
2525
2346
  end
2526
- # line 339 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2347
+ # line 338 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2527
2348
  begin
2528
2349
  begin p = ((te))-1; end
2529
2350
  begin
2530
- if data[te]
2531
- c = data[te].chr
2532
- if c =~ /[\x00-\x7F]/
2533
- emit(:escape, :control, copy(data, ts-1..te), ts-1, te+1)
2534
- p += 1
2535
- else
2536
- raise InvalidSequenceError.new("control sequence")
2537
- end
2538
- else
2539
- raise PrematureEndError.new("control sequence")
2540
- end
2351
+ emit_meta_control_sequence(data, ts, te, :control)
2541
2352
  begin
2542
2353
  top -= 1
2543
2354
  cs = stack[top]
@@ -2547,28 +2358,18 @@ p = p - 1; begin
2547
2358
 
2548
2359
  end
2549
2360
  end
2550
- when 30 then
2551
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2361
+ when 28 then
2362
+ # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2552
2363
  begin
2553
2364
 
2554
2365
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2555
2366
  raise PrematureEndError.new( text )
2556
2367
  end
2557
- # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2368
+ # line 343 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2558
2369
  begin
2559
2370
  begin p = ((te))-1; end
2560
2371
  begin
2561
- if data[te]
2562
- c = data[te].chr
2563
- if c =~ /[\x00-\x7F]/
2564
- emit(:escape, :meta_sequence, copy(data, ts-1..te), ts-1, te+1)
2565
- p += 1
2566
- else
2567
- raise InvalidSequenceError.new("meta sequence")
2568
- end
2569
- else
2570
- raise PrematureEndError.new("meta sequence")
2571
- end
2372
+ emit_meta_control_sequence(data, ts, te, :meta_sequence)
2572
2373
  begin
2573
2374
  top -= 1
2574
2375
  cs = stack[top]
@@ -2578,14 +2379,14 @@ p = p - 1; begin
2578
2379
 
2579
2380
  end
2580
2381
  end
2581
- when 34 then
2582
- # line 136 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2382
+ when 30 then
2383
+ # line 143 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2583
2384
  begin
2584
2385
 
2585
2386
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2586
- raise InvalidSequenceError.new('sequence', text)
2387
+ validation_error(:sequence, 'sequence', text)
2587
2388
  end
2588
- # line 335 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2389
+ # line 334 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2589
2390
  begin
2590
2391
  te = p+1
2591
2392
  begin
@@ -2598,46 +2399,32 @@ te = p+1
2598
2399
 
2599
2400
  end
2600
2401
  end
2601
- when 49 then
2602
- # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2603
- begin
2604
- self.group_depth = group_depth - 1; in_group = group_depth > 0 ? true : false end
2605
- # line 142 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2606
- begin
2607
- self.group_depth = group_depth + 1; in_group = true end
2608
- when 11 then
2609
- # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2402
+ when 7 then
2403
+ # line 150 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2610
2404
  begin
2611
- self.group_depth = group_depth - 1; in_group = group_depth > 0 ? true : false end
2612
- # line 483 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2405
+ self.group_depth = group_depth - 1 end
2406
+ # line 457 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2613
2407
  begin
2614
2408
  te = p+1
2615
2409
  begin
2616
2410
  emit(:group, :comment, *text(data, ts, te))
2617
2411
  end
2618
2412
  end
2619
- when 41 then
2620
- # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2413
+ when 38 then
2414
+ # line 150 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2621
2415
  begin
2622
- self.group_depth = group_depth - 1; in_group = group_depth > 0 ? true : false end
2623
- # line 552 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2416
+ self.group_depth = group_depth - 1 end
2417
+ # line 526 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2624
2418
  begin
2625
2419
  te = p+1
2626
2420
  begin
2627
- if in_conditional and conditional_stack.last and
2628
- conditional_stack.last[1] == (group_depth + 1)
2629
-
2630
- emit(:conditional, :close, *text(data, ts, te))
2421
+ if conditional_stack.last == group_depth + 1
2631
2422
  conditional_stack.pop
2632
-
2633
- if conditional_stack.length == 0
2634
- in_conditional = false
2635
- end
2423
+ emit(:conditional, :close, *text(data, ts, te))
2636
2424
  else
2637
- if spacing_stack.length > 1 and
2638
- spacing_stack.last[:depth] == (group_depth + 1)
2425
+ if spacing_stack.length > 1 &&
2426
+ spacing_stack.last[:depth] == group_depth + 1
2639
2427
  spacing_stack.pop
2640
-
2641
2428
  self.free_spacing = spacing_stack.last[:free_spacing]
2642
2429
  end
2643
2430
 
@@ -2646,27 +2433,143 @@ te = p+1
2646
2433
  end
2647
2434
  end
2648
2435
  when 40 then
2436
+ # line 151 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2437
+ begin
2438
+ self.set_depth = set_depth + 1 end
2439
+ # line 432 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2440
+ begin
2441
+ te = p+1
2442
+ begin
2443
+ emit(:set, :open, *text(data, ts, te))
2444
+ begin
2445
+ stack[top] = cs
2446
+ top+= 1
2447
+ cs = 131
2448
+ _goto_level = _again
2449
+ next
2450
+ end
2451
+
2452
+ end
2453
+ end
2454
+ when 68 then
2455
+ # line 152 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2456
+ begin
2457
+ self.set_depth = set_depth - 1 end
2458
+ # line 158 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2459
+ begin
2460
+ te = p+1
2461
+ begin
2462
+ emit(:set, :close, *text(data, ts, te))
2463
+ if in_set?
2464
+ begin
2465
+ top -= 1
2466
+ cs = stack[top]
2467
+ _goto_level = _again
2468
+ next
2469
+ end
2470
+
2471
+ else
2472
+ begin
2473
+ cs = 111
2474
+ _goto_level = _again
2475
+ next
2476
+ end
2477
+
2478
+ end
2479
+ end
2480
+ end
2481
+ when 73 then
2482
+ # line 152 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2483
+ begin
2484
+ self.set_depth = set_depth - 1 end
2485
+ # line 167 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2486
+ begin
2487
+ te = p+1
2488
+ begin # special case, emits two tokens
2489
+ emit(:literal, :literal, copy(data, ts..te-2), ts, te - 1)
2490
+ emit(:set, :close, copy(data, ts+1..te-1), ts + 1, te)
2491
+ if in_set?
2492
+ begin
2493
+ top -= 1
2494
+ cs = stack[top]
2495
+ _goto_level = _again
2496
+ next
2497
+ end
2498
+
2499
+ else
2500
+ begin
2501
+ cs = 111
2502
+ _goto_level = _again
2503
+ next
2504
+ end
2505
+
2506
+ end
2507
+ end
2508
+ end
2509
+ when 22 then
2510
+ # line 152 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2511
+ begin
2512
+ self.set_depth = set_depth - 1 end
2513
+ # line 216 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2514
+ begin
2515
+ te = p+1
2516
+ begin
2517
+ text = text(data, ts, te).first
2518
+
2519
+ type = :posixclass
2520
+ class_name = text[2..-3]
2521
+ if class_name[0].chr == '^'
2522
+ class_name = class_name[1..-1]
2523
+ type = :nonposixclass
2524
+ end
2525
+
2526
+ emit(type, class_name.to_sym, text, ts, te)
2527
+ end
2528
+ end
2529
+ when 21 then
2530
+ # line 152 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2531
+ begin
2532
+ self.set_depth = set_depth - 1 end
2533
+ # line 229 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2534
+ begin
2535
+ te = p+1
2536
+ begin
2537
+ emit(:set, :collation, *text(data, ts, te))
2538
+ end
2539
+ end
2540
+ when 23 then
2541
+ # line 152 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2542
+ begin
2543
+ self.set_depth = set_depth - 1 end
2544
+ # line 233 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2545
+ begin
2546
+ te = p+1
2547
+ begin
2548
+ emit(:set, :equivalent, *text(data, ts, te))
2549
+ end
2550
+ end
2551
+ when 66 then
2649
2552
  # line 1 "NONE"
2650
2553
  begin
2651
2554
  te = p+1
2652
2555
  end
2653
- # line 142 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2556
+ # line 151 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2654
2557
  begin
2655
- self.group_depth = group_depth + 1; in_group = true end
2656
- when 78 then
2558
+ self.set_depth = set_depth + 1 end
2559
+ when 81 then
2657
2560
  # line 1 "NONE"
2658
2561
  begin
2659
2562
  te = p+1
2660
2563
  end
2661
- # line 272 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2564
+ # line 271 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2662
2565
  begin
2663
2566
  act = 18; end
2664
- when 77 then
2567
+ when 80 then
2665
2568
  # line 1 "NONE"
2666
2569
  begin
2667
2570
  te = p+1
2668
2571
  end
2669
- # line 278 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2572
+ # line 277 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2670
2573
  begin
2671
2574
  act = 19; end
2672
2575
  when 2 then
@@ -2674,20 +2577,31 @@ act = 19; end
2674
2577
  begin
2675
2578
  te = p+1
2676
2579
  end
2677
- # line 705 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2580
+ # line 671 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2581
+ begin
2582
+ act = 56; end
2583
+ when 47 then
2584
+ # line 1 "NONE"
2585
+ begin
2586
+ te = p+1
2587
+ end
2588
+ # line 150 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2678
2589
  begin
2679
- act = 54; end
2680
- # line 2680 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2590
+ self.group_depth = group_depth - 1 end
2591
+ # line 149 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2592
+ begin
2593
+ self.group_depth = group_depth + 1 end
2594
+ # line 2594 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
2681
2595
  end
2682
2596
  end
2683
2597
  end
2684
2598
  if _goto_level <= _again
2685
2599
  case _re_scanner_to_state_actions[cs]
2686
- when 61 then
2600
+ when 63 then
2687
2601
  # line 1 "NONE"
2688
2602
  begin
2689
2603
  ts = nil; end
2690
- when 37 then
2604
+ when 33 then
2691
2605
  # line 1 "NONE"
2692
2606
  begin
2693
2607
  ts = nil; end
@@ -2695,7 +2609,7 @@ ts = nil; end
2695
2609
  begin
2696
2610
  act = 0
2697
2611
  end
2698
- # line 2698 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2612
+ # line 2612 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
2699
2613
  end
2700
2614
 
2701
2615
  if cs == 0
@@ -2716,20 +2630,20 @@ act = 0
2716
2630
  next;
2717
2631
  end
2718
2632
  case _re_scanner_eof_actions[cs]
2719
- when 15 then
2720
- # line 8 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/property.rl"
2633
+ when 13 then
2634
+ # line 8 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/property.rl"
2721
2635
  begin
2722
2636
 
2723
2637
  raise PrematureEndError.new('unicode property')
2724
2638
  end
2725
- when 14 then
2726
- # line 130 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2639
+ when 24 then
2640
+ # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2727
2641
  begin
2728
2642
 
2729
2643
  text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2730
2644
  raise PrematureEndError.new( text )
2731
2645
  end
2732
- # line 2732 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2646
+ # line 2646 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
2733
2647
  end
2734
2648
  end
2735
2649
 
@@ -2740,7 +2654,7 @@ act = 0
2740
2654
  end
2741
2655
  end
2742
2656
 
2743
- # line 810 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2657
+ # line 770 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2744
2658
 
2745
2659
  # to avoid "warning: assigned but unused variable - testEof"
2746
2660
  testEof = testEof
@@ -2751,9 +2665,9 @@ end
2751
2665
  end
2752
2666
 
2753
2667
  raise PrematureEndError.new("(missing group closing paranthesis) "+
2754
- "[#{in_group}:#{group_depth}]") if in_group
2668
+ "[#{group_depth}]") if in_group?
2755
2669
  raise PrematureEndError.new("(missing set closing bracket) "+
2756
- "[#{in_set}:#{set_depth}]") if in_set
2670
+ "[#{set_depth}]") if in_set?
2757
2671
 
2758
2672
  # when the entire expression is a literal run
2759
2673
  emit_literal if literal
@@ -2788,62 +2702,15 @@ end
2788
2702
 
2789
2703
  private
2790
2704
 
2791
- attr_accessor :tokens, :literal, :block,
2792
- :in_group, :group_depth,
2793
- :free_spacing, :spacing_stack
2794
-
2795
- # Ragel's regex-based scan of the group options introduced a lot of
2796
- # ambiguity, so we just ask it to find the beginning of what looks
2797
- # like an options run and handle the rest in here.
2798
- def scan_options(p, data, ts, te)
2799
- text = text(data, ts, te).first
2800
-
2801
- options_char, options_length = true, 0
2802
-
2803
- # Copy while we have option characters. There is no maximum length,
2804
- # as ruby allows things like '(?xxxxxxxxx-xxxxxxxxxxxxx:abc)'.
2805
- negative_options = false
2806
- while options_char
2807
- if data[te + options_length]
2808
- c = data[te + options_length].chr
2809
-
2810
- if c =~ /[-mixdau]/
2811
- negative_options = true if c == '-'
2812
-
2813
- raise InvalidGroupOption.new(c, text) if negative_options and
2814
- c =~ /[dau]/
2815
-
2816
- text << c ; p += 1 ; options_length += 1
2817
- else
2818
- options_char = false
2819
- end
2820
- else
2821
- raise PrematureEndError.new("expression options `#{text}'")
2822
- end
2823
- end
2705
+ attr_accessor :tokens, :literal, :block, :free_spacing, :spacing_stack,
2706
+ :group_depth, :set_depth, :conditional_stack
2824
2707
 
2825
- if data[te + options_length]
2826
- c = data[te + options_length].chr
2827
-
2828
- if c == ':'
2829
- # Include the ':' in the options text
2830
- text << c ; p += 1 ; options_length += 1
2831
- emit_options(text, ts, te + options_length)
2832
-
2833
- elsif c == ')'
2834
- # Don't include the closing ')', let group_close handle it.
2835
- emit_options(text, ts, te + options_length)
2836
-
2837
- else
2838
- # Plain Regexp reports this as 'undefined group option'
2839
- raise ScannerError.new(
2840
- "Unexpected `#{c}' in options sequence, ':' or ')' expected")
2841
- end
2842
- else
2843
- raise PrematureEndError.new("expression options `#{text}'")
2844
- end
2708
+ def in_group?
2709
+ group_depth > 0
2710
+ end
2845
2711
 
2846
- p # return the new value of the data pointer
2712
+ def in_set?
2713
+ set_depth > 0
2847
2714
  end
2848
2715
 
2849
2716
  # Copy from ts to te from data as text
@@ -2879,32 +2746,39 @@ end
2879
2746
  def emit_options(text, ts, te)
2880
2747
  token = nil
2881
2748
 
2882
- if text =~ /\(\?([mixdau]*)-?([mix]*)(:)?/
2883
- positive, negative, group_local = $1, $2, $3
2749
+ # Ruby allows things like '(?-xxxx)' or '(?xx-xx--xx-:abc)'.
2750
+ text =~ /\(\?([mixdau]*)(-(?:[mix]*))*(:)?/
2751
+ positive, negative, group_local = $1, $2, $3
2884
2752
 
2885
- if positive.include?('x')
2886
- self.free_spacing = true
2887
- end
2753
+ if positive.include?('x')
2754
+ self.free_spacing = true
2755
+ end
2888
2756
 
2889
- # If the x appears in both, treat it like ruby does, the second cancels
2890
- # the first.
2891
- if negative.include?('x')
2892
- self.free_spacing = false
2893
- end
2757
+ # If the x appears in both, treat it like ruby does, the second cancels
2758
+ # the first.
2759
+ if negative && negative.include?('x')
2760
+ self.free_spacing = false
2761
+ end
2894
2762
 
2895
- if group_local
2896
- spacing_stack << {:free_spacing => free_spacing, :depth => group_depth}
2897
- token = :options
2898
- else
2899
- # switch for parent group level
2900
- spacing_stack.last[:free_spacing] = free_spacing
2901
- token = :options_switch
2902
- end
2763
+ if group_local
2764
+ spacing_stack << {:free_spacing => free_spacing, :depth => group_depth}
2765
+ token = :options
2766
+ else
2767
+ # switch for parent group level
2768
+ spacing_stack.last[:free_spacing] = free_spacing
2769
+ token = :options_switch
2903
2770
  end
2904
2771
 
2905
2772
  emit(:group, token, text, ts, te)
2906
2773
  end
2907
2774
 
2775
+ def emit_meta_control_sequence(data, ts, te, token)
2776
+ if data.last < 0x00 || data.last > 0x7F
2777
+ validation_error(:sequence, 'escape', token.to_s)
2778
+ end
2779
+ emit(:escape, token, *text(data, ts, te, 1))
2780
+ end
2781
+
2908
2782
  # Centralizes and unifies the handling of validation related
2909
2783
  # errors.
2910
2784
  def validation_error(type, what, reason)
@@ -2915,21 +2789,8 @@ end
2915
2789
  error = InvalidBackrefError.new(what, reason)
2916
2790
  when :sequence
2917
2791
  error = InvalidSequenceError.new(what, reason)
2918
- else
2919
- error = ValidationError.new('expression')
2920
2792
  end
2921
2793
 
2922
2794
  raise error # unless @@config.validation_ignore
2923
2795
  end
2924
-
2925
- # Used for references with an empty name or number
2926
- def empty_backref_error(type, what)
2927
- validation_error(:backref, what, 'ref ID is empty')
2928
- end
2929
-
2930
- # Used for named expressions with an empty name
2931
- def empty_name_error(type, what)
2932
- validation_error(type, what, 'name is empty')
2933
- end
2934
-
2935
2796
  end # module Regexp::Scanner