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