yarp 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +36 -0
- data/CONTRIBUTING.md +4 -0
- data/{Makefile.in → Makefile} +3 -4
- data/README.md +1 -1
- data/config.yml +29 -7
- data/docs/build_system.md +4 -15
- data/docs/building.md +1 -5
- data/docs/encoding.md +1 -0
- data/docs/{extension.md → ruby_api.md} +6 -3
- data/docs/serialization.md +71 -24
- data/ext/yarp/api_node.c +38 -6
- data/ext/yarp/extconf.rb +15 -10
- data/ext/yarp/extension.c +2 -0
- data/ext/yarp/extension.h +1 -1
- data/include/yarp/ast.h +108 -104
- data/include/yarp/defines.h +0 -15
- data/include/yarp/enc/yp_encoding.h +1 -0
- data/include/yarp/util/yp_buffer.h +1 -0
- data/include/yarp/util/yp_string.h +5 -1
- data/include/yarp/version.h +2 -3
- data/include/yarp.h +4 -2
- data/lib/yarp/ffi.rb +211 -0
- data/lib/yarp/lex_compat.rb +16 -2
- data/lib/yarp/node.rb +169 -117
- data/lib/yarp/ripper_compat.rb +3 -3
- data/lib/yarp/serialize.rb +285 -92
- data/lib/yarp.rb +167 -2
- data/src/enc/yp_unicode.c +9 -0
- data/src/node.c +22 -0
- data/src/prettyprint.c +49 -30
- data/src/serialize.c +90 -17
- data/src/util/yp_string.c +8 -17
- data/src/yarp.c +181 -49
- data/yarp.gemspec +5 -5
- metadata +6 -6
- data/config.h.in +0 -25
- data/configure +0 -4487
data/lib/yarp/ripper_compat.rb
CHANGED
@@ -47,9 +47,9 @@ module YARP
|
|
47
47
|
Ripper::PARSER_EVENT_TABLE.each do |event, arity|
|
48
48
|
case event
|
49
49
|
when /_new\z/
|
50
|
-
|
50
|
+
alias_method :"on_#{event}", :_dispatch_event_new if arity == 0
|
51
51
|
when /_add\z/
|
52
|
-
|
52
|
+
alias_method :"on_#{event}", :_dispatch_event_push
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
@@ -168,7 +168,7 @@ module YARP
|
|
168
168
|
def _dispatch7(_, _, _, _, _, _, _); end
|
169
169
|
|
170
170
|
(Ripper::SCANNER_EVENT_TABLE.merge(Ripper::PARSER_EVENT_TABLE)).each do |event, arity|
|
171
|
-
|
171
|
+
alias_method :"on_#{event}", :"_dispatch#{arity}"
|
172
172
|
end
|
173
173
|
end
|
174
174
|
end
|
data/lib/yarp/serialize.rb
CHANGED
@@ -20,39 +20,63 @@ end
|
|
20
20
|
|
21
21
|
module YARP
|
22
22
|
module Serialize
|
23
|
+
MAJOR_VERSION = 0
|
24
|
+
MINOR_VERSION = 7
|
25
|
+
PATCH_VERSION = 0
|
26
|
+
|
23
27
|
def self.load(input, serialized)
|
24
|
-
|
25
|
-
|
28
|
+
Loader.new(Source.new(input), serialized).load
|
29
|
+
end
|
26
30
|
|
27
|
-
|
31
|
+
def self.load_tokens(source, serialized)
|
32
|
+
Loader.new(source, serialized).load_tokens
|
28
33
|
end
|
29
34
|
|
30
35
|
class Loader
|
31
36
|
attr_reader :encoding, :input, :serialized, :io
|
32
37
|
attr_reader :constant_pool_offset, :constant_pool, :source
|
33
38
|
|
34
|
-
def initialize(
|
39
|
+
def initialize(source, serialized)
|
35
40
|
@encoding = Encoding::UTF_8
|
36
41
|
|
37
|
-
@input =
|
42
|
+
@input = source.source.dup
|
38
43
|
@serialized = serialized
|
39
|
-
@io =
|
44
|
+
@io = StringIO.new(serialized)
|
45
|
+
@io.set_encoding(Encoding::BINARY)
|
40
46
|
|
41
47
|
@constant_pool_offset = nil
|
42
48
|
@constant_pool = nil
|
43
49
|
|
44
|
-
|
45
|
-
|
46
|
-
|
50
|
+
@source = source
|
51
|
+
end
|
52
|
+
|
53
|
+
def load_tokens
|
54
|
+
tokens = []
|
55
|
+
while type = TOKEN_TYPES.fetch(load_varint)
|
56
|
+
start = load_varint
|
57
|
+
length = load_varint
|
58
|
+
lex_state = load_varint
|
59
|
+
location = Location.new(@source, start, length)
|
60
|
+
tokens << [YARP::Token.new(type, location.slice, location), lex_state]
|
61
|
+
end
|
62
|
+
|
63
|
+
comments = load_varint.times.map { Comment.new(Comment::TYPES.fetch(load_varint), load_location) }
|
64
|
+
errors = load_varint.times.map { ParseError.new(load_string, load_location) }
|
65
|
+
warnings = load_varint.times.map { ParseWarning.new(load_string, load_location) }
|
66
|
+
|
67
|
+
raise "Expected to consume all bytes while deserializing" unless @io.eof?
|
68
|
+
|
69
|
+
YARP::ParseResult.new(tokens, comments, errors, warnings, @source)
|
47
70
|
end
|
48
71
|
|
49
72
|
def load
|
50
73
|
raise "Invalid serialization" if io.read(4) != "YARP"
|
51
|
-
raise "Invalid serialization" if io.read(3).unpack("C3") != [
|
74
|
+
raise "Invalid serialization" if io.read(3).unpack("C3") != [MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION]
|
52
75
|
|
53
76
|
@encoding = Encoding.find(io.read(load_varint))
|
54
77
|
@input = input.force_encoding(@encoding).freeze
|
55
78
|
|
79
|
+
comments = load_varint.times.map { Comment.new(Comment::TYPES.fetch(io.getbyte), load_location) }
|
56
80
|
errors = load_varint.times.map { ParseError.new(load_string, load_location) }
|
57
81
|
warnings = load_varint.times.map { ParseWarning.new(load_string, load_location) }
|
58
82
|
|
@@ -61,7 +85,7 @@ module YARP
|
|
61
85
|
|
62
86
|
ast = load_node
|
63
87
|
|
64
|
-
YARP::ParseResult.new(ast,
|
88
|
+
YARP::ParseResult.new(ast, comments, errors, warnings, @source)
|
65
89
|
end
|
66
90
|
|
67
91
|
private
|
@@ -219,171 +243,340 @@ module YARP
|
|
219
243
|
when 45 then
|
220
244
|
FindPatternNode.new(load_optional_node, load_node, Array.new(load_varint) { load_node }, load_node, load_optional_location, load_optional_location, location)
|
221
245
|
when 46 then
|
222
|
-
|
246
|
+
FlipFlopNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
|
223
247
|
when 47 then
|
224
|
-
|
248
|
+
FloatNode.new(location)
|
225
249
|
when 48 then
|
226
|
-
|
250
|
+
ForNode.new(load_node, load_node, load_optional_node, load_location, load_location, load_optional_location, load_location, location)
|
227
251
|
when 49 then
|
228
|
-
|
252
|
+
ForwardingArgumentsNode.new(location)
|
229
253
|
when 50 then
|
230
|
-
|
254
|
+
ForwardingParameterNode.new(location)
|
231
255
|
when 51 then
|
232
|
-
|
256
|
+
ForwardingSuperNode.new(load_optional_node, location)
|
233
257
|
when 52 then
|
234
|
-
|
258
|
+
GlobalVariableOperatorAndWriteNode.new(load_location, load_location, load_node, location)
|
235
259
|
when 53 then
|
236
|
-
|
260
|
+
GlobalVariableOperatorOrWriteNode.new(load_location, load_location, load_node, location)
|
237
261
|
when 54 then
|
238
|
-
|
262
|
+
GlobalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_constant, location)
|
239
263
|
when 55 then
|
240
|
-
|
264
|
+
GlobalVariableReadNode.new(location)
|
241
265
|
when 56 then
|
242
|
-
|
266
|
+
GlobalVariableWriteNode.new(load_location, load_optional_location, load_optional_node, location)
|
243
267
|
when 57 then
|
244
|
-
|
268
|
+
HashNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
|
245
269
|
when 58 then
|
246
|
-
|
270
|
+
HashPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_optional_location, load_optional_location, location)
|
247
271
|
when 59 then
|
248
|
-
|
272
|
+
IfNode.new(load_optional_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
|
249
273
|
when 60 then
|
250
|
-
|
274
|
+
ImaginaryNode.new(load_node, location)
|
251
275
|
when 61 then
|
252
|
-
|
276
|
+
InNode.new(load_node, load_optional_node, load_location, load_optional_location, location)
|
253
277
|
when 62 then
|
254
|
-
|
278
|
+
InstanceVariableOperatorAndWriteNode.new(load_location, load_location, load_node, location)
|
255
279
|
when 63 then
|
256
|
-
|
280
|
+
InstanceVariableOperatorOrWriteNode.new(load_location, load_location, load_node, location)
|
257
281
|
when 64 then
|
258
|
-
|
282
|
+
InstanceVariableOperatorWriteNode.new(load_location, load_location, load_node, load_constant, location)
|
259
283
|
when 65 then
|
260
|
-
|
284
|
+
InstanceVariableReadNode.new(location)
|
261
285
|
when 66 then
|
262
|
-
|
286
|
+
InstanceVariableWriteNode.new(load_location, load_optional_node, load_optional_location, location)
|
263
287
|
when 67 then
|
264
|
-
|
288
|
+
IntegerNode.new(location)
|
265
289
|
when 68 then
|
266
|
-
|
290
|
+
InterpolatedRegularExpressionNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
|
267
291
|
when 69 then
|
268
|
-
|
292
|
+
InterpolatedStringNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
|
269
293
|
when 70 then
|
270
|
-
|
294
|
+
InterpolatedSymbolNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
|
271
295
|
when 71 then
|
272
|
-
|
296
|
+
InterpolatedXStringNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
|
273
297
|
when 72 then
|
274
|
-
|
298
|
+
KeywordHashNode.new(Array.new(load_varint) { load_node }, location)
|
275
299
|
when 73 then
|
276
|
-
|
300
|
+
KeywordParameterNode.new(load_location, load_optional_node, location)
|
277
301
|
when 74 then
|
278
|
-
|
302
|
+
KeywordRestParameterNode.new(load_location, load_optional_location, location)
|
279
303
|
when 75 then
|
280
|
-
|
304
|
+
LambdaNode.new(Array.new(load_varint) { load_constant }, load_location, load_optional_node, load_optional_node, location)
|
281
305
|
when 76 then
|
282
|
-
|
306
|
+
LocalVariableOperatorAndWriteNode.new(load_location, load_location, load_node, load_constant, location)
|
283
307
|
when 77 then
|
284
|
-
|
308
|
+
LocalVariableOperatorOrWriteNode.new(load_location, load_location, load_node, load_constant, location)
|
285
309
|
when 78 then
|
286
|
-
|
310
|
+
LocalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_constant, load_constant, location)
|
287
311
|
when 79 then
|
288
|
-
|
312
|
+
LocalVariableReadNode.new(load_constant, load_varint, location)
|
289
313
|
when 80 then
|
290
|
-
|
314
|
+
LocalVariableWriteNode.new(load_constant, load_varint, load_optional_node, load_location, load_optional_location, location)
|
291
315
|
when 81 then
|
292
|
-
|
316
|
+
MatchPredicateNode.new(load_node, load_node, load_location, location)
|
293
317
|
when 82 then
|
294
|
-
|
318
|
+
MatchRequiredNode.new(load_node, load_node, load_location, location)
|
295
319
|
when 83 then
|
296
|
-
|
320
|
+
MissingNode.new(location)
|
297
321
|
when 84 then
|
298
|
-
|
322
|
+
ModuleNode.new(Array.new(load_varint) { load_constant }, load_location, load_node, load_optional_node, load_location, location)
|
299
323
|
when 85 then
|
300
|
-
|
324
|
+
MultiWriteNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_location, load_optional_location, location)
|
301
325
|
when 86 then
|
302
|
-
|
326
|
+
NextNode.new(load_optional_node, load_location, location)
|
303
327
|
when 87 then
|
304
|
-
|
328
|
+
NilNode.new(location)
|
305
329
|
when 88 then
|
306
|
-
|
330
|
+
NoKeywordsParameterNode.new(load_location, load_location, location)
|
307
331
|
when 89 then
|
308
|
-
|
332
|
+
NumberedReferenceReadNode.new(location)
|
309
333
|
when 90 then
|
310
|
-
|
334
|
+
OptionalParameterNode.new(load_constant, load_location, load_location, load_node, location)
|
311
335
|
when 91 then
|
312
|
-
|
336
|
+
OrNode.new(load_node, load_node, load_location, location)
|
313
337
|
when 92 then
|
314
|
-
|
338
|
+
ParametersNode.new(Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_optional_node, location)
|
315
339
|
when 93 then
|
316
|
-
|
340
|
+
ParenthesesNode.new(load_optional_node, load_location, load_location, location)
|
317
341
|
when 94 then
|
318
|
-
|
342
|
+
PinnedExpressionNode.new(load_node, load_location, load_location, load_location, location)
|
319
343
|
when 95 then
|
320
|
-
|
344
|
+
PinnedVariableNode.new(load_node, load_location, location)
|
321
345
|
when 96 then
|
322
|
-
|
346
|
+
PostExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
|
323
347
|
when 97 then
|
324
|
-
|
348
|
+
PreExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
|
325
349
|
when 98 then
|
326
|
-
|
350
|
+
ProgramNode.new(Array.new(load_varint) { load_constant }, load_node, location)
|
327
351
|
when 99 then
|
328
|
-
|
352
|
+
RangeNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
|
329
353
|
when 100 then
|
330
|
-
|
354
|
+
RationalNode.new(load_node, location)
|
331
355
|
when 101 then
|
332
|
-
|
356
|
+
RedoNode.new(location)
|
333
357
|
when 102 then
|
334
|
-
|
358
|
+
RegularExpressionNode.new(load_location, load_location, load_location, load_string, load_varint, location)
|
335
359
|
when 103 then
|
336
|
-
|
360
|
+
RequiredDestructuredParameterNode.new(Array.new(load_varint) { load_node }, load_location, load_location, location)
|
337
361
|
when 104 then
|
338
|
-
|
362
|
+
RequiredParameterNode.new(load_constant, location)
|
339
363
|
when 105 then
|
340
|
-
|
364
|
+
RescueModifierNode.new(load_node, load_location, load_node, location)
|
341
365
|
when 106 then
|
342
|
-
|
366
|
+
RescueNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
|
343
367
|
when 107 then
|
344
|
-
|
368
|
+
RestParameterNode.new(load_location, load_optional_location, location)
|
345
369
|
when 108 then
|
346
|
-
|
370
|
+
RetryNode.new(location)
|
347
371
|
when 109 then
|
348
|
-
|
372
|
+
ReturnNode.new(load_location, load_optional_node, location)
|
349
373
|
when 110 then
|
350
|
-
|
374
|
+
SelfNode.new(location)
|
351
375
|
when 111 then
|
352
|
-
|
376
|
+
SingletonClassNode.new(Array.new(load_varint) { load_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
|
353
377
|
when 112 then
|
354
|
-
|
378
|
+
SourceEncodingNode.new(location)
|
355
379
|
when 113 then
|
356
|
-
|
380
|
+
SourceFileNode.new(load_string, location)
|
357
381
|
when 114 then
|
358
|
-
|
382
|
+
SourceLineNode.new(location)
|
359
383
|
when 115 then
|
360
|
-
|
384
|
+
SplatNode.new(load_location, load_optional_node, location)
|
361
385
|
when 116 then
|
362
|
-
|
386
|
+
StatementsNode.new(Array.new(load_varint) { load_node }, location)
|
363
387
|
when 117 then
|
364
|
-
|
388
|
+
StringConcatNode.new(load_node, load_node, location)
|
365
389
|
when 118 then
|
366
|
-
|
390
|
+
StringNode.new(load_optional_location, load_location, load_optional_location, load_string, location)
|
367
391
|
when 119 then
|
368
|
-
|
392
|
+
SuperNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
|
369
393
|
when 120 then
|
370
|
-
|
394
|
+
SymbolNode.new(load_optional_location, load_location, load_optional_location, load_string, location)
|
371
395
|
when 121 then
|
372
|
-
|
396
|
+
TrueNode.new(location)
|
373
397
|
when 122 then
|
374
|
-
|
398
|
+
UndefNode.new(Array.new(load_varint) { load_node }, load_location, location)
|
375
399
|
when 123 then
|
376
|
-
|
400
|
+
UnlessNode.new(load_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
|
377
401
|
when 124 then
|
378
|
-
|
402
|
+
UntilNode.new(load_location, load_node, load_optional_node, load_varint, location)
|
379
403
|
when 125 then
|
380
|
-
|
404
|
+
WhenNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_node, location)
|
381
405
|
when 126 then
|
382
|
-
|
406
|
+
WhileNode.new(load_location, load_node, load_optional_node, load_varint, location)
|
383
407
|
when 127 then
|
408
|
+
XStringNode.new(load_location, load_location, load_location, load_string, location)
|
409
|
+
when 128 then
|
384
410
|
YieldNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, location)
|
385
411
|
end
|
386
412
|
end
|
387
413
|
end
|
414
|
+
|
415
|
+
TOKEN_TYPES = [
|
416
|
+
nil,
|
417
|
+
:EOF,
|
418
|
+
:MISSING,
|
419
|
+
:NOT_PROVIDED,
|
420
|
+
:AMPERSAND,
|
421
|
+
:AMPERSAND_AMPERSAND,
|
422
|
+
:AMPERSAND_AMPERSAND_EQUAL,
|
423
|
+
:AMPERSAND_DOT,
|
424
|
+
:AMPERSAND_EQUAL,
|
425
|
+
:BACKTICK,
|
426
|
+
:BACK_REFERENCE,
|
427
|
+
:BANG,
|
428
|
+
:BANG_EQUAL,
|
429
|
+
:BANG_TILDE,
|
430
|
+
:BRACE_LEFT,
|
431
|
+
:BRACE_RIGHT,
|
432
|
+
:BRACKET_LEFT,
|
433
|
+
:BRACKET_LEFT_ARRAY,
|
434
|
+
:BRACKET_LEFT_RIGHT,
|
435
|
+
:BRACKET_LEFT_RIGHT_EQUAL,
|
436
|
+
:BRACKET_RIGHT,
|
437
|
+
:CARET,
|
438
|
+
:CARET_EQUAL,
|
439
|
+
:CHARACTER_LITERAL,
|
440
|
+
:CLASS_VARIABLE,
|
441
|
+
:COLON,
|
442
|
+
:COLON_COLON,
|
443
|
+
:COMMA,
|
444
|
+
:COMMENT,
|
445
|
+
:CONSTANT,
|
446
|
+
:DOT,
|
447
|
+
:DOT_DOT,
|
448
|
+
:DOT_DOT_DOT,
|
449
|
+
:EMBDOC_BEGIN,
|
450
|
+
:EMBDOC_END,
|
451
|
+
:EMBDOC_LINE,
|
452
|
+
:EMBEXPR_BEGIN,
|
453
|
+
:EMBEXPR_END,
|
454
|
+
:EMBVAR,
|
455
|
+
:EQUAL,
|
456
|
+
:EQUAL_EQUAL,
|
457
|
+
:EQUAL_EQUAL_EQUAL,
|
458
|
+
:EQUAL_GREATER,
|
459
|
+
:EQUAL_TILDE,
|
460
|
+
:FLOAT,
|
461
|
+
:FLOAT_IMAGINARY,
|
462
|
+
:FLOAT_RATIONAL,
|
463
|
+
:FLOAT_RATIONAL_IMAGINARY,
|
464
|
+
:GLOBAL_VARIABLE,
|
465
|
+
:GREATER,
|
466
|
+
:GREATER_EQUAL,
|
467
|
+
:GREATER_GREATER,
|
468
|
+
:GREATER_GREATER_EQUAL,
|
469
|
+
:HEREDOC_END,
|
470
|
+
:HEREDOC_START,
|
471
|
+
:IDENTIFIER,
|
472
|
+
:IGNORED_NEWLINE,
|
473
|
+
:INSTANCE_VARIABLE,
|
474
|
+
:INTEGER,
|
475
|
+
:INTEGER_IMAGINARY,
|
476
|
+
:INTEGER_RATIONAL,
|
477
|
+
:INTEGER_RATIONAL_IMAGINARY,
|
478
|
+
:KEYWORD_ALIAS,
|
479
|
+
:KEYWORD_AND,
|
480
|
+
:KEYWORD_BEGIN,
|
481
|
+
:KEYWORD_BEGIN_UPCASE,
|
482
|
+
:KEYWORD_BREAK,
|
483
|
+
:KEYWORD_CASE,
|
484
|
+
:KEYWORD_CLASS,
|
485
|
+
:KEYWORD_DEF,
|
486
|
+
:KEYWORD_DEFINED,
|
487
|
+
:KEYWORD_DO,
|
488
|
+
:KEYWORD_DO_LOOP,
|
489
|
+
:KEYWORD_ELSE,
|
490
|
+
:KEYWORD_ELSIF,
|
491
|
+
:KEYWORD_END,
|
492
|
+
:KEYWORD_END_UPCASE,
|
493
|
+
:KEYWORD_ENSURE,
|
494
|
+
:KEYWORD_FALSE,
|
495
|
+
:KEYWORD_FOR,
|
496
|
+
:KEYWORD_IF,
|
497
|
+
:KEYWORD_IF_MODIFIER,
|
498
|
+
:KEYWORD_IN,
|
499
|
+
:KEYWORD_MODULE,
|
500
|
+
:KEYWORD_NEXT,
|
501
|
+
:KEYWORD_NIL,
|
502
|
+
:KEYWORD_NOT,
|
503
|
+
:KEYWORD_OR,
|
504
|
+
:KEYWORD_REDO,
|
505
|
+
:KEYWORD_RESCUE,
|
506
|
+
:KEYWORD_RESCUE_MODIFIER,
|
507
|
+
:KEYWORD_RETRY,
|
508
|
+
:KEYWORD_RETURN,
|
509
|
+
:KEYWORD_SELF,
|
510
|
+
:KEYWORD_SUPER,
|
511
|
+
:KEYWORD_THEN,
|
512
|
+
:KEYWORD_TRUE,
|
513
|
+
:KEYWORD_UNDEF,
|
514
|
+
:KEYWORD_UNLESS,
|
515
|
+
:KEYWORD_UNLESS_MODIFIER,
|
516
|
+
:KEYWORD_UNTIL,
|
517
|
+
:KEYWORD_UNTIL_MODIFIER,
|
518
|
+
:KEYWORD_WHEN,
|
519
|
+
:KEYWORD_WHILE,
|
520
|
+
:KEYWORD_WHILE_MODIFIER,
|
521
|
+
:KEYWORD_YIELD,
|
522
|
+
:KEYWORD___ENCODING__,
|
523
|
+
:KEYWORD___FILE__,
|
524
|
+
:KEYWORD___LINE__,
|
525
|
+
:LABEL,
|
526
|
+
:LABEL_END,
|
527
|
+
:LAMBDA_BEGIN,
|
528
|
+
:LESS,
|
529
|
+
:LESS_EQUAL,
|
530
|
+
:LESS_EQUAL_GREATER,
|
531
|
+
:LESS_LESS,
|
532
|
+
:LESS_LESS_EQUAL,
|
533
|
+
:MINUS,
|
534
|
+
:MINUS_EQUAL,
|
535
|
+
:MINUS_GREATER,
|
536
|
+
:NEWLINE,
|
537
|
+
:NUMBERED_REFERENCE,
|
538
|
+
:PARENTHESIS_LEFT,
|
539
|
+
:PARENTHESIS_LEFT_PARENTHESES,
|
540
|
+
:PARENTHESIS_RIGHT,
|
541
|
+
:PERCENT,
|
542
|
+
:PERCENT_EQUAL,
|
543
|
+
:PERCENT_LOWER_I,
|
544
|
+
:PERCENT_LOWER_W,
|
545
|
+
:PERCENT_LOWER_X,
|
546
|
+
:PERCENT_UPPER_I,
|
547
|
+
:PERCENT_UPPER_W,
|
548
|
+
:PIPE,
|
549
|
+
:PIPE_EQUAL,
|
550
|
+
:PIPE_PIPE,
|
551
|
+
:PIPE_PIPE_EQUAL,
|
552
|
+
:PLUS,
|
553
|
+
:PLUS_EQUAL,
|
554
|
+
:QUESTION_MARK,
|
555
|
+
:REGEXP_BEGIN,
|
556
|
+
:REGEXP_END,
|
557
|
+
:SEMICOLON,
|
558
|
+
:SLASH,
|
559
|
+
:SLASH_EQUAL,
|
560
|
+
:STAR,
|
561
|
+
:STAR_EQUAL,
|
562
|
+
:STAR_STAR,
|
563
|
+
:STAR_STAR_EQUAL,
|
564
|
+
:STRING_BEGIN,
|
565
|
+
:STRING_CONTENT,
|
566
|
+
:STRING_END,
|
567
|
+
:SYMBOL_BEGIN,
|
568
|
+
:TILDE,
|
569
|
+
:UAMPERSAND,
|
570
|
+
:UCOLON_COLON,
|
571
|
+
:UDOT_DOT,
|
572
|
+
:UDOT_DOT_DOT,
|
573
|
+
:UMINUS,
|
574
|
+
:UMINUS_NUM,
|
575
|
+
:UPLUS,
|
576
|
+
:USTAR,
|
577
|
+
:USTAR_STAR,
|
578
|
+
:WORDS_SEP,
|
579
|
+
:__END__,
|
580
|
+
]
|
388
581
|
end
|
389
582
|
end
|