ruby_parser 3.20.1 → 3.20.3
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 +18 -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 +5989 -5957
- data/lib/ruby30_parser.y +95 -72
- data/lib/ruby31_parser.rb +6157 -6172
- data/lib/ruby31_parser.y +96 -73
- data/lib/ruby32_parser.rb +6251 -6314
- data/lib/ruby32_parser.y +117 -93
- data/lib/ruby3_parser.yy +132 -73
- data/lib/ruby_lexer.rb +15 -7
- 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 +9 -9
- data/test/test_ruby_parser.rb +39 -1
- data/tools/munge.rb +8 -2
- data/tools/ripper.rb +14 -12
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
data/lib/ruby31_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
|
|
@@ -408,6 +408,7 @@ rule
|
|
408
408
|
defs_head: k_def singleton dot_or_colon
|
409
409
|
{
|
410
410
|
lexer.lex_state = EXPR_FNAME
|
411
|
+
self.in_argdef = true
|
411
412
|
}
|
412
413
|
def_name
|
413
414
|
{
|
@@ -621,7 +622,7 @@ rule
|
|
621
622
|
}
|
622
623
|
| tSTAR
|
623
624
|
{
|
624
|
-
l =
|
625
|
+
(_, l), = val
|
625
626
|
result = s(:masgn, s(:array, s(:splat).line(l)).line(l)).line l
|
626
627
|
}
|
627
628
|
| tSTAR tCOMMA mlhs_post
|
@@ -1251,7 +1252,7 @@ rule
|
|
1251
1252
|
args: arg_value
|
1252
1253
|
{
|
1253
1254
|
arg, = val
|
1254
|
-
lineno = arg.line
|
1255
|
+
lineno = arg.line
|
1255
1256
|
|
1256
1257
|
result = s(:array, arg).line lineno
|
1257
1258
|
}
|
@@ -1267,9 +1268,7 @@ rule
|
|
1267
1268
|
}
|
1268
1269
|
| args tCOMMA tSTAR arg_value
|
1269
1270
|
{
|
1270
|
-
|
1271
|
-
args, _, _, id = val
|
1272
|
-
line = lexer.lineno
|
1271
|
+
args, _, (_, line), id = val
|
1273
1272
|
result = self.list_append args, s(:splat, id).line(line)
|
1274
1273
|
}
|
1275
1274
|
|
@@ -1288,7 +1287,6 @@ rule
|
|
1288
1287
|
}
|
1289
1288
|
| args tCOMMA tSTAR arg_value
|
1290
1289
|
{
|
1291
|
-
# TODO: make all tXXXX terminals include lexer.lineno
|
1292
1290
|
arg, _, _, splat = val
|
1293
1291
|
result = self.arg_concat arg, splat
|
1294
1292
|
}
|
@@ -1317,7 +1315,6 @@ rule
|
|
1317
1315
|
| k_begin
|
1318
1316
|
{
|
1319
1317
|
lexer.cmdarg.push false
|
1320
|
-
result = self.lexer.lineno
|
1321
1318
|
}
|
1322
1319
|
bodystmt k_end
|
1323
1320
|
{
|
@@ -1327,11 +1324,10 @@ rule
|
|
1327
1324
|
| tLPAREN_ARG
|
1328
1325
|
{
|
1329
1326
|
lexer.lex_state = EXPR_ENDARG
|
1330
|
-
result = lexer.lineno
|
1331
1327
|
}
|
1332
1328
|
rparen
|
1333
1329
|
{
|
1334
|
-
_, line, _ = val
|
1330
|
+
(_, line), _, _ = val
|
1335
1331
|
result = s(:begin).line line
|
1336
1332
|
}
|
1337
1333
|
| tLPAREN_ARG
|
@@ -1347,9 +1343,8 @@ rule
|
|
1347
1343
|
}
|
1348
1344
|
| tLPAREN compstmt tRPAREN
|
1349
1345
|
{
|
1350
|
-
_, stmt, _ = val
|
1351
|
-
result = stmt
|
1352
|
-
result ||= s(:nil).line lexer.lineno
|
1346
|
+
(_, line), stmt, _ = val
|
1347
|
+
result = stmt || s(:nil).line(line)
|
1353
1348
|
result.paren = true
|
1354
1349
|
}
|
1355
1350
|
| primary_value tCOLON2 tCONSTANT
|
@@ -1362,9 +1357,9 @@ rule
|
|
1362
1357
|
{
|
1363
1358
|
result = wrap :colon3, val[1]
|
1364
1359
|
}
|
1365
|
-
| tLBRACK
|
1360
|
+
| tLBRACK aref_args rbracket
|
1366
1361
|
{
|
1367
|
-
_, line, args, (_, line_max) = val
|
1362
|
+
(_, line), args, (_, line_max) = val
|
1368
1363
|
|
1369
1364
|
result = args || s(:array)
|
1370
1365
|
result.sexp_type = :array # aref_args is :args
|
@@ -1480,9 +1475,6 @@ rule
|
|
1480
1475
|
result = new_for iter, var, body
|
1481
1476
|
}
|
1482
1477
|
| k_class
|
1483
|
-
{
|
1484
|
-
result = self.lexer.lineno
|
1485
|
-
}
|
1486
1478
|
cpath superclass
|
1487
1479
|
{
|
1488
1480
|
if (self.in_def || self.in_single > 0) then
|
@@ -1497,9 +1489,6 @@ rule
|
|
1497
1489
|
self.lexer.ignore_body_comments
|
1498
1490
|
}
|
1499
1491
|
| k_class tLSHFT
|
1500
|
-
{
|
1501
|
-
result = self.lexer.lineno
|
1502
|
-
}
|
1503
1492
|
expr
|
1504
1493
|
{
|
1505
1494
|
result = self.in_def
|
@@ -1511,16 +1500,14 @@ rule
|
|
1511
1500
|
self.in_single = 0
|
1512
1501
|
self.env.extend
|
1513
1502
|
}
|
1514
|
-
bodystmt
|
1503
|
+
bodystmt
|
1504
|
+
k_end
|
1515
1505
|
{
|
1516
1506
|
result = new_sclass val
|
1517
1507
|
self.env.unextend
|
1518
1508
|
self.lexer.ignore_body_comments
|
1519
1509
|
}
|
1520
1510
|
| k_module
|
1521
|
-
{
|
1522
|
-
result = self.lexer.lineno
|
1523
|
-
}
|
1524
1511
|
cpath
|
1525
1512
|
{
|
1526
1513
|
yyerror "module definition in method body" if
|
@@ -1623,6 +1610,7 @@ rule
|
|
1623
1610
|
k_def: kDEF
|
1624
1611
|
{
|
1625
1612
|
self.comments.push self.lexer.comments
|
1613
|
+
self.in_argdef = true
|
1626
1614
|
}
|
1627
1615
|
k_do: kDO
|
1628
1616
|
k_do_block: kDO_BLOCK
|
@@ -1662,20 +1650,33 @@ rule
|
|
1662
1650
|
}
|
1663
1651
|
|
1664
1652
|
f_marg: f_norm_arg
|
1653
|
+
{
|
1654
|
+
(sym, line), = val
|
1655
|
+
|
1656
|
+
result = s(:dummy, sym).line line
|
1657
|
+
}
|
1665
1658
|
| tLPAREN f_margs rparen
|
1666
1659
|
{
|
1667
|
-
|
1660
|
+
_, args, _ = val
|
1661
|
+
result = args
|
1668
1662
|
}
|
1669
1663
|
|
1670
1664
|
f_marg_list: f_marg
|
1671
1665
|
{
|
1672
|
-
|
1666
|
+
arg, = val
|
1667
|
+
line = arg.line
|
1668
|
+
|
1669
|
+
arg = arg.last if arg.sexp_type == :dummy
|
1673
1670
|
|
1674
|
-
result = s(:array,
|
1671
|
+
result = s(:array, arg).line line
|
1675
1672
|
}
|
1676
1673
|
| f_marg_list tCOMMA f_marg
|
1677
1674
|
{
|
1678
|
-
|
1675
|
+
args, _, arg = val
|
1676
|
+
|
1677
|
+
arg = arg.last if arg.sexp_type == :dummy
|
1678
|
+
|
1679
|
+
result = list_append args, arg
|
1679
1680
|
}
|
1680
1681
|
|
1681
1682
|
f_margs: f_marg_list
|
@@ -1718,14 +1719,14 @@ rule
|
|
1718
1719
|
}
|
1719
1720
|
| tSTAR
|
1720
1721
|
{
|
1721
|
-
|
1722
|
-
result.line
|
1722
|
+
(_, line), = val
|
1723
|
+
result = args([:*]).line line
|
1723
1724
|
}
|
1724
1725
|
|
1725
1726
|
f_any_kwrest: f_kwrest
|
1726
1727
|
| f_no_kwarg
|
1727
1728
|
|
1728
|
-
f_eq:
|
1729
|
+
f_eq: { self.in_argdef = false } tEQL
|
1729
1730
|
|
1730
1731
|
block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg
|
1731
1732
|
{
|
@@ -1829,15 +1830,19 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1829
1830
|
{
|
1830
1831
|
# TODO: current_arg = 0
|
1831
1832
|
result = args val
|
1833
|
+
self.in_argdef = false
|
1832
1834
|
}
|
1833
1835
|
| tOROP
|
1834
1836
|
{
|
1835
|
-
|
1837
|
+
(_, line), = val
|
1838
|
+
|
1839
|
+
result = s(:args).line line
|
1836
1840
|
}
|
1837
1841
|
| tPIPE block_param opt_bv_decl tPIPE
|
1838
1842
|
{
|
1839
1843
|
# TODO: current_arg = 0
|
1840
1844
|
result = args val
|
1845
|
+
self.in_argdef = false
|
1841
1846
|
}
|
1842
1847
|
|
1843
1848
|
opt_bv_decl: opt_nl
|
@@ -1864,7 +1869,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1864
1869
|
lambda: tLAMBDA
|
1865
1870
|
{
|
1866
1871
|
self.env.extend :dynamic
|
1867
|
-
result =
|
1872
|
+
result = lexer.lpar_beg
|
1868
1873
|
lexer.paren_nest += 1
|
1869
1874
|
lexer.lpar_beg = lexer.paren_nest
|
1870
1875
|
}
|
@@ -1874,7 +1879,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1874
1879
|
}
|
1875
1880
|
lambda_body
|
1876
1881
|
{
|
1877
|
-
_,
|
1882
|
+
(_, line), lpar, args, _cmdarg, body = val
|
1878
1883
|
lexer.lpar_beg = lpar
|
1879
1884
|
|
1880
1885
|
lexer.cmdarg.pop
|
@@ -1887,10 +1892,12 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1887
1892
|
|
1888
1893
|
f_larglist: tLPAREN2 f_args opt_bv_decl rparen
|
1889
1894
|
{
|
1895
|
+
self.in_argdef = false
|
1890
1896
|
result = args val
|
1891
1897
|
}
|
1892
1898
|
| f_args
|
1893
1899
|
{
|
1900
|
+
self.in_argdef = false
|
1894
1901
|
result = val[0]
|
1895
1902
|
result = 0 if result == s(:args)
|
1896
1903
|
}
|
@@ -1998,7 +2005,8 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1998
2005
|
}
|
1999
2006
|
| kSUPER
|
2000
2007
|
{
|
2001
|
-
|
2008
|
+
(_, line), = val
|
2009
|
+
result = s(:zsuper).line line
|
2002
2010
|
}
|
2003
2011
|
| primary_value tLBRACK2 opt_call_args rbracket
|
2004
2012
|
{
|
@@ -2008,11 +2016,11 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2008
2016
|
brace_block: tLCURLY
|
2009
2017
|
{
|
2010
2018
|
self.env.extend :dynamic
|
2011
|
-
result = self.lexer.lineno
|
2012
2019
|
}
|
2013
|
-
brace_body
|
2020
|
+
brace_body
|
2021
|
+
tRCURLY
|
2014
2022
|
{
|
2015
|
-
_, line, body, _ = val
|
2023
|
+
(_, line), _, body, _ = val
|
2016
2024
|
|
2017
2025
|
result = body
|
2018
2026
|
result.line line
|
@@ -2022,11 +2030,11 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2022
2030
|
| k_do
|
2023
2031
|
{
|
2024
2032
|
self.env.extend :dynamic
|
2025
|
-
result = self.lexer.lineno
|
2026
2033
|
}
|
2027
|
-
do_body
|
2034
|
+
do_body
|
2035
|
+
kEND
|
2028
2036
|
{
|
2029
|
-
_, line, body, _ = val
|
2037
|
+
(_, line), _, body, _ = val
|
2030
2038
|
|
2031
2039
|
result = body
|
2032
2040
|
result.line line
|
@@ -2084,14 +2092,13 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2084
2092
|
}
|
2085
2093
|
|
2086
2094
|
case_body: k_when
|
2087
|
-
{
|
2088
|
-
result = self.lexer.lineno
|
2089
|
-
}
|
2090
2095
|
case_args then compstmt cases
|
2091
2096
|
{
|
2092
|
-
|
2093
|
-
|
2094
|
-
result
|
2097
|
+
(_, line), case_args, _then, body, cases = val
|
2098
|
+
|
2099
|
+
result = new_when case_args, body
|
2100
|
+
result.line line
|
2101
|
+
result << cases if cases
|
2095
2102
|
}
|
2096
2103
|
|
2097
2104
|
cases: opt_else | case_body
|
@@ -2882,7 +2889,6 @@ regexp_contents: none
|
|
2882
2889
|
lexer.brace_nest,
|
2883
2890
|
lexer.string_nest, # TODO: remove
|
2884
2891
|
lexer.lex_state,
|
2885
|
-
lexer.lineno,
|
2886
2892
|
]
|
2887
2893
|
|
2888
2894
|
lexer.cmdarg.push false
|
@@ -2897,9 +2903,9 @@ regexp_contents: none
|
|
2897
2903
|
compstmt
|
2898
2904
|
tSTRING_DEND
|
2899
2905
|
{
|
2900
|
-
_, memo, stmt, _ = val
|
2906
|
+
(_, line), memo, stmt, _ = val
|
2901
2907
|
|
2902
|
-
lex_strterm, brace_nest, string_nest, oldlex_state
|
2908
|
+
lex_strterm, brace_nest, string_nest, oldlex_state = memo
|
2903
2909
|
# TODO: heredoc_indent
|
2904
2910
|
|
2905
2911
|
lexer.lex_strterm = lex_strterm
|
@@ -2959,11 +2965,11 @@ regexp_contents: none
|
|
2959
2965
|
|
2960
2966
|
dsym: tSYMBEG string_contents tSTRING_END
|
2961
2967
|
{
|
2962
|
-
_, result, _ = val
|
2968
|
+
(_, line), result, _ = val
|
2963
2969
|
|
2964
2970
|
lexer.lex_state = EXPR_END
|
2965
2971
|
|
2966
|
-
result ||= s(:str, "").line
|
2972
|
+
result ||= s(:str, "").line line
|
2967
2973
|
|
2968
2974
|
case result.sexp_type
|
2969
2975
|
when :dstr then
|
@@ -2999,15 +3005,15 @@ regexp_contents: none
|
|
2999
3005
|
| tCONSTANT
|
3000
3006
|
| tCVAR
|
3001
3007
|
|
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,
|
3008
|
+
keyword_variable: kNIL { (_, line), = val; result = s(:nil).line line }
|
3009
|
+
| kSELF { (_, line), = val; result = s(:self).line line }
|
3010
|
+
| kTRUE { (_, line), = val; result = s(:true).line line }
|
3011
|
+
| kFALSE { (_, line), = val; result = s(:false).line line }
|
3012
|
+
| k__FILE__ { (_, line), = val; result = s(:str, self.file).line line }
|
3013
|
+
| k__LINE__ { (_, line), = val; result = s(:lit, line).line line }
|
3008
3014
|
| k__ENCODING__
|
3009
3015
|
{
|
3010
|
-
l =
|
3016
|
+
(_, l), = val
|
3011
3017
|
result =
|
3012
3018
|
if defined? Encoding then
|
3013
3019
|
s(:colon2, s(:const, :Encoding).line(l), :UTF_8).line l
|
@@ -3068,11 +3074,13 @@ keyword_variable: kNIL { result = s(:nil).line lexer.lineno }
|
|
3068
3074
|
f_opt_paren_args: f_paren_args
|
3069
3075
|
| none
|
3070
3076
|
{
|
3077
|
+
self.in_argdef = false
|
3071
3078
|
result = end_args val
|
3072
3079
|
}
|
3073
3080
|
|
3074
3081
|
f_paren_args: tLPAREN2 f_args rparen
|
3075
3082
|
{
|
3083
|
+
self.in_argdef = false
|
3076
3084
|
result = end_args val
|
3077
3085
|
}
|
3078
3086
|
|
@@ -3080,10 +3088,12 @@ f_opt_paren_args: f_paren_args
|
|
3080
3088
|
| {
|
3081
3089
|
result = self.in_kwarg
|
3082
3090
|
self.in_kwarg = true
|
3091
|
+
self.in_argdef = true
|
3083
3092
|
self.lexer.lex_state |= EXPR_LABEL
|
3084
3093
|
}
|
3085
3094
|
f_args term
|
3086
3095
|
{
|
3096
|
+
self.in_argdef = false
|
3087
3097
|
result = end_args val
|
3088
3098
|
}
|
3089
3099
|
|
@@ -3170,12 +3180,12 @@ f_opt_paren_args: f_paren_args
|
|
3170
3180
|
|
|
3171
3181
|
{
|
3172
3182
|
result = args val
|
3173
|
-
# result.line lexer.lineno
|
3174
3183
|
}
|
3175
3184
|
|
3176
3185
|
args_forward: tBDOT3
|
3177
3186
|
{
|
3178
|
-
|
3187
|
+
(_, line), = val
|
3188
|
+
result = s(:forward_args).line line
|
3179
3189
|
}
|
3180
3190
|
|
3181
3191
|
f_bad_arg: tCONSTANT
|
@@ -3240,6 +3250,14 @@ f_opt_paren_args: f_paren_args
|
|
3240
3250
|
}
|
3241
3251
|
|
3242
3252
|
f_label: tLABEL
|
3253
|
+
{
|
3254
|
+
label, = val
|
3255
|
+
# arg_var(p, formal_argument(p, $1));
|
3256
|
+
# p->cur_arg = get_id($1);
|
3257
|
+
# p->max_numparam = ORDINAL_PARAM;
|
3258
|
+
self.in_argdef = false
|
3259
|
+
result = label
|
3260
|
+
}
|
3243
3261
|
|
3244
3262
|
f_kw: f_label arg_value
|
3245
3263
|
{
|
@@ -3248,6 +3266,7 @@ f_opt_paren_args: f_paren_args
|
|
3248
3266
|
|
3249
3267
|
identifier = label.to_sym
|
3250
3268
|
self.env[identifier] = :lvar
|
3269
|
+
self.in_argdef = true
|
3251
3270
|
|
3252
3271
|
kwarg = s(:kwarg, identifier, arg).line line
|
3253
3272
|
result = s(:array, kwarg).line line
|
@@ -3258,6 +3277,7 @@ f_opt_paren_args: f_paren_args
|
|
3258
3277
|
|
3259
3278
|
id = label.to_sym
|
3260
3279
|
self.env[id] = :lvar
|
3280
|
+
self.in_argdef = true
|
3261
3281
|
|
3262
3282
|
result = s(:array, s(:kwarg, id).line(line)).line line
|
3263
3283
|
}
|
@@ -3268,6 +3288,7 @@ f_opt_paren_args: f_paren_args
|
|
3268
3288
|
(label, line), expr = val
|
3269
3289
|
id = label.to_sym
|
3270
3290
|
self.env[id] = :lvar
|
3291
|
+
self.in_argdef = true
|
3271
3292
|
|
3272
3293
|
result = s(:array, s(:kwarg, id, expr).line(line)).line line
|
3273
3294
|
}
|
@@ -3277,6 +3298,7 @@ f_opt_paren_args: f_paren_args
|
|
3277
3298
|
(label, line), = val
|
3278
3299
|
id = label.to_sym
|
3279
3300
|
self.env[id] = :lvar
|
3301
|
+
self.in_argdef = true
|
3280
3302
|
|
3281
3303
|
result = s(:array, s(:kwarg, id).line(line)).line line
|
3282
3304
|
}
|
@@ -3313,9 +3335,10 @@ f_opt_paren_args: f_paren_args
|
|
3313
3335
|
}
|
3314
3336
|
| kwrest_mark
|
3315
3337
|
{
|
3338
|
+
(_, line), = val
|
3316
3339
|
id = :"**"
|
3317
|
-
self.env[id] = :lvar
|
3318
|
-
result = [id,
|
3340
|
+
self.env[id] = :lvar
|
3341
|
+
result = [id, line]
|
3319
3342
|
}
|
3320
3343
|
|
3321
3344
|
f_opt: f_arg_asgn
|
@@ -3323,10 +3346,10 @@ f_opt_paren_args: f_paren_args
|
|
3323
3346
|
arg_value
|
3324
3347
|
{
|
3325
3348
|
lhs, _, rhs = val
|
3349
|
+
self.in_argdef = true
|
3326
3350
|
result = self.assignable lhs, rhs
|
3327
3351
|
# TODO: detect duplicate names
|
3328
3352
|
# TODO? p->cur_arg = 0;
|
3329
|
-
# TODO? p->ctxt.in_argdef = 1;
|
3330
3353
|
}
|
3331
3354
|
|
3332
3355
|
f_block_opt: f_arg_asgn
|
@@ -3334,9 +3357,9 @@ f_opt_paren_args: f_paren_args
|
|
3334
3357
|
primary_value
|
3335
3358
|
{
|
3336
3359
|
lhs, _, rhs = val
|
3360
|
+
self.in_argdef = true
|
3337
3361
|
result = self.assignable lhs, rhs
|
3338
3362
|
# TODO? p->cur_arg = 0;
|
3339
|
-
# TODO? p->ctxt.in_argdef = 1;
|
3340
3363
|
}
|
3341
3364
|
|
3342
3365
|
f_block_optarg: f_block_opt
|
@@ -3373,9 +3396,10 @@ f_opt_paren_args: f_paren_args
|
|
3373
3396
|
}
|
3374
3397
|
| restarg_mark
|
3375
3398
|
{
|
3399
|
+
(_, line), = val
|
3376
3400
|
name = :"*"
|
3377
3401
|
self.env[name] = :lvar
|
3378
|
-
result = [name,
|
3402
|
+
result = [name, line]
|
3379
3403
|
}
|
3380
3404
|
|
3381
3405
|
blkarg_mark: tAMPER2 | tAMPER
|
@@ -3480,11 +3504,10 @@ f_opt_paren_args: f_paren_args
|
|
3480
3504
|
opt_terms: | terms
|
3481
3505
|
opt_nl: | tNL
|
3482
3506
|
rparen: opt_nl tRPAREN
|
3483
|
-
|
3484
|
-
|
3485
|
-
|
3486
|
-
|
3487
|
-
# }
|
3507
|
+
{
|
3508
|
+
_, close = val # TODO: include lineno in close?
|
3509
|
+
result = [close, lexer.lineno]
|
3510
|
+
}
|
3488
3511
|
rbracket: opt_nl tRBRACK
|
3489
3512
|
{
|
3490
3513
|
_, close = val
|