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/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 
     | 
    
         | 
| 
         @@ -392,6 +392,7 @@ rule 
     | 
|
| 
       392 
392 
     | 
    
         
             
                   defs_head: k_def singleton dot_or_colon
         
     | 
| 
       393 
393 
     | 
    
         
             
                                {
         
     | 
| 
       394 
394 
     | 
    
         
             
                                  lexer.lex_state = EXPR_FNAME
         
     | 
| 
      
 395 
     | 
    
         
            +
                                  self.in_argdef = true
         
     | 
| 
       395 
396 
     | 
    
         
             
                                }
         
     | 
| 
       396 
397 
     | 
    
         
             
                                def_name
         
     | 
| 
       397 
398 
     | 
    
         
             
                                {
         
     | 
| 
         @@ -605,7 +606,7 @@ rule 
     | 
|
| 
       605 
606 
     | 
    
         
             
                                }
         
     | 
| 
       606 
607 
     | 
    
         
             
                            | tSTAR
         
     | 
| 
       607 
608 
     | 
    
         
             
                                {
         
     | 
| 
       608 
     | 
    
         
            -
                                  l =  
     | 
| 
      
 609 
     | 
    
         
            +
                                  (_, l), = val
         
     | 
| 
       609 
610 
     | 
    
         
             
                                  result = s(:masgn, s(:array, s(:splat).line(l)).line(l)).line l
         
     | 
| 
       610 
611 
     | 
    
         
             
                                }
         
     | 
| 
       611 
612 
     | 
    
         
             
                            | tSTAR tCOMMA mlhs_post
         
     | 
| 
         @@ -1230,7 +1231,7 @@ rule 
     | 
|
| 
       1230 
1231 
     | 
    
         
             
                        args: arg_value
         
     | 
| 
       1231 
1232 
     | 
    
         
             
                                {
         
     | 
| 
       1232 
1233 
     | 
    
         
             
                                  arg, = val
         
     | 
| 
       1233 
     | 
    
         
            -
                                  lineno = arg.line 
     | 
| 
      
 1234 
     | 
    
         
            +
                                  lineno = arg.line
         
     | 
| 
       1234 
1235 
     | 
    
         | 
| 
       1235 
1236 
     | 
    
         
             
                                  result = s(:array, arg).line lineno
         
     | 
| 
       1236 
1237 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -1246,9 +1247,7 @@ rule 
     | 
|
| 
       1246 
1247 
     | 
    
         
             
                                }
         
     | 
| 
       1247 
1248 
     | 
    
         
             
                            | args tCOMMA tSTAR arg_value
         
     | 
| 
       1248 
1249 
     | 
    
         
             
                                {
         
     | 
| 
       1249 
     | 
    
         
            -
                                   
     | 
| 
       1250 
     | 
    
         
            -
                                  args, _, _, id = val
         
     | 
| 
       1251 
     | 
    
         
            -
                                  line = lexer.lineno
         
     | 
| 
      
 1250 
     | 
    
         
            +
                                  args, _, (_, line), id = val
         
     | 
| 
       1252 
1251 
     | 
    
         
             
                                  result = self.list_append args, s(:splat, id).line(line)
         
     | 
| 
       1253 
1252 
     | 
    
         
             
                                }
         
     | 
| 
       1254 
1253 
     | 
    
         | 
| 
         @@ -1267,7 +1266,6 @@ rule 
     | 
|
| 
       1267 
1266 
     | 
    
         
             
                                }
         
     | 
| 
       1268 
1267 
     | 
    
         
             
                            | args tCOMMA tSTAR arg_value
         
     | 
| 
       1269 
