parser 3.2.2.3 → 3.3.9.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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +2 -1
  3. data/lib/gauntlet_parser.rb +1 -1
  4. data/lib/parser/all.rb +15 -14
  5. data/lib/parser/ast/processor.rb +3 -1
  6. data/lib/parser/base.rb +3 -0
  7. data/lib/parser/builders/default.rb +59 -19
  8. data/lib/parser/context.rb +2 -0
  9. data/lib/parser/current.rb +37 -19
  10. data/lib/parser/lexer/literal.rb +16 -1
  11. data/lib/parser/lexer-F0.rb +360 -299
  12. data/lib/parser/lexer-F1.rb +634 -564
  13. data/lib/parser/lexer-strings.rb +89 -80
  14. data/lib/parser/macruby.rb +3 -3
  15. data/lib/parser/messages.rb +46 -41
  16. data/lib/parser/meta.rb +11 -3
  17. data/lib/parser/ruby18.rb +3 -3
  18. data/lib/parser/ruby19.rb +3 -3
  19. data/lib/parser/ruby20.rb +3 -3
  20. data/lib/parser/ruby21.rb +3 -3
  21. data/lib/parser/ruby22.rb +3 -3
  22. data/lib/parser/ruby23.rb +3 -3
  23. data/lib/parser/ruby24.rb +3 -3
  24. data/lib/parser/ruby25.rb +3 -3
  25. data/lib/parser/ruby26.rb +3 -3
  26. data/lib/parser/ruby27.rb +5 -4
  27. data/lib/parser/ruby30.rb +5 -4
  28. data/lib/parser/ruby31.rb +5 -4
  29. data/lib/parser/ruby32.rb +5 -4
  30. data/lib/parser/ruby33.rb +6764 -6878
  31. data/lib/parser/ruby34.rb +12597 -0
  32. data/lib/parser/rubymotion.rb +3 -3
  33. data/lib/parser/runner/ruby_parse.rb +3 -3
  34. data/lib/parser/runner/ruby_rewrite.rb +1 -1
  35. data/lib/parser/runner.rb +37 -31
  36. data/lib/parser/source/buffer.rb +6 -1
  37. data/lib/parser/source/comment/associator.rb +7 -7
  38. data/lib/parser/source/tree_rewriter/action.rb +5 -4
  39. data/lib/parser/static_environment.rb +56 -9
  40. data/lib/parser/unknown_encoding_in_magic_comment_error.rb +15 -0
  41. data/lib/parser/version.rb +1 -1
  42. data/lib/parser.rb +54 -53
  43. metadata +8 -10
  44. data/lib/parser/ruby28.rb +0 -8047
@@ -1,14 +1,14 @@
1
1
  # -*- encoding:utf-8; warn-indent:false; frozen_string_literal: true -*-
2
2
  #
3
3
  # DO NOT MODIFY!!!!
4
- # This file is automatically generated by Racc 1.7.0
5
- # from Racc grammar file "".
4
+ # This file is automatically generated by Racc 1.8.1
5
+ # from Racc grammar file "rubymotion.y".
6
6
  #
7
7
 
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class RubyMotion < Parser::Base
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'parser/runner'
4
- require 'parser/color'
5
- require 'parser/lexer/explanation'
3
+ require_relative '../runner'
4
+ require_relative '../color'
5
+ require_relative '../lexer/explanation'
6
6
  require 'json'
7
7
 
8
8
  module Parser
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'parser/runner'
3
+ require_relative '../runner'
4
4
  require 'tempfile'
5
5
 
6
6
  module Parser
data/lib/parser/runner.rb CHANGED
@@ -1,10 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'benchmark'
4
3
  require 'find'
5
4
  require 'optparse'
6
5
 
7
- require 'parser'
6
+ require_relative '../parser'
8
7
 
9
8
  module Parser
10
9
 
@@ -64,82 +63,87 @@ module Parser
64
63
  end
