parser 2.7.2.0 → 3.1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|