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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ed45256e09de6d92098e12e73a655fe9d4f35518f573984bf1d92ac87ae8ded
|
4
|
+
data.tar.gz: 68ee7fca4f6d1794e2fb160552b01b983466cd482cad8783ba5f7b1466d0e70b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f8f0785aba15f53c97b046aa5155ffeff4063b12fb611612bd7c3b94affb282487b5aad5ca783d2b928a91333db6e572a2a8a466fe9c7f5716354cb23644471
|
7
|
+
data.tar.gz: b8ecfc04463142cffb2aaad920e95e11257a1a6f7587bf439620b73e59102f15850c413dc807b613379678de9878aa2d941f3fa65ab20716f6be6d80fcf03299
|
data/lib/parser/all.rb
CHANGED
data/lib/parser/ast/processor.rb
CHANGED
@@ -20,6 +20,7 @@ module Parser
|
|
20
20
|
alias on_array process_regular_node
|
21
21
|
alias on_pair process_regular_node
|
22
22
|
alias on_hash process_regular_node
|
23
|
+
alias on_kwargs process_regular_node
|
23
24
|
alias on_irange process_regular_node
|
24
25
|
alias on_erange process_regular_node
|
25
26
|
|
@@ -124,7 +125,23 @@ module Parser
|
|
124
125
|
alias on_kwarg process_argument_node
|
125
126
|
alias on_kwoptarg process_argument_node
|
126
127
|
alias on_kwrestarg process_argument_node
|
127
|
-
alias
|
128
|
+
alias on_forward_arg process_argument_node
|
129
|
+
|
130
|
+
def on_procarg0(node)
|
131
|
+
if node.children[0].is_a?(Symbol)
|
132
|
+
# This branch gets executed when the builder
|
133
|
+
# is not configured to emit and 'arg' inside 'procarg0', i.e. when
|
134
|
+
# Parser::Builders::Default.emit_arg_inside_procarg0
|
135
|
+
# is set to false.
|
136
|
+
#
|
137
|
+
# If this flag is set to true this branch is unreachable.
|
138
|
+
# s(:procarg0, :a)
|
139
|
+
on_argument(node)
|
140
|
+
else
|
141
|
+
# s(:procarg0, s(:arg, :a), s(:arg, :b))
|
142
|
+
process_regular_node(node)
|
143
|
+
end
|
144
|
+
end
|
128
145
|
|
129
146
|
alias on_arg_expr process_regular_node
|
130
147
|
alias on_restarg_expr process_regular_node
|
@@ -173,6 +190,14 @@ module Parser
|
|
173
190
|
alias on_block process_regular_node
|
174
191
|
alias on_lambda process_regular_node
|
175
192
|
|
193
|
+
def on_numblock(node)
|
194
|
+
method_call, max_numparam, body = *node
|
195
|
+
|
196
|
+
node.updated(nil, [
|
197
|
+
process(method_call), max_numparam, process(body)
|
198
|
+
])
|
199
|
+
end
|
200
|
+
|
176
201
|
alias on_while process_regular_node
|
177
202
|
alias on_while_post process_regular_node
|
178
203
|
alias on_until process_regular_node
|
@@ -213,6 +238,24 @@ module Parser
|
|
213
238
|
alias on_preexe process_regular_node
|
214
239
|
alias on_postexe process_regular_node
|
215
240
|
|
241
|
+
alias on_case_match process_regular_node
|
242
|
+
alias on_in_match process_regular_node
|
243
|
+
alias on_match_pattern process_regular_node
|
244
|
+
alias on_match_pattern_p process_regular_node
|
245
|
+
alias on_in_pattern process_regular_node
|
246
|
+
alias on_if_guard process_regular_node
|
247
|
+
alias on_unless_guard process_regular_node
|
248
|
+
alias on_match_var process_variable_node
|
249
|
+
alias on_match_rest process_regular_node
|
250
|
+
alias on_pin process_regular_node
|
251
|
+
alias on_match_alt process_regular_node
|
252
|
+
alias on_match_as process_regular_node
|
253
|
+
alias on_array_pattern process_regular_node
|
254
|
+
alias on_array_pattern_with_tail process_regular_node
|
255
|
+
alias on_hash_pattern process_regular_node
|
256
|
+
alias on_const_pattern process_regular_node
|
257
|
+
alias on_find_pattern process_regular_node
|
258
|
+
|
216
259
|
# @private
|
217
260
|
def process_variable_node(node)
|
218
261
|
warn 'Parser::AST::Processor#process_variable_node is deprecated as a' \
|
@@ -236,6 +279,10 @@ module Parser
|
|
236
279
|
'Parser::AST::Processor#on_argument instead.'
|
237
280
|
on_argument(node)
|
238
281
|
end
|
282
|
+
|
283
|
+
def on_empty_else(node)
|
284
|
+
node
|
285
|
+
end
|
239
286
|
end
|
240
287
|
end
|
241
288
|
end
|
data/lib/parser/base.rb
CHANGED
@@ -109,11 +109,16 @@ module Parser
|
|
109
109
|
end
|
110
110
|
private_class_method :setup_source_buffer
|
111
111
|
|
112
|
+
attr_reader :lexer
|
112
113
|
attr_reader :diagnostics
|
113
114
|
attr_reader :builder
|
114
115
|
attr_reader :static_env
|
115
116
|
attr_reader :source_buffer
|
116
117
|
attr_reader :context
|
118
|
+
attr_reader :max_numparam_stack
|
119
|
+
attr_reader :current_arg_stack
|
120
|
+
attr_reader :pattern_variables
|
121
|
+
attr_reader :pattern_hash_keys
|
117
122
|
|
118
123
|
##
|
119
124
|
# @param [Parser::Builders::Default] builder The AST builder to use.
|
@@ -123,13 +128,28 @@ module Parser
|
|
123
128
|
|
124
129
|
@static_env = StaticEnvironment.new
|
125
130
|
|
131
|
+
# Stack that holds current parsing context
|
132
|
+
@context = Context.new
|
133
|
+
|
134
|
+
# Maximum numbered parameters stack
|
135
|
+
@max_numparam_stack = MaxNumparamStack.new
|
136
|
+
|
137
|
+
# Current argument names stack
|
138
|
+
@current_arg_stack = CurrentArgStack.new
|
139
|
+
|
140
|
+
# Stack of set of variables used in the current pattern
|
141
|
+
@pattern_variables = VariablesStack.new
|
142
|
+
|
143
|
+
# Stack of set of keys used in the current hash in pattern matchinig
|
144
|
+
@pattern_hash_keys = VariablesStack.new
|
145
|
+
|
126
146
|
@lexer = Lexer.new(version)
|
127
147
|
@lexer.diagnostics = @diagnostics
|
128
148
|
@lexer.static_env = @static_env
|
149
|
+
@lexer.context = @context
|
129
150
|
|
130
151
|
@builder = builder
|
131
152
|
@builder.parser = self
|
132
|
-
@context = Context.new
|
133
153
|
|
134
154
|
# Last emitted token
|
135
155
|
@last_token = nil
|
@@ -150,21 +170,24 @@ module Parser
|
|
150
170
|
@lexer.reset
|
151
171
|
@static_env.reset
|
152
172
|
@context.reset
|
173
|
+
@current_arg_stack.reset
|
174
|
+
@pattern_variables.reset
|
175
|
+
@pattern_hash_keys.reset
|
153
176
|
|
154
177
|
self
|
155
178
|
end
|
156
179
|
|
157
180
|
##
|
158
|
-
# Parses a source buffer and returns the AST.
|
181
|
+
# Parses a source buffer and returns the AST, or `nil` in case of a non fatal error.
|
159
182
|
#
|
160
183
|
# @param [Parser::Source::Buffer] source_buffer The source buffer to parse.
|
161
|
-
# @return [Parser::AST::Node]
|
184
|
+
# @return [Parser::AST::Node, nil]
|
162
185
|
#
|
163
186
|
def parse(source_buffer)
|
164
187
|
@lexer.source_buffer = source_buffer
|
165
188
|
@source_buffer = source_buffer
|
166
189
|
|
167
|
-
do_parse
|
190
|
+
do_parse || nil # Force `false` to `nil`, see https://github.com/ruby/racc/pull/136
|
168
191
|
ensure
|
169
192
|
# Don't keep references to the source file.
|
170
193
|
@source_buffer = nil
|
@@ -188,8 +211,9 @@ module Parser
|
|
188
211
|
|
189
212
|
##
|
190
213
|
# Parses a source buffer and returns the AST, the source code comments,
|
191
|
-
# and the tokens emitted by the lexer.
|
192
|
-
#
|
214
|
+
# and the tokens emitted by the lexer. In case of a fatal error, a {SyntaxError}
|
215
|
+
# is raised, unless `recover` is true. In case of an error
|
216
|
+
# (non-fatal or recovered), `nil` is returned instead of the AST, and
|
193
217
|
# comments as well as tokens are only returned up to the location of
|
194
218
|
# the error.
|
195
219
|
#
|