65
64
 
66
65
  opts.on '--18', 'Parse as Ruby 1.8.7 would' do
67
- require 'parser/ruby18'
66
+ require_relative 'ruby18'
68
67
  @parser_class = Parser::Ruby18
69
68
  end
70
69
 
71
70
  opts.on '--19', 'Parse as Ruby 1.9.3 would' do
72
- require 'parser/ruby19'
71
+ require_relative 'ruby19'
73
72
  @parser_class = Parser::Ruby19
74
73
  end
75
74
 
76
75
  opts.on '--20', 'Parse as Ruby 2.0 would' do
77
- require 'parser/ruby20'
76
+ require_relative 'ruby20'
78
77
  @parser_class = Parser::Ruby20
79
78
  end
80
79
 
81
80
  opts.on '--21', 'Parse as Ruby 2.1 would' do
82
- require 'parser/ruby21'
81
+ require_relative 'ruby21'
83
82
  @parser_class = Parser::Ruby21
84
83
  end
85
84
 
86
85
  opts.on '--22', 'Parse as Ruby 2.2 would' do
87
- require 'parser/ruby22'
86
+ require_relative 'ruby22'
88
87
  @parser_class = Parser::Ruby22
89
88
  end
90
89
 
91
90
  opts.on '--23', 'Parse as Ruby 2.3 would' do
92
- require 'parser/ruby23'
91
+ require_relative 'ruby23'
93
92
  @parser_class = Parser::Ruby23
94
93
  end
95
94
 
96
95
  opts.on '--24', 'Parse as Ruby 2.4 would' do
97
- require 'parser/ruby24'
96
+ require_relative 'ruby24'
98
97
  @parser_class = Parser::Ruby24
99
98
  end
100
99
 
101
100
  opts.on '--25', 'Parse as Ruby 2.5 would' do
102
- require 'parser/ruby25'
101
+ require_relative 'ruby25'
103
102
  @parser_class = Parser::Ruby25
104
103
  end
105
104
 
106
105
  opts.on '--26', 'Parse as Ruby 2.6 would' do
107
- require 'parser/ruby26'
106
+ require_relative 'ruby26'
108
107
  @parser_class = Parser::Ruby26
109
108
  end
110
109
 
111
110
  opts.on '--27', 'Parse as Ruby 2.7 would' do
112
- require 'parser/ruby27'
111
+ require_relative 'ruby27'
113
112
  @parser_class = Parser::Ruby27
114
113
  end
115
114
 
116
115
  opts.on '--30', 'Parse as Ruby 3.0 would' do
117
- require 'parser/ruby30'
116
+ require_relative 'ruby30'
118
117
  @parser_class = Parser::Ruby30
119
118
  end
120
119
 
121
120
  opts.on '--31', 'Parse as Ruby 3.1 would' do
122
- require 'parser/ruby31'
121
+ require_relative 'ruby31'
123
122
  @parser_class = Parser::Ruby31
124
123
  end
125
124
 
126
125
  opts.on '--32', 'Parse as Ruby 3.2 would' do
127
- require 'parser/ruby32'
126
+ require_relative 'ruby32'
128
127
  @parser_class = Parser::Ruby32
129
128
  end
130
129
 
131
130
  opts.on '--33', 'Parse as Ruby 3.3 would' do
132
- require 'parser/ruby33'
131
+ require_relative 'ruby33'
133
132
  @parser_class = Parser::Ruby33
134
133
  end
135
134
 
135
+ opts.on '--34', 'Parse as Ruby 3.4 would' do
136
+ require_relative 'ruby34'
137
+ @parser_class = Parser::Ruby34
138
+ end
139
+
136
140
  opts.on '--mac', 'Parse as MacRuby 0.12 would' do
137
- require 'parser/macruby'
141
+ require_relative 'macruby'
138
142
  @parser_class = Parser::MacRuby
139
143
  end
