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