parser 2.6.0.0 → 3.1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/parser/all.rb +3 -0
- data/lib/parser/ast/processor.rb +48 -1
- data/lib/parser/base.rb +30 -6
- data/lib/parser/builders/default.rb +670 -38
- data/lib/parser/context.rb +24 -26
- data/lib/parser/current.rb +36 -9
- data/lib/parser/current_arg_stack.rb +46 -0
- data/lib/parser/diagnostic/engine.rb +1 -2
- data/lib/parser/diagnostic.rb +1 -1
- data/lib/parser/lexer/dedenter.rb +58 -49
- data/lib/parser/lexer/explanation.rb +1 -1
- data/lib/parser/lexer.rb +13837 -11893
- data/lib/parser/macruby.rb +2544 -2489
- data/lib/parser/max_numparam_stack.rb +56 -0
- data/lib/parser/messages.rb +78 -44
- data/lib/parser/meta.rb +13 -3
- data/lib/parser/ruby18.rb +2313 -2259
- data/lib/parser/ruby19.rb +2537 -2488
- data/lib/parser/ruby20.rb +2724 -2673
- data/lib/parser/ruby21.rb +2766 -2727
- data/lib/parser/ruby22.rb +2683 -2628
- data/lib/parser/ruby23.rb +2796 -2755
- data/lib/parser/ruby24.rb +2812 -2771
- data/lib/parser/ruby25.rb +2703 -2670
- data/lib/parser/ruby26.rb +2794 -2747
- data/lib/parser/ruby27.rb +7914 -0
- data/lib/parser/ruby28.rb +8047 -0
- data/lib/parser/ruby30.rb +8096 -0
- data/lib/parser/ruby31.rb +8354 -0
- data/lib/parser/rubymotion.rb +2527 -2485
- data/lib/parser/runner/ruby_parse.rb +2 -2
- data/lib/parser/runner/ruby_rewrite.rb +2 -2
- data/lib/parser/runner.rb +36 -2
- data/lib/parser/source/buffer.rb +53 -28
- data/lib/parser/source/comment/associator.rb +31 -8
- data/lib/parser/source/comment.rb +14 -1
- data/lib/parser/source/map/method_definition.rb +25 -0
- data/lib/parser/source/range.rb +19 -3
- data/lib/parser/source/tree_rewriter/action.rb +137 -28
- data/lib/parser/source/tree_rewriter.rb +144 -14
- data/lib/parser/static_environment.rb +23 -0
- data/lib/parser/tree_rewriter.rb +3 -3
- data/lib/parser/variables_stack.rb +36 -0
- data/lib/parser/version.rb +1 -1
- data/lib/parser.rb +4 -0
- data/parser.gemspec +12 -19
- metadata +34 -99
- data/.gitignore +0 -32
- data/.travis.yml +0 -45
- data/.yardopts +0 -21
- data/CHANGELOG.md +0 -943
- data/CONTRIBUTING.md +0 -17
- data/Gemfile +0 -10
- data/README.md +0 -301
- data/Rakefile +0 -165
- data/ci/run_rubocop_specs +0 -14
- data/doc/AST_FORMAT.md +0 -1735
- data/doc/CUSTOMIZATION.md +0 -37
- data/doc/INTERNALS.md +0 -21
- data/doc/css/.gitkeep +0 -0
- data/doc/css/common.css +0 -68
- data/lib/parser/lexer.rl +0 -2383
- data/lib/parser/macruby.y +0 -2198
- data/lib/parser/ruby18.y +0 -1934
- data/lib/parser/ruby19.y +0 -2175
- data/lib/parser/ruby20.y +0 -2353
- data/lib/parser/ruby21.y +0 -2357
- data/lib/parser/ruby22.y +0 -2364
- data/lib/parser/ruby23.y +0 -2370
- data/lib/parser/ruby24.y +0 -2408
- data/lib/parser/ruby25.y +0 -2405
- data/lib/parser/ruby26.y +0 -2413
- data/lib/parser/rubymotion.y +0 -2182
- data/test/bug_163/fixtures/input.rb +0 -5
- data/test/bug_163/fixtures/output.rb +0 -5
- data/test/bug_163/rewriter.rb +0 -20
- data/test/helper.rb +0 -52
- data/test/parse_helper.rb +0 -315
- data/test/racc_coverage_helper.rb +0 -133
- data/test/test_base.rb +0 -31
- data/test/test_current.rb +0 -27
- data/test/test_diagnostic.rb +0 -96
- data/test/test_diagnostic_engine.rb +0 -62
- data/test/test_encoding.rb +0 -99
- data/test/test_lexer.rb +0 -3543
- data/test/test_lexer_stack_state.rb +0 -78
- data/test/test_parse_helper.rb +0 -80
- data/test/test_parser.rb +0 -7087
- data/test/test_runner_rewrite.rb +0 -47
- data/test/test_source_buffer.rb +0 -162
- data/test/test_source_comment.rb +0 -36
- data/test/test_source_comment_associator.rb +0 -367
- data/test/test_source_map.rb +0 -15
- data/test/test_source_range.rb +0 -172
- data/test/test_source_rewriter.rb +0 -541
- data/test/test_source_rewriter_action.rb +0 -46
- data/test/test_source_tree_rewriter.rb +0 -173
- data/test/test_static_environment.rb +0 -45
- data/test/using_tree_rewriter/fixtures/input.rb +0 -3
- data/test/using_tree_rewriter/fixtures/output.rb +0 -3
- data/test/using_tree_rewriter/using_tree_rewriter.rb +0 -9
@@ -117,6 +117,71 @@ module Parser
|
|
117
117
|
@action_root = TreeRewriter::Action.new(all_encompassing_range, @enforcer)
|
118
118
|
end
|
119
119
|
|
120
|
+
##
|
121
|
+
# Returns true iff no (non trivial) update has been recorded
|
122
|
+
#
|
123
|
+
# @return [Boolean]
|
124
|
+
#
|
125
|
+
def empty?
|
126
|
+
@action_root.empty?
|
127
|
+
end
|
128
|
+
|
129
|
+
##
|
130
|
+
# Merges the updates of argument with the receiver.
|
131
|
+
# Policies of the receiver are used.
|
132
|
+
# This action is atomic in that it won't change the receiver
|
133
|
+
# unless it succeeds.
|
134
|
+
#
|
135
|
+
# @param [Rewriter] with
|
136
|
+
# @return [Rewriter] self
|
137
|
+
# @raise [ClobberingError] when clobbering is detected
|
138
|
+
#
|
139
|
+
def merge!(with)
|
140
|
+
raise 'TreeRewriter are not for the same source_buffer' unless
|
141
|
+
source_buffer == with.source_buffer
|
142
|
+
|
143
|
+
@action_root = @action_root.combine(with.action_root)
|
144
|
+
self
|
145
|
+
end
|
146
|
+
|
147
|
+
##
|
148
|
+
# Returns a new rewriter that consists of the updates of the received
|
149
|
+
# and the given argument. Policies of the receiver are used.
|
150
|
+
#
|
151
|
+
# @param [Rewriter] with
|
152
|
+
# @return [Rewriter] merge of receiver and argument
|
153
|
+
# @raise [ClobberingError] when clobbering is detected
|
154
|
+
#
|
155
|
+
def merge(with)
|
156
|
+
dup.merge!(with)
|
157
|
+
end
|
158
|
+
|
159
|
+
##
|
160
|
+
# For special cases where one needs to merge a rewriter attached to a different source_buffer
|
161
|
+
# or that needs to be offset. Policies of the receiver are used.
|
162
|
+
#
|
163
|
+
# @param [TreeRewriter] rewriter from different source_buffer
|
164
|
+
# @param [Integer] offset
|
165
|
+
# @return [Rewriter] self
|
166
|
+
# @raise [IndexError] if action ranges (once offset) don't fit the current buffer
|
167
|
+
#
|
168
|
+
def import!(foreign_rewriter, offset: 0)
|
169
|
+
return self if foreign_rewriter.empty?
|
170
|
+
|
171
|
+
contracted = foreign_rewriter.action_root.contract
|
172
|
+
merge_effective_range = ::Parser::Source::Range.new(
|
173
|
+
@source_buffer,
|
174
|
+
contracted.range.begin_pos + offset,
|
175
|
+
contracted.range.end_pos + offset,
|
176
|
+
)
|
177
|
+
check_range_validity(merge_effective_range)
|
178
|
+
|
179
|
+
merge_with = contracted.moved(@source_buffer, offset)
|
180
|
+
|
181
|
+
@action_root = @action_root.combine(merge_with)
|
182
|
+
self
|
183
|
+
end
|
184
|
+
|
120
185
|
##
|
121
186
|
# Replaces the code of the source range `range` with `content`.
|
122
187
|
#
|
@@ -185,28 +250,62 @@ module Parser
|
|
185
250
|
# @return [String]
|
186
251
|
#
|
187
252
|
def process
|
188
|
-
source = @source_buffer.source
|
189
|
-
adjustment = 0
|
253
|
+
source = @source_buffer.source
|
190
254
|
|
255
|
+
chunks = []
|
256
|
+
last_end = 0
|
191
257
|
@action_root.ordered_replacements.each do |range, replacement|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
source[begin_pos...end_pos] = replacement
|
196
|
-
|
197
|
-
adjustment += replacement.length - range.length
|
258
|
+
chunks << source[last_end...range.begin_pos] << replacement
|
259
|
+
last_end = range.end_pos
|
198
260
|
end
|
261
|
+
chunks << source[last_end...source.length]
|
262
|
+
chunks.join
|
263
|
+
end
|
264
|
+
|
265
|
+
##
|
266
|
+
# Returns a representation of the rewriter as an ordered list of replacements.
|
267
|
+
#
|
268
|
+
# rewriter.as_replacements # => [ [1...1, '('],
|
269
|
+
# [2...4, 'foo'],
|
270
|
+
# [5...6, ''],
|
271
|
+
# [6...6, '!'],
|
272
|
+
# [10...10, ')'],
|
273
|
+
# ]
|
274
|
+
#
|
275
|
+
# This representation is sufficient to recreate the result of `process` but it is
|
276
|
+
# not sufficient to recreate completely the rewriter for further merging/actions.
|
277
|
+
# See `as_nested_actions`
|
278
|
+
#
|
279
|
+
# @return [Array<Range, String>] an ordered list of pairs of range & replacement
|
280
|
+
#
|
281
|
+
def as_replacements
|
282
|
+
@action_root.ordered_replacements
|
283
|
+
end
|
199
284
|
|
200
|
-
|
285
|
+
##
|
286
|
+
# Returns a representation of the rewriter as nested insertions (:wrap) and replacements.
|
287
|
+
#
|
288
|
+
# rewriter.as_actions # =>[ [:wrap, 1...10, '(', ')'],
|
289
|
+
# [:wrap, 2...6, '', '!'], # aka "insert_after"
|
290
|
+
# [:replace, 2...4, 'foo'],
|
291
|
+
# [:replace, 5...6, ''], # aka "removal"
|
292
|
+
# ],
|
293
|
+
#
|
294
|
+
# Contrary to `as_replacements`, this representation is sufficient to recreate exactly
|
295
|
+
# the rewriter.
|
296
|
+
#
|
297
|
+
# @return [Array<(Symbol, Range, String{, String})>]
|
298
|
+
#
|
299
|
+
def as_nested_actions
|
300
|
+
@action_root.nested_actions
|
201
301
|
end
|
202
302
|
|
203
303
|
##
|
204
304
|
# Provides a protected block where a sequence of multiple rewrite actions
|
205
305
|
# are handled atomically. If any of the actions failed by clobbering,
|
206
|
-
# all the actions are rolled back.
|
306
|
+
# all the actions are rolled back. Transactions can be nested.
|
207
307
|
#
|
208
308
|
# @raise [RuntimeError] when no block is passed
|
209
|
-
# @raise [RuntimeError] when already in a transaction
|
210
309
|
#
|
211
310
|
def transaction
|
212
311
|
unless block_given?
|
@@ -231,6 +330,11 @@ module Parser
|
|
231
330
|
@in_transaction
|
232
331
|
end
|
233
332
|
|
333
|
+
# :nodoc:
|
334
|
+
def inspect
|
335
|
+
"#<#{self.class} #{source_buffer.name}: #{action_summary}>"
|
336
|
+
end
|
337
|
+
|
234
338
|
##
|
235
339
|
# @api private
|
236
340
|
# @deprecated Use insert_after or wrap
|
@@ -256,8 +360,34 @@ module Parser
|
|
256
360
|
|
257
361
|
extend Deprecation
|
258
362
|
|
363
|
+
protected
|
364
|
+
|
365
|
+
attr_reader :action_root
|
366
|
+
|
259
367
|
private
|
260
368
|
|
369
|
+
def action_summary
|
370
|
+
replacements = as_replacements
|
371
|
+
case replacements.size
|
372
|
+
when 0 then return 'empty'
|
373
|
+
when 1..3 then #ok
|
374
|
+
else
|
375
|
+
replacements = replacements.first(3)
|
376
|
+
suffix = '…'
|
377
|
+
end
|
378
|
+
parts = replacements.map do |(range, str)|
|
379
|
+
if str.empty? # is this a deletion?
|
380
|
+
"-#{range.to_range}"
|
381
|
+
elsif range.size == 0 # is this an insertion?
|
382
|
+
"+#{str.inspect}@#{range.begin_pos}"
|
383
|
+
else # it is a replacement
|
384
|
+
"^#{str.inspect}@#{range.to_range}"
|
385
|
+
end
|
386
|
+
end
|
387
|
+
parts << suffix if suffix
|
388
|
+
parts.join(', ')
|
389
|
+
end
|
390
|
+
|
261
391
|
ACTIONS = %i[accept warn raise].freeze
|
262
392
|
def check_policy_validity
|
263
393
|
invalid = @policy.values - ACTIONS
|
@@ -266,14 +396,14 @@ module Parser
|
|
266
396
|
|
267
397
|
def combine(range, attributes)
|
268
398
|
range = check_range_validity(range)
|
269
|
-
action = TreeRewriter::Action.new(range, @enforcer, attributes)
|
399
|
+
action = TreeRewriter::Action.new(range, @enforcer, **attributes)
|
270
400
|
@action_root = @action_root.combine(action)
|
271
401
|
self
|
272
402
|
end
|
273
403
|
|
274
404
|
def check_range_validity(range)
|
275
405
|
if range.begin_pos < 0 || range.end_pos > @source_buffer.source.size
|
276
|
-
raise IndexError, "The range #{range} is outside the bounds of the source"
|
406
|
+
raise IndexError, "The range #{range.to_range} is outside the bounds of the source"
|
277
407
|
end
|
278
408
|
range
|
279
409
|
end
|
@@ -281,7 +411,7 @@ module Parser
|
|
281
411
|
def enforce_policy(event)
|
282
412
|
return if @policy[event] == :accept
|
283
413
|
return unless (values = yield)
|
284
|
-
trigger_policy(event, values)
|
414
|
+
trigger_policy(event, **values)
|
285
415
|
end
|
286
416
|
|
287
417
|
POLICY_TO_LEVEL = {warn: :warning, raise: :error}.freeze
|
@@ -3,6 +3,9 @@
|
|
3
3
|
module Parser
|
4
4
|
|
5
5
|
class StaticEnvironment
|
6
|
+
FORWARD_ARGS = :FORWARD_ARGS
|
7
|
+
ANONYMOUS_BLOCKARG = :ANONYMOUS_BLOCKARG
|
8
|
+
|
6
9
|
def initialize
|
7
10
|
reset
|
8
11
|
end
|
@@ -41,6 +44,26 @@ module Parser
|
|
41
44
|
def declared?(name)
|
42
45
|
@variables.include?(name.to_sym)
|
43
46
|
end
|
47
|
+
|
48
|
+
def declare_forward_args
|
49
|
+
declare(FORWARD_ARGS)
|
50
|
+
end
|
51
|
+
|
52
|
+
def declared_forward_args?
|
53
|
+
declared?(FORWARD_ARGS)
|
54
|
+
end
|
55
|
+
|
56
|
+
def declare_anonymous_blockarg
|
57
|
+
declare(ANONYMOUS_BLOCKARG)
|
58
|
+
end
|
59
|
+
|
60
|
+
def declared_anonymous_blockarg?
|
61
|
+
declared?(ANONYMOUS_BLOCKARG)
|
62
|
+
end
|
63
|
+
|
64
|
+
def empty?
|
65
|
+
@stack.empty?
|
66
|
+
end
|
44
67
|
end
|
45
68
|
|
46
69
|
end
|
data/lib/parser/tree_rewriter.rb
CHANGED
@@ -27,12 +27,12 @@ module Parser
|
|
27
27
|
# end
|
28
28
|
# EOF
|
29
29
|
#
|
30
|
-
#
|
31
|
-
# buffer.source
|
30
|
+
# ast = Parser::CurrentRuby.parse code
|
31
|
+
# buffer = Parser::Source::Buffer.new('(example)', source: code)
|
32
32
|
# rewriter = RemoveDo.new
|
33
33
|
#
|
34
34
|
# # Rewrite the AST, returns a String with the new form.
|
35
|
-
# puts rewriter.rewrite(buffer)
|
35
|
+
# puts rewriter.rewrite(buffer, ast)
|
36
36
|
#
|
37
37
|
# This would result in the following Ruby code:
|
38
38
|
#
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Parser
|
4
|
+
|
5
|
+
class VariablesStack
|
6
|
+
def initialize
|
7
|
+
@stack = []
|
8
|
+
push
|
9
|
+
end
|
10
|
+
|
11
|
+
def empty?
|
12
|
+
@stack.empty?
|
13
|
+
end
|
14
|
+
|
15
|
+
def push
|
16
|
+
@stack << Set.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def pop
|
20
|
+
@stack.pop
|
21
|
+
end
|
22
|
+
|
23
|
+
def reset
|
24
|
+
@stack.clear
|
25
|
+
end
|
26
|
+
|
27
|
+
def declare(name)
|
28
|
+
@stack.last << name.to_sym
|
29
|
+
end
|
30
|
+
|
31
|
+
def declared?(name)
|
32
|
+
@stack.last.include?(name.to_sym)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/lib/parser/version.rb
CHANGED
data/lib/parser.rb
CHANGED
@@ -46,6 +46,7 @@ module Parser
|
|
46
46
|
require 'parser/source/map/variable'
|
47
47
|
require 'parser/source/map/keyword'
|
48
48
|
require 'parser/source/map/definition'
|
49
|
+
require 'parser/source/map/method_definition'
|
49
50
|
require 'parser/source/map/send'
|
50
51
|
require 'parser/source/map/index'
|
51
52
|
require 'parser/source/map/condition'
|
@@ -73,6 +74,9 @@ module Parser
|
|
73
74
|
end
|
74
75
|
|
75
76
|
require 'parser/context'
|
77
|
+
require 'parser/max_numparam_stack'
|
78
|
+
require 'parser/current_arg_stack'
|
79
|
+
require 'parser/variables_stack'
|
76
80
|
|
77
81
|
require 'parser/base'
|
78
82
|
|
data/parser.gemspec
CHANGED
@@ -13,31 +13,24 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = 'https://github.com/whitequark/parser'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
|
-
spec.
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
lib/parser/ruby24.rb
|
25
|
-
lib/parser/ruby25.rb
|
26
|
-
lib/parser/ruby26.rb
|
27
|
-
lib/parser/macruby.rb
|
28
|
-
lib/parser/rubymotion.rb
|
29
|
-
)
|
16
|
+
spec.metadata = {
|
17
|
+
'bug_tracker_uri' => 'https://github.com/whitequark/parser/issues',
|
18
|
+
'changelog_uri' => "https://github.com/whitequark/parser/blob/v#{spec.version}/CHANGELOG.md",
|
19
|
+
'documentation_uri' => "https://www.rubydoc.info/gems/parser/#{spec.version}",
|
20
|
+
'source_code_uri' => "https://github.com/whitequark/parser/tree/v#{spec.version}"
|
21
|
+
}
|
22
|
+
|
23
|
+
spec.files = Dir['bin/*', 'lib/**/*.rb', 'parser.gemspec', 'LICENSE.txt']
|
30
24
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
31
|
-
spec.test_files = spec.files.grep(%r{^test/})
|
32
25
|
spec.require_paths = ['lib']
|
33
26
|
|
34
27
|
spec.required_ruby_version = '>= 2.0.0'
|
35
28
|
|
36
|
-
spec.add_dependency 'ast', '~> 2.4.
|
29
|
+
spec.add_dependency 'ast', '~> 2.4.1'
|
37
30
|
|
38
|
-
spec.add_development_dependency 'bundler', '
|
39
|
-
spec.add_development_dependency 'rake', '~>
|
40
|
-
spec.add_development_dependency 'racc', '= 1.4.
|
31
|
+
spec.add_development_dependency 'bundler', '>= 1.15', '< 3.0.0'
|
32
|
+
spec.add_development_dependency 'rake', '~> 13.0.1'
|
33
|
+
spec.add_development_dependency 'racc', '= 1.4.15'
|
41
34
|
spec.add_development_dependency 'cliver', '~> 0.3.2'
|
42
35
|
|
43
36
|
spec.add_development_dependency 'yard'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- whitequark
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ast
|
@@ -16,56 +16,62 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.4.
|
19
|
+
version: 2.4.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.4.
|
26
|
+
version: 2.4.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.15'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 3.0.0
|
34
37
|
type: :development
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
|
-
- - "
|
41
|
+
- - ">="
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: '1.15'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 3.0.0
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: rake
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
53
|
+
version: 13.0.1
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - "~>"
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
60
|
+
version: 13.0.1
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: racc
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - '='
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.4.
|
67
|
+
version: 1.4.15
|
62
68
|
type: :development
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - '='
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.4.
|
74
|
+
version: 1.4.15
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: cliver
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -159,23 +165,9 @@ executables:
|
|
159
165
|
extensions: []
|
160
166
|
extra_rdoc_files: []
|
161
167
|
files:
|
162
|
-
- ".gitignore"
|
163
|
-
- ".travis.yml"
|
164
|
-
- ".yardopts"
|
165
|
-
- CHANGELOG.md
|
166
|
-
- CONTRIBUTING.md
|
167
|
-
- Gemfile
|
168
168
|
- LICENSE.txt
|
169
|
-
- README.md
|
170
|
-
- Rakefile
|
171
169
|
- bin/ruby-parse
|
172
170
|
- bin/ruby-rewrite
|
173
|
-
- ci/run_rubocop_specs
|
174
|
-
- doc/AST_FORMAT.md
|
175
|
-
- doc/CUSTOMIZATION.md
|
176
|
-
- doc/INTERNALS.md
|
177
|
-
- doc/css/.gitkeep
|
178
|
-
- doc/css/common.css
|
179
171
|
- lib/gauntlet_parser.rb
|
180
172
|
- lib/parser.rb
|
181
173
|
- lib/parser/all.rb
|
@@ -187,40 +179,34 @@ files:
|
|
187
179
|
- lib/parser/color.rb
|
188
180
|
- lib/parser/context.rb
|
189
181
|
- lib/parser/current.rb
|
182
|
+
- lib/parser/current_arg_stack.rb
|
190
183
|
- lib/parser/deprecation.rb
|
191
184
|
- lib/parser/diagnostic.rb
|
192
185
|
- lib/parser/diagnostic/engine.rb
|
193
186
|
- lib/parser/lexer.rb
|
194
|
-
- lib/parser/lexer.rl
|
195
187
|
- lib/parser/lexer/dedenter.rb
|
196
188
|
- lib/parser/lexer/explanation.rb
|
197
189
|
- lib/parser/lexer/literal.rb
|
198
190
|
- lib/parser/lexer/stack_state.rb
|
199
191
|
- lib/parser/macruby.rb
|
200
|
-
- lib/parser/
|
192
|
+
- lib/parser/max_numparam_stack.rb
|
201
193
|
- lib/parser/messages.rb
|
202
194
|
- lib/parser/meta.rb
|
203
195
|
- lib/parser/rewriter.rb
|
204
196
|
- lib/parser/ruby18.rb
|
205
|
-
- lib/parser/ruby18.y
|
206
197
|
- lib/parser/ruby19.rb
|
207
|
-
- lib/parser/ruby19.y
|
208
198
|
- lib/parser/ruby20.rb
|
209
|
-
- lib/parser/ruby20.y
|
210
199
|
- lib/parser/ruby21.rb
|
211
|
-
- lib/parser/ruby21.y
|
212
200
|
- lib/parser/ruby22.rb
|
213
|
-
- lib/parser/ruby22.y
|
214
201
|
- lib/parser/ruby23.rb
|
215
|
-
- lib/parser/ruby23.y
|
216
202
|
- lib/parser/ruby24.rb
|
217
|
-
- lib/parser/ruby24.y
|
218
203
|
- lib/parser/ruby25.rb
|
219
|
-
- lib/parser/ruby25.y
|
220
204
|
- lib/parser/ruby26.rb
|
221
|
-
- lib/parser/
|
205
|
+
- lib/parser/ruby27.rb
|
206
|
+
- lib/parser/ruby28.rb
|
207
|
+
- lib/parser/ruby30.rb
|
208
|
+
- lib/parser/ruby31.rb
|
222
209
|
- lib/parser/rubymotion.rb
|
223
|
-
- lib/parser/rubymotion.y
|
224
210
|
- lib/parser/runner.rb
|
225
211
|
- lib/parser/runner/ruby_parse.rb
|
226
212
|
- lib/parser/runner/ruby_rewrite.rb
|
@@ -236,6 +222,7 @@ files:
|
|
236
222
|
- lib/parser/source/map/heredoc.rb
|
237
223
|
- lib/parser/source/map/index.rb
|
238
224
|
- lib/parser/source/map/keyword.rb
|
225
|
+
- lib/parser/source/map/method_definition.rb
|
239
226
|
- lib/parser/source/map/objc_kwarg.rb
|
240
227
|
- lib/parser/source/map/operator.rb
|
241
228
|
- lib/parser/source/map/rescue_body.rb
|
@@ -250,41 +237,18 @@ files:
|
|
250
237
|
- lib/parser/static_environment.rb
|
251
238
|
- lib/parser/syntax_error.rb
|
252
239
|
- lib/parser/tree_rewriter.rb
|
240
|
+
- lib/parser/variables_stack.rb
|
253
241
|
- lib/parser/version.rb
|
254
242
|
- parser.gemspec
|
255
|
-
- test/bug_163/fixtures/input.rb
|
256
|
-
- test/bug_163/fixtures/output.rb
|
257
|
-
- test/bug_163/rewriter.rb
|
258
|
-
- test/helper.rb
|
259
|
-
- test/parse_helper.rb
|
260
|
-
- test/racc_coverage_helper.rb
|
261
|
-
- test/test_base.rb
|
262
|
-
- test/test_current.rb
|
263
|
-
- test/test_diagnostic.rb
|
264
|
-
- test/test_diagnostic_engine.rb
|
265
|
-
- test/test_encoding.rb
|
266
|
-
- test/test_lexer.rb
|
267
|
-
- test/test_lexer_stack_state.rb
|
268
|
-
- test/test_parse_helper.rb
|
269
|
-
- test/test_parser.rb
|
270
|
-
- test/test_runner_rewrite.rb
|
271
|
-
- test/test_source_buffer.rb
|
272
|
-
- test/test_source_comment.rb
|
273
|
-
- test/test_source_comment_associator.rb
|
274
|
-
- test/test_source_map.rb
|
275
|
-
- test/test_source_range.rb
|
276
|
-
- test/test_source_rewriter.rb
|
277
|
-
- test/test_source_rewriter_action.rb
|
278
|
-
- test/test_source_tree_rewriter.rb
|
279
|
-
- test/test_static_environment.rb
|
280
|
-
- test/using_tree_rewriter/fixtures/input.rb
|
281
|
-
- test/using_tree_rewriter/fixtures/output.rb
|
282
|
-
- test/using_tree_rewriter/using_tree_rewriter.rb
|
283
243
|
homepage: https://github.com/whitequark/parser
|
284
244
|
licenses:
|
285
245
|
- MIT
|
286
|
-
metadata:
|
287
|
-
|
246
|
+
metadata:
|
247
|
+
bug_tracker_uri: https://github.com/whitequark/parser/issues
|
248
|
+
changelog_uri: https://github.com/whitequark/parser/blob/v3.1.0.0/CHANGELOG.md
|
249
|
+
documentation_uri: https://www.rubydoc.info/gems/parser/3.1.0.0
|
250
|
+
source_code_uri: https://github.com/whitequark/parser/tree/v3.1.0.0
|
251
|
+
post_install_message:
|
288
252
|
rdoc_options: []
|
289
253
|
require_paths:
|
290
254
|
- lib
|
@@ -299,37 +263,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
299
263
|
- !ruby/object:Gem::Version
|
300
264
|
version: '0'
|
301
265
|
requirements: []
|
302
|
-
|
303
|
-
|
304
|
-
signing_key:
|
266
|
+
rubygems_version: 3.2.3
|
267
|
+
signing_key:
|
305
268
|
specification_version: 4
|
306
269
|
summary: A Ruby parser written in pure Ruby.
|
307
|
-
test_files:
|
308
|
-
- test/bug_163/fixtures/input.rb
|
309
|
-
- test/bug_163/fixtures/output.rb
|
310
|
-
- test/bug_163/rewriter.rb
|
311
|
-
- test/helper.rb
|
312
|
-
- test/parse_helper.rb
|
313
|
-
- test/racc_coverage_helper.rb
|
314
|
-
- test/test_base.rb
|
315
|
-
- test/test_current.rb
|
316
|
-
- test/test_diagnostic.rb
|
317
|
-
- test/test_diagnostic_engine.rb
|
318
|
-
- test/test_encoding.rb
|
319
|
-
- test/test_lexer.rb
|
320
|
-
- test/test_lexer_stack_state.rb
|
321
|
-
- test/test_parse_helper.rb
|
322
|
-
- test/test_parser.rb
|
323
|
-
- test/test_runner_rewrite.rb
|
324
|
-
- test/test_source_buffer.rb
|
325
|
-
- test/test_source_comment.rb
|
326
|
-
- test/test_source_comment_associator.rb
|
327
|
-
- test/test_source_map.rb
|
328
|
-
- test/test_source_range.rb
|
329
|
-
- test/test_source_rewriter.rb
|
330
|
-
- test/test_source_rewriter_action.rb
|
331
|
-
- test/test_source_tree_rewriter.rb
|
332
|
-
- test/test_static_environment.rb
|
333
|
-
- test/using_tree_rewriter/fixtures/input.rb
|
334
|
-
- test/using_tree_rewriter/fixtures/output.rb
|
335
|
-
- test/using_tree_rewriter/using_tree_rewriter.rb
|
270
|
+
test_files: []
|
data/.gitignore
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
.bundle
|
4
|
-
.config
|
5
|
-
.yardoc
|
6
|
-
Gemfile.lock
|
7
|
-
InstalledFiles
|
8
|
-
_yardoc
|
9
|
-
coverage
|
10
|
-
lib/bundler/man
|
11
|
-
pkg
|
12
|
-
rdoc
|
13
|
-
yardoc
|
14
|
-
spec/reports
|
15
|
-
test/tmp
|
16
|
-
test/version_tmp
|
17
|
-
tmp
|
18
|
-
*.output
|
19
|
-
.ruby-version
|
20
|
-
.ruby-gemset
|
21
|
-
lib/parser/lexer.rb
|
22
|
-
lib/parser/ruby18.rb
|
23
|
-
lib/parser/ruby19.rb
|
24
|
-
lib/parser/ruby20.rb
|
25
|
-
lib/parser/ruby21.rb
|
26
|
-
lib/parser/ruby22.rb
|
27
|
-
lib/parser/ruby23.rb
|
28
|
-
lib/parser/ruby24.rb
|
29
|
-
lib/parser/ruby25.rb
|
30
|
-
lib/parser/ruby26.rb
|
31
|
-
lib/parser/macruby.rb
|
32
|
-
lib/parser/rubymotion.rb
|