140
144
 
141
145
  opts.on '--ios', 'Parse as mid-2015 RubyMotion would' do
142
- require 'parser/rubymotion'
146
+ require_relative 'rubymotion'
143
147
  @parser_class = Parser::RubyMotion
144
148
  end
145
149
 
@@ -188,7 +192,7 @@ module Parser
188
192
  end
189
193
 
190
194
  if @parser_class.nil?
191
- require 'parser/current'
195
+ require_relative 'current'
192
196
  @parser_class = Parser::CurrentRuby
193
197
  end
194
198
  end
@@ -215,14 +219,13 @@ module Parser
215
219
  end
216
220
 
217
221
  def process_all_input
218
- parsing_time =
219
- Benchmark.measure do
220
- process_fragments
221
- process_files
222
- end
222
+ time_start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
223
+ process_fragments
224
+ process_files
225
+ time_elapsed = Process.clock_gettime(Process::CLOCK_MONOTONIC) - time_start
223
226
 
224
227
  if @benchmark
225
- report_with_time(parsing_time)
228
+ report_with_time(time_elapsed)
226
229
  end
227
230
  end
228
231
 
@@ -239,7 +242,12 @@ module Parser
239
242
 
240
243
  def process_files
241
244
  @files.each do |filename|
242
- source = File.read(filename).force_encoding(@parser.default_encoding)
245
+ source = begin
246
+ File.read(filename).force_encoding(@parser.default_encoding)
247
+ rescue Errno::EISDIR
248
+ # Will happen for a folder called `foo.rb`. Just catch this here, it's cheaper than checking every file.
249
+ next
250
+ end
243
251
 
244
252
  buffer = Parser::Source::Buffer.new(filename)
245
253
 
@@ -273,12 +281,10 @@ module Parser
273
281
  raise NotImplementedError, "implement #{self.class}##{__callee__}"
274
282
  end
275
283
 
276
- def report_with_time(parsing_time)
277
- cpu_time = parsing_time.utime
278
-
279
- speed = '%.3f' % (@source_size / cpu_time / 1000)
284
+ def report_with_time(time_elapsed)
285
+ speed = '%.3f' % (@source_size / time_elapsed / 1000)
280
286
  puts "Parsed #{@source_count} files (#{@source_size} characters)" \
281
- " in #{'%.2f' % cpu_time} seconds (#{speed} kchars/s)."
287
+ " in #{'%.2f' % time_elapsed} seconds (#{speed} kchars/s)."
282
288
 
283
289
  if defined?(RUBY_ENGINE)
284
290
  engine = RUBY_ENGINE
@@ -46,6 +46,7 @@ module Parser
46
46
  # magic encoding comment or UTF-8 BOM. `string` can be in any encoding.
47
47
  #
48
48
  # @param [String] string
49
+ # @raise [Parser::UnknownEncodingInMagicComment] if the encoding is not recognized
49
50
  # @return [String, nil] encoding name, if recognized
50
51
  #
51
52
  def self.recognize_encoding(string)
@@ -66,7 +67,11 @@ module Parser
66
67
  return nil if encoding_line.nil? || encoding_line[0] != '#'
67
68
 
68
69
  if (result = ENCODING_RE.match(encoding_line))
69
- Encoding.find(result[3] || result[4] || result[6])
70
+ begin
71
+ Encoding.find(result[3] || result[4] || result[6])
72
+ rescue ArgumentError => e
73
+ raise Parser::UnknownEncodingInMagicComment, e.message
74
+ end
70
75
  else
71
76
  nil
72
77
  end
@@ -95,10 +95,11 @@ module Parser
95
95
  end
96
96
 
97
97
  ##
98
- # Same as {associate}, but compares by identity, thus producing an unambiguous
99
- # result even in presence of equal nodes.
98
+ # Same as {associate}, but uses `node.loc` instead of `node` as
99
+ # the hash key, thus producing an unambiguous result even in presence
100
+ # of equal nodes.
100
101
  #
