ruby-next-parser 2.8.0.6 → 3.0.0.1
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 +14 -40
- data/lib/parser/ruby-next/ast/processor.rb +4 -12
- data/lib/parser/ruby-next/builder.rb +8 -45
- data/lib/parser/ruby-next/lexer.rb +814 -800
- data/lib/parser/ruby-next/lexer.rl +15 -1
- data/lib/parser/ruby-next/meta.rb +1 -1
- data/lib/parser/ruby-next/parser_ext.rb +0 -1
- data/lib/parser/ruby-next/version.rb +1 -1
- data/lib/parser/rubynext.rb +3518 -3421
- data/lib/parser/rubynext.y +102 -63
- metadata +2 -3
- data/lib/parser/ruby-next/source/map/endless_definition.rb +0 -23
data/lib/parser/rubynext.y
CHANGED
|
@@ -647,7 +647,7 @@ rule
|
|
|
647
647
|
|
|
648
648
|
fitem: fname
|
|
649
649
|
{
|
|
650
|
-
result = @builder.
|
|
650
|
+
result = @builder.symbol_internal(val[0])
|
|
651
651
|
}
|
|
652
652
|
| symbol
|
|
653
653
|
|
|
@@ -866,6 +866,12 @@ rule
|
|
|
866
866
|
}
|
|
867
867
|
| defn_head f_paren_args tEQL arg
|
|
868
868
|
{
|
|
869
|
+
_def_t, name_t = val[0]
|
|
870
|
+
|
|
871
|
+
if name_t[0].end_with?('=')
|
|
872
|
+
diagnostic :error, :endless_setter, nil, name_t
|
|
873
|
+
end
|
|
874
|
+
|
|
869
875
|
result = @builder.def_endless_method(*val[0],
|
|
870
876
|
val[1], val[2], val[3])
|
|
871
877
|
|
|
@@ -960,6 +966,14 @@ rule
|
|
|
960
966
|
{
|
|
961
967
|
result = val
|
|
962
968
|
}
|
|
969
|
+
| tLPAREN2 args tCOMMA args_forward rparen
|
|
970
|
+
{
|
|
971
|
+
unless @static_env.declared_forward_args?
|
|
972
|
+
diagnostic :error, :unexpected_token, { :token => 'tBDOT3' } , val[3]
|
|
973
|
+
end
|
|
974
|
+
|
|
975
|
+
result = [val[0], [*val[1], @builder.forwarded_args(val[3])], val[4]]
|
|
976
|
+
}
|
|
963
977
|
| tLPAREN2 args_forward rparen
|
|
964
978
|
{
|
|
965
979
|
unless @static_env.declared_forward_args?
|
|
@@ -1212,14 +1226,7 @@ rule
|
|
|
1212
1226
|
result = @builder.block(val[0],
|
|
1213
1227
|
begin_t, args, body, end_t)
|
|
1214
1228
|
}
|
|
1215
|
-
|
|
|
1216
|
-
{
|
|
1217
|
-
lambda_call = @builder.call_lambda(val[0])
|
|
1218
|
-
|
|
1219
|
-
args, (begin_t, body, end_t) = val[1]
|
|
1220
|
-
result = @builder.block(lambda_call,
|
|
1221
|
-
begin_t, args, body, end_t)
|
|
1222
|
-
}
|
|
1229
|
+
| lambda
|
|
1223
1230
|
| kIF expr_value then compstmt if_tail kEND
|
|
1224
1231
|
{
|
|
1225
1232
|
else_t, else_ = val[4]
|
|
@@ -1314,6 +1321,7 @@ rule
|
|
|
1314
1321
|
{
|
|
1315
1322
|
@static_env.extend_static
|
|
1316
1323
|
@lexer.cmdarg.push(false)
|
|
1324
|
+
@context.push(:module)
|
|
1317
1325
|
}
|
|
1318
1326
|
bodystmt kEND
|
|
1319
1327
|
{
|
|
@@ -1326,6 +1334,7 @@ rule
|
|
|
1326
1334
|
|
|
1327
1335
|
@lexer.cmdarg.pop
|
|
1328
1336
|
@static_env.unextend
|
|
1337
|
+
@context.pop
|
|
1329
1338
|
}
|
|
1330
1339
|
| defn_head f_arglist bodystmt kEND
|
|
1331
1340
|
{
|
|
@@ -1457,6 +1466,9 @@ rule
|
|
|
1457
1466
|
result = @builder.restarg(val[0])
|
|
1458
1467
|
}
|
|
1459
1468
|
|
|
1469
|
+
f_any_kwrest: f_kwrest
|
|
1470
|
+
| f_no_kwarg
|
|
1471
|
+
|
|
1460
1472
|
block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg
|
|
1461
1473
|
{
|
|
1462
1474
|
result = val[0].concat(val[2]).concat(val[3])
|
|
@@ -1465,11 +1477,7 @@ rule
|
|
|
1465
1477
|
{
|
|
1466
1478
|
result = val[0].concat(val[1])
|
|
1467
1479
|
}
|
|
1468
|
-
|
|
|
1469
|
-
{
|
|
1470
|
-
result = val[0].concat(val[1])
|
|
1471
|
-
}
|
|
1472
|
-
| f_no_kwarg opt_f_block_arg
|
|
1480
|
+
| f_any_kwrest opt_f_block_arg
|
|
1473
1481
|
{
|
|
1474
1482
|
result = val[0].concat(val[1])
|
|
1475
1483
|
}
|
|
@@ -1488,6 +1496,8 @@ opt_block_args_tail:
|
|
|
1488
1496
|
result = []
|
|
1489
1497
|
}
|
|
1490
1498
|
|
|
1499
|
+
excessed_comma: tCOMMA
|
|
1500
|
+
|
|
1491
1501
|
block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail
|
|
1492
1502
|
{
|
|
1493
1503
|
result = val[0].
|
|
@@ -1522,7 +1532,7 @@ opt_block_args_tail:
|
|
|
1522
1532
|
concat(val[2]).
|
|
1523
1533
|
concat(val[3])
|
|
1524
1534
|
}
|
|
1525
|
-
| f_arg
|
|
1535
|
+
| f_arg excessed_comma
|
|
1526
1536
|
| f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail
|
|
1527
1537
|
{
|
|
1528
1538
|
result = val[0].
|
|
@@ -1622,7 +1632,8 @@ opt_block_args_tail:
|
|
|
1622
1632
|
}
|
|
1623
1633
|
| f_bad_arg
|
|
1624
1634
|
|
|
1625
|
-
lambda:
|
|
1635
|
+
lambda: tLAMBDA
|
|
1636
|
+
{
|
|
1626
1637
|
@static_env.extend_dynamic
|
|
1627
1638
|
@max_numparam_stack.push
|
|
1628
1639
|
@context.push(:lambda)
|
|
@@ -1634,12 +1645,16 @@ opt_block_args_tail:
|
|
|
1634
1645
|
}
|
|
1635
1646
|
lambda_body
|
|
1636
1647
|
{
|
|
1637
|
-
|
|
1638
|
-
|
|
1648
|
+
lambda_call = @builder.call_lambda(val[0])
|
|
1649
|
+
args = @max_numparam_stack.has_numparams? ? @builder.numargs(@max_numparam_stack.top) : val[2]
|
|
1650
|
+
begin_t, body, end_t = val[4]
|
|
1639
1651
|
|
|
1640
1652
|
@max_numparam_stack.pop
|
|
1641
1653
|
@static_env.unextend
|
|
1642
1654
|
@lexer.cmdarg.pop
|
|
1655
|
+
|
|
1656
|
+
result = @builder.block(lambda_call,
|
|
1657
|
+
begin_t, args, body, end_t)
|
|
1643
1658
|
}
|
|
1644
1659
|
|
|
1645
1660
|
f_larglist: tLPAREN2 f_args opt_bv_decl tRPAREN
|
|
@@ -1878,6 +1893,10 @@ opt_block_args_tail:
|
|
|
1878
1893
|
{
|
|
1879
1894
|
result = @builder.array_pattern(nil, [val[0]].concat(val[2]), nil)
|
|
1880
1895
|
}
|
|
1896
|
+
| p_find
|
|
1897
|
+
{
|
|
1898
|
+
result = @builder.find_pattern(nil, val[0], nil)
|
|
1899
|
+
}
|
|
1881
1900
|
| p_args_tail
|
|
1882
1901
|
{
|
|
1883
1902
|
result = @builder.array_pattern(nil, val[0], nil)
|
|
@@ -1920,6 +1939,12 @@ opt_block_args_tail:
|
|
|
1920
1939
|
pattern = @builder.array_pattern(nil, val[2], nil)
|
|
1921
1940
|
result = @builder.const_pattern(val[0], val[1], pattern, val[3])
|
|
1922
1941
|
}
|
|
1942
|
+
| p_const p_lparen p_find rparen
|
|
1943
|
+
{
|
|
1944
|
+
@pattern_hash_keys.pop
|
|
1945
|
+
pattern = @builder.find_pattern(nil, val[2], nil)
|
|
1946
|
+
result = @builder.const_pattern(val[0], val[1], pattern, val[3])
|
|
1947
|
+
}
|
|
1923
1948
|
| p_const p_lparen p_kwargs rparen
|
|
1924
1949
|
{
|
|
1925
1950
|
@pattern_hash_keys.pop
|
|
@@ -1937,6 +1962,12 @@ opt_block_args_tail:
|
|
|
1937
1962
|
pattern = @builder.array_pattern(nil, val[2], nil)
|
|
1938
1963
|
result = @builder.const_pattern(val[0], val[1], pattern, val[3])
|
|
1939
1964
|
}
|
|
1965
|
+
| p_const p_lbracket p_find rbracket
|
|
1966
|
+
{
|
|
1967
|
+
@pattern_hash_keys.pop
|
|
1968
|
+
pattern = @builder.find_pattern(nil, val[2], nil)
|
|
1969
|
+
result = @builder.const_pattern(val[0], val[1], pattern, val[3])
|
|
1970
|
+
}
|
|
1940
1971
|
| p_const p_lbracket p_kwargs rbracket
|
|
1941
1972
|
{
|
|
1942
1973
|
@pattern_hash_keys.pop
|
|
@@ -1948,14 +1979,13 @@ opt_block_args_tail:
|
|
|
1948
1979
|
pattern = @builder.array_pattern(val[1], nil, val[2])
|
|
1949
1980
|
result = @builder.const_pattern(val[0], val[1], pattern, val[2])
|
|
1950
1981
|
}
|
|
1951
|
-
| tLBRACK
|
|
1982
|
+
| tLBRACK p_args rbracket
|
|
1952
1983
|
{
|
|
1953
|
-
@
|
|
1984
|
+
result = @builder.array_pattern(val[0], val[1], val[2])
|
|
1954
1985
|
}
|
|
1955
|
-
|
|
1986
|
+
| tLBRACK p_find rbracket
|
|
1956
1987
|
{
|
|
1957
|
-
@
|
|
1958
|
-
result = @builder.array_pattern(val[0], val[2], val[3])
|
|
1988
|
+
result = @builder.find_pattern(val[0], val[1], val[2])
|
|
1959
1989
|
}
|
|
1960
1990
|
| tLBRACK rbracket
|
|
1961
1991
|
{
|
|
@@ -2036,25 +2066,27 @@ opt_block_args_tail:
|
|
|
2036
2066
|
result = [ *val[0], last_item ]
|
|
2037
2067
|
}
|
|
2038
2068
|
|
|
2039
|
-
p_args_tail:
|
|
2069
|
+
p_args_tail: p_rest
|
|
2040
2070
|
{
|
|
2041
|
-
|
|
2042
|
-
result = [ match_rest ]
|
|
2071
|
+
result = [ val[0] ]
|
|
2043
2072
|
}
|
|
2044
|
-
|
|
|
2073
|
+
| p_rest tCOMMA p_args_post
|
|
2045
2074
|
{
|
|
2046
|
-
|
|
2047
|
-
result = [ match_rest, *val[3] ]
|
|
2075
|
+
result = [ val[0], *val[2] ]
|
|
2048
2076
|
}
|
|
2049
|
-
|
|
2077
|
+
|
|
2078
|
+
p_find: p_rest tCOMMA p_args_post tCOMMA p_rest
|
|
2050
2079
|
{
|
|
2051
|
-
|
|
2052
|
-
result = [ match_rest ]
|
|
2080
|
+
result = [ val[0], *val[2], val[4] ]
|
|
2053
2081
|
}
|
|
2054
|
-
|
|
2082
|
+
|
|
2083
|
+
p_rest: tSTAR tIDENTIFIER
|
|
2055
2084
|
{
|
|
2056
|
-
|
|
2057
|
-
|
|
2085
|
+
result = @builder.match_rest(val[0], val[1])
|
|
2086
|
+
}
|
|
2087
|
+
| tSTAR
|
|
2088
|
+
{
|
|
2089
|
+
result = @builder.match_rest(val[0])
|
|
2058
2090
|
}
|
|
2059
2091
|
|
|
2060
2092
|
p_args_post: p_arg
|
|
@@ -2068,7 +2100,7 @@ opt_block_args_tail:
|
|
|
2068
2100
|
|
|
2069
2101
|
p_arg: p_expr
|
|
2070
2102
|
|
|
2071
|
-
p_kwargs: p_kwarg tCOMMA
|
|
2103
|
+
p_kwargs: p_kwarg tCOMMA p_any_kwrest
|
|
2072
2104
|
{
|
|
2073
2105
|
result = [ *val[0], *val[2] ]
|
|
2074
2106
|
}
|
|
@@ -2080,18 +2112,10 @@ opt_block_args_tail:
|
|
|
2080
2112
|
{
|
|
2081
2113
|
result = val[0]
|
|
2082
2114
|
}
|
|
2083
|
-
|
|
|
2115
|
+
| p_any_kwrest
|
|
2084
2116
|
{
|
|
2085
2117
|
result = val[0]
|
|
2086
2118
|
}
|
|
2087
|
-
| p_kwarg tCOMMA p_kwnorest
|
|
2088
|
-
{
|
|
2089
|
-
result = [ *val[0], *val[2] ]
|
|
2090
|
-
}
|
|
2091
|
-
| p_kwnorest
|
|
2092
|
-
{
|
|
2093
|
-
result = [ *val[0], *val[2] ]
|
|
2094
|
-
}
|
|
2095
2119
|
|
|
2096
2120
|
p_kwarg: p_kw
|
|
2097
2121
|
{
|
|
@@ -2113,7 +2137,6 @@ opt_block_args_tail:
|
|
|
2113
2137
|
|
|
2114
2138
|
p_kw_label: tLABEL
|
|
2115
2139
|
{
|
|
2116
|
-
check_kwarg_name(val[0])
|
|
2117
2140
|
result = [:label, val[0]]
|
|
2118
2141
|
}
|
|
2119
2142
|
| tSTRING_BEG string_contents tLABEL_END
|
|
@@ -2135,6 +2158,9 @@ opt_block_args_tail:
|
|
|
2135
2158
|
result = [ @builder.match_nil_pattern(val[0], val[1]) ]
|
|
2136
2159
|
}
|
|
2137
2160
|
|
|
2161
|
+
p_any_kwrest: p_kwrest
|
|
2162
|
+
| p_kwnorest
|
|
2163
|
+
|
|
2138
2164
|
p_value: p_primitive
|
|
2139
2165
|
| p_primitive tDOT2 p_primitive
|
|
2140
2166
|
{
|
|
@@ -2176,14 +2202,7 @@ opt_block_args_tail:
|
|
|
2176
2202
|
{
|
|
2177
2203
|
result = @builder.accessible(val[0])
|
|
2178
2204
|
}
|
|
2179
|
-
|
|
|
2180
|
-
{
|
|
2181
|
-
lambda_call = @builder.call_lambda(val[0])
|
|
2182
|
-
|
|
2183
|
-
args, (begin_t, body, end_t) = val[1]
|
|
2184
|
-
result = @builder.block(lambda_call,
|
|
2185
|
-
begin_t, args, body, end_t)
|
|
2186
|
-
}
|
|
2205
|
+
| lambda
|
|
2187
2206
|
|
|
2188
2207
|
p_variable: tIDENTIFIER
|
|
2189
2208
|
{
|
|
@@ -2602,15 +2621,22 @@ keyword_variable: kNIL
|
|
|
2602
2621
|
result = nil
|
|
2603
2622
|
}
|
|
2604
2623
|
|
|
2605
|
-
|
|
2624
|
+
f_paren_args: tLPAREN2 f_args rparen
|
|
2606
2625
|
{
|
|
2607
2626
|
result = @builder.args(val[0], val[1], val[2])
|
|
2608
2627
|
|
|
2609
2628
|
@lexer.state = :expr_value
|
|
2610
2629
|
}
|
|
2630
|
+
| tLPAREN2 f_arg tCOMMA args_forward rparen
|
|
2631
|
+
{
|
|
2632
|
+
args = [ *val[1], @builder.forward_arg(val[3]) ]
|
|
2633
|
+
result = @builder.args(val[0], args, val[4])
|
|
2634
|
+
|
|
2635
|
+
@static_env.declare_forward_args
|
|
2636
|
+
}
|
|
2611
2637
|
| tLPAREN2 args_forward rparen
|
|
2612
2638
|
{
|
|
2613
|
-
result = @builder.
|
|
2639
|
+
result = @builder.forward_only_args(val[0], val[1], val[2])
|
|
2614
2640
|
@static_env.declare_forward_args
|
|
2615
2641
|
|
|
2616
2642
|
@lexer.state = :expr_value
|
|
@@ -2635,11 +2661,7 @@ keyword_variable: kNIL
|
|
|
2635
2661
|
{
|
|
2636
2662
|
result = val[0].concat(val[1])
|
|
2637
2663
|
}
|
|
2638
|
-
|
|
|
2639
|
-
{
|
|
2640
|
-
result = val[0].concat(val[1])
|
|
2641
|
-
}
|
|
2642
|
-
| f_no_kwarg opt_f_block_arg
|
|
2664
|
+
| f_any_kwrest opt_f_block_arg
|
|
2643
2665
|
{
|
|
2644
2666
|
result = val[0].concat(val[1])
|
|
2645
2667
|
}
|
|
@@ -2944,7 +2966,24 @@ keyword_variable: kNIL
|
|
|
2944
2966
|
{
|
|
2945
2967
|
result = []
|
|
2946
2968
|
}
|
|
2947
|
-
|
|
|
2969
|
+
| assoc_items trailer
|
|
2970
|
+
|
|
2971
|
+
assoc_items : assoc_item
|
|
2972
|
+
{
|
|
2973
|
+
result = [ val[0] ]
|
|
2974
|
+
}
|
|
2975
|
+
| assoc_items tCOMMA assoc_item
|
|
2976
|
+
{
|
|
2977
|
+
result = val[0] << val[2]
|
|
2978
|
+
}
|
|
2979
|
+
|
|
2980
|
+
assoc_item: assoc
|
|
2981
|
+
|
|
|
2982
|
+
tIDENTIFIER
|
|
2983
|
+
{
|
|
2984
|
+
lvar = @builder.accessible(@builder.ident(val[0]))
|
|
2985
|
+
result = @builder.ipair(lvar)
|
|
2986
|
+
}
|
|
2948
2987
|
|
|
2949
2988
|
assocs: assoc
|
|
2950
2989
|
{
|
|
@@ -3025,7 +3064,7 @@ require 'parser/ruby-next/parser_ext'
|
|
|
3025
3064
|
prepend Parser::NextExt
|
|
3026
3065
|
|
|
3027
3066
|
def version
|
|
3028
|
-
|
|
3067
|
+
30
|
|
3029
3068
|
end
|
|
3030
3069
|
|
|
3031
3070
|
def default_encoding
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby-next-parser
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vladimir Dementyev
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-09-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: parser
|
|
@@ -39,7 +39,6 @@ files:
|
|
|
39
39
|
- lib/parser/ruby-next/lexer.rl
|
|
40
40
|
- lib/parser/ruby-next/meta.rb
|
|
41
41
|
- lib/parser/ruby-next/parser_ext.rb
|
|
42
|
-
- lib/parser/ruby-next/source/map/endless_definition.rb
|
|
43
42
|
- lib/parser/ruby-next/version.rb
|
|
44
43
|
- lib/parser/rubynext.rb
|
|
45
44
|
- lib/parser/rubynext.y
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Parser
|
|
4
|
-
module Source
|
|
5
|
-
|
|
6
|
-
class Map::EndlessDefinition < Map
|
|
7
|
-
attr_reader :keyword
|
|
8
|
-
attr_reader :operator
|
|
9
|
-
attr_reader :name
|
|
10
|
-
attr_reader :assignment
|
|
11
|
-
|
|
12
|
-
def initialize(keyword_l, operator_l, name_l, assignment_l, body_l)
|
|
13
|
-
@keyword = keyword_l
|
|
14
|
-
@operator = operator_l
|
|
15
|
-
@name = name_l
|
|
16
|
-
@assignment = assignment_l
|
|
17
|
-
|
|
18
|
-
super(@keyword.join(body_l))
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
end
|
|
23
|
-
end
|