yarp 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +55 -0
- data/CONTRIBUTING.md +4 -0
- data/{Makefile.in → Makefile} +5 -4
- data/README.md +6 -3
- data/config.yml +83 -274
- 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 +173 -585
- data/ext/yarp/extconf.rb +15 -10
- data/ext/yarp/extension.c +4 -2
- data/ext/yarp/extension.h +1 -1
- data/include/yarp/ast.h +167 -306
- data/include/yarp/defines.h +5 -15
- data/include/yarp/enc/yp_encoding.h +1 -0
- data/include/yarp/unescape.h +1 -1
- data/include/yarp/util/yp_buffer.h +9 -0
- data/include/yarp/util/yp_constant_pool.h +3 -0
- data/include/yarp/util/yp_list.h +7 -7
- data/include/yarp/util/yp_newline_list.h +4 -0
- data/include/yarp/util/yp_state_stack.h +1 -1
- 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 +226 -0
- data/lib/yarp/lex_compat.rb +16 -2
- data/lib/yarp/node.rb +594 -1437
- data/lib/yarp/ripper_compat.rb +3 -3
- data/lib/yarp/serialize.rb +312 -149
- data/lib/yarp.rb +167 -2
- data/src/enc/yp_unicode.c +9 -0
- data/src/node.c +92 -250
- data/src/prettyprint.c +81 -206
- data/src/serialize.c +124 -149
- data/src/unescape.c +29 -35
- data/src/util/yp_buffer.c +18 -0
- data/src/util/yp_list.c +7 -16
- data/src/util/yp_state_stack.c +0 -6
- data/src/util/yp_string.c +8 -17
- data/src/yarp.c +444 -717
- 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 = 8
|
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
|
@@ -134,256 +158,395 @@ module YARP
|
|
134
158
|
when 3 then
|
135
159
|
AndNode.new(load_node, load_node, load_location, location)
|
136
160
|
when 4 then
|
137
|
-
|
161
|
+
AndWriteNode.new(load_node, load_node, load_location, location)
|
138
162
|
when 5 then
|
139
|
-
|
163
|
+
ArgumentsNode.new(Array.new(load_varint) { load_node }, location)
|
140
164
|
when 6 then
|
141
|
-
|
165
|
+
ArrayNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
|
142
166
|
when 7 then
|
143
|
-
|
167
|
+
ArrayPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
|
144
168
|
when 8 then
|
145
|
-
|
169
|
+
AssocNode.new(load_node, load_optional_node, load_optional_location, location)
|
146
170
|
when 9 then
|
147
|
-
|
171
|
+
AssocSplatNode.new(load_optional_node, load_location, location)
|
148
172
|
when 10 then
|
149
|
-
|
173
|
+
BackReferenceReadNode.new(location)
|
150
174
|
when 11 then
|
151
|
-
|
175
|
+
BeginNode.new(load_optional_location, load_optional_node, load_optional_node, load_optional_node, load_optional_node, load_optional_location, location)
|
152
176
|
when 12 then
|
153
|
-
|
177
|
+
BlockArgumentNode.new(load_optional_node, load_location, location)
|
154
178
|
when 13 then
|
155
|
-
|
179
|
+
BlockNode.new(Array.new(load_varint) { load_constant }, load_optional_node, load_optional_node, load_location, load_location, location)
|
156
180
|
when 14 then
|
157
|
-
|
181
|
+
BlockParameterNode.new(load_optional_location, load_location, location)
|
158
182
|
when 15 then
|
159
|
-
|
183
|
+
BlockParametersNode.new(load_optional_node, Array.new(load_varint) { load_location }, load_optional_location, load_optional_location, location)
|
160
184
|
when 16 then
|
161
|
-
|
185
|
+
BreakNode.new(load_optional_node, load_location, location)
|
162
186
|
when 17 then
|
163
|
-
|
187
|
+
CallNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, load_varint, load_string, location)
|
164
188
|
when 18 then
|
165
|
-
|
189
|
+
CallOperatorAndWriteNode.new(load_node, load_location, load_node, location)
|
166
190
|
when 19 then
|
167
|
-
|
191
|
+
CallOperatorOrWriteNode.new(load_node, load_node, load_location, location)
|
168
192
|
when 20 then
|
169
|
-
|
193
|
+
CallOperatorWriteNode.new(load_node, load_location, load_node, load_constant, location)
|
170
194
|
when 21 then
|
171
|
-
|
195
|
+
CapturePatternNode.new(load_node, load_node, load_location, location)
|
172
196
|
when 22 then
|
173
|
-
|
197
|
+
CaseNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_location, load_location, location)
|
174
198
|
when 23 then
|
175
|
-
|
199
|
+
ClassNode.new(Array.new(load_varint) { load_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, location)
|
176
200
|
when 24 then
|
177
|
-
|
201
|
+
ClassVariableReadNode.new(location)
|
178
202
|
when 25 then
|
179
|
-
|
203
|
+
ClassVariableWriteNode.new(load_location, load_optional_node, load_optional_location, location)
|
180
204
|
when 26 then
|
181
|
-
|
205
|
+
ConstantPathNode.new(load_optional_node, load_node, load_location, location)
|
182
206
|
when 27 then
|
183
|
-
|
207
|
+
ConstantPathWriteNode.new(load_node, load_optional_location, load_optional_node, location)
|
184
208
|
when 28 then
|
185
|
-
|
209
|
+
ConstantReadNode.new(location)
|
186
210
|
when 29 then
|
187
|
-
|
211
|
+
ConstantWriteNode.new(load_location, load_optional_node, load_optional_location, location)
|
188
212
|
when 30 then
|
189
|
-
|
213
|
+
load_serialized_length
|
214
|
+
DefNode.new(load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varint) { load_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
|
190
215
|
when 31 then
|
191
|
-
|
216
|
+
DefinedNode.new(load_optional_location, load_node, load_optional_location, load_location, location)
|
192
217
|
when 32 then
|
193
|
-
|
218
|
+
ElseNode.new(load_location, load_optional_node, load_optional_location, location)
|
194
219
|
when 33 then
|
195
|
-
|
220
|
+
EmbeddedStatementsNode.new(load_location, load_optional_node, load_location, location)
|
196
221
|
when 34 then
|
197
|
-
|
222
|
+
EmbeddedVariableNode.new(load_location, load_node, location)
|
198
223
|
when 35 then
|
199
|
-
|
224
|
+
EnsureNode.new(load_location, load_optional_node, load_location, location)
|
200
225
|
when 36 then
|
201
|
-
|
226
|
+
FalseNode.new(location)
|
202
227
|
when 37 then
|
203
|
-
|
228
|
+
FindPatternNode.new(load_optional_node, load_node, Array.new(load_varint) { load_node }, load_node, load_optional_location, load_optional_location, location)
|
204
229
|
when 38 then
|
205
|
-
|
206
|
-
DefNode.new(load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varint) { load_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
|
230
|
+
FlipFlopNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
|
207
231
|
when 39 then
|
208
|
-
|
232
|
+
FloatNode.new(location)
|
209
233
|
when 40 then
|
210
|
-
|
234
|
+
ForNode.new(load_node, load_node, load_optional_node, load_location, load_location, load_optional_location, load_location, location)
|
211
235
|
when 41 then
|
212
|
-
|
236
|
+
ForwardingArgumentsNode.new(location)
|
213
237
|
when 42 then
|
214
|
-
|
238
|
+
ForwardingParameterNode.new(location)
|
215
239
|
when 43 then
|
216
|
-
|
240
|
+
ForwardingSuperNode.new(load_optional_node, location)
|
217
241
|
when 44 then
|
218
|
-
|
242
|
+
GlobalVariableReadNode.new(location)
|
219
243
|
when 45 then
|
220
|
-
|
244
|
+
GlobalVariableWriteNode.new(load_location, load_optional_location, load_optional_node, location)
|
221
245
|
when 46 then
|
222
|
-
|
246
|
+
HashNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
|
223
247
|
when 47 then
|
224
|
-
|
248
|
+
HashPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_optional_location, load_optional_location, location)
|
225
249
|
when 48 then
|
226
|
-
|
250
|
+
IfNode.new(load_optional_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
|
227
251
|
when 49 then
|
228
|
-
|
252
|
+
ImaginaryNode.new(load_node, location)
|
229
253
|
when 50 then
|
230
|
-
|
254
|
+
InNode.new(load_node, load_optional_node, load_location, load_optional_location, location)
|
231
255
|
when 51 then
|
232
|
-
|
256
|
+
InstanceVariableReadNode.new(location)
|
233
257
|
when 52 then
|
234
|
-
|
258
|
+
InstanceVariableWriteNode.new(load_location, load_optional_node, load_optional_location, location)
|
235
259
|
when 53 then
|
236
|
-
|
260
|
+
IntegerNode.new(location)
|
237
261
|
when 54 then
|
238
|
-
|
262
|
+
InterpolatedRegularExpressionNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
|
239
263
|
when 55 then
|
240
|
-
|
264
|
+
InterpolatedStringNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
|
241
265
|
when 56 then
|
242
|
-
|
266
|
+
InterpolatedSymbolNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
|
243
267
|
when 57 then
|
244
|
-
|
268
|
+
InterpolatedXStringNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
|
245
269
|
when 58 then
|
246
|
-
|
270
|
+
KeywordHashNode.new(Array.new(load_varint) { load_node }, location)
|
247
271
|
when 59 then
|
248
|
-
|
272
|
+
KeywordParameterNode.new(load_location, load_optional_node, location)
|
249
273
|
when 60 then
|
250
|
-
|
274
|
+
KeywordRestParameterNode.new(load_location, load_optional_location, location)
|
251
275
|
when 61 then
|
252
|
-
|
276
|
+
LambdaNode.new(Array.new(load_varint) { load_constant }, load_location, load_optional_node, load_optional_node, location)
|
253
277
|
when 62 then
|
254
|
-
|
278
|
+
LocalVariableReadNode.new(load_constant, load_varint, location)
|
255
279
|
when 63 then
|
256
|
-
|
280
|
+
LocalVariableWriteNode.new(load_constant, load_varint, load_optional_node, load_location, load_optional_location, location)
|
257
281
|
when 64 then
|
258
|
-
|
282
|
+
MatchPredicateNode.new(load_node, load_node, load_location, location)
|
259
283
|
when 65 then
|
260
|
-
|
284
|
+
MatchRequiredNode.new(load_node, load_node, load_location, location)
|
261
285
|
when 66 then
|
262
|
-
|
286
|
+
MissingNode.new(location)
|
263
287
|
when 67 then
|
264
|
-
|
288
|
+
ModuleNode.new(Array.new(load_varint) { load_constant }, load_location, load_node, load_optional_node, load_location, location)
|
265
289
|
when 68 then
|
266
|
-
|
290
|
+
MultiWriteNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_location, load_optional_location, location)
|
267
291
|
when 69 then
|
268
|
-
|
292
|
+
NextNode.new(load_optional_node, load_location, location)
|
269
293
|
when 70 then
|
270
|
-
|
294
|
+
NilNode.new(location)
|
271
295
|
when 71 then
|
272
|
-
|
296
|
+
NoKeywordsParameterNode.new(load_location, load_location, location)
|
273
297
|
when 72 then
|
274
|
-
|
298
|
+
NumberedReferenceReadNode.new(location)
|
275
299
|
when 73 then
|
276
|
-
|
300
|
+
OperatorWriteNode.new(load_node, load_location, load_constant, load_node, location)
|
277
301
|
when 74 then
|
278
|
-
|
302
|
+
OptionalParameterNode.new(load_constant, load_location, load_location, load_node, location)
|
279
303
|
when 75 then
|
280
|
-
|
304
|
+
OrNode.new(load_node, load_node, load_location, location)
|
281
305
|
when 76 then
|
282
|
-
|
306
|
+
OrWriteNode.new(load_node, load_node, load_location, location)
|
283
307
|
when 77 then
|
284
|
-
LocalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_constant, load_constant, location)
|
285
|
-
when 78 then
|
286
|
-
LocalVariableReadNode.new(load_constant, load_varint, location)
|
287
|
-
when 79 then
|
288
|
-
LocalVariableWriteNode.new(load_constant, load_varint, load_optional_node, load_location, load_optional_location, location)
|
289
|
-
when 80 then
|
290
|
-
MatchPredicateNode.new(load_node, load_node, load_location, location)
|
291
|
-
when 81 then
|
292
|
-
MatchRequiredNode.new(load_node, load_node, load_location, location)
|
293
|
-
when 82 then
|
294
|
-
MissingNode.new(location)
|
295
|
-
when 83 then
|
296
|
-
ModuleNode.new(Array.new(load_varint) { load_constant }, load_location, load_node, load_optional_node, load_location, location)
|
297
|
-
when 84 then
|
298
|
-
MultiWriteNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_location, load_optional_location, location)
|
299
|
-
when 85 then
|
300
|
-
NextNode.new(load_optional_node, load_location, location)
|
301
|
-
when 86 then
|
302
|
-
NilNode.new(location)
|
303
|
-
when 87 then
|
304
|
-
NoKeywordsParameterNode.new(load_location, load_location, location)
|
305
|
-
when 88 then
|
306
|
-
NumberedReferenceReadNode.new(location)
|
307
|
-
when 89 then
|
308
|
-
OptionalParameterNode.new(load_constant, load_location, load_location, load_node, location)
|
309
|
-
when 90 then
|
310
|
-
OrNode.new(load_node, load_node, load_location, location)
|
311
|
-
when 91 then
|
312
308
|
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)
|
313
|
-
when
|
309
|
+
when 78 then
|
314
310
|
ParenthesesNode.new(load_optional_node, load_location, load_location, location)
|
315
|
-
when
|
311
|
+
when 79 then
|
316
312
|
PinnedExpressionNode.new(load_node, load_location, load_location, load_location, location)
|
317
|
-
when
|
313
|
+
when 80 then
|
318
314
|
PinnedVariableNode.new(load_node, load_location, location)
|
319
|
-
when
|
315
|
+
when 81 then
|
320
316
|
PostExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
|
321
|
-
when
|
317
|
+
when 82 then
|
322
318
|
PreExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
|
323
|
-
when
|
319
|
+
when 83 then
|
324
320
|
ProgramNode.new(Array.new(load_varint) { load_constant }, load_node, location)
|
325
|
-
when
|
321
|
+
when 84 then
|
326
322
|
RangeNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
|
327
|
-
when
|
323
|
+
when 85 then
|
328
324
|
RationalNode.new(load_node, location)
|
329
|
-
when
|
325
|
+
when 86 then
|
330
326
|
RedoNode.new(location)
|
331
|
-
when
|
327
|
+
when 87 then
|
332
328
|
RegularExpressionNode.new(load_location, load_location, load_location, load_string, load_varint, location)
|
333
|
-
when
|
329
|
+
when 88 then
|
334
330
|
RequiredDestructuredParameterNode.new(Array.new(load_varint) { load_node }, load_location, load_location, location)
|
335
|
-
when
|
331
|
+
when 89 then
|
336
332
|
RequiredParameterNode.new(load_constant, location)
|
337
|
-
when
|
333
|
+
when 90 then
|
338
334
|
RescueModifierNode.new(load_node, load_location, load_node, location)
|
339
|
-
when
|
335
|
+
when 91 then
|
340
336
|
RescueNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
|
341
|
-
when
|
337
|
+
when 92 then
|
342
338
|
RestParameterNode.new(load_location, load_optional_location, location)
|
343
|
-
when
|
339
|
+
when 93 then
|
344
340
|
RetryNode.new(location)
|
345
|
-
when
|
341
|
+
when 94 then
|
346
342
|
ReturnNode.new(load_location, load_optional_node, location)
|
347
|
-
when
|
343
|
+
when 95 then
|
348
344
|
SelfNode.new(location)
|
349
|
-
when
|
345
|
+
when 96 then
|
350
346
|
SingletonClassNode.new(Array.new(load_varint) { load_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
|
351
|
-
when
|
347
|
+
when 97 then
|
352
348
|
SourceEncodingNode.new(location)
|
353
|
-
when
|
349
|
+
when 98 then
|
354
350
|
SourceFileNode.new(load_string, location)
|
355
|
-
when
|
351
|
+
when 99 then
|
356
352
|
SourceLineNode.new(location)
|
357
|
-
when
|
353
|
+
when 100 then
|
358
354
|
SplatNode.new(load_location, load_optional_node, location)
|
359
|
-
when
|
355
|
+
when 101 then
|
360
356
|
StatementsNode.new(Array.new(load_varint) { load_node }, location)
|
361
|
-
when
|
357
|
+
when 102 then
|
362
358
|
StringConcatNode.new(load_node, load_node, location)
|
363
|
-
when
|
359
|
+
when 103 then
|
364
360
|
StringNode.new(load_optional_location, load_location, load_optional_location, load_string, location)
|
365
|
-
when
|
361
|
+
when 104 then
|
366
362
|
SuperNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
|
367
|
-
when
|
363
|
+
when 105 then
|
368
364
|
SymbolNode.new(load_optional_location, load_location, load_optional_location, load_string, location)
|
369
|
-
when
|
365
|
+
when 106 then
|
370
366
|
TrueNode.new(location)
|
371
|
-
when
|
367
|
+
when 107 then
|
372
368
|
UndefNode.new(Array.new(load_varint) { load_node }, load_location, location)
|
373
|
-
when
|
369
|
+
when 108 then
|
374
370
|
UnlessNode.new(load_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
|
375
|
-
when
|
371
|
+
when 109 then
|
376
372
|
UntilNode.new(load_location, load_node, load_optional_node, load_varint, location)
|
377
|
-
when
|
373
|
+
when 110 then
|
378
374
|
WhenNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_node, location)
|
379
|
-
when
|
375
|
+
when 111 then
|
380
376
|
WhileNode.new(load_location, load_node, load_optional_node, load_varint, location)
|
381
|
-
when
|
377
|
+
when 112 then
|
382
378
|
XStringNode.new(load_location, load_location, load_location, load_string, location)
|
383
|
-
when
|
379
|
+
when 113 then
|
384
380
|
YieldNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, location)
|
385
381
|
end
|
386
382
|
end
|
387
383
|
end
|
384
|
+
|
385
|
+
TOKEN_TYPES = [
|
386
|
+
nil,
|
387
|
+
:EOF,
|
388
|
+
:MISSING,
|
389
|
+
:NOT_PROVIDED,
|
390
|
+
:AMPERSAND,
|
391
|
+
:AMPERSAND_AMPERSAND,
|
392
|
+
:AMPERSAND_AMPERSAND_EQUAL,
|
393
|
+
:AMPERSAND_DOT,
|
394
|
+
:AMPERSAND_EQUAL,
|
395
|
+
:BACKTICK,
|
396
|
+
:BACK_REFERENCE,
|
397
|
+
:BANG,
|
398
|
+
:BANG_EQUAL,
|
399
|
+
:BANG_TILDE,
|
400
|
+
:BRACE_LEFT,
|
401
|
+
:BRACE_RIGHT,
|
402
|
+
:BRACKET_LEFT,
|
403
|
+
:BRACKET_LEFT_ARRAY,
|
404
|
+
:BRACKET_LEFT_RIGHT,
|
405
|
+
:BRACKET_LEFT_RIGHT_EQUAL,
|
406
|
+
:BRACKET_RIGHT,
|
407
|
+
:CARET,
|
408
|
+
:CARET_EQUAL,
|
409
|
+
:CHARACTER_LITERAL,
|
410
|
+
:CLASS_VARIABLE,
|
411
|
+
:COLON,
|
412
|
+
:COLON_COLON,
|
413
|
+
:COMMA,
|
414
|
+
:COMMENT,
|
415
|
+
:CONSTANT,
|
416
|
+
:DOT,
|
417
|
+
:DOT_DOT,
|
418
|
+
:DOT_DOT_DOT,
|
419
|
+
:EMBDOC_BEGIN,
|
420
|
+
:EMBDOC_END,
|
421
|
+
:EMBDOC_LINE,
|
422
|
+
:EMBEXPR_BEGIN,
|
423
|
+
:EMBEXPR_END,
|
424
|
+
:EMBVAR,
|
425
|
+
:EQUAL,
|
426
|
+
:EQUAL_EQUAL,
|
427
|
+
:EQUAL_EQUAL_EQUAL,
|
428
|
+
:EQUAL_GREATER,
|
429
|
+
:EQUAL_TILDE,
|
430
|
+
:FLOAT,
|
431
|
+
:FLOAT_IMAGINARY,
|
432
|
+
:FLOAT_RATIONAL,
|
433
|
+
:FLOAT_RATIONAL_IMAGINARY,
|
434
|
+
:GLOBAL_VARIABLE,
|
435
|
+
:GREATER,
|
436
|
+
:GREATER_EQUAL,
|
437
|
+
:GREATER_GREATER,
|
438
|
+
:GREATER_GREATER_EQUAL,
|
439
|
+
:HEREDOC_END,
|
440
|
+
:HEREDOC_START,
|
441
|
+
:IDENTIFIER,
|
442
|
+
:IGNORED_NEWLINE,
|
443
|
+
:INSTANCE_VARIABLE,
|
444
|
+
:INTEGER,
|
445
|
+
:INTEGER_IMAGINARY,
|
446
|
+
:INTEGER_RATIONAL,
|
447
|
+
:INTEGER_RATIONAL_IMAGINARY,
|
448
|
+
:KEYWORD_ALIAS,
|
449
|
+
:KEYWORD_AND,
|
450
|
+
:KEYWORD_BEGIN,
|
451
|
+
:KEYWORD_BEGIN_UPCASE,
|
452
|
+
:KEYWORD_BREAK,
|
453
|
+
:KEYWORD_CASE,
|
454
|
+
:KEYWORD_CLASS,
|
455
|
+
:KEYWORD_DEF,
|
456
|
+
:KEYWORD_DEFINED,
|
457
|
+
:KEYWORD_DO,
|
458
|
+
:KEYWORD_DO_LOOP,
|
459
|
+
:KEYWORD_ELSE,
|
460
|
+
:KEYWORD_ELSIF,
|
461
|
+
:KEYWORD_END,
|
462
|
+
:KEYWORD_END_UPCASE,
|
463
|
+
:KEYWORD_ENSURE,
|
464
|
+
:KEYWORD_FALSE,
|
465
|
+
:KEYWORD_FOR,
|
466
|
+
:KEYWORD_IF,
|
467
|
+
:KEYWORD_IF_MODIFIER,
|
468
|
+
:KEYWORD_IN,
|
469
|
+
:KEYWORD_MODULE,
|
470
|
+
:KEYWORD_NEXT,
|
471
|
+
:KEYWORD_NIL,
|
472
|
+
:KEYWORD_NOT,
|
473
|
+
:KEYWORD_OR,
|
474
|
+
:KEYWORD_REDO,
|
475
|
+
:KEYWORD_RESCUE,
|
476
|
+
:KEYWORD_RESCUE_MODIFIER,
|
477
|
+
:KEYWORD_RETRY,
|
478
|
+
:KEYWORD_RETURN,
|
479
|
+
:KEYWORD_SELF,
|
480
|
+
:KEYWORD_SUPER,
|
481
|
+
:KEYWORD_THEN,
|
482
|
+
:KEYWORD_TRUE,
|
483
|
+
:KEYWORD_UNDEF,
|
484
|
+
:KEYWORD_UNLESS,
|
485
|
+
:KEYWORD_UNLESS_MODIFIER,
|
486
|
+
:KEYWORD_UNTIL,
|
487
|
+
:KEYWORD_UNTIL_MODIFIER,
|
488
|
+
:KEYWORD_WHEN,
|
489
|
+
:KEYWORD_WHILE,
|
490
|
+
:KEYWORD_WHILE_MODIFIER,
|
491
|
+
:KEYWORD_YIELD,
|
492
|
+
:KEYWORD___ENCODING__,
|
493
|
+
:KEYWORD___FILE__,
|
494
|
+
:KEYWORD___LINE__,
|
495
|
+
:LABEL,
|
496
|
+
:LABEL_END,
|
497
|
+
:LAMBDA_BEGIN,
|
498
|
+
:LESS,
|
499
|
+
:LESS_EQUAL,
|
500
|
+
:LESS_EQUAL_GREATER,
|
501
|
+
:LESS_LESS,
|
502
|
+
:LESS_LESS_EQUAL,
|
503
|
+
:MINUS,
|
504
|
+
:MINUS_EQUAL,
|
505
|
+
:MINUS_GREATER,
|
506
|
+
:NEWLINE,
|
507
|
+
:NUMBERED_REFERENCE,
|
508
|
+
:PARENTHESIS_LEFT,
|
509
|
+
:PARENTHESIS_LEFT_PARENTHESES,
|
510
|
+
:PARENTHESIS_RIGHT,
|
511
|
+
:PERCENT,
|
512
|
+
:PERCENT_EQUAL,
|
513
|
+
:PERCENT_LOWER_I,
|
514
|
+
:PERCENT_LOWER_W,
|
515
|
+
:PERCENT_LOWER_X,
|
516
|
+
:PERCENT_UPPER_I,
|
517
|
+
:PERCENT_UPPER_W,
|
518
|
+
:PIPE,
|
519
|
+
:PIPE_EQUAL,
|
520
|
+
:PIPE_PIPE,
|
521
|
+
:PIPE_PIPE_EQUAL,
|
522
|
+
:PLUS,
|
523
|
+
:PLUS_EQUAL,
|
524
|
+
:QUESTION_MARK,
|
525
|
+
:REGEXP_BEGIN,
|
526
|
+
:REGEXP_END,
|
527
|
+
:SEMICOLON,
|
528
|
+
:SLASH,
|
529
|
+
:SLASH_EQUAL,
|
530
|
+
:STAR,
|
531
|
+
:STAR_EQUAL,
|
532
|
+
:STAR_STAR,
|
533
|
+
:STAR_STAR_EQUAL,
|
534
|
+
:STRING_BEGIN,
|
535
|
+
:STRING_CONTENT,
|
536
|
+
:STRING_END,
|
537
|
+
:SYMBOL_BEGIN,
|
538
|
+
:TILDE,
|
539
|
+
:UAMPERSAND,
|
540
|
+
:UCOLON_COLON,
|
541
|
+
:UDOT_DOT,
|
542
|
+
:UDOT_DOT_DOT,
|
543
|
+
:UMINUS,
|
544
|
+
:UMINUS_NUM,
|
545
|
+
:UPLUS,
|
546
|
+
:USTAR,
|
547
|
+
:USTAR_STAR,
|
548
|
+
:WORDS_SEP,
|
549
|
+
:__END__,
|
550
|
+
]
|
388
551
|
end
|
389
552
|
end
|