101
- # @return [Hash<Parser::Source::Node, Array<Parser::Source::Comment>>]
102
+ # @return [Hash<Parser::Source::Map, Array<Parser::Source::Comment>>]
102
103
  #
103
104
  def associate_locations
104
105
  @map_using = :location
@@ -106,11 +107,10 @@ module Parser
106
107
  end
107
108
 
108
109
  ##
109
- # Same as {associate}, but uses `node.loc` instead of `node` as
110
- # the hash key, thus producing an unambiguous result even in presence
111
- # of equal nodes.
110
+ # Same as {associate}, but compares by identity, thus producing an unambiguous
111
+ # result even in presence of equal nodes.
112
112
  #
113
- # @return [Hash<Parser::Source::Map, Array<Parser::Source::Comment>>]
113
+ # @return [Hash<Parser::Source::Node, Array<Parser::Source::Comment>>]
114
114
  #
115
115
  def associate_by_identity
116
116
  @map_using = :identity
@@ -6,9 +6,10 @@ module Parser
6
6
  # @api private
7
7
  #
8
8
  # Actions are arranged in a tree and get combined so that:
9
- # children are strictly contained by their parent
10
- # sibblings all disjoint from one another and ordered
11
- # only actions with replacement==nil may have children
9
+ #
10
+ # * Children are strictly contained by their parent
11
+ # * Siblings are all disjointed from one another and ordered
12
+ # * Only actions with `replacement == nil` may have children
12
13
  #
13
14
  class TreeRewriter::Action
14
15
  attr_reader :range, :replacement, :insert_before, :insert_after
@@ -60,7 +61,7 @@ module Parser
60
61
 
61
62
  ##
62
63
  # A root action has its range set to the whole source range, even
63
- # though it typically do not act on that range.
64
+ # though it typically does not act on that range.
64
65
  # This method returns the action as if it was a child action with
65
66
  # its range contracted.
66
67
  # @return [Action]
@@ -4,9 +4,15 @@ module Parser
4
4
 
5
5
  class StaticEnvironment
6
6
  FORWARD_ARGS = :FORWARD_ARGS
7
- ANONYMOUS_BLOCKARG = :ANONYMOUS_BLOCKARG
8
- ANONYMOUS_RESTARG = :ANONYMOUS_RESTARG
9
- ANONYMOUS_KWRESTARG = :ANONYMOUS_KWRESTARG
7
+
8
+ ANONYMOUS_RESTARG_IN_CURRENT_SCOPE = :ANONYMOUS_RESTARG_IN_CURRENT_SCOPE
9
+ ANONYMOUS_RESTARG_INHERITED = :ANONYMOUS_RESTARG_INHERITED
10
+
11
+ ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE = :ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE
12
+ ANONYMOUS_KWRESTARG_INHERITED = :ANONYMOUS_KWRESTARG_INHERITED
13
+
14
+ ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE = :ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE
15
+ ANONYMOUS_BLOCKARG_INHERITED = :ANONYMOUS_BLOCKARG_INHERITED
10
16
 
11
17
  def initialize
12
18
  reset
@@ -27,6 +33,15 @@ module Parser
27
33
  def extend_dynamic
28
34
  @stack.push(@variables)
29
35
  @variables = @variables.dup
36
+ if @variables.delete(ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE)
37
+ @variables.add(ANONYMOUS_BLOCKARG_INHERITED)
38
+ end
39
+ if @variables.delete(ANONYMOUS_RESTARG_IN_CURRENT_SCOPE)
40
+ @variables.add(ANONYMOUS_RESTARG_INHERITED)
41
+ end
42
+ if @variables.delete(ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE)
43
+ @variables.add(ANONYMOUS_KWRESTARG_INHERITED)
44
+ end
30
45
 
31
46
  self
32
47
  end
