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/ruby32_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
|
|
@@ -621,7 +621,7 @@ rule
|
|
621
621
|
}
|
622
622
|
| tSTAR
|
623
623
|
{
|
624
|
-
l =
|
624
|
+
(_, l), = val
|
625
625
|
result = s(:masgn, s(:array, s(:splat).line(l)).line(l)).line l
|
626
626
|
}
|
627
627
|
| tSTAR tCOMMA mlhs_post
|
@@ -1251,7 +1251,7 @@ rule
|
|
1251
1251
|
args: arg_value
|
1252
1252
|
{
|
1253
1253
|
arg, = val
|
1254
|
-
lineno = arg.line
|
1254
|
+
lineno = arg.line
|
1255
1255
|
|
1256
1256
|
result = s(:array, arg).line lineno
|
1257
1257
|
}
|
@@ -1260,6 +1260,11 @@ rule
|
|
1260
1260
|
_, arg = val
|
1261
1261
|
result = s(:array, s(:splat, arg).line(arg.line)).line arg.line
|
1262
1262
|
}
|
1263
|
+
| tSTAR
|
1264
|
+
{
|
1265
|
+
(_, line), = val
|
1266
|
+
result = s(:array, s(:splat).line(line)).line line
|
1267
|
+
}
|
1263
1268
|
| args tCOMMA arg_value
|
1264
1269
|
{
|
1265
1270
|
args, _, id = val
|
@@ -1267,11 +1272,14 @@ rule
|
|
1267
1272
|
}
|
1268
1273
|
| args tCOMMA tSTAR arg_value
|
1269
1274
|
{
|
1270
|
-
|
1271
|
-
args, _, _, id = val
|
1272
|
-
line = lexer.lineno
|
1275
|
+
args, _, (_, line), id = val
|
1273
1276
|
result = self.list_append args, s(:splat, id).line(line)
|
1274
1277
|
}
|
1278
|
+
| args tCOMMA tSTAR
|
1279
|
+
{
|
1280
|
+
args, _, (_, line) = val
|
1281
|
+
result = self.list_append args, s(:splat).line(line)
|
1282
|
+
}
|
1275
1283
|
|
1276
1284
|
mrhs_arg: mrhs
|
1277
1285
|
{
|
@@ -1288,7 +1296,6 @@ rule
|
|
1288
1296
|
}
|
1289
1297
|
| args tCOMMA tSTAR arg_value
|
1290
1298
|
{
|
1291
|
-
# TODO: make all tXXXX terminals include lexer.lineno
|
1292
1299
|
arg, _, _, splat = val
|
1293
1300
|
result = self.arg_concat arg, splat
|
1294
1301
|
}
|
@@ -1317,7 +1324,6 @@ rule
|
|
1317
1324
|
| k_begin
|
1318
1325
|
{
|
1319
1326
|
lexer.cmdarg.push false
|
1320
|
-
result = self.lexer.lineno
|
1321
1327
|
}
|
1322
1328
|
bodystmt k_end
|
1323
1329
|
{
|
@@ -1327,11 +1333,10 @@ rule
|
|
1327
1333
|
| tLPAREN_ARG
|
1328
1334
|
{
|
1329
1335
|
lexer.lex_state = EXPR_ENDARG
|
1330
|
-
result = lexer.lineno
|
1331
1336
|
}
|
1332
1337
|
rparen
|
1333
1338
|
{
|
1334
|
-
_, line, _ = val
|
1339
|
+
(_, line), _, _ = val
|
1335
1340
|
result = s(:begin).line line
|
1336
1341
|
}
|
1337
1342
|
| tLPAREN_ARG
|
@@ -1347,9 +1352,8 @@ rule
|
|
1347
1352
|
}
|
1348
1353
|
| tLPAREN compstmt tRPAREN
|
1349
1354
|
{
|
1350
|
-
_, stmt, _ = val
|
1351
|
-
result = stmt
|
1352
|
-
result ||= s(:nil).line lexer.lineno
|
1355
|
+
(_, line), stmt, _ = val
|
1356
|
+
result = stmt || s(:nil).line(line)
|
1353
1357
|
result.paren = true
|
1354
1358
|
}
|
1355
1359
|
| primary_value tCOLON2 tCONSTANT
|
@@ -1362,9 +1366,9 @@ rule
|
|
1362
1366
|
{
|
1363
1367
|
result = wrap :colon3, val[1]
|
1364
1368
|
}
|
1365
|
-
| tLBRACK
|
1369
|
+
| tLBRACK aref_args rbracket
|
1366
1370
|
{
|
1367
|
-
_, line, args, (_, line_max) = val
|
1371
|
+
(_, line), args, (_, line_max) = val
|
1368
1372
|
|
1369
1373
|
result = args || s(:array)
|
1370
1374
|
result.sexp_type = :array # aref_args is :args
|
@@ -1480,9 +1484,6 @@ rule
|
|
1480
1484
|
result = new_for iter, var, body
|
1481
1485
|
}
|
1482
1486
|
| k_class
|
1483
|
-
{
|
1484
|
-
result = self.lexer.lineno
|
1485
|
-
}
|
1486
1487
|
cpath superclass
|
1487
1488
|
{
|
1488
1489
|
if (self.in_def || self.in_single > 0) then
|
@@ -1497,9 +1498,6 @@ rule
|
|
1497
1498
|
self.lexer.ignore_body_comments
|
1498
1499
|
}
|
1499
1500
|
| k_class tLSHFT
|
1500
|
-
{
|
1501
|
-
result = self.lexer.lineno
|
1502
|
-
}
|
1503
1501
|
expr
|
1504
1502
|
{
|
1505
1503
|
result = self.in_def
|
@@ -1511,16 +1509,14 @@ rule
|
|
1511
1509
|
self.in_single = 0
|
1512
1510
|
self.env.extend
|
1513
1511
|
}
|
1514
|
-
bodystmt
|
1512
|
+
bodystmt
|
1513
|
+
k_end
|
1515
1514
|
{
|
1516
1515
|
result = new_sclass val
|
1517
1516
|
self.env.unextend
|
1518
1517
|
self.lexer.ignore_body_comments
|
1519
1518
|
}
|
1520
1519
|
| k_module
|
1521
|
-
{
|
1522
|
-
result = self.lexer.lineno
|
1523
|
-
}
|
1524
1520
|
cpath
|
1525
1521
|
{
|
1526
1522
|
yyerror "module definition in method body" if
|
@@ -1662,20 +1658,33 @@ rule
|
|
1662
1658
|
}
|
1663
1659
|
|
1664
1660
|
f_marg: f_norm_arg
|
1661
|
+
{
|
1662
|
+
(sym, line), = val
|
1663
|
+
|
1664
|
+
result = s(:dummy, sym).line line
|
1665
|
+
}
|
1665
1666
|
| tLPAREN f_margs rparen
|
1666
1667
|
{
|
1667
|
-
|
1668
|
+
_, args, _ = val
|
1669
|
+
result = args
|
1668
1670
|
}
|
1669
1671
|
|
1670
1672
|
f_marg_list: f_marg
|
1671
1673
|
{
|
1672
|
-
|
1674
|
+
arg, = val
|
1675
|
+
line = arg.line
|
1676
|
+
|
1677
|
+
arg = arg.last if arg.sexp_type == :dummy
|
1673
1678
|
|
1674
|
-
result = s(:array,
|
1679
|
+
result = s(:array, arg).line line
|
1675
1680
|
}
|
1676
1681
|
| f_marg_list tCOMMA f_marg
|
1677
1682
|
{
|
1678
|
-
|
1683
|
+
args, _, arg = val
|
1684
|
+
|
1685
|
+
arg = arg.last if arg.sexp_type == :dummy
|
1686
|
+
|
1687
|
+
result = list_append args, arg
|
1679
1688
|
}
|
1680
1689
|
|
1681
1690
|
f_margs: f_marg_list
|
@@ -1718,8 +1727,8 @@ rule
|
|
1718
1727
|
}
|
1719
1728
|
| tSTAR
|
1720
1729
|
{
|
1721
|
-
|
1722
|
-
result.line
|
1730
|
+
(_, line), = val
|
1731
|
+
result = args([:*]).line line
|
1723
1732
|
}
|
1724
1733
|
|
1725
1734
|
f_any_kwrest: f_kwrest
|
@@ -1832,7 +1841,9 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1832
1841
|
}
|
1833
1842
|
| tOROP
|
1834
1843
|
{
|
1835
|
-
|
1844
|
+
(_, line), = val
|
1845
|
+
|
1846
|
+
result = s(:args).line line
|
1836
1847
|
}
|
1837
1848
|
| tPIPE block_param opt_bv_decl tPIPE
|
1838
1849
|
{
|
@@ -1864,7 +1875,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1864
1875
|
lambda: tLAMBDA
|
1865
1876
|
{
|
1866
1877
|
self.env.extend :dynamic
|
1867
|
-
result =
|
1878
|
+
result = lexer.lpar_beg
|
1868
1879
|
lexer.paren_nest += 1
|
1869
1880
|
lexer.lpar_beg = lexer.paren_nest
|
1870
1881
|
}
|
@@ -1874,7 +1885,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1874
1885
|
}
|
1875
1886
|
lambda_body
|
1876
1887
|
{
|
1877
|
-
_,
|
1888
|
+
(_, line), lpar, args, _cmdarg, body = val
|
1878
1889
|
lexer.lpar_beg = lpar
|
1879
1890
|
|
1880
1891
|
lexer.cmdarg.pop
|
@@ -1998,7 +2009,8 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1998
2009
|
}
|
1999
2010
|
| kSUPER
|
2000
2011
|
{
|
2001
|
-
|
2012
|
+
(_, line), = val
|
2013
|
+
result = s(:zsuper).line line
|
2002
2014
|
}
|
2003
2015
|
| primary_value tLBRACK2 opt_call_args rbracket
|
2004
2016
|
{
|
@@ -2008,11 +2020,11 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2008
2020
|
brace_block: tLCURLY
|
2009
2021
|
{
|
2010
2022
|
self.env.extend :dynamic
|
2011
|
-
result = self.lexer.lineno
|
2012
2023
|
}
|
2013
|
-
brace_body
|
2024
|
+
brace_body
|
2025
|
+
tRCURLY
|
2014
2026
|
{
|
2015
|
-
_, line, body, _ = val
|
2027
|
+
(_, line), _, body, _ = val
|
2016
2028
|
|
2017
2029
|
result = body
|
2018
2030
|
result.line line
|
@@ -2022,11 +2034,11 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2022
2034
|
| k_do
|
2023
2035
|
{
|
2024
2036
|
self.env.extend :dynamic
|
2025
|
-
result = self.lexer.lineno
|
2026
2037
|
}
|
2027
|
-
do_body
|
2038
|
+
do_body
|
2039
|
+
kEND
|
2028
2040
|
{
|
2029
|
-
_, line, body, _ = val
|
2041
|
+
(_, line), _, body, _ = val
|
2030
2042
|
|
2031
2043
|
result = body
|
2032
2044
|
result.line line
|
@@ -2084,14 +2096,13 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2084
2096
|
}
|
2085
2097
|
|
2086
2098
|
case_body: k_when
|
2087
|
-
{
|
2088
|
-
result = self.lexer.lineno
|
2089
|
-
}
|
2090
2099
|
case_args then compstmt cases
|
2091
2100
|
{
|
2092
|
-
|
2093
|
-
|
2094
|
-
result
|
2101
|
+
(_, line), case_args, _then, body, cases = val
|
2102
|
+
|
2103
|
+
result = new_when case_args, body
|
2104
|
+
result.line line
|
2105
|
+
result << cases if cases
|
2095
2106
|
}
|
2096
2107
|
|
2097
2108
|
cases: opt_else | case_body
|
@@ -2328,31 +2339,17 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2328
2339
|
result = new_array_pattern_tail both, nil, nil, nil
|
2329
2340
|
result.line head.line
|
2330
2341
|
}
|
2331
|
-
| p_args_head
|
2332
|
-
{
|
2333
|
-
head, _, (id, _line) = val
|
2334
|
-
|
2335
|
-
result = new_array_pattern_tail head, true, id.to_sym, nil
|
2336
|
-
result.line head.line
|
2337
|
-
}
|
2338
|
-
| p_args_head tSTAR tIDENTIFIER tCOMMA p_args_post
|
2342
|
+
| p_args_head p_rest
|
2339
2343
|
{
|
2340
|
-
head,
|
2344
|
+
head, (rest, _) = val
|
2341
2345
|
|
2342
|
-
result = new_array_pattern_tail
|
2343
|
-
result.line head.line
|
2346
|
+
result = new_array_pattern_tail(head, true, rest, nil).line head.line
|
2344
2347
|
}
|
2345
|
-
| p_args_head
|
2348
|
+
| p_args_head p_rest tCOMMA p_args_post
|
2346
2349
|
{
|
2347
|
-
|
2350
|
+
head, (rest, _), _, post = val
|
2348
2351
|
|
2349
|
-
result = new_array_pattern_tail(
|
2350
|
-
}
|
2351
|
-
| p_args_head tSTAR tCOMMA p_args_post
|
2352
|
-
{
|
2353
|
-
head, _, _, post = val
|
2354
|
-
|
2355
|
-
result = new_array_pattern_tail(head, true, nil, post).line head.line
|
2352
|
+
result = new_array_pattern_tail(head, true, rest, post).line head.line
|
2356
2353
|
}
|
2357
2354
|
| p_args_tail
|
2358
2355
|
|
@@ -2882,7 +2879,6 @@ regexp_contents: none
|
|
2882
2879
|
lexer.brace_nest,
|
2883
2880
|
lexer.string_nest, # TODO: remove
|
2884
2881
|
lexer.lex_state,
|
2885
|
-
lexer.lineno,
|
2886
2882
|
]
|
2887
2883
|
|
2888
2884
|
lexer.cmdarg.push false
|
@@ -2897,9 +2893,9 @@ regexp_contents: none
|
|
2897
2893
|
compstmt
|
2898
2894
|
tSTRING_DEND
|
2899
2895
|
{
|
2900
|
-
_, memo, stmt, _ = val
|
2896
|
+
(_, line), memo, stmt, _ = val
|
2901
2897
|
|
2902
|
-
lex_strterm, brace_nest, string_nest, oldlex_state
|
2898
|
+
lex_strterm, brace_nest, string_nest, oldlex_state = memo
|
2903
2899
|
# TODO: heredoc_indent
|
2904
2900
|
|
2905
2901
|
lexer.lex_strterm = lex_strterm
|
@@ -2959,11 +2955,11 @@ regexp_contents: none
|
|
2959
2955
|
|
2960
2956
|
dsym: tSYMBEG string_contents tSTRING_END
|
2961
2957
|
{
|
2962
|
-
_, result, _ = val
|
2958
|
+
(_, line), result, _ = val
|
2963
2959
|
|
2964
2960
|
lexer.lex_state = EXPR_END
|
2965
2961
|
|
2966
|
-
result ||= s(:str, "").line
|
2962
|
+
result ||= s(:str, "").line line
|
2967
2963
|
|
2968
2964
|
case result.sexp_type
|
2969
2965
|
when :dstr then
|
@@ -2999,15 +2995,15 @@ regexp_contents: none
|
|
2999
2995
|
| tCONSTANT
|
3000
2996
|
| tCVAR
|
3001
2997
|
|
3002
|
-
keyword_variable: kNIL { result = s(:nil).line
|
3003
|
-
| kSELF { result = s(:self).line
|
3004
|
-
| kTRUE { result = s(:true).line
|
3005
|
-
| kFALSE { result = s(:false).line
|
3006
|
-
| k__FILE__ { result = s(:str, self.file).line
|
3007
|
-
| k__LINE__ { result = s(:lit,
|
2998
|
+
keyword_variable: kNIL { (_, line), = val; result = s(:nil).line line }
|
2999
|
+
| kSELF { (_, line), = val; result = s(:self).line line }
|
3000
|
+
| kTRUE { (_, line), = val; result = s(:true).line line }
|
3001
|
+
| kFALSE { (_, line), = val; result = s(:false).line line }
|
3002
|
+
| k__FILE__ { (_, line), = val; result = s(:str, self.file).line line }
|
3003
|
+
| k__LINE__ { (_, line), = val; result = s(:lit, line).line line }
|
3008
3004
|
| k__ENCODING__
|
3009
3005
|
{
|
3010
|
-
l =
|
3006
|
+
(_, l), = val
|
3011
3007
|
result =
|
3012
3008
|
if defined? Encoding then
|
3013
3009
|
s(:colon2, s(:const, :Encoding).line(l), :UTF_8).line l
|
@@ -3170,12 +3166,12 @@ f_opt_paren_args: f_paren_args
|
|
3170
3166
|
|
|
3171
3167
|
{
|
3172
3168
|
result = args val
|
3173
|
-
# result.line lexer.lineno
|
3174
3169
|
}
|
3175
3170
|
|
3176
3171
|
args_forward: tBDOT3
|
3177
3172
|
{
|
3178
|
-
|
3173
|
+
(_, line), = val
|
3174
|
+
result = s(:forward_args).line line
|
3179
3175
|
}
|
3180
3176
|
|
3181
3177
|
f_bad_arg: tCONSTANT
|
@@ -3313,9 +3309,10 @@ f_opt_paren_args: f_paren_args
|
|
3313
3309
|
}
|
3314
3310
|
| kwrest_mark
|
3315
3311
|
{
|
3312
|
+
(_, line), = val
|
3316
3313
|
id = :"**"
|
3317
|
-
self.env[id] = :lvar
|
3318
|
-
result = [id,
|
3314
|
+
self.env[id] = :lvar
|
3315
|
+
result = [id, line]
|
3319
3316
|
}
|
3320
3317
|
|
3321
3318
|
f_opt: f_arg_asgn
|
@@ -3373,9 +3370,10 @@ f_opt_paren_args: f_paren_args
|
|
3373
3370
|
}
|
3374
3371
|
| restarg_mark
|
3375
3372
|
{
|
3373
|
+
(_, line), = val
|
3376
3374
|
name = :"*"
|
3377
3375
|
self.env[name] = :lvar
|
3378
|
-
result = [name,
|
3376
|
+
result = [name, line]
|
3379
3377
|
}
|
3380
3378
|
|
3381
3379
|
blkarg_mark: tAMPER2 | tAMPER
|
@@ -3466,6 +3464,11 @@ f_opt_paren_args: f_paren_args
|
|
3466
3464
|
line = arg.line
|
3467
3465
|
result = s(:array, s(:kwsplat, arg).line(line)).line line
|
3468
3466
|
}
|
3467
|
+
| tDSTAR
|
3468
|
+
{
|
3469
|
+
(_, line), = val
|
3470
|
+
result = s(:array, s(:kwsplat).line(line)).line line
|
3471
|
+
}
|
3469
3472
|
|
3470
3473
|
operation: tIDENTIFIER | tCONSTANT | tFID
|
3471
3474
|
operation2: tIDENTIFIER | tCONSTANT | tFID | op
|
@@ -3480,11 +3483,10 @@ f_opt_paren_args: f_paren_args
|
|
3480
3483
|
opt_terms: | terms
|
3481
3484
|
opt_nl: | tNL
|
3482
3485
|
rparen: opt_nl tRPAREN
|
3483
|
-
|
3484
|
-
|
3485
|
-
|
3486
|
-
|
3487
|
-
# }
|
3486
|
+
{
|
3487
|
+
_, close = val # TODO: include lineno in close?
|
3488
|
+
result = [close, lexer.lineno]
|
3489
|
+
}
|
3488
3490
|
rbracket: opt_nl tRBRACK
|
3489
3491
|
{
|
3490
3492
|
_, close = val
|