parser 2.7.2.0 → 3.1.1.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/LICENSE.txt +25 -0
- data/lib/parser/all.rb +2 -0
- data/lib/parser/ast/processor.rb +3 -0
- data/lib/parser/base.rb +1 -0
- data/lib/parser/builders/default.rb +225 -27
- data/lib/parser/context.rb +22 -37
- data/lib/parser/current.rb +28 -10
- data/lib/parser/current_arg_stack.rb +5 -2
- data/lib/parser/lexer/dedenter.rb +7 -1
- data/lib/parser/lexer/explanation.rb +1 -1
- data/lib/parser/lexer.rb +12728 -11483
- data/lib/parser/macruby.rb +2476 -2448
- data/lib/parser/max_numparam_stack.rb +16 -8
- data/lib/parser/messages.rb +5 -0
- data/lib/parser/meta.rb +2 -1
- data/lib/parser/ruby18.rb +2161 -2116
- data/lib/parser/ruby19.rb +2458 -2424
- data/lib/parser/ruby20.rb +2634 -2598
- data/lib/parser/ruby21.rb +2700 -2667
- data/lib/parser/ruby22.rb +2533 -2491
- data/lib/parser/ruby23.rb +2616 -2571
- data/lib/parser/ruby24.rb +2651 -2609
- data/lib/parser/ruby25.rb +2545 -2513
- data/lib/parser/ruby26.rb +2669 -2624
- data/lib/parser/ruby27.rb +3953 -3842
- data/lib/parser/ruby30.rb +4089 -4045
- data/lib/parser/ruby31.rb +8354 -0
- data/lib/parser/ruby32.rb +8330 -0
- data/lib/parser/rubymotion.rb +2454 -2415
- data/lib/parser/runner.rb +12 -1
- data/lib/parser/source/buffer.rb +50 -27
- data/lib/parser/source/comment/associator.rb +17 -4
- data/lib/parser/source/comment.rb +13 -0
- data/lib/parser/source/tree_rewriter.rb +27 -0
- data/lib/parser/static_environment.rb +13 -0
- data/lib/parser/variables_stack.rb +4 -0
- data/lib/parser/version.rb +1 -1
- data/parser.gemspec +1 -1
- metadata +9 -6
@@ -2,19 +2,28 @@
|
|
2
2
|
|
3
3
|
module Parser
|
4
4
|
|
5
|
+
# Holds p->max_numparam from parse.y
|
6
|
+
#
|
7
|
+
# @api private
|
5
8
|
class MaxNumparamStack
|
6
9
|
attr_reader :stack
|
7
10
|
|
11
|
+
ORDINARY_PARAMS = -1
|
12
|
+
|
8
13
|
def initialize
|
9
14
|
@stack = []
|
10
15
|
end
|
11
16
|
|
17
|
+
def empty?
|
18
|
+
@stack.size == 0
|
19
|
+
end
|
20
|
+
|
12
21
|
def has_ordinary_params!
|
13
|
-
set(
|
22
|
+
set(ORDINARY_PARAMS)
|
14
23
|
end
|
15
24
|
|
16
25
|
def has_ordinary_params?
|
17
|
-
top
|
26
|
+
top == ORDINARY_PARAMS
|
18
27
|
end
|
19
28
|
|
20
29
|
def has_numparams?
|
@@ -26,22 +35,21 @@ module Parser
|
|
26
35
|
end
|
27
36
|
|
28
37
|
def top
|
29
|
-
@stack.last
|
38
|
+
@stack.last[:value]
|
30
39
|
end
|
31
40
|
|
32
|
-
def push
|
33
|
-
@stack.push(0)
|
41
|
+
def push(static:)
|
42
|
+
@stack.push(value: 0, static: static)
|
34
43
|
end
|
35
44
|
|
36
45
|
def pop
|
37
|
-
@stack.pop
|
46
|
+
@stack.pop[:value]
|
38
47
|
end
|
39
48
|
|
40
49
|
private
|
41
50
|
|
42
51
|
def set(value)
|
43
|
-
@stack.
|
44
|
-
@stack.push(value)
|
52
|
+
@stack.last[:value] = value
|
45
53
|
end
|
46
54
|
end
|
47
55
|
|
data/lib/parser/messages.rb
CHANGED
@@ -35,6 +35,7 @@ module Parser
|
|
35
35
|
# Lexer warnings
|
36
36
|
:invalid_escape_use => 'invalid character syntax; use ?%{escape}',
|
37
37
|
:ambiguous_literal => 'ambiguous first argument; put parentheses or a space even after the operator',
|
38
|
+
:ambiguous_regexp => "ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `/' operator",
|
38
39
|
:ambiguous_prefix => "`%{prefix}' interpreted as argument prefix",
|
39
40
|
:triple_dot_at_eol => '... at EOL, should be parenthesized',
|
40
41
|
|
@@ -75,9 +76,13 @@ module Parser
|
|
75
76
|
:duplicate_variable_name => 'duplicate variable name %{name}',
|
76
77
|
:duplicate_pattern_key => 'duplicate hash pattern key %{name}',
|
77
78
|
:endless_setter => 'setter method cannot be defined in an endless method definition',
|
79
|
+
:invalid_id_to_get => 'identifier %{identifier} is not valid to get',
|
80
|
+
:forward_arg_after_restarg => '... after rest argument',
|
81
|
+
:no_anonymous_blockarg => 'no anonymous block parameter',
|
78
82
|
|
79
83
|
# Parser warnings
|
80
84
|
:useless_else => 'else without rescue is useless',
|
85
|
+
:duplicate_hash_key => 'key is duplicated and overwritten',
|
81
86
|
|
82
87
|
# Parser errors that are not Ruby errors
|
83
88
|
:invalid_encoding => 'literal contains escape sequences incompatible with UTF-8',
|
data/lib/parser/meta.rb
CHANGED
@@ -31,7 +31,8 @@ module Parser
|
|
31
31
|
match_var pin match_alt match_as match_rest
|
32
32
|
array_pattern match_with_trailing_comma array_pattern_with_tail
|
33
33
|
hash_pattern const_pattern if_guard unless_guard match_nil_pattern
|
34
|
-
empty_else find_pattern
|
34
|
+
empty_else find_pattern kwargs
|
35
|
+
match_pattern_p match_pattern
|
35
36
|
).to_set.freeze
|
36
37
|
|
37
38
|
end # Meta
|