@@ -47,6 +62,8 @@ module Parser
47
62
  @variables.include?(name.to_sym)
48
63
  end
49
64
 
65
+ # Forward args
66
+
50
67
  def declare_forward_args
51
68
  declare(FORWARD_ARGS)
52
69
  end
@@ -55,28 +72,58 @@ module Parser
55
72
  declared?(FORWARD_ARGS)
56
73
  end
57
74
 
75
+ # Anonymous blockarg
76
+
58
77
  def declare_anonymous_blockarg
59
- declare(ANONYMOUS_BLOCKARG)
78
+ declare(ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE)
60
79
  end
61
80
 
62
81
  def declared_anonymous_blockarg?
63
- declared?(ANONYMOUS_BLOCKARG)
82
+ declared?(ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE) || declared?(ANONYMOUS_BLOCKARG_INHERITED)
64
83
  end
65
84
 
85
+ def declared_anonymous_blockarg_in_current_scpe?
86
+ declared?(ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE)
87
+ end
88
+
89
+ def parent_has_anonymous_blockarg?
90
+ @stack.any? { |variables| variables.include?(ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE) }
91
+ end
92
+
93
+ # Anonymous restarg
94
+
66
95
  def declare_anonymous_restarg
67
- declare(ANONYMOUS_RESTARG)
96
+ declare(ANONYMOUS_RESTARG_IN_CURRENT_SCOPE)
68
97
  end
69
98
 
70
99
  def declared_anonymous_restarg?
71
- declared?(ANONYMOUS_RESTARG)
100
+ declared?(ANONYMOUS_RESTARG_IN_CURRENT_SCOPE) || declared?(ANONYMOUS_RESTARG_INHERITED)
72
101
  end
73
102
 
103
+ def declared_anonymous_restarg_in_current_scope?
104
+ declared?(ANONYMOUS_RESTARG_IN_CURRENT_SCOPE)
105
+ end
106
+
107
+ def parent_has_anonymous_restarg?
108
+ @stack.any? { |variables| variables.include?(ANONYMOUS_RESTARG_IN_CURRENT_SCOPE) }
109
+ end
110
+
111
+ # Anonymous kwresarg
112
+
74
113
  def declare_anonymous_kwrestarg
75
- declare(ANONYMOUS_KWRESTARG)
114
+ declare(ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE)
76
115
  end
77
116
 
78
117
  def declared_anonymous_kwrestarg?
79
- declared?(ANONYMOUS_KWRESTARG)
118
+ declared?(ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE) || declared?(ANONYMOUS_KWRESTARG_INHERITED)
119
+ end
120
+
121
+ def declared_anonymous_kwrestarg_in_current_scope?
122
+ declared?(ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE)
123
+ end
124
+
125
+ def parent_has_anonymous_kwrestarg?
126
+ @stack.any? { |variables| variables.include?(ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE) }
80
127
  end
81
128
 
82
129
  def empty?
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Parser
4
+ ##
5
+ # {Parser::UnknownEncodingInMagicComment} is raised when a magic encoding
6
+ # comment is encountered that the currently running Ruby version doesn't
7
+ # recognize. It inherits from {ArgumentError} since that is the exception
8
+ # Ruby itself raises when trying to execute a file with an unknown encoding.
9
+ # As such, it is also not a {Parser::SyntaxError}.
10
+ #
11
+ # @api public
12
+ #
13
+ class UnknownEncodingInMagicComment < ArgumentError
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Parser
4
- VERSION = '3.2.2.3'
4
+ VERSION = '3.3.9.0'
5
5
  end
data/lib/parser.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  if RUBY_VERSION =~ /^1\.[89]\./
4
- require 'parser/version'
4
+ require_relative 'parser/version'
5
5
  raise LoadError, <<-UNSUPPORTED_VERSION_MSG
6
6
  parser v#{Parser::VERSION} cannot run on Ruby #{RUBY_VERSION}.
