ruby-next-parser 2.8.0.3 → 2.8.0.4
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/lib/parser/ruby-next/AST_FORMAT.md +23 -0
- data/lib/parser/ruby-next/ast/processor.rb +9 -2
- data/lib/parser/ruby-next/builder.rb +16 -7
- data/lib/parser/ruby-next/meta.rb +1 -1
- data/lib/parser/ruby-next/parser_ext.rb +1 -1
- data/lib/parser/ruby-next/version.rb +1 -1
- data/lib/parser/rubynext.rb +3815 -3744
- data/lib/parser/rubynext.y +19 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: caa83687cc10df513ca9cd9b3aa18360667af34b2b4c9892493654306d09f43f
|
4
|
+
data.tar.gz: 9511abf629e5c708ddb8b6fe833883ef7f79fcbf90329541844aeec54019ff51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9b0f2741e01fdfa3f6661e5805cf59600d3a8ca570d2f0bb02dd9241f4375c7073d2837be27bb1ecf911f5b97f2446bb8b44fdda20cafbf7abb4b75088bf71e
|
7
|
+
data.tar.gz: 9a85c3a5e1ff4f248dd3626b606ad46bd35d563be2f0def0ec09046a59c212014cfca3c77aae585419ae8ba1faad457fa93a70d059a1bc139d9c86aff6c56238
|
@@ -39,3 +39,26 @@ Format:
|
|
39
39
|
^ assignment
|
40
40
|
~~~~~~~~~~~~~~~~~~~ expression
|
41
41
|
~~~
|
42
|
+
|
43
|
+
|
44
|
+
### Right-hand assignment
|
45
|
+
|
46
|
+
Format:
|
47
|
+
|
48
|
+
~~~
|
49
|
+
(rasgn (int 1) (lvasgn :a))
|
50
|
+
"1 => a"
|
51
|
+
~~~~~~ expression
|
52
|
+
~~ operator
|
53
|
+
~~~
|
54
|
+
|
55
|
+
#### Multiple right-hand assignment
|
56
|
+
|
57
|
+
Format:
|
58
|
+
|
59
|
+
~~~
|
60
|
+
(mrasgn (send (int 13) :divmod (int 5)) (mlhs (lvasgn :a) (lvasgn :b)))
|
61
|
+
"13.divmod(5) => a,b"
|
62
|
+
~~~~~~~~~~~~~~~~~~~ expression
|
63
|
+
^^ operator
|
64
|
+
~~~
|
@@ -6,8 +6,15 @@ require "parser/ast/processor"
|
|
6
6
|
module Parser
|
7
7
|
module AST
|
8
8
|
class Processor
|
9
|
-
|
10
|
-
|
9
|
+
unless method_defined?(:on_def_e)
|
10
|
+
alias on_def_e on_def
|
11
|
+
alias on_defs_e on_defs
|
12
|
+
end
|
13
|
+
|
14
|
+
unless method_defined?(:on_rasgn)
|
15
|
+
alias on_rasgn process_regular_node
|
16
|
+
alias on_mrasgn process_regular_node
|
17
|
+
end
|
11
18
|
end
|
12
19
|
end
|
13
20
|
end
|
@@ -9,13 +9,13 @@ module Parser
|
|
9
9
|
def method_ref(receiver, dot_t, selector_t)
|
10
10
|
n(:meth_ref, [ receiver, value(selector_t).to_sym ],
|
11
11
|
send_map(receiver, dot_t, selector_t, nil, [], nil))
|
12
|
-
end
|
12
|
+
end unless method_defined?(:method_ref)
|
13
13
|
|
14
14
|
def def_endless_method(def_t, name_t, args,
|
15
15
|
assignment_t, body)
|
16
16
|
n(:def_e, [ value(name_t).to_sym, args, body ],
|
17
17
|
endless_definition_map(def_t, nil, name_t, assignment_t, body))
|
18
|
-
end
|
18
|
+
end unless method_defined?(:def_endless_method)
|
19
19
|
|
20
20
|
def def_endless_singleton(def_t, definee, dot_t,
|
21
21
|
name_t, args,
|
@@ -24,7 +24,18 @@ module Parser
|
|
24
24
|
|
25
25
|
n(:defs_e, [ definee, value(name_t).to_sym, args, body ],
|
26
26
|
endless_definition_map(def_t, dot_t, name_t, assignment_t, body))
|
27
|
-
end
|
27
|
+
end unless method_defined?(:def_endless_singleton)
|
28
|
+
|
29
|
+
def rassign(lhs, assoc_t, rhs)
|
30
|
+
n(:rasgn, [lhs, rhs], binary_op_map(lhs, assoc_t, rhs))
|
31
|
+
end unless method_defined?(:rassign)
|
32
|
+
|
33
|
+
def multi_rassign(lhs, assoc_t, rhs)
|
34
|
+
n(:mrasgn, [ lhs, rhs ],
|
35
|
+
binary_op_map(lhs, assoc_t, rhs))
|
36
|
+
end unless method_defined?(:multi_rassign)
|
37
|
+
|
38
|
+
private
|
28
39
|
|
29
40
|
def endless_definition_map(keyword_t, operator_t, name_t, assignment_t, body_e)
|
30
41
|
body_l = body_e.loc.expression
|
@@ -32,9 +43,7 @@ module Parser
|
|
32
43
|
Source::Map::EndlessDefinition.new(loc(keyword_t),
|
33
44
|
loc(operator_t), loc(name_t),
|
34
45
|
loc(assignment_t), body_l)
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
46
|
+
end unless private_method_defined?(:endless_definition_map)
|
38
47
|
|
39
48
|
def validate_definee(definee)
|
40
49
|
case definee.type
|
@@ -46,6 +55,6 @@ module Parser
|
|
46
55
|
else
|
47
56
|
true
|
48
57
|
end
|
49
|
-
end
|
58
|
+
end unless private_method_defined?(:validate_definee)
|
50
59
|
end
|
51
60
|
end
|
@@ -5,7 +5,7 @@ require "parser/meta"
|
|
5
5
|
module Parser
|
6
6
|
# Parser metadata
|
7
7
|
module Meta
|
8
|
-
NEXT_NODE_TYPES = (NODE_TYPES + %i[meth_ref def_e defs_e]).freeze
|
8
|
+
NEXT_NODE_TYPES = (NODE_TYPES + %i[meth_ref def_e defs_e rasgn mrasgn]).to_set.freeze
|
9
9
|
|
10
10
|
remove_const(:NODE_TYPES)
|
11
11
|
const_set(:NODE_TYPES, NEXT_NODE_TYPES)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require_relative "lexer"
|
4
4
|
require_relative "builder"
|
5
|
-
require_relative "source/map/endless_definition"
|
5
|
+
require_relative "source/map/endless_definition" unless defined?(Parser::Source::Map::EndlessDefinition)
|
6
6
|
require_relative "ast/processor"
|
7
7
|
|
8
8
|
module Parser
|