ruby_parser 3.20.1 → 3.20.2
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
- checksums.yaml.gz.sig +0 -0
- data/History.rdoc +6 -0
- data/compare/normalize.rb +1 -0
- data/lib/ruby20_parser.rb +4220 -4273
- data/lib/ruby20_parser.y +0 -10
- data/lib/ruby21_parser.rb +4203 -4238
- data/lib/ruby21_parser.y +0 -10
- data/lib/ruby22_parser.rb +4239 -4276
- data/lib/ruby22_parser.y +0 -10
- data/lib/ruby23_parser.rb +4235 -4240
- data/lib/ruby23_parser.y +0 -10
- data/lib/ruby24_parser.rb +4229 -4284
- data/lib/ruby24_parser.y +0 -10
- data/lib/ruby25_parser.rb +4220 -4275
- data/lib/ruby25_parser.y +0 -10
- data/lib/ruby26_parser.rb +4221 -4276
- data/lib/ruby26_parser.y +0 -10
- data/lib/ruby27_parser.rb +4138 -4207
- data/lib/ruby27_parser.y +0 -10
- data/lib/ruby30_parser.rb +5966 -5957
- data/lib/ruby30_parser.y +71 -70
- data/lib/ruby31_parser.rb +6090 -6213
- data/lib/ruby31_parser.y +71 -70
- data/lib/ruby32_parser.rb +6258 -6339
- data/lib/ruby32_parser.y +92 -90
- data/lib/ruby3_parser.yy +107 -70
- data/lib/ruby_lexer.rb +2 -0
- data/lib/ruby_lexer.rex.rb +1 -1
- data/lib/ruby_lexer_strings.rb +2 -2
- data/lib/ruby_parser.yy +0 -10
- data/lib/ruby_parser_extras.rb +7 -8
- data/test/test_ruby_parser.rb +31 -1
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
data/lib/ruby30_parser.y
CHANGED
@@ -96,9 +96,9 @@ rule
|
|
96
96
|
result = iter
|
97
97
|
}
|
98
98
|
|
99
|
-
begin_block: tLCURLY
|
99
|
+
begin_block: tLCURLY top_compstmt tRCURLY
|
100
100
|
{
|
101
|
-
_, line, stmt, _ = val
|
101
|
+
(_, line), stmt, _ = val
|
102
102
|
result = new_iter s(:preexe).line(line), 0, stmt
|
103
103
|
}
|
104
104
|
|
@@ -605,7 +605,7 @@ rule
|
|
605
605
|
}
|
606
606
|
| tSTAR
|
607
607
|
{
|
608
|
-
l =
|
608
|
+
(_, l), = val
|
609
609
|
result = s(:masgn, s(:array, s(:splat).line(l)).line(l)).line l
|
610
610
|
}
|
611
611
|
| tSTAR tCOMMA mlhs_post
|
@@ -1230,7 +1230,7 @@ rule
|
|
1230
1230
|
args: arg_value
|
1231
1231
|
{
|
1232
1232
|
arg, = val
|
1233
|
-
lineno = arg.line
|
1233
|
+
lineno = arg.line
|
1234
1234
|
|
1235
1235
|
result = s(:array, arg).line lineno
|
1236
1236
|
}
|
@@ -1246,9 +1246,7 @@ rule
|
|
1246
1246
|
}
|
1247
1247
|
| args tCOMMA tSTAR arg_value
|
1248
1248
|
{
|
1249
|
-
|
1250
|
-
args, _, _, id = val
|
1251
|
-
line = lexer.lineno
|
1249
|
+
args, _, (_, line), id = val
|
1252
1250
|
result = self.list_append args, s(:splat, id).line(line)
|
1253
1251
|
}
|
1254
1252
|
|
@@ -1267,7 +1265,6 @@ rule
|
|
1267
1265
|
}
|
1268
1266
|
| args tCOMMA tSTAR arg_value
|
1269
1267
|
{
|
1270
|
-
# TODO: make all tXXXX terminals include lexer.lineno
|
1271
1268
|
arg, _, _, splat = val
|
1272
1269
|
result = self.arg_concat arg, splat
|
1273
1270
|
}
|
@@ -1296,7 +1293,6 @@ rule
|
|
1296
1293
|
| k_begin
|
1297
1294
|
{
|
1298
1295
|
lexer.cmdarg.push false
|
1299
|
-
result = self.lexer.lineno
|
1300
1296
|
}
|
1301
1297
|
bodystmt k_end
|
1302
1298
|
{
|
@@ -1306,11 +1302,10 @@ rule
|
|
1306
1302
|
| tLPAREN_ARG
|
1307
1303
|
{
|
1308
1304
|
lexer.lex_state = EXPR_ENDARG
|
1309
|
-
result = lexer.lineno
|
1310
1305
|
}
|
1311
1306
|
rparen
|
1312
1307
|
{
|
1313
|
-
_, line, _ = val
|
1308
|
+
(_, line), _, _ = val
|
1314
1309
|
result = s(:begin).line line
|
1315
1310
|
}
|
1316
1311
|
| tLPAREN_ARG
|
@@ -1326,9 +1321,8 @@ rule
|
|
1326
1321
|
}
|
1327
1322
|
| tLPAREN compstmt tRPAREN
|
1328
1323
|
{
|
1329
|
-
_, stmt, _ = val
|
1330
|
-
result = stmt
|
1331
|
-
result ||= s(:nil).line lexer.lineno
|
1324
|
+
(_, line), stmt, _ = val
|
1325
|
+
result = stmt || s(:nil).line(line)
|
1332
1326
|
result.paren = true
|
1333
1327
|
}
|
1334
1328
|
| primary_value tCOLON2 tCONSTANT
|
@@ -1341,9 +1335,9 @@ rule
|
|
1341
1335
|
{
|
1342
1336
|
result = wrap :colon3, val[1]
|
1343
1337
|
}
|
1344
|
-
| tLBRACK
|
1338
|
+
| tLBRACK aref_args rbracket
|
1345
1339
|
{
|
1346
|
-
_, line, args, (_, line_max) = val
|
1340
|
+
(_, line), args, (_, line_max) = val
|
1347
1341
|
|
1348
1342
|
result = args || s(:array)
|
1349
1343
|
result.sexp_type = :array # aref_args is :args
|
@@ -1459,9 +1453,6 @@ rule
|
|
1459
1453
|
result = new_for iter, var, body
|
1460
1454
|
}
|
1461
1455
|
| k_class
|
1462
|
-
{
|
1463
|
-
result = self.lexer.lineno
|
1464
|
-
}
|
1465
1456
|
cpath superclass
|
1466
1457
|
{
|
1467
1458
|
if (self.in_def || self.in_single > 0) then
|
@@ -1476,9 +1467,6 @@ rule
|
|
1476
1467
|
self.lexer.ignore_body_comments
|
1477
1468
|
}
|
1478
1469
|
| k_class tLSHFT
|
1479
|
-
{
|
1480
|
-
result = self.lexer.lineno
|
1481
|
-
}
|
1482
1470
|
expr
|
1483
1471
|
{
|
1484
1472
|
result = self.in_def
|
@@ -1490,16 +1478,14 @@ rule
|
|
1490
1478
|
self.in_single = 0
|
1491
1479
|
self.env.extend
|
1492
1480
|
}
|
1493
|
-
bodystmt
|
1481
|
+
bodystmt
|
1482
|
+
k_end
|
1494
1483
|
{
|
1495
1484
|
result = new_sclass val
|
1496
1485
|
self.env.unextend
|
1497
1486
|
self.lexer.ignore_body_comments
|
1498
1487
|
}
|
1499
1488
|
| k_module
|
1500
|
-
{
|
1501
|
-
result = self.lexer.lineno
|
1502
|
-
}
|
1503
1489
|
cpath
|
1504
1490
|
{
|
1505
1491
|
yyerror "module definition in method body" if
|
@@ -1641,20 +1627,33 @@ rule
|
|
1641
1627
|
}
|
1642
1628
|
|
1643
1629
|
f_marg: f_norm_arg
|
1630
|
+
{
|
1631
|
+
(sym, line), = val
|
1632
|
+
|
1633
|
+
result = s(:dummy, sym).line line
|
1634
|
+
}
|
1644
1635
|
| tLPAREN f_margs rparen
|
1645
1636
|
{
|
1646
|
-
|
1637
|
+
_, args, _ = val
|
1638
|
+
result = args
|
1647
1639
|
}
|
1648
1640
|
|
1649
1641
|
f_marg_list: f_marg
|
1650
1642
|
{
|
1651
|
-
|
1643
|
+
arg, = val
|
1644
|
+
line = arg.line
|
1652
1645
|
|
1653
|
-
|
1646
|
+
arg = arg.last if arg.sexp_type == :dummy
|
1647
|
+
|
1648
|
+
result = s(:array, arg).line line
|
1654
1649
|
}
|
1655
1650
|
| f_marg_list tCOMMA f_marg
|
1656
1651
|
{
|
1657
|
-
|
1652
|
+
args, _, arg = val
|
1653
|
+
|
1654
|
+
arg = arg.last if arg.sexp_type == :dummy
|
1655
|
+
|
1656
|
+
result = list_append args, arg
|
1658
1657
|
}
|
1659
1658
|
|
1660
1659
|
f_margs: f_marg_list
|
@@ -1697,8 +1696,8 @@ rule
|
|
1697
1696
|
}
|
1698
1697
|
| tSTAR
|
1699
1698
|
{
|
1700
|
-
|
1701
|
-
result.line
|
1699
|
+
(_, line), = val
|
1700
|
+
result = args([:*]).line line
|
1702
1701
|
}
|
1703
1702
|
|
1704
1703
|
f_any_kwrest: f_kwrest
|
@@ -1810,7 +1809,9 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1810
1809
|
}
|
1811
1810
|
| tOROP
|
1812
1811
|
{
|
1813
|
-
|
1812
|
+
(_, line), = val
|
1813
|
+
|
1814
|
+
result = s(:args).line line
|
1814
1815
|
}
|
1815
1816
|
| tPIPE block_param opt_bv_decl tPIPE
|
1816
1817
|
{
|
@@ -1842,7 +1843,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1842
1843
|
lambda: tLAMBDA
|
1843
1844
|
{
|
1844
1845
|
self.env.extend :dynamic
|
1845
|
-
result =
|
1846
|
+
result = lexer.lpar_beg
|
1846
1847
|
lexer.paren_nest += 1
|
1847
1848
|
lexer.lpar_beg = lexer.paren_nest
|
1848
1849
|
}
|
@@ -1852,7 +1853,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1852
1853
|
}
|
1853
1854
|
lambda_body
|
1854
1855
|
{
|
1855
|
-
_,
|
1856
|
+
(_, line), lpar, args, _cmdarg, body = val
|
1856
1857
|
lexer.lpar_beg = lpar
|
1857
1858
|
|
1858
1859
|
lexer.cmdarg.pop
|
@@ -1976,7 +1977,8 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1976
1977
|
}
|
1977
1978
|
| kSUPER
|
1978
1979
|
{
|
1979
|
-
|
1980
|
+
(_, line), = val
|
1981
|
+
result = s(:zsuper).line line
|
1980
1982
|
}
|
1981
1983
|
| primary_value tLBRACK2 opt_call_args rbracket
|
1982
1984
|
{
|
@@ -1986,11 +1988,11 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1986
1988
|
brace_block: tLCURLY
|
1987
1989
|
{
|
1988
1990
|
self.env.extend :dynamic
|
1989
|
-
result = self.lexer.lineno
|
1990
1991
|
}
|
1991
|
-
brace_body
|
1992
|
+
brace_body
|
1993
|
+
tRCURLY
|
1992
1994
|
{
|
1993
|
-
_, line, body, _ = val
|
1995
|
+
(_, line), _, body, _ = val
|
1994
1996
|
|
1995
1997
|
result = body
|
1996
1998
|
result.line line
|
@@ -2000,11 +2002,11 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2000
2002
|
| k_do
|
2001
2003
|
{
|
2002
2004
|
self.env.extend :dynamic
|
2003
|
-
result = self.lexer.lineno
|
2004
2005
|
}
|
2005
|
-
do_body
|
2006
|
+
do_body
|
2007
|
+
kEND
|
2006
2008
|
{
|
2007
|
-
_, line, body, _ = val
|
2009
|
+
(_, line), _, body, _ = val
|
2008
2010
|
|
2009
2011
|
result = body
|
2010
2012
|
result.line line
|
@@ -2062,14 +2064,13 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2062
2064
|
}
|
2063
2065
|
|
2064
2066
|
case_body: k_when
|
2065
|
-
{
|
2066
|
-
result = self.lexer.lineno
|
2067
|
-
}
|
2068
2067
|
case_args then compstmt cases
|
2069
2068
|
{
|
2070
|
-
|
2071
|
-
|
2072
|
-
result
|
2069
|
+
(_, line), case_args, _then, body, cases = val
|
2070
|
+
|
2071
|
+
result = new_when case_args, body
|
2072
|
+
result.line line
|
2073
|
+
result << cases if cases
|
2073
2074
|
}
|
2074
2075
|
|
2075
2076
|
cases: opt_else | case_body
|
@@ -2844,7 +2845,6 @@ regexp_contents: none
|
|
2844
2845
|
lexer.brace_nest,
|
2845
2846
|
lexer.string_nest, # TODO: remove
|
2846
2847
|
lexer.lex_state,
|
2847
|
-
lexer.lineno,
|
2848
2848
|
]
|
2849
2849
|
|
2850
2850
|
lexer.cmdarg.push false
|
@@ -2859,9 +2859,9 @@ regexp_contents: none
|
|
2859
2859
|
compstmt
|
2860
2860
|
tSTRING_DEND
|
2861
2861
|
{
|
2862
|
-
_, memo, stmt, _ = val
|
2862
|
+
(_, line), memo, stmt, _ = val
|
2863
2863
|
|
2864
|
-
lex_strterm, brace_nest, string_nest, oldlex_state
|
2864
|
+
lex_strterm, brace_nest, string_nest, oldlex_state = memo
|
2865
2865
|
# TODO: heredoc_indent
|
2866
2866
|
|
2867
2867
|
lexer.lex_strterm = lex_strterm
|
@@ -2921,11 +2921,11 @@ regexp_contents: none
|
|
2921
2921
|
|
2922
2922
|
dsym: tSYMBEG string_contents tSTRING_END
|
2923
2923
|
{
|
2924
|
-
_, result, _ = val
|
2924
|
+
(_, line), result, _ = val
|
2925
2925
|
|
2926
2926
|
lexer.lex_state = EXPR_END
|
2927
2927
|
|
2928
|
-
result ||= s(:str, "").line
|
2928
|
+
result ||= s(:str, "").line line
|
2929
2929
|
|
2930
2930
|
case result.sexp_type
|
2931
2931
|
when :dstr then
|
@@ -2958,15 +2958,15 @@ regexp_contents: none
|
|
2958
2958
|
| tCONSTANT
|
2959
2959
|
| tCVAR
|
2960
2960
|
|
2961
|
-
keyword_variable: kNIL { result = s(:nil).line
|
2962
|
-
| kSELF { result = s(:self).line
|
2963
|
-
| kTRUE { result = s(:true).line
|
2964
|
-
| kFALSE { result = s(:false).line
|
2965
|
-
| k__FILE__ { result = s(:str, self.file).line
|
2966
|
-
| k__LINE__ { result = s(:lit,
|
2961
|
+
keyword_variable: kNIL { (_, line), = val; result = s(:nil).line line }
|
2962
|
+
| kSELF { (_, line), = val; result = s(:self).line line }
|
2963
|
+
| kTRUE { (_, line), = val; result = s(:true).line line }
|
2964
|
+
| kFALSE { (_, line), = val; result = s(:false).line line }
|
2965
|
+
| k__FILE__ { (_, line), = val; result = s(:str, self.file).line line }
|
2966
|
+
| k__LINE__ { (_, line), = val; result = s(:lit, line).line line }
|
2967
2967
|
| k__ENCODING__
|
2968
2968
|
{
|
2969
|
-
l =
|
2969
|
+
(_, l), = val
|
2970
2970
|
result =
|
2971
2971
|
if defined? Encoding then
|
2972
2972
|
s(:colon2, s(:const, :Encoding).line(l), :UTF_8).line l
|
@@ -3136,12 +3136,12 @@ f_opt_paren_args: f_paren_args
|
|
3136
3136
|
|
|
3137
3137
|
{
|
3138
3138
|
result = args val
|
3139
|
-
# result.line lexer.lineno
|
3140
3139
|
}
|
3141
3140
|
|
3142
3141
|
args_forward: tBDOT3
|
3143
3142
|
{
|
3144
|
-
|
3143
|
+
(_, line), = val
|
3144
|
+
result = s(:forward_args).line line
|
3145
3145
|
}
|
3146
3146
|
|
3147
3147
|
f_bad_arg: tCONSTANT
|
@@ -3279,9 +3279,10 @@ f_opt_paren_args: f_paren_args
|
|
3279
3279
|
}
|
3280
3280
|
| kwrest_mark
|
3281
3281
|
{
|
3282
|
+
(_, line), = val
|
3282
3283
|
id = :"**"
|
3283
|
-
self.env[id] = :lvar
|
3284
|
-
result = [id,
|
3284
|
+
self.env[id] = :lvar
|
3285
|
+
result = [id, line]
|
3285
3286
|
}
|
3286
3287
|
|
3287
3288
|
f_opt: f_arg_asgn
|
@@ -3339,9 +3340,10 @@ f_opt_paren_args: f_paren_args
|
|
3339
3340
|
}
|
3340
3341
|
| restarg_mark
|
3341
3342
|
{
|
3343
|
+
(_, line), = val
|
3342
3344
|
name = :"*"
|
3343
3345
|
self.env[name] = :lvar
|
3344
|
-
result = [name,
|
3346
|
+
result = [name, line]
|
3345
3347
|
}
|
3346
3348
|
|
3347
3349
|
blkarg_mark: tAMPER2 | tAMPER
|
@@ -3446,11 +3448,10 @@ f_opt_paren_args: f_paren_args
|
|
3446
3448
|
opt_terms: | terms
|
3447
3449
|
opt_nl: | tNL
|
3448
3450
|
rparen: opt_nl tRPAREN
|
3449
|
-
|
3450
|
-
|
3451
|
-
|
3452
|
-
|
3453
|
-
# }
|
3451
|
+
{
|
3452
|
+
_, close = val # TODO: include lineno in close?
|
3453
|
+
result = [close, lexer.lineno]
|
3454
|
+
}
|
3454
3455
|
rbracket: opt_nl tRBRACK
|
3455
3456
|
{
|
3456
3457
|
_, close = val
|