7
7
  Please upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.
@@ -17,74 +17,75 @@ require 'ast'
17
17
  # @api public
18
18
  #
19
19
  module Parser
20
- require 'parser/version'
21
- require 'parser/messages'
22
- require 'parser/deprecation'
20
+ require_relative 'parser/version'
21
+ require_relative 'parser/messages'
22
+ require_relative 'parser/deprecation'
23
23
 
24
24
  module AST
25
- require 'parser/ast/node'
26
- require 'parser/ast/processor'
27
- require 'parser/meta'
25
+ require_relative 'parser/ast/node'
26
+ require_relative 'parser/ast/processor'
27
+ require_relative 'parser/meta'
28
28
  end
29
29
 
30
30
  module Source
31
- require 'parser/source/buffer'
32
- require 'parser/source/range'
33
-
34
- require 'parser/source/comment'
35
- require 'parser/source/comment/associator'
36
-
37
- require 'parser/source/rewriter'
38
- require 'parser/source/rewriter/action'
39
- require 'parser/source/tree_rewriter'
40
- require 'parser/source/tree_rewriter/action'
41
-
42
- require 'parser/source/map'
43
- require 'parser/source/map/operator'
44
- require 'parser/source/map/collection'
45
- require 'parser/source/map/constant'
46
- require 'parser/source/map/variable'
47
- require 'parser/source/map/keyword'
48
- require 'parser/source/map/definition'
49
- require 'parser/source/map/method_definition'
50
- require 'parser/source/map/send'
51
- require 'parser/source/map/index'
52
- require 'parser/source/map/condition'
53
- require 'parser/source/map/ternary'
54
- require 'parser/source/map/for'
55
- require 'parser/source/map/rescue_body'
56
- require 'parser/source/map/heredoc'
57
- require 'parser/source/map/objc_kwarg'
31
+ require_relative 'parser/source/buffer'
32
+ require_relative 'parser/source/range'
33
+
34
+ require_relative 'parser/source/comment'
35
+ require_relative 'parser/source/comment/associator'
36
+
37
+ require_relative 'parser/source/rewriter'
38
+ require_relative 'parser/source/rewriter/action'
39
+ require_relative 'parser/source/tree_rewriter'
40
+ require_relative 'parser/source/tree_rewriter/action'
41
+
42
+ require_relative 'parser/source/map'
43
+ require_relative 'parser/source/map/operator'
44
+ require_relative 'parser/source/map/collection'
45
+ require_relative 'parser/source/map/constant'
46
+ require_relative 'parser/source/map/variable'
47
+ require_relative 'parser/source/map/keyword'
48
+ require_relative 'parser/source/map/definition'
49
+ require_relative 'parser/source/map/method_definition'
50
+ require_relative 'parser/source/map/send'
51
+ require_relative 'parser/source/map/index'
52
+ require_relative 'parser/source/map/condition'
53
+ require_relative 'parser/source/map/ternary'
54
+ require_relative 'parser/source/map/for'
55
+ require_relative 'parser/source/map/rescue_body'
56
+ require_relative 'parser/source/map/heredoc'
57
+ require_relative 'parser/source/map/objc_kwarg'
58
58
  end
59
59
 
60
- require 'parser/syntax_error'
61
- require 'parser/clobbering_error'
62
- require 'parser/diagnostic'
63
- require 'parser/diagnostic/engine'
60
+ require_relative 'parser/syntax_error'
61
+ require_relative 'parser/clobbering_error'
62
+ require_relative 'parser/unknown_encoding_in_magic_comment_error'
63
+ require_relative 'parser/diagnostic'
64
+ require_relative 'parser/diagnostic/engine'
64
65
 
65
- require 'parser/static_environment'
66
+ require_relative 'parser/static_environment'
66
67
 
67
68
  if RUBY_ENGINE == 'truffleruby'
68
- require 'parser/lexer-F0'
69
+ require_relative 'parser/lexer-F0'
69
70
  else
