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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +59 -0
- data/Gemfile +3 -3
- data/README.md +14 -6
- data/Rakefile +3 -4
- data/lib/regexp_parser/expression.rb +6 -43
- data/lib/regexp_parser/expression/classes/conditional.rb +3 -2
- data/lib/regexp_parser/expression/classes/escape.rb +0 -4
- data/lib/regexp_parser/expression/methods/match.rb +13 -0
- data/lib/regexp_parser/expression/methods/match_length.rb +1 -1
- data/lib/regexp_parser/expression/methods/options.rb +35 -0
- data/lib/regexp_parser/expression/methods/strfregexp.rb +0 -1
- data/lib/regexp_parser/expression/methods/tests.rb +6 -15
- data/lib/regexp_parser/expression/methods/traverse.rb +3 -1
- data/lib/regexp_parser/expression/sequence.rb +3 -2
- data/lib/regexp_parser/expression/sequence_operation.rb +2 -6
- data/lib/regexp_parser/lexer.rb +4 -25
- data/lib/regexp_parser/parser.rb +40 -33
- data/lib/regexp_parser/scanner.rb +1208 -1353
- data/lib/regexp_parser/scanner/char_type.rl +0 -3
- data/lib/regexp_parser/scanner/properties/long.yml +15 -1
- data/lib/regexp_parser/scanner/properties/short.yml +5 -0
- data/lib/regexp_parser/scanner/scanner.rl +116 -202
- data/lib/regexp_parser/syntax/tokens/unicode_property.rb +30 -0
- data/lib/regexp_parser/syntax/versions/2.6.2.rb +10 -0
- data/lib/regexp_parser/syntax/versions/2.6.3.rb +10 -0
- data/lib/regexp_parser/version.rb +1 -1
- data/spec/expression/base_spec.rb +14 -0
- data/spec/expression/methods/match_length_spec.rb +20 -0
- data/spec/expression/methods/match_spec.rb +25 -0
- data/spec/expression/methods/tests_spec.rb +2 -0
- data/spec/expression/methods/traverse_spec.rb +21 -0
- data/spec/expression/options_spec.rb +128 -0
- data/spec/expression/root_spec.rb +9 -0
- data/spec/expression/sequence_spec.rb +9 -0
- data/spec/lexer/conditionals_spec.rb +49 -119
- data/spec/lexer/delimiters_spec.rb +68 -0
- data/spec/lexer/escapes_spec.rb +8 -32
- data/spec/lexer/keep_spec.rb +5 -17
- data/spec/lexer/literals_spec.rb +73 -110
- data/spec/lexer/nesting_spec.rb +86 -117
- data/spec/lexer/refcalls_spec.rb +51 -50
- data/spec/parser/all_spec.rb +13 -1
- data/spec/parser/anchors_spec.rb +9 -23
- data/spec/parser/conditionals_spec.rb +9 -9
- data/spec/parser/errors_spec.rb +22 -43
- data/spec/parser/escapes_spec.rb +33 -44
- data/spec/parser/free_space_spec.rb +25 -4
- data/spec/parser/groups_spec.rb +98 -257
- data/spec/parser/keep_spec.rb +2 -15
- data/spec/parser/options_spec.rb +28 -0
- data/spec/parser/posix_classes_spec.rb +5 -24
- data/spec/parser/properties_spec.rb +42 -54
- data/spec/parser/quantifiers_spec.rb +42 -283
- data/spec/parser/refcalls_spec.rb +60 -185
- data/spec/parser/set/intersections_spec.rb +17 -17
- data/spec/parser/set/ranges_spec.rb +17 -17
- data/spec/parser/sets_spec.rb +5 -5
- data/spec/parser/types_spec.rb +11 -36
- data/spec/scanner/anchors_spec.rb +13 -28
- data/spec/scanner/conditionals_spec.rb +121 -173
- data/spec/scanner/delimiters_spec.rb +52 -0
- data/spec/scanner/errors_spec.rb +64 -87
- data/spec/scanner/escapes_spec.rb +53 -50
- data/spec/scanner/free_space_spec.rb +102 -165
- data/spec/scanner/groups_spec.rb +45 -64
- data/spec/scanner/keep_spec.rb +5 -28
- data/spec/scanner/literals_spec.rb +45 -81
- data/spec/scanner/meta_spec.rb +13 -33
- data/spec/scanner/options_spec.rb +36 -0
- data/spec/scanner/properties_spec.rb +43 -286
- data/spec/scanner/quantifiers_spec.rb +13 -28
- data/spec/scanner/refcalls_spec.rb +32 -48
- data/spec/scanner/sets_spec.rb +88 -102
- data/spec/scanner/types_spec.rb +10 -25
- data/spec/spec_helper.rb +1 -0
- data/spec/support/shared_examples.rb +77 -0
- data/spec/syntax/syntax_spec.rb +4 -0
- data/spec/syntax/versions/1.8.6_spec.rb +12 -33
- data/spec/syntax/versions/1.9.1_spec.rb +5 -18
- data/spec/syntax/versions/1.9.3_spec.rb +4 -17
- data/spec/syntax/versions/2.0.0_spec.rb +8 -23
- data/spec/syntax/versions/2.2.0_spec.rb +4 -17
- data/spec/syntax/versions/aliases_spec.rb +27 -109
- metadata +28 -10
- data/spec/scanner/scripts_spec.rb +0 -49
- data/spec/scanner/unicode_blocks_spec.rb +0 -28
data/lib/regexp_parser/parser.rb
CHANGED
@@ -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(
|
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
|
58
|
-
|
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
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
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.
|
224
|
+
conditional_nesting.last.add_sequence(active_opts)
|
219
225
|
when :separator
|
220
|
-
conditional_nesting.last.
|
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
|
-
|
509
|
-
|
510
|
-
|
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
|
515
|
-
new_active_opts.delete(flag
|
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
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
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
|
-
|
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
|
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
|
-
|
79
|
-
|
80
|
-
|
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.
|
88
|
+
self.set_depth = 0
|
94
89
|
self.group_depth = 0
|
95
|
-
self.
|
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
|
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,
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
39, 57,
|
117
|
-
|
118
|
-
57,
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
-128, -65,
|
123
|
-
45, 122,
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
112, 112,
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
45, 45,
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
9, 125,
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
33, 126,
|
156
|
-
43, 63, 43, 63,
|
157
|
-
|
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,
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
122,
|
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
|
-
|
176
|
-
19,
|
177
|
-
|
178
|
-
64,
|
179
|
-
|
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,
|
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,
|
185
|
-
1, 1, 1, 1, 1,
|
186
|
-
|
187
|
-
117,
|
188
|
-
|
189
|
-
94,
|
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,
|
192
|
-
55, 22, 84, 9,
|
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,
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
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
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
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,
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
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,
|
322
|
-
|
323
|
-
|
324
|
-
20, 20, 20, 20, 20, 20,
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
20,
|
339
|
-
|
340
|
-
20, 20,
|
341
|
-
|
342
|
-
|
343
|
-
20,
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
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,
|
351
|
-
|
352
|
-
|
353
|
-
|
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
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
33, 33,
|
366
|
-
33, 33, 33, 33, 33, 33,
|
367
|
-
33, 33,
|
368
|
-
|
369
|
-
|
370
|
-
|
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,
|
389
|
-
|
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,
|
399
|
-
|
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,
|
433
|
-
|
434
|
-
|
435
|
-
|
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,
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
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
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
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
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
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,
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
133, 133, 133, 133, 133, 133, 133,
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
148,
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
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
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
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,
|
884
|
-
|
885
|
-
|
886
|
-
226, 226, 226,
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
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
|
-
|
916
|
-
7,
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
130, 130,
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
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
|
-
|
953
|
-
|
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,
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
0,
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
52, 53, 54, 55, 56, 57, 58,
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
0,
|
978
|
-
|
979
|
-
|
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
|
-
|
1004
|
-
0,
|
1005
|
-
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
|
-
|
1030
|
-
0,
|
1031
|
-
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,
|
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
|
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
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1078
|
-
0, 0,
|
1079
|
-
|
1080
|
-
155, 155,
|
1081
|
-
0, 0, 0,
|
1082
|
-
|
1083
|
-
219,
|
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 =
|
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 =
|
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 =
|
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 =
|
1131
|
+
self.re_scanner_en_main = 110;
|
1127
1132
|
|
1128
1133
|
|
1129
|
-
# line
|
1134
|
+
# line 763 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
|
1130
1135
|
|
1131
|
-
# line
|
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
|
1147
|
+
# line 764 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
|
1143
1148
|
|
1144
|
-
# line
|
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
|
1172
|
+
when 32 then
|
1168
1173
|
# line 1 "NONE"
|
1169
1174
|
begin
|
1170
1175
|
ts = p
|
1171
1176
|
end
|
1172
|
-
# line
|
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
|
1192
|
-
# line
|
1196
|
+
when 34 then
|
1197
|
+
# line 149 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
|
1193
1198
|
begin
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
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
|
1202
|
-
when
|
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
|
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
|
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
|
1261
|
-
# line
|
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
|
1327
|
-
# line
|
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
|
1340
|
-
# line
|
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
|
1348
|
-
# line
|
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
|
1363
|
-
# line
|
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
|
1404
|
-
# line
|
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
|
1414
|
-
# line
|
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
|
1428
|
-
# line
|
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
|
1446
|
-
# line
|
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
|
1456
|
-
# line
|
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
|
1470
|
-
# line
|
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
|
1488
|
-
# line
|
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
|
1498
|
-
# line
|
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
|
1513
|
-
# line
|
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
|
1530
|
-
# line
|
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
|
1546
|
-
# line
|
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
|
1561
|
-
# line
|
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
|
1592
|
-
# line
|
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
|
1618
|
-
# line
|
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
|
1638
|
-
# line
|
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
|
1653
|
-
# line
|
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
|
-
|
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
|
1678
|
-
# line
|
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
|
-
|
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
|
1703
|
-
# line
|
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 :
|
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
|
1720
|
-
# line
|
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 :
|
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
|
1737
|
-
# line
|
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
|
1752
|
-
# line
|
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
|
1767
|
-
# line
|
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
|
1782
|
-
# line
|
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
|
-
|
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
|
1807
|
-
# line
|
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
|
-
|
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
|
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
|
1913
|
-
# line
|
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
|
1923
|
-
# line
|
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 =
|
1746
|
+
cs = 110
|
1932
1747
|
_goto_level = _again
|
1933
1748
|
next
|
1934
1749
|
end
|
1935
1750
|
|
1936
1751
|
end
|
1937
1752
|
end
|
1938
|
-
when
|
1939
|
-
# line
|
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 =
|
1762
|
+
cs = 110
|
1948
1763
|
_goto_level = _again
|
1949
1764
|
next
|
1950
1765
|
end
|
1951
1766
|
|
1952
1767
|
end
|
1953
1768
|
end
|
1954
|
-
when
|
1955
|
-
# line
|
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 =
|
1778
|
+
cs = 110
|
1964
1779
|
_goto_level = _again
|
1965
1780
|
next
|
1966
1781
|
end
|
1967
1782
|
|
1968
1783
|
end
|
1969
1784
|
end
|
1970
|
-
when
|
1971
|
-
# line
|
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
|
1979
|
-
# line
|
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
|
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
|
1992
|
-
# line
|
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
|
2000
|
-
# line
|
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
|
2008
|
-
# line
|
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
|
2016
|
-
# line
|
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
|
2034
|
-
# line
|
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
|
-
|
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
|
2053
|
-
# line
|
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
|
-
|
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 =
|
1866
|
+
cs = 149
|
2069
1867
|
_goto_level = _again
|
2070
1868
|
next
|
2071
1869
|
end
|
2072
1870
|
|
2073
1871
|
end
|
2074
1872
|
end
|
2075
|
-
when
|
2076
|
-
# line
|
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
|
-
|
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
|
2084
|
-
# line
|
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
|
2097
|
-
# line
|
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 /^\(
|
2107
|
-
|
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 /^\(\?'
|
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
|
2123
|
-
# line
|
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])
|
2129
|
-
|
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
|
2195
|
-
# line
|
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
|
2207
|
-
# line
|
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
|
2219
|
-
# line
|
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
|
2231
|
-
# line
|
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
|
2239
|
-
# line
|
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
|
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
|
-
|
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
|
2260
|
-
# line
|
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
|
2272
|
-
# line
|
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
|
2284
|
-
# line
|
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
|
2296
|
-
# line
|
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
|
2304
|
-
# line
|
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
|
2319
|
-
# line
|
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
|
2331
|
-
# line
|
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
|
2339
|
-
# line
|
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
|
-
|
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
|
2348
|
-
# line
|
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
|
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
|
2389
|
-
# line
|
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
|
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
|
2413
|
-
# line
|
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
|
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
|
2437
|
-
# line
|
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
|
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
|
2458
|
-
# line
|
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
|
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
|
-
|
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
|
2489
|
-
# line
|
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
|
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
|
-
|
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
|
2520
|
-
# line
|
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
|
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
|
-
|
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
|
2551
|
-
# line
|
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
|
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
|
-
|
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
|
2582
|
-
# line
|
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
|
-
|
2369
|
+
validation_error(:sequence, 'sequence', text)
|
2587
2370
|
end
|
2588
|
-
# line
|
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
|
2602
|
-
# line
|
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
|
2612
|
-
# line
|
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
|
2620
|
-
# line
|
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
|
2623
|
-
# line
|
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
|
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
|
2638
|
-
|
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
|
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
|
2538
|
+
# line 151 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
|
2654
2539
|
begin
|
2655
|
-
self.
|
2656
|
-
when
|
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
|
2546
|
+
# line 271 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
|
2662
2547
|
begin
|
2663
2548
|
act = 18; end
|
2664
|
-
when
|
2549
|
+
when 80 then
|
2665
2550
|
# line 1 "NONE"
|
2666
2551
|
begin
|
2667
2552
|
te = p+1
|
2668
2553
|
end
|
2669
|
-
# line
|
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
|
2562
|
+
# line 671 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
|
2678
2563
|
begin
|
2679
|
-
act =
|
2680
|
-
|
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
|
2582
|
+
when 63 then
|
2687
2583
|
# line 1 "NONE"
|
2688
2584
|
begin
|
2689
2585
|
ts = nil; end
|
2690
|
-
when
|
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
|
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
|
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
|
2726
|
-
# line
|
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
|
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
|
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
|
-
"[#{
|
2650
|
+
"[#{group_depth}]") if in_group?
|
2755
2651
|
raise PrematureEndError.new("(missing set closing bracket) "+
|
2756
|
-
"[#{
|
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
|
-
:
|
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
|
-
|
2796
|
-
|
2797
|
-
|
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
|
-
|
2826
|
-
c = data[te + options_length].chr
|
2695
|
+
options = input_object.options if input_object.is_a?(::Regexp)
|
2827
2696
|
|
2828
|
-
|
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
|
-
|
2834
|
-
|
2835
|
-
emit_options(text, ts, te + options_length)
|
2699
|
+
options & Regexp::EXTENDED != 0
|
2700
|
+
end
|
2836
2701
|
|
2837
|
-
|
2838
|
-
|
2839
|
-
|
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
|
-
|
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
|
-
|
2883
|
-
|
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
|
-
|
2886
|
-
|
2887
|
-
|
2747
|
+
if positive.include?('x')
|
2748
|
+
self.free_spacing = true
|
2749
|
+
end
|
2888
2750
|
|
2889
|
-
|
2890
|
-
|
2891
|
-
|
2892
|
-
|
2893
|
-
|
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
|
-
|
2896
|
-
|
2897
|
-
|
2898
|
-
|
2899
|
-
|
2900
|
-
|
2901
|
-
|
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
|