1268 
     | 
    
         
             
                                {
         
     | 
| 
       1270 
     | 
    
         
            -
                                  # TODO: make all tXXXX terminals include lexer.lineno
         
     | 
| 
       1271 
1269 
     | 
    
         
             
                                  arg, _, _, splat = val
         
     | 
| 
       1272 
1270 
     | 
    
         
             
                                  result = self.arg_concat arg, splat
         
     | 
| 
       1273 
1271 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -1296,7 +1294,6 @@ rule 
     | 
|
| 
       1296 
1294 
     | 
    
         
             
                            | k_begin
         
     | 
| 
       1297 
1295 
     | 
    
         
             
                                {
         
     | 
| 
       1298 
1296 
     | 
    
         
             
                                  lexer.cmdarg.push false
         
     | 
| 
       1299 
     | 
    
         
            -
                                  result = self.lexer.lineno
         
     | 
| 
       1300 
1297 
     | 
    
         
             
                                }
         
     | 
| 
       1301 
1298 
     | 
    
         
             
                                bodystmt k_end
         
     | 
| 
       1302 
1299 
     | 
    
         
             
                                {
         
     | 
| 
         @@ -1306,11 +1303,10 @@ rule 
     | 
|
| 
       1306 
1303 
     | 
    
         
             
                            | tLPAREN_ARG
         
     | 
| 
       1307 
1304 
     | 
    
         
             
                                {
         
     | 
| 
       1308 
1305 
     | 
    
         
             
                                  lexer.lex_state = EXPR_ENDARG
         
     | 
| 
       1309 
     | 
    
         
            -
                                  result = lexer.lineno
         
     | 
| 
       1310 
1306 
     | 
    
         
             
                                }
         
     | 
| 
       1311 
1307 
     | 
    
         
             
                                rparen
         
     | 
| 
       1312 
1308 
     | 
    
         
             
                                {
         
     | 
| 
       1313 
     | 
    
         
            -
                                  _, line, _ = val
         
     | 
| 
      
 1309 
     | 
    
         
            +
                                  (_, line), _, _ = val
         
     | 
| 
       1314 
1310 
     | 
    
         
             
                                  result = s(:begin).line line
         
     | 
| 
       1315 
1311 
     | 
    
         
             
                                }
         
     | 
| 
       1316 
1312 
     | 
    
         
             
                            | tLPAREN_ARG
         
     | 
| 
         @@ -1326,9 +1322,8 @@ rule 
     | 
|
| 
       1326 
1322 
     | 
    
         
             
                                }
         
     | 
| 
       1327 
1323 
     | 
    
         
             
                            | tLPAREN compstmt tRPAREN
         
     | 
| 
       1328 
1324 
     | 
    
         
             
                                {
         
     | 
| 
       1329 
     | 
    
         
            -
                                  _, stmt, _ = val
         
     | 
| 
       1330 
     | 
    
         
            -
                                  result = stmt
         
     | 
| 
       1331 
     | 
    
         
            -
                                  result ||= s(:nil).line lexer.lineno
         
     | 
| 
      
 1325 
     | 
    
         
            +
                                  (_, line), stmt, _ = val
         
     | 
| 
      
 1326 
     | 
    
         
            +
                                  result = stmt || s(:nil).line(line)
         
     | 
| 
       1332 
1327 
     | 
    
         
             
                                  result.paren = true
         
     | 
| 
       1333 
1328 
     | 
    
         
             
                                }
         
     | 
| 
       1334 
1329 
     | 
    
         
             
                            | primary_value tCOLON2 tCONSTANT
         
     | 
| 
         @@ -1341,9 +1336,9 @@ rule 
     | 
|
| 
       1341 
1336 
     | 
    
         
             
                                {
         
     | 
| 
       1342 
1337 
     | 
    
         
             
                                  result = wrap :colon3, val[1]
         
     | 
| 
       1343 
1338 
     | 
    
         
             
                                }
         
     | 
| 
       1344 
     | 
    
         
            -
                            | tLBRACK  
     | 
| 
      
 1339 
     | 
    
         
            +
                            | tLBRACK aref_args rbracket
         
     | 
| 
       1345 
1340 
     | 
    
         
             
                                {
         
     | 
| 
       1346 
     | 
    
         
            -
                                  _, line, args, (_, line_max) = val
         
     | 
| 
      
 1341 
     | 
    
         
            +
                                  (_, line), args, (_, line_max) = val
         
     | 
| 
       1347 
1342 
     | 
    
         | 
| 
       1348 
1343 
     | 
    
         
             
                                  result = args || s(:array)
         
     | 
| 
       1349 
1344 
     | 
    
         
             
                                  result.sexp_type = :array # aref_args is :args
         
     | 
| 
         @@ -1459,9 +1454,6 @@ rule 
     | 
|
| 
       1459 
1454 
     | 
    
         
             
                                  result = new_for iter, var, body
         
     | 
| 
       1460 
1455 
     | 
    
         
             
                                }
         
     | 
| 
       1461 
1456 
     | 
    
         
             
                            | k_class
         
     | 
| 
       1462 
     | 
    
         
            -
                                {
         
     | 
| 
       1463 
     | 
    
         
            -
                                  result = self.lexer.lineno
         
     | 
| 
       1464 
     | 
    
         
            -
                                }
         
     | 
| 
       1465 
1457 
     | 
    
         
             
                                cpath superclass
         
     | 
| 
       1466 
1458 
     | 
    
         
             
                                {
         
     | 
| 
       1467 
1459 
     | 
    
         
             
                                  if (self.in_def || self.in_single > 0) then
         
     | 
| 
         @@ -1476,9 +1468,6 @@ rule 
     | 
|
| 
       1476 
1468 
     | 
    
         
             
                                  self.lexer.ignore_body_comments
         
     | 
| 
       1477 
1469 
     | 
    
         
             
                                }
         
     | 
| 
       1478 
1470 
     | 
    
         
             
                            | k_class tLSHFT
         
     | 
| 
       1479 
     | 
    
         
            -
                                {
         
     | 
| 
       1480 
     | 
    
         
            -
                                  result = self.lexer.lineno
         
     | 
| 
       1481 
     | 
    
         
            -
                                }
         
     | 
| 
       1482 
1471 
     | 
    
         
             
                                expr
         
     | 
| 
       1483 
1472 
     | 
    
         
             
                                {
         
     | 
| 
       1484 
1473 
     | 
    
         
             
                                  result = self.in_def
         
     | 
| 
         @@ -1490,16 +1479,14 @@ rule 
     | 
|
| 
       1490 
1479 
     | 
    
         
             
                                  self.in_single = 0
         
     | 
| 
       1491 
1480 
     | 
    
         
             
                                  self.env.extend
         
     | 
| 
       1492 
1481 
     | 
    
         
             
                                }
         
     | 
| 
       1493 
     | 
    
         
            -
                                bodystmt 
     | 
| 
      
 1482 
     | 
    
         
            +
                                bodystmt
         
     | 
| 
      
 1483 
     | 
    
         
            +
                                k_end
         
     | 
| 
       1494 
1484 
     | 
    
         
             
                                {
         
     | 
| 
       1495 
1485 
     | 
    
         
             
                                  result = new_sclass val
         
     | 
| 
       1496 
1486 
     | 
    
         
             
                                  self.env.unextend
         
     | 
| 
       1497 
1487 
     | 
    
         
             
                                  self.lexer.ignore_body_comments
         
     | 
| 
       1498 
1488 
     | 
    
         
             
                                }
         
     | 
| 
       1499 
1489 
     | 
    
         
             
                            | k_module
         
     | 
| 
       1500 
     | 
    
         
            -
                                {
         
     | 
| 
       1501 
     | 
    
         
            -
                                  result = self.lexer.lineno
         
     | 
| 
       1502 
     | 
    
         
            -
                                }
         
     | 
| 
       1503 
1490 
     | 
    
         
             
                                cpath
         
     | 
| 
       1504 
1491 
     | 
    
         
             
                                {
         
     | 
| 
       1505 
1492 
     | 
    
         
             
                                  yyerror "module definition in method body" if
         
     | 
| 
         @@ -1602,6 +1589,7 @@ rule 
     | 
|
| 
       1602 
1589 
     | 
    
         
             
                       k_def: kDEF
         
     | 
| 
       1603 
1590 
     | 
    
         
             
                                {
         
     | 
| 
       1604 
1591 
     | 
    
         
             
                                  self.comments.push self.lexer.comments
         
     | 
| 
      
 1592 
     | 
    
         
            +
                                  self.in_argdef = true
         
     | 
| 
       1605 
1593 
     | 
    
         
             
                                }
         
     | 
| 
       1606 
1594 
     | 
    
         
             
                        k_do: kDO
         
     | 
| 
       1607 
1595 
     | 
    
         
             
                  k_do_block: kDO_BLOCK
         
     | 
| 
         @@ -1641,20 +1629,33 @@ rule 
     | 
|
| 
       1641 
1629 
     | 
    
         
             
                                }
         
     | 
| 
       1642 
1630 
     | 
    
         | 
| 
       1643 
1631 
     | 
    
         
             
                      f_marg: f_norm_arg
         
     | 
| 
      
 1632 
     | 
    
         
            +
                                {
         
     | 
| 
      
 1633 
     | 
    
         
            +
                                  (sym, line), = val
         
     | 
| 
      
 1634 
     | 
    
         
            +
             
     | 
| 
      
 1635 
     | 
    
         
            +
                                  result = s(:dummy, sym).line line
         
     | 
| 
      
 1636 
     | 
    
         
            +
                                }
         
     | 
| 
       1644 
1637 
     | 
    
         
             
                            | tLPAREN f_margs rparen
         
     | 
| 
       1645 
1638 
     | 
    
         
             
                                {
         
     | 
| 
       1646 
     | 
    
         
            -
                                   
     | 
| 
      
 1639 
     | 
    
         
            +
                                  _, args, _ = val
         
     | 
| 
      
 1640 
     | 
    
         
            +
                                  result = args
         
     | 
| 
       1647 
1641 
     | 
    
         
             
                                }
         
     | 
| 
       1648 
1642 
     | 
    
         | 
| 
       1649 
1643 
     | 
    
         
             
                 f_marg_list: f_marg
         
     | 
| 
       1650 
1644 
     | 
    
         
             
                                {
         
     | 
| 
       1651 
     | 
    
         
            -
                                   
     | 
| 
      
 1645 
     | 
    
         
            +
                                  arg, = val
         
     | 
| 
      
 1646 
     | 
    
         
            +
                                  line = arg.line
         
     | 
| 
      
 1647 
     | 
    
         
            +
             
     | 
| 
      
 1648 
     | 
    
         
            +
                                  arg = arg.last if arg.sexp_type == :dummy
         
     | 
| 
       1652 
1649 
     | 
    
         | 
| 
       1653 
     | 
    
         
            -
                                  result = s(:array,  
     | 
| 
      
 1650 
     | 
    
         
            +
                                  result = s(:array, arg).line line
         
     | 
| 
       1654 
1651 
     | 
    
         
             
                                }
         
     | 
| 
       1655 
1652 
     | 
    
         
             
                            | f_marg_list tCOMMA f_marg
         
     | 
| 
       1656 
1653 
     | 
    
         
             
                                {
         
     | 
| 
       1657 
     | 
    
         
            -
                                   
     | 
| 
      
 1654 
     | 
    
         
            +
                                  args, _, arg = val
         
     | 
| 
      
 1655 
     | 
    
         
            +
             
     | 
| 
      
 1656 
     | 
    
         
            +
                                  arg = arg.last if arg.sexp_type == :dummy
         
     | 
| 
      
 1657 
     | 
    
         
            +
             
     | 
| 
      
 1658 
     | 
    
         
            +
                                  result = list_append args, arg
         
     | 
| 
       1658 
1659 
     | 
    
         
             
                                }
         
     | 
| 
       1659 
1660 
     | 
    
         | 
| 
       1660 
1661 
     | 
    
         
             
                     f_margs: f_marg_list
         
     | 
| 
         @@ -1697,8 +1698,8 @@ rule 
     | 
|
| 
       1697 
1698 
     | 
    
         
             
                                }
         
     | 
| 
       1698 
1699 
     | 
    
         
             
                            | tSTAR
         
     | 
| 
       1699 
1700 
     | 
    
         
             
                                {
         
     | 
| 
       1700 
     | 
    
         
            -
                                   
     | 
| 
       1701 
     | 
    
         
            -
                                  result.line  
     | 
| 
      
 1701 
     | 
    
         
            +
                                  (_, line), = val
         
     | 
| 
      
 1702 
     | 
    
         
            +
                                  result = args([:*]).line line
         
     | 
| 
       1702 
1703 
     | 
    
         
             
                                }
         
     | 
| 
       1703 
1704 
     | 
    
         | 
| 
       1704 
1705 
     | 
    
         
             
                f_any_kwrest: f_kwrest
         
     | 
| 
         @@ -1807,15 +1808,19 @@ opt_block_args_tail: tCOMMA block_args_tail 
     | 
|
| 
       1807 
1808 
     | 
    
         
             
                                {
         
     | 
| 
       1808 
1809 
     | 
    
         
             
                                  # TODO: current_arg = 0
         
     | 
| 
       1809 
1810 
     | 
    
         
             
                                  result = args val
         
     | 
| 
      
 1811 
     | 
    
         
            +
                                  self.in_argdef = false
         
     | 
| 
       1810 
1812 
     | 
    
         
             
                                }
         
     | 
| 
       1811 
1813 
     | 
    
         
             
                            | tOROP
         
     | 
| 
       1812 
1814 
     | 
    
         
             
                                {
         
     | 
| 
       1813 
     | 
    
         
            -
                                   
     | 
| 
      
 1815 
     | 
    
         
            +
                                  (_, line), = val
         
     | 
| 
      
 1816 
     | 
    
         
            +
             
     | 
| 
      
 1817 
     | 
    
         
            +
                                  result = s(:args).line line
         
     | 
| 
       1814 
1818 
     | 
    
         
             
                                }
         
     | 
| 
       1815 
1819 
     | 
    
         
             
                            | tPIPE block_param opt_bv_decl tPIPE
         
     | 
| 
       1816 
1820 
     | 
    
         
             
                                {
         
     | 
| 
       1817 
1821 
     | 
    
         
             
                                  # TODO: current_arg = 0
         
     | 
| 
       1818 
1822 
     | 
    
         
             
                                  result = args val
         
     | 
| 
      
 1823 
     | 
    
         
            +
                                  self.in_argdef = false
         
     | 
| 
       1819 
1824 
     | 
    
         
             
                                }
         
     | 
| 
       1820 
1825 
     | 
    
         | 
| 
       1821 
1826 
     | 
    
         
             
                 opt_bv_decl: opt_nl
         
     | 
| 
         @@ -1842,7 +1847,7 @@ opt_block_args_tail: tCOMMA block_args_tail 
     | 
|
| 
       1842 
1847 
     | 
    
         
             
                      lambda: tLAMBDA
         
     | 
| 
       1843 
1848 
     | 
    
         
             
                                {
         
     | 
| 
       1844 
1849 
     | 
    
         
             
                                  self.env.extend :dynamic
         
     | 
| 
       1845 
     | 
    
         
            -
                                  result =  
     | 
| 
      
 1850 
     | 
    
         
            +
                                  result = lexer.lpar_beg
         
     | 
| 
       1846 
1851 
     | 
    
         
             
                                  lexer.paren_nest += 1
         
     | 
| 
       1847 
1852 
     | 
    
         
             
                                  lexer.lpar_beg = lexer.paren_nest
         
     | 
| 
       1848 
1853 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -1852,7 +1857,7 @@ opt_block_args_tail: tCOMMA block_args_tail 
     | 
|
| 
       1852 
1857 
     | 
    
         
             
                                }
         
     | 
| 
       1853 
1858 
     | 
    
         
             
                                lambda_body
         
     | 
| 
       1854 
1859 
     | 
    
         
             
                                {
         
     | 
| 
       1855 
     | 
    
         
            -
                                  _,  
     | 
| 
      
 1860 
     | 
    
         
            +
                                  (_, line), lpar, args, _cmdarg, body = val
         
     | 
| 
       1856 
1861 
     | 
    
         
             
                                  lexer.lpar_beg = lpar
         
     | 
| 
       1857 
1862 
     | 
    
         | 
| 
       1858 
1863 
     | 
    
         
             
                                  lexer.cmdarg.pop
         
     | 
| 
         @@ -1865,10 +1870,12 @@ opt_block_args_tail: tCOMMA block_args_tail 
     | 
|
| 
       1865 
1870 
     | 
    
         | 
| 
       1866 
1871 
     | 
    
         
             
                 f_larglist: tLPAREN2 f_args opt_bv_decl rparen
         
     | 
| 
       1867 
1872 
     | 
    
         
             
                                {
         
     | 
| 
      
 1873 
     | 
    
         
            +
                                  self.in_argdef = false
         
     | 
| 
       1868 
1874 
     | 
    
         
             
                                  result = args val
         
     | 
| 
       1869 
1875 
     | 
    
         
             
                                }
         
     | 
| 
       1870 
1876 
     | 
    
         
             
                            | f_args
         
     | 
| 
       1871 
1877 
     | 
    
         
             
                                {
         
     | 
| 
      
 1878 
     | 
    
         
            +
                                  self.in_argdef = false
         
     | 
| 
       1872 
1879 
     | 
    
         
             
                                  result = val[0]
         
     | 
| 
       1873 
1880 
     | 
    
         
             
                                  result = 0 if result == s(:args)
         
     | 
| 
       1874 
1881 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -1976,7 +1983,8 @@ opt_block_args_tail: tCOMMA block_args_tail 
     | 
|
| 
       1976 
1983 
     | 
    
         
             
                                }
         
     | 
| 
       1977 
1984 
     | 
    
         
             
                            | kSUPER
         
     | 
| 
       1978 
1985 
     | 
    
         
             
                                {
         
     | 
| 
       1979 
     | 
    
         
            -
                                   
     | 
| 
      
 1986 
     | 
    
         
            +
                                  (_, line), = val
         
     | 
| 
      
 1987 
     | 
    
         
            +
                                  result = s(:zsuper).line line
         
     | 
| 
       1980 
1988 
     | 
    
         
             
                                }
         
     | 
| 
       1981 
1989 
     | 
    
         
             
                            | primary_value tLBRACK2 opt_call_args rbracket
         
     | 
| 
       1982 
1990 
     | 
    
         
             
                                {
         
     | 
| 
         @@ -1986,11 +1994,11 @@ opt_block_args_tail: tCOMMA block_args_tail 
     | 
|
| 
       1986 
1994 
     | 
    
         
             
                 brace_block: tLCURLY
         
     | 
| 
       1987 
1995 
     | 
    
         
             
                                {
         
     | 
| 
       1988 
1996 
     | 
    
         
             
                                  self.env.extend :dynamic
         
     | 
| 
       1989 
     | 
    
         
            -
                                  result = self.lexer.lineno
         
     | 
| 
       1990 
1997 
     | 
    
         
             
                                }
         
     | 
| 
       1991 
     | 
    
         
            -
                                brace_body 
     | 
| 
      
 1998 
     | 
    
         
            +
                                brace_body
         
     | 
| 
      
 1999 
     | 
    
         
            +
                                tRCURLY
         
     | 
| 
       1992 
2000 
     | 
    
         
             
                                {
         
     | 
| 
       1993 
     | 
    
         
            -
                                  _, line, body, _ = val
         
     | 
| 
      
 2001 
     | 
    
         
            +
                                  (_, line), _, body, _ = val
         
     | 
| 
       1994 
2002 
     | 
    
         | 
| 
       1995 
2003 
     | 
    
         
             
                                  result = body
         
     | 
| 
       1996 
2004 
     | 
    
         
             
                                  result.line line
         
     | 
| 
         @@ -2000,11 +2008,11 @@ opt_block_args_tail: tCOMMA block_args_tail 
     | 
|
| 
       2000 
2008 
     | 
    
         
             
                            | k_do
         
     | 
| 
       2001 
2009 
     | 
    
         
             
                                {
         
     | 
| 
       2002 
2010 
     | 
    
         
             
                                  self.env.extend :dynamic
         
     | 
| 
       2003 
     | 
    
         
            -
                                  result = self.lexer.lineno
         
     | 
| 
       2004 
2011 
     | 
    
         
             
                                }
         
     | 
| 
       2005 
     | 
    
         
            -
                                do_body 
     | 
| 
      
 2012 
     | 
    
         
            +
                                do_body
         
     | 
| 
      
 2013 
     | 
    
         
            +
                                kEND
         
     | 
| 
       2006 
2014 
     | 
    
         
             
                                {
         
     | 
| 
       2007 
     | 
    
         
            -
                                  _, line, body, _ = val
         
     | 
| 
      
 2015 
     | 
    
         
            +
                                  (_, line), _, body, _ = val
         
     | 
| 
       2008 
2016 
     | 
    
         | 
| 
       2009 
2017 
     | 
    
         
             
                                  result = body
         
     | 
| 
       2010 
2018 
     | 
    
         
             
                                  result.line line
         
     | 
| 
         @@ -2062,14 +2070,13 @@ opt_block_args_tail: tCOMMA block_args_tail 
     | 
|
| 
       2062 
2070 
     | 
    
         
             
                                }
         
     | 
| 
       2063 
2071 
     | 
    
         | 
| 
       2064 
2072 
     | 
    
         
             
                   case_body: k_when
         
     | 
| 
       2065 
     | 
    
         
            -
                                {
         
     | 
| 
       2066 
     | 
    
         
            -
                                  result = self.lexer.lineno
         
     | 
| 
       2067 
     | 
    
         
            -
                                }
         
     | 
| 
       2068 
2073 
     | 
    
         
             
                                case_args then compstmt cases
         
     | 
| 
       2069 
2074 
     | 
    
         
             
                                {
         
     | 
| 
       2070 
     | 
    
         
            -
                                   
     | 
| 
       2071 
     | 
    
         
            -
             
     | 
| 
       2072 
     | 
    
         
            -
                                  result  
     | 
| 
      
 2075 
     | 
    
         
            +
                                  (_, line), case_args, _then, body, cases = val
         
     | 
| 
      
 2076 
     | 
    
         
            +
             
     | 
| 
      
 2077 
     | 
    
         
            +
                                  result = new_when case_args, body
         
     | 
| 
      
 2078 
     | 
    
         
            +
                                  result.line line
         
     | 
| 
      
 2079 
     | 
    
         
            +
                                  result << cases if cases
         
     | 
| 
       2073 
2080 
     | 
    
         
             
                                }
         
     | 
| 
       2074 
2081 
     | 
    
         | 
| 
       2075 
2082 
     | 
    
         
             
                       cases: opt_else | case_body
         
     | 
| 
         @@ -2844,7 +2851,6 @@ regexp_contents: none 
     | 
|
| 
       2844 
2851 
     | 
    
         
             
                                            lexer.brace_nest,
         
     | 
| 
       2845 
2852 
     | 
    
         
             
                                            lexer.string_nest, # TODO: remove
         
     | 
| 
       2846 
2853 
     | 
    
         
             
                                            lexer.lex_state,
         
     | 
| 
       2847 
     | 
    
         
            -
                                            lexer.lineno,
         
     | 
| 
       2848 
2854 
     | 
    
         
             
                                           ]
         
     | 
| 
       2849 
2855 
     | 
    
         | 
| 
       2850 
2856 
     | 
    
         
             
                                  lexer.cmdarg.push false
         
     | 
| 
         @@ -2859,9 +2865,9 @@ regexp_contents: none 
     | 
|
| 
       2859 
2865 
     | 
    
         
             
                                compstmt
         
     | 
| 
       2860 
2866 
     | 
    
         
             
                                tSTRING_DEND
         
     | 
| 
       2861 
2867 
     | 
    
         
             
                                {
         
     | 
| 
       2862 
     | 
    
         
            -
                                  _, memo, stmt, _ = val
         
     | 
| 
      
 2868 
     | 
    
         
            +
                                  (_, line), memo, stmt, _ = val
         
     | 
| 
       2863 
2869 
     | 
    
         | 
| 
       2864 
     | 
    
         
            -
                                  lex_strterm, brace_nest, string_nest, oldlex_state 
     | 
| 
      
 2870 
     | 
    
         
            +
                                  lex_strterm, brace_nest, string_nest, oldlex_state = memo
         
     | 
| 
       2865 
2871 
     | 
    
         
             
                                  # TODO: heredoc_indent
         
     | 
| 
       2866 
2872 
     | 
    
         | 
| 
       2867 
2873 
     | 
    
         
             
                                  lexer.lex_strterm = lex_strterm
         
     | 
| 
         @@ -2921,11 +2927,11 @@ regexp_contents: none 
     | 
|
| 
       2921 
2927 
     | 
    
         | 
| 
       2922 
2928 
     | 
    
         
             
                        dsym: tSYMBEG string_contents tSTRING_END
         
     | 
| 
       2923 
2929 
     | 
    
         
             
                                {
         
     | 
| 
       2924 
     | 
    
         
            -
                                  _, result, _ = val
         
     | 
| 
      
 2930 
     | 
    
         
            +
                                  (_, line), result, _ = val
         
     | 
| 
       2925 
2931 
     | 
    
         | 
| 
       2926 
2932 
     | 
    
         
             
                                  lexer.lex_state = EXPR_END
         
     | 
| 
       2927 
2933 
     | 
    
         | 
| 
       2928 
     | 
    
         
            -
                                  result ||= s(:str, "").line  
     | 
| 
      
 2934 
     | 
    
         
            +
                                  result ||= s(:str, "").line line
         
     | 
| 
       2929 
2935 
     | 
    
         | 
| 
       2930 
2936 
     | 
    
         
             
                                  case result.sexp_type
         
     | 
| 
       2931 
2937 
     | 
    
         
             
                                  when :dstr then
         
     | 
| 
         @@ -2958,15 +2964,15 @@ regexp_contents: none 
     | 
|
| 
       2958 
2964 
     | 
    
         
             
                            | tCONSTANT
         
     | 
| 
       2959 
2965 
     | 
    
         
             
                            | tCVAR
         
     | 
| 
       2960 
2966 
     | 
    
         | 
| 
       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,  
     | 
| 
      
 2967 
     | 
    
         
            +
            keyword_variable: kNIL      { (_, line), = val; result = s(:nil).line line }
         
     | 
| 
      
 2968 
     | 
    
         
            +
                            | kSELF     { (_, line), = val; result = s(:self).line line }
         
     | 
| 
      
 2969 
     | 
    
         
            +
                            | kTRUE     { (_, line), = val; result = s(:true).line line }
         
     | 
| 
      
 2970 
     | 
    
         
            +
                            | kFALSE    { (_, line), = val; result = s(:false).line line }
         
     | 
| 
      
 2971 
     | 
    
         
            +
                            | k__FILE__ { (_, line), = val; result = s(:str, self.file).line line }
         
     | 
| 
      
 2972 
     | 
    
         
            +
                            | k__LINE__ { (_, line), = val; result = s(:lit, line).line line }
         
     | 
| 
       2967 
2973 
     | 
    
         
             
                            | k__ENCODING__
         
     | 
| 
       2968 
2974 
     | 
    
         
             
                                {
         
     | 
| 
       2969 
     | 
    
         
            -
                                  l =  
     | 
| 
      
 2975 
     | 
    
         
            +
                                  (_, l), = val
         
     | 
| 
       2970 
2976 
     | 
    
         
             
                                  result =
         
     | 
| 
       2971 
2977 
     | 
    
         
             
                                    if defined? Encoding then
         
     | 
| 
       2972 
2978 
     | 
    
         
             
                                      s(:colon2, s(:const, :Encoding).line(l), :UTF_8).line l
         
     | 
| 
         @@ -3027,11 +3033,13 @@ keyword_variable: kNIL      { result = s(:nil).line lexer.lineno } 
     | 
|
| 
       3027 
3033 
     | 
    
         
             
            f_opt_paren_args: f_paren_args
         
     | 
| 
       3028 
3034 
     | 
    
         
             
                            | none
         
     | 
| 
       3029 
3035 
     | 
    
         
             
                                {
         
     | 
| 
      
 3036 
     | 
    
         
            +
                                  self.in_argdef = false
         
     | 
| 
       3030 
3037 
     | 
    
         
             
                                  result = end_args val
         
     | 
| 
       3031 
3038 
     | 
    
         
             
                                }
         
     | 
| 
       3032 
3039 
     | 
    
         | 
| 
       3033 
3040 
     | 
    
         
             
                f_paren_args: tLPAREN2 f_args rparen
         
     | 
| 
       3034 
3041 
     | 
    
         
             
                                {
         
     | 
| 
      
 3042 
     | 
    
         
            +
                                  self.in_argdef = false
         
     | 
| 
       3035 
3043 
     | 
    
         
             
                                  result = end_args val
         
     | 
| 
       3036 
3044 
     | 
    
         
             
                                }
         
     | 
| 
       3037 
3045 
     | 
    
         
             
                            | tLPAREN2 f_arg tCOMMA args_forward rparen
         
     | 
| 
         @@ -3047,10 +3055,12 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3047 
3055 
     | 
    
         
             
                            |   {
         
     | 
| 
       3048 
3056 
     | 
    
         
             
                                  result = self.in_kwarg
         
     | 
| 
       3049 
3057 
     | 
    
         
             
                                  self.in_kwarg = true
         
     | 
| 
      
 3058 
     | 
    
         
            +
                                  self.in_argdef = true
         
     | 
| 
       3050 
3059 
     | 
    
         
             
                                  self.lexer.lex_state |= EXPR_LABEL
         
     | 
| 
       3051 
3060 
     | 
    
         
             
                                }
         
     | 
| 
       3052 
3061 
     | 
    
         
             
                                f_args term
         
     | 
| 
       3053 
3062 
     | 
    
         
             
                                {
         
     | 
| 
      
 3063 
     | 
    
         
            +
                                  self.in_argdef = false
         
     | 
| 
       3054 
3064 
     | 
    
         
             
                                  result = end_args val
         
     | 
| 
       3055 
3065 
     | 
    
         
             
                                }
         
     | 
| 
       3056 
3066 
     | 
    
         | 
| 
         @@ -3136,12 +3146,12 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3136 
3146 
     | 
    
         
             
                            |
         
     | 
| 
       3137 
3147 
     | 
    
         
             
                                {
         
     | 
| 
       3138 
3148 
     | 
    
         
             
                                  result = args val
         
     | 
| 
       3139 
     | 
    
         
            -
                                  # result.line lexer.lineno
         
     | 
| 
       3140 
3149 
     | 
    
         
             
                                }
         
     | 
| 
       3141 
3150 
     | 
    
         | 
| 
       3142 
3151 
     | 
    
         
             
                args_forward: tBDOT3
         
     | 
| 
       3143 
3152 
     | 
    
         
             
                                {
         
     | 
| 
       3144 
     | 
    
         
            -
                                   
     | 
| 
      
 3153 
     | 
    
         
            +
                                  (_, line), = val
         
     | 
| 
      
 3154 
     | 
    
         
            +
                                  result = s(:forward_args).line line
         
     | 
| 
       3145 
3155 
     | 
    
         
             
                                }
         
     | 
| 
       3146 
3156 
     | 
    
         | 
| 
       3147 
3157 
     | 
    
         
             
                   f_bad_arg: tCONSTANT
         
     | 
| 
         @@ -3206,6 +3216,14 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3206 
3216 
     | 
    
         
             
                                }
         
     | 
| 
       3207 
3217 
     | 
    
         | 
| 
       3208 
3218 
     | 
    
         
             
                     f_label: tLABEL
         
     | 
| 
      
 3219 
     | 
    
         
            +
                                {
         
     | 
| 
      
 3220 
     | 
    
         
            +
                                  label, = val
         
     | 
| 
      
 3221 
     | 
    
         
            +
                                  # arg_var(p, formal_argument(p, $1));
         
     | 
| 
      
 3222 
     | 
    
         
            +
                                  # p->cur_arg = get_id($1);
         
     | 
| 
      
 3223 
     | 
    
         
            +
                                  # p->max_numparam = ORDINAL_PARAM;
         
     | 
| 
      
 3224 
     | 
    
         
            +
                                  self.in_argdef = false
         
     | 
| 
      
 3225 
     | 
    
         
            +
                                  result = label
         
     | 
| 
      
 3226 
     | 
    
         
            +
                                }
         
     | 
| 
       3209 
3227 
     | 
    
         | 
| 
       3210 
3228 
     | 
    
         
             
                        f_kw: f_label arg_value
         
     | 
| 
       3211 
3229 
     | 
    
         
             
                                {
         
     | 
| 
         @@ -3214,6 +3232,7 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3214 
3232 
     | 
    
         | 
| 
       3215 
3233 
     | 
    
         
             
                                  identifier = label.to_sym
         
     | 
| 
       3216 
3234 
     | 
    
         
             
                                  self.env[identifier] = :lvar
         
     | 
| 
      
 3235 
     | 
    
         
            +
                                  self.in_argdef = true
         
     | 
| 
       3217 
3236 
     | 
    
         | 
| 
       3218 
3237 
     | 
    
         
             
                                  kwarg  = s(:kwarg, identifier, arg).line line
         
     | 
| 
       3219 
3238 
     | 
    
         
             
                                  result = s(:array, kwarg).line line
         
     | 
| 
         @@ -3224,6 +3243,7 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3224 
3243 
     | 
    
         | 
| 
       3225 
3244 
     | 
    
         
             
                                  id = label.to_sym
         
     | 
| 
       3226 
3245 
     | 
    
         
             
                                  self.env[id] = :lvar
         
     | 
| 
      
 3246 
     | 
    
         
            +
                                  self.in_argdef = true
         
     | 
| 
       3227 
3247 
     | 
    
         | 
| 
       3228 
3248 
     | 
    
         
             
                                  result = s(:array, s(:kwarg, id).line(line)).line line
         
     | 
| 
       3229 
3249 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -3234,6 +3254,7 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3234 
3254 
     | 
    
         
             
                                  (label, line), expr = val
         
     | 
| 
       3235 
3255 
     | 
    
         
             
                                  id = label.to_sym
         
     | 
| 
       3236 
3256 
     | 
    
         
             
                                  self.env[id] = :lvar
         
     | 
| 
      
 3257 
     | 
    
         
            +
                                  self.in_argdef = true
         
     | 
| 
       3237 
3258 
     | 
    
         | 
| 
       3238 
3259 
     | 
    
         
             
                                  result = s(:array, s(:kwarg, id, expr).line(line)).line line
         
     | 
| 
       3239 
3260 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -3243,6 +3264,7 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3243 
3264 
     | 
    
         
             
                                  (label, line), = val
         
     | 
| 
       3244 
3265 
     | 
    
         
             
                                  id = label.to_sym
         
     | 
| 
       3245 
3266 
     | 
    
         
             
                                  self.env[id] = :lvar
         
     | 
| 
      
 3267 
     | 
    
         
            +
                                  self.in_argdef = true
         
     | 
| 
       3246 
3268 
     | 
    
         | 
| 
       3247 
3269 
     | 
    
         
             
                                  result = s(:array, s(:kwarg, id).line(line)).line line
         
     | 
| 
       3248 
3270 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -3279,9 +3301,10 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3279 
3301 
     | 
    
         
             
                                }
         
     | 
| 
       3280 
3302 
     | 
    
         
             
                            | kwrest_mark
         
     | 
| 
       3281 
3303 
     | 
    
         
             
                                {
         
     | 
| 
      
 3304 
     | 
    
         
            +
                                  (_, line), = val
         
     | 
| 
       3282 
3305 
     | 
    
         
             
                                  id = :"**"
         
     | 
| 
       3283 
     | 
    
         
            -
                                  self.env[id] = :lvar 
     | 
| 
       3284 
     | 
    
         
            -
                                  result = [id,  
     | 
| 
      
 3306 
     | 
    
         
            +
                                  self.env[id] = :lvar
         
     | 
| 
      
 3307 
     | 
    
         
            +
                                  result = [id, line]
         
     | 
| 
       3285 
3308 
     | 
    
         
             
                                }
         
     | 
| 
       3286 
3309 
     | 
    
         | 
| 
       3287 
3310 
     | 
    
         
             
                       f_opt: f_arg_asgn
         
     | 
| 
         @@ -3289,10 +3312,10 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3289 
3312 
     | 
    
         
             
                                arg_value
         
     | 
| 
       3290 
3313 
     | 
    
         
             
                                {
         
     | 
| 
       3291 
3314 
     | 
    
         
             
                                  lhs, _, rhs = val
         
     | 
| 
      
 3315 
     | 
    
         
            +
                                  self.in_argdef = true
         
     | 
| 
       3292 
3316 
     | 
    
         
             
                                  result = self.assignable lhs, rhs
         
     | 
| 
       3293 
3317 
     | 
    
         
             
                                  # TODO: detect duplicate names
         
     | 
| 
       3294 
3318 
     | 
    
         
             
                                  # TODO? p->cur_arg = 0;
         
     | 
| 
       3295 
     | 
    
         
            -
                                  # TODO? p->ctxt.in_argdef = 1;
         
     | 
| 
       3296 
3319 
     | 
    
         
             
                                }
         
     | 
| 
       3297 
3320 
     | 
    
         | 
| 
       3298 
3321 
     | 
    
         
             
                 f_block_opt: f_arg_asgn
         
     | 
| 
         @@ -3300,9 +3323,9 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3300 
3323 
     | 
    
         
             
                                primary_value
         
     | 
| 
       3301 
3324 
     | 
    
         
             
                                {
         
     | 
| 
       3302 
3325 
     | 
    
         
             
                                  lhs, _, rhs = val
         
     | 
| 
      
 3326 
     | 
    
         
            +
                                  self.in_argdef = true
         
     | 
| 
       3303 
3327 
     | 
    
         
             
                                  result = self.assignable lhs, rhs
         
     | 
| 
       3304 
3328 
     | 
    
         
             
                                  # TODO? p->cur_arg = 0;
         
     | 
| 
       3305 
     | 
    
         
            -
                                  # TODO? p->ctxt.in_argdef = 1;
         
     | 
| 
       3306 
3329 
     | 
    
         
             
                                }
         
     | 
| 
       3307 
3330 
     | 
    
         | 
| 
       3308 
3331 
     | 
    
         
             
              f_block_optarg: f_block_opt
         
     | 
| 
         @@ -3339,9 +3362,10 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3339 
3362 
     | 
    
         
             
                                }
         
     | 
| 
       3340 
3363 
     | 
    
         
             
                            | restarg_mark
         
     | 
| 
       3341 
3364 
     | 
    
         
             
                                {
         
     | 
| 
      
 3365 
     | 
    
         
            +
                                  (_, line), = val
         
     | 
| 
       3342 
3366 
     | 
    
         
             
                                  name = :"*"
         
     | 
| 
       3343 
3367 
     | 
    
         
             
                                  self.env[name] = :lvar
         
     | 
| 
       3344 
     | 
    
         
            -
                                  result = [name,  
     | 
| 
      
 3368 
     | 
    
         
            +
                                  result = [name, line]
         
     | 
| 
       3345 
3369 
     | 
    
         
             
                                }
         
     | 
| 
       3346 
3370 
     | 
    
         | 
| 
       3347 
3371 
     | 
    
         
             
                 blkarg_mark: tAMPER2 | tAMPER
         
     | 
| 
         @@ -3446,11 +3470,10 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3446 
3470 
     | 
    
         
             
                   opt_terms:  | terms
         
     | 
| 
       3447 
3471 
     | 
    
         
             
                      opt_nl:  | tNL
         
     | 
| 
       3448 
3472 
     | 
    
         
             
                      rparen: opt_nl tRPAREN
         
     | 
| 
       3449 
     | 
    
         
            -
                                 
     | 
| 
       3450 
     | 
    
         
            -
             
     | 
| 
       3451 
     | 
    
         
            -
             
     | 
| 
       3452 
     | 
    
         
            -
                                 
     | 
| 
       3453 
     | 
    
         
            -
                                # }
         
     | 
| 
      
 3473 
     | 
    
         
            +
                                {
         
     | 
| 
      
 3474 
     | 
    
         
            +
                                  _, close = val # TODO: include lineno in close?
         
     | 
| 
      
 3475 
     | 
    
         
            +
                                  result = [close, lexer.lineno]
         
     | 
| 
      
 3476 
     | 
    
         
            +
                                }
         
     | 
| 
       3454 
3477 
     | 
    
         
             
                    rbracket: opt_nl tRBRACK
         
     | 
| 
       3455 
3478 
     | 
    
         
             
                                {
         
     | 
| 
       3456 
3479 
     | 
    
         
             
                                  _, close = val
         
     |