70
- require 'parser/lexer-F1'
71
+ require_relative 'parser/lexer-F1'
71
72
  end
72
- require 'parser/lexer-strings'
73
- require 'parser/lexer/literal'
74
- require 'parser/lexer/stack_state'
75
- require 'parser/lexer/dedenter'
73
+ require_relative 'parser/lexer-strings'
74
+ require_relative 'parser/lexer/literal'
75
+ require_relative 'parser/lexer/stack_state'
76
+ require_relative 'parser/lexer/dedenter'
76
77
 
77
78
  module Builders
78
- require 'parser/builders/default'
79
+ require_relative 'parser/builders/default'
79
80
  end
80
81
 
81
- require 'parser/context'
82
- require 'parser/max_numparam_stack'
83
- require 'parser/current_arg_stack'
84
- require 'parser/variables_stack'
82
+ require_relative 'parser/context'
83
+ require_relative 'parser/max_numparam_stack'
84
+ require_relative 'parser/current_arg_stack'
85
+ require_relative 'parser/variables_stack'
85
86
 
86
- require 'parser/base'
87
+ require_relative 'parser/base'
87
88
 
88
- require 'parser/rewriter'
89
- require 'parser/tree_rewriter'
89
+ require_relative 'parser/rewriter'
90
+ require_relative 'parser/tree_rewriter'
90
91
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.2.3
4
+ version: 3.3.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - whitequark
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-06-08 00:00:00.000000000 Z
10
+ date: 2025-07-25 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: ast
@@ -205,11 +204,11 @@ files:
205
204
  - lib/parser/ruby25.rb
206
205
  - lib/parser/ruby26.rb
207
206
  - lib/parser/ruby27.rb
208
- - lib/parser/ruby28.rb
209
207
  - lib/parser/ruby30.rb
210
208
  - lib/parser/ruby31.rb
211
209
  - lib/parser/ruby32.rb
212
210
  - lib/parser/ruby33.rb
211
+ - lib/parser/ruby34.rb
213
212
  - lib/parser/rubymotion.rb
214
213
  - lib/parser/runner.rb
215
214
  - lib/parser/runner/ruby_parse.rb
@@ -241,6 +240,7 @@ files:
241
240
  - lib/parser/static_environment.rb
242
241
  - lib/parser/syntax_error.rb
243
242
  - lib/parser/tree_rewriter.rb
243
+ - lib/parser/unknown_encoding_in_magic_comment_error.rb
244
244
  - lib/parser/variables_stack.rb
245
245
  - lib/parser/version.rb
246
246
  - parser.gemspec
@@ -249,10 +249,9 @@ licenses:
249
249
  - MIT
250
250
  metadata:
251
251
  bug_tracker_uri: https://github.com/whitequark/parser/issues
252
- changelog_uri: https://github.com/whitequark/parser/blob/v3.2.2.3/CHANGELOG.md
253
- documentation_uri: https://www.rubydoc.info/gems/parser/3.2.2.3
254
- source_code_uri: https://github.com/whitequark/parser/tree/v3.2.2.3
255
- post_install_message:
252
+ changelog_uri: https://github.com/whitequark/parser/blob/v3.3.9.0/CHANGELOG.md
253
+ documentation_uri: https://www.rubydoc.info/gems/parser/3.3.9.0
254
+ source_code_uri: https://github.com/whitequark/parser/tree/v3.3.9.0
256
255
  rdoc_options: []
257
256
  require_paths:
258
257
  - lib
@@ -267,8 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
267
266
  - !ruby/object:Gem::Version
268
267
  version: '0'
269
268
  requirements: []
270
- rubygems_version: 3.2.3
271
- signing_key:
269
+ rubygems_version: 3.6.2
272
270
  specification_version: 4
273
271
  summary: A Ruby parser written in pure Ruby.
274
272
  test_files: []