regexp_parser 1.5.0 → 1.8.0

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