lrama 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
data/lib/lrama/parser.rb CHANGED
@@ -658,7 +658,7 @@ end
658
658
  module Lrama
659
659
  class Parser < Racc::Parser
660
660
 
661
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 521)
661
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 528)
662
662
 
663
663
  include Lrama::Report::Duration
664
664
 
@@ -933,7 +933,7 @@ racc_reduce_table = [
933
933
  1, 63, :_reduce_none,
934
934
  0, 76, :_reduce_29,
935
935
  0, 77, :_reduce_30,
936
- 7, 63, :_reduce_none,
936
+ 7, 63, :_reduce_31,
937
937
  0, 78, :_reduce_32,
938
938
  0, 79, :_reduce_33,
939
939
  7, 63, :_reduce_34,
@@ -1424,9 +1424,19 @@ module_eval(<<'.,.,', 'parser.y', 96)
1424
1424
  end
1425
1425
  .,.,
1426
1426
 
1427
- # reduce 31 omitted
1427
+ module_eval(<<'.,.,', 'parser.y', 100)
1428
+ def _reduce_31(val, _values, result)
1429
+ @grammar.add_destructor(
1430
+ ident_or_tags: val[6],
1431
+ token_code: val[3],
1432
+ lineno: val[3].line
1433
+ )
1428
1434
 
1429
- module_eval(<<'.,.,', 'parser.y', 101)
1435
+ result
1436
+ end
1437
+ .,.,
1438
+
1439
+ module_eval(<<'.,.,', 'parser.y', 108)
1430
1440
  def _reduce_32(val, _values, result)
1431
1441
  begin_c_declaration("}")
1432
1442
 
@@ -1434,7 +1444,7 @@ module_eval(<<'.,.,', 'parser.y', 101)
1434
1444
  end
1435
1445
  .,.,
1436
1446
 
1437
- module_eval(<<'.,.,', 'parser.y', 105)
1447
+ module_eval(<<'.,.,', 'parser.y', 112)
1438
1448
  def _reduce_33(val, _values, result)
1439
1449
  end_c_declaration
1440
1450
 
@@ -1442,7 +1452,7 @@ module_eval(<<'.,.,', 'parser.y', 105)
1442
1452
  end
1443
1453
  .,.,
1444
1454
 
1445
- module_eval(<<'.,.,', 'parser.y', 109)
1455
+ module_eval(<<'.,.,', 'parser.y', 116)
1446
1456
  def _reduce_34(val, _values, result)
1447
1457
  @grammar.add_printer(
1448
1458
  ident_or_tags: val[6],
@@ -1454,7 +1464,7 @@ module_eval(<<'.,.,', 'parser.y', 109)
1454
1464
  end
1455
1465
  .,.,
1456
1466
 
1457
- module_eval(<<'.,.,', 'parser.y', 117)
1467
+ module_eval(<<'.,.,', 'parser.y', 124)
1458
1468
  def _reduce_35(val, _values, result)
1459
1469
  begin_c_declaration("}")
1460
1470
 
@@ -1462,7 +1472,7 @@ module_eval(<<'.,.,', 'parser.y', 117)
1462
1472
  end
1463
1473
  .,.,
1464
1474
 
1465
- module_eval(<<'.,.,', 'parser.y', 121)
1475
+ module_eval(<<'.,.,', 'parser.y', 128)
1466
1476
  def _reduce_36(val, _values, result)
1467
1477
  end_c_declaration
1468
1478
 
@@ -1470,7 +1480,7 @@ module_eval(<<'.,.,', 'parser.y', 121)
1470
1480
  end
1471
1481
  .,.,
1472
1482
 
1473
- module_eval(<<'.,.,', 'parser.y', 125)
1483
+ module_eval(<<'.,.,', 'parser.y', 132)
1474
1484
  def _reduce_37(val, _values, result)
1475
1485
  @grammar.add_error_token(
1476
1486
  ident_or_tags: val[6],
@@ -1482,7 +1492,7 @@ module_eval(<<'.,.,', 'parser.y', 125)
1482
1492
  end
1483
1493
  .,.,
1484
1494
 
1485
- module_eval(<<'.,.,', 'parser.y', 133)
1495
+ module_eval(<<'.,.,', 'parser.y', 140)
1486
1496
  def _reduce_38(val, _values, result)
1487
1497
  @grammar.after_shift = val[1]
1488
1498
 
@@ -1490,7 +1500,7 @@ module_eval(<<'.,.,', 'parser.y', 133)
1490
1500
  end
1491
1501
  .,.,
1492
1502
 
1493
- module_eval(<<'.,.,', 'parser.y', 137)
1503
+ module_eval(<<'.,.,', 'parser.y', 144)
1494
1504
  def _reduce_39(val, _values, result)
1495
1505
  @grammar.before_reduce = val[1]
1496
1506
 
@@ -1498,7 +1508,7 @@ module_eval(<<'.,.,', 'parser.y', 137)
1498
1508
  end
1499
1509
  .,.,
1500
1510
 
1501
- module_eval(<<'.,.,', 'parser.y', 141)
1511
+ module_eval(<<'.,.,', 'parser.y', 148)
1502
1512
  def _reduce_40(val, _values, result)
1503
1513
  @grammar.after_reduce = val[1]
1504
1514
 
@@ -1506,7 +1516,7 @@ module_eval(<<'.,.,', 'parser.y', 141)
1506
1516
  end
1507
1517
  .,.,
1508
1518
 
1509
- module_eval(<<'.,.,', 'parser.y', 145)
1519
+ module_eval(<<'.,.,', 'parser.y', 152)
1510
1520
  def _reduce_41(val, _values, result)
1511
1521
  @grammar.after_shift_error_token = val[1]
1512
1522
 
@@ -1514,7 +1524,7 @@ module_eval(<<'.,.,', 'parser.y', 145)
1514
1524
  end
1515
1525
  .,.,
1516
1526
 
1517
- module_eval(<<'.,.,', 'parser.y', 149)
1527
+ module_eval(<<'.,.,', 'parser.y', 156)
1518
1528
  def _reduce_42(val, _values, result)
1519
1529
  @grammar.after_pop_stack = val[1]
1520
1530
 
@@ -1524,7 +1534,7 @@ module_eval(<<'.,.,', 'parser.y', 149)
1524
1534
 
1525
1535
  # reduce 43 omitted
1526
1536
 
1527
- module_eval(<<'.,.,', 'parser.y', 155)
1537
+ module_eval(<<'.,.,', 'parser.y', 162)
1528
1538
  def _reduce_44(val, _values, result)
1529
1539
  val[1].each {|hash|
1530
1540
  hash[:tokens].each {|id|
@@ -1536,7 +1546,7 @@ module_eval(<<'.,.,', 'parser.y', 155)
1536
1546
  end
1537
1547
  .,.,
1538
1548
 
1539
- module_eval(<<'.,.,', 'parser.y', 163)
1549
+ module_eval(<<'.,.,', 'parser.y', 170)
1540
1550
  def _reduce_45(val, _values, result)
1541
1551
  val[1].each {|hash|
1542
1552
  hash[:tokens].each {|id|
@@ -1550,7 +1560,7 @@ module_eval(<<'.,.,', 'parser.y', 163)
1550
1560
  end
1551
1561
  .,.,
1552
1562
 
1553
- module_eval(<<'.,.,', 'parser.y', 173)
1563
+ module_eval(<<'.,.,', 'parser.y', 180)
1554
1564
  def _reduce_46(val, _values, result)
1555
1565
  val[1].each {|hash|
1556
1566
  hash[:tokens].each {|id|
@@ -1564,7 +1574,7 @@ module_eval(<<'.,.,', 'parser.y', 173)
1564
1574
  end
1565
1575
  .,.,
1566
1576
 
1567
- module_eval(<<'.,.,', 'parser.y', 183)
1577
+ module_eval(<<'.,.,', 'parser.y', 190)
1568
1578
  def _reduce_47(val, _values, result)
1569
1579
  val[1].each {|hash|
1570
1580
  hash[:tokens].each {|id|
@@ -1578,7 +1588,7 @@ module_eval(<<'.,.,', 'parser.y', 183)
1578
1588
  end
1579
1589
  .,.,
1580
1590
 
1581
- module_eval(<<'.,.,', 'parser.y', 193)
1591
+ module_eval(<<'.,.,', 'parser.y', 200)
1582
1592
  def _reduce_48(val, _values, result)
1583
1593
  val[1].each {|hash|
1584
1594
  hash[:tokens].each {|id|
@@ -1592,7 +1602,7 @@ module_eval(<<'.,.,', 'parser.y', 193)
1592
1602
  end
1593
1603
  .,.,
1594
1604
 
1595
- module_eval(<<'.,.,', 'parser.y', 204)
1605
+ module_eval(<<'.,.,', 'parser.y', 211)
1596
1606
  def _reduce_49(val, _values, result)
1597
1607
  val[0].each {|token_declaration|
1598
1608
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: nil, replace: true)
@@ -1602,7 +1612,7 @@ module_eval(<<'.,.,', 'parser.y', 204)
1602
1612
  end
1603
1613
  .,.,
1604
1614
 
1605
- module_eval(<<'.,.,', 'parser.y', 210)
1615
+ module_eval(<<'.,.,', 'parser.y', 217)
1606
1616
  def _reduce_50(val, _values, result)
1607
1617
  val[1].each {|token_declaration|
1608
1618
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: val[0], replace: true)
@@ -1612,7 +1622,7 @@ module_eval(<<'.,.,', 'parser.y', 210)
1612
1622
  end
1613
1623
  .,.,
1614
1624
 
1615
- module_eval(<<'.,.,', 'parser.y', 216)
1625
+ module_eval(<<'.,.,', 'parser.y', 223)
1616
1626
  def _reduce_51(val, _values, result)
1617
1627
  val[2].each {|token_declaration|
1618
1628
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: val[1], replace: true)
@@ -1622,28 +1632,28 @@ module_eval(<<'.,.,', 'parser.y', 216)
1622
1632
  end
1623
1633
  .,.,
1624
1634
 
1625
- module_eval(<<'.,.,', 'parser.y', 221)
1635
+ module_eval(<<'.,.,', 'parser.y', 228)
1626
1636
  def _reduce_52(val, _values, result)
1627
1637
  result = [val[0]]
1628
1638
  result
1629
1639
  end
1630
1640
  .,.,
1631
1641
 
1632
- module_eval(<<'.,.,', 'parser.y', 222)
1642
+ module_eval(<<'.,.,', 'parser.y', 229)
1633
1643
  def _reduce_53(val, _values, result)
1634
1644
  result = val[0].append(val[1])
1635
1645
  result
1636
1646
  end
1637
1647
  .,.,
1638
1648
 
1639
- module_eval(<<'.,.,', 'parser.y', 224)
1649
+ module_eval(<<'.,.,', 'parser.y', 231)
1640
1650
  def _reduce_54(val, _values, result)
1641
1651
  result = val
1642
1652
  result
1643
1653
  end
1644
1654
  .,.,
1645
1655
 
1646
- module_eval(<<'.,.,', 'parser.y', 228)
1656
+ module_eval(<<'.,.,', 'parser.y', 235)
1647
1657
  def _reduce_55(val, _values, result)
1648
1658
  rule = Grammar::ParameterizingRule::Rule.new(val[1].s_value, val[3], val[6])
1649
1659
  @grammar.add_parameterizing_rule(rule)
@@ -1652,21 +1662,21 @@ module_eval(<<'.,.,', 'parser.y', 228)
1652
1662
  end
1653
1663
  .,.,
1654
1664
 
1655
- module_eval(<<'.,.,', 'parser.y', 232)
1665
+ module_eval(<<'.,.,', 'parser.y', 239)
1656
1666
  def _reduce_56(val, _values, result)
1657
1667
  result = [val[0]]
1658
1668
  result
1659
1669
  end
1660
1670
  .,.,
1661
1671
 
1662
- module_eval(<<'.,.,', 'parser.y', 233)
1672
+ module_eval(<<'.,.,', 'parser.y', 240)
1663
1673
  def _reduce_57(val, _values, result)
1664
1674
  result = val[0].append(val[2])
1665
1675
  result
1666
1676
  end
1667
1677
  .,.,
1668
1678
 
1669
- module_eval(<<'.,.,', 'parser.y', 237)
1679
+ module_eval(<<'.,.,', 'parser.y', 244)
1670
1680
  def _reduce_58(val, _values, result)
1671
1681
  builder = val[0]
1672
1682
  result = [builder]
@@ -1675,7 +1685,7 @@ module_eval(<<'.,.,', 'parser.y', 237)
1675
1685
  end
1676
1686
  .,.,
1677
1687
 
1678
- module_eval(<<'.,.,', 'parser.y', 242)
1688
+ module_eval(<<'.,.,', 'parser.y', 249)
1679
1689
  def _reduce_59(val, _values, result)
1680
1690
  builder = val[2]
1681
1691
  result = val[0].append(builder)
@@ -1684,7 +1694,7 @@ module_eval(<<'.,.,', 'parser.y', 242)
1684
1694
  end
1685
1695
  .,.,
1686
1696
 
1687
- module_eval(<<'.,.,', 'parser.y', 248)
1697
+ module_eval(<<'.,.,', 'parser.y', 255)
1688
1698
  def _reduce_60(val, _values, result)
1689
1699
  reset_precs
1690
1700
  result = Grammar::ParameterizingRule::Rhs.new
@@ -1693,7 +1703,7 @@ module_eval(<<'.,.,', 'parser.y', 248)
1693
1703
  end
1694
1704
  .,.,
1695
1705
 
1696
- module_eval(<<'.,.,', 'parser.y', 253)
1706
+ module_eval(<<'.,.,', 'parser.y', 260)
1697
1707
  def _reduce_61(val, _values, result)
1698
1708
  reset_precs
1699
1709
  result = Grammar::ParameterizingRule::Rhs.new
@@ -1702,7 +1712,7 @@ module_eval(<<'.,.,', 'parser.y', 253)
1702
1712
  end
1703
1713
  .,.,
1704
1714
 
1705
- module_eval(<<'.,.,', 'parser.y', 258)
1715
+ module_eval(<<'.,.,', 'parser.y', 265)
1706
1716
  def _reduce_62(val, _values, result)
1707
1717
  token = val[1]
1708
1718
  token.alias_name = val[2]
@@ -1714,7 +1724,7 @@ module_eval(<<'.,.,', 'parser.y', 258)
1714
1724
  end
1715
1725
  .,.,
1716
1726
 
1717
- module_eval(<<'.,.,', 'parser.y', 266)
1727
+ module_eval(<<'.,.,', 'parser.y', 273)
1718
1728
  def _reduce_63(val, _values, result)
1719
1729
  builder = val[0]
1720
1730
  builder.symbols << Lrama::Lexer::Token::InstantiateRule.new(s_value: val[2], location: @lexer.location, args: [val[1]])
@@ -1724,7 +1734,7 @@ module_eval(<<'.,.,', 'parser.y', 266)
1724
1734
  end
1725
1735
  .,.,
1726
1736
 
1727
- module_eval(<<'.,.,', 'parser.y', 272)
1737
+ module_eval(<<'.,.,', 'parser.y', 279)
1728
1738
  def _reduce_64(val, _values, result)
1729
1739
  builder = val[0]
1730
1740
  builder.symbols << Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[3])
@@ -1734,7 +1744,7 @@ module_eval(<<'.,.,', 'parser.y', 272)
1734
1744
  end
1735
1745
  .,.,
1736
1746
 
1737
- module_eval(<<'.,.,', 'parser.y', 278)
1747
+ module_eval(<<'.,.,', 'parser.y', 285)
1738
1748
  def _reduce_65(val, _values, result)
1739
1749
  if @prec_seen
1740
1750
  on_action_error("multiple User_code after %prec", val[0]) if @code_after_prec
@@ -1746,7 +1756,7 @@ module_eval(<<'.,.,', 'parser.y', 278)
1746
1756
  end
1747
1757
  .,.,
1748
1758
 
1749
- module_eval(<<'.,.,', 'parser.y', 286)
1759
+ module_eval(<<'.,.,', 'parser.y', 293)
1750
1760
  def _reduce_66(val, _values, result)
1751
1761
  end_c_declaration
1752
1762
 
@@ -1754,7 +1764,7 @@ module_eval(<<'.,.,', 'parser.y', 286)
1754
1764
  end
1755
1765
  .,.,
1756
1766
 
1757
- module_eval(<<'.,.,', 'parser.y', 290)
1767
+ module_eval(<<'.,.,', 'parser.y', 297)
1758
1768
  def _reduce_67(val, _values, result)
1759
1769
  user_code = val[3]
1760
1770
  user_code.alias_name = val[6]
@@ -1766,7 +1776,7 @@ module_eval(<<'.,.,', 'parser.y', 290)
1766
1776
  end
1767
1777
  .,.,
1768
1778
 
1769
- module_eval(<<'.,.,', 'parser.y', 298)
1779
+ module_eval(<<'.,.,', 'parser.y', 305)
1770
1780
  def _reduce_68(val, _values, result)
1771
1781
  sym = @grammar.find_symbol_by_id!(val[2])
1772
1782
  @prec_seen = true
@@ -1786,7 +1796,7 @@ module_eval(<<'.,.,', 'parser.y', 298)
1786
1796
 
1787
1797
  # reduce 72 omitted
1788
1798
 
1789
- module_eval(<<'.,.,', 'parser.y', 313)
1799
+ module_eval(<<'.,.,', 'parser.y', 320)
1790
1800
  def _reduce_73(val, _values, result)
1791
1801
  result = [{tag: nil, tokens: val[0]}]
1792
1802
 
@@ -1794,7 +1804,7 @@ module_eval(<<'.,.,', 'parser.y', 313)
1794
1804
  end
1795
1805
  .,.,
1796
1806
 
1797
- module_eval(<<'.,.,', 'parser.y', 317)
1807
+ module_eval(<<'.,.,', 'parser.y', 324)
1798
1808
  def _reduce_74(val, _values, result)
1799
1809
  result = [{tag: val[0], tokens: val[1]}]
1800
1810
 
@@ -1802,7 +1812,7 @@ module_eval(<<'.,.,', 'parser.y', 317)
1802
1812
  end
1803
1813
  .,.,
1804
1814
 
1805
- module_eval(<<'.,.,', 'parser.y', 321)
1815
+ module_eval(<<'.,.,', 'parser.y', 328)
1806
1816
  def _reduce_75(val, _values, result)
1807
1817
  result = val[0].append({tag: val[1], tokens: val[2]})
1808
1818
 
@@ -1810,14 +1820,14 @@ module_eval(<<'.,.,', 'parser.y', 321)
1810
1820
  end
1811
1821
  .,.,
1812
1822
 
1813
- module_eval(<<'.,.,', 'parser.y', 324)
1823
+ module_eval(<<'.,.,', 'parser.y', 331)
1814
1824
  def _reduce_76(val, _values, result)
1815
1825
  result = [val[0]]
1816
1826
  result
1817
1827
  end
1818
1828
  .,.,
1819
1829
 
1820
- module_eval(<<'.,.,', 'parser.y', 325)
1830
+ module_eval(<<'.,.,', 'parser.y', 332)
1821
1831
  def _reduce_77(val, _values, result)
1822
1832
  result = val[0].append(val[1])
1823
1833
  result
@@ -1828,7 +1838,7 @@ module_eval(<<'.,.,', 'parser.y', 325)
1828
1838
 
1829
1839
  # reduce 79 omitted
1830
1840
 
1831
- module_eval(<<'.,.,', 'parser.y', 332)
1841
+ module_eval(<<'.,.,', 'parser.y', 339)
1832
1842
  def _reduce_80(val, _values, result)
1833
1843
  begin_c_declaration("}")
1834
1844
 
@@ -1836,7 +1846,7 @@ module_eval(<<'.,.,', 'parser.y', 332)
1836
1846
  end
1837
1847
  .,.,
1838
1848
 
1839
- module_eval(<<'.,.,', 'parser.y', 336)
1849
+ module_eval(<<'.,.,', 'parser.y', 343)
1840
1850
  def _reduce_81(val, _values, result)
1841
1851
  end_c_declaration
1842
1852
 
@@ -1844,7 +1854,7 @@ module_eval(<<'.,.,', 'parser.y', 336)
1844
1854
  end
1845
1855
  .,.,
1846
1856
 
1847
- module_eval(<<'.,.,', 'parser.y', 340)
1857
+ module_eval(<<'.,.,', 'parser.y', 347)
1848
1858
  def _reduce_82(val, _values, result)
1849
1859
  result = val[0].append(val[3])
1850
1860
 
@@ -1852,7 +1862,7 @@ module_eval(<<'.,.,', 'parser.y', 340)
1852
1862
  end
1853
1863
  .,.,
1854
1864
 
1855
- module_eval(<<'.,.,', 'parser.y', 344)
1865
+ module_eval(<<'.,.,', 'parser.y', 351)
1856
1866
  def _reduce_83(val, _values, result)
1857
1867
  begin_c_declaration("}")
1858
1868
 
@@ -1860,7 +1870,7 @@ module_eval(<<'.,.,', 'parser.y', 344)
1860
1870
  end
1861
1871
  .,.,
1862
1872
 
1863
- module_eval(<<'.,.,', 'parser.y', 348)
1873
+ module_eval(<<'.,.,', 'parser.y', 355)
1864
1874
  def _reduce_84(val, _values, result)
1865
1875
  end_c_declaration
1866
1876
 
@@ -1868,7 +1878,7 @@ module_eval(<<'.,.,', 'parser.y', 348)
1868
1878
  end
1869
1879
  .,.,
1870
1880
 
1871
- module_eval(<<'.,.,', 'parser.y', 352)
1881
+ module_eval(<<'.,.,', 'parser.y', 359)
1872
1882
  def _reduce_85(val, _values, result)
1873
1883
  result = [val[2]]
1874
1884
 
@@ -1876,7 +1886,7 @@ module_eval(<<'.,.,', 'parser.y', 352)
1876
1886
  end
1877
1887
  .,.,
1878
1888
 
1879
- module_eval(<<'.,.,', 'parser.y', 357)
1889
+ module_eval(<<'.,.,', 'parser.y', 364)
1880
1890
  def _reduce_86(val, _values, result)
1881
1891
  result = [{tag: nil, tokens: val[0]}]
1882
1892
 
@@ -1884,7 +1894,7 @@ module_eval(<<'.,.,', 'parser.y', 357)
1884
1894
  end
1885
1895
  .,.,
1886
1896
 
1887
- module_eval(<<'.,.,', 'parser.y', 361)
1897
+ module_eval(<<'.,.,', 'parser.y', 368)
1888
1898
  def _reduce_87(val, _values, result)
1889
1899
  result = [{tag: val[0], tokens: val[1]}]
1890
1900
 
@@ -1892,7 +1902,7 @@ module_eval(<<'.,.,', 'parser.y', 361)
1892
1902
  end
1893
1903
  .,.,
1894
1904
 
1895
- module_eval(<<'.,.,', 'parser.y', 365)
1905
+ module_eval(<<'.,.,', 'parser.y', 372)
1896
1906
  def _reduce_88(val, _values, result)
1897
1907
  result = val[0].append({tag: val[1], tokens: val[2]})
1898
1908
 
@@ -1900,14 +1910,14 @@ module_eval(<<'.,.,', 'parser.y', 365)
1900
1910
  end
1901
1911
  .,.,
1902
1912
 
1903
- module_eval(<<'.,.,', 'parser.y', 368)
1913
+ module_eval(<<'.,.,', 'parser.y', 375)
1904
1914
  def _reduce_89(val, _values, result)
1905
1915
  result = [val[0]]
1906
1916
  result
1907
1917
  end
1908
1918
  .,.,
1909
1919
 
1910
- module_eval(<<'.,.,', 'parser.y', 369)
1920
+ module_eval(<<'.,.,', 'parser.y', 376)
1911
1921
  def _reduce_90(val, _values, result)
1912
1922
  result = val[0].append(val[1])
1913
1923
  result
@@ -1916,14 +1926,14 @@ module_eval(<<'.,.,', 'parser.y', 369)
1916
1926
 
1917
1927
  # reduce 91 omitted
1918
1928
 
1919
- module_eval(<<'.,.,', 'parser.y', 373)
1929
+ module_eval(<<'.,.,', 'parser.y', 380)
1920
1930
  def _reduce_92(val, _values, result)
1921
1931
  on_action_error("ident after %prec", val[0]) if @prec_seen
1922
1932
  result
1923
1933
  end
1924
1934
  .,.,
1925
1935
 
1926
- module_eval(<<'.,.,', 'parser.y', 374)
1936
+ module_eval(<<'.,.,', 'parser.y', 381)
1927
1937
  def _reduce_93(val, _values, result)
1928
1938
  on_action_error("char after %prec", val[0]) if @prec_seen
1929
1939
  result
@@ -1938,7 +1948,7 @@ module_eval(<<'.,.,', 'parser.y', 374)
1938
1948
 
1939
1949
  # reduce 97 omitted
1940
1950
 
1941
- module_eval(<<'.,.,', 'parser.y', 384)
1951
+ module_eval(<<'.,.,', 'parser.y', 391)
1942
1952
  def _reduce_98(val, _values, result)
1943
1953
  lhs = val[0]
1944
1954
  lhs.alias_name = val[1]
@@ -1952,7 +1962,7 @@ module_eval(<<'.,.,', 'parser.y', 384)
1952
1962
  end
1953
1963
  .,.,
1954
1964
 
1955
- module_eval(<<'.,.,', 'parser.y', 395)
1965
+ module_eval(<<'.,.,', 'parser.y', 402)
1956
1966
  def _reduce_99(val, _values, result)
1957
1967
  builder = val[0]
1958
1968
  if !builder.line
@@ -1964,7 +1974,7 @@ module_eval(<<'.,.,', 'parser.y', 395)
1964
1974
  end
1965
1975
  .,.,
1966
1976
 
1967
- module_eval(<<'.,.,', 'parser.y', 403)
1977
+ module_eval(<<'.,.,', 'parser.y', 410)
1968
1978
  def _reduce_100(val, _values, result)
1969
1979
  builder = val[2]
1970
1980
  if !builder.line
@@ -1978,7 +1988,7 @@ module_eval(<<'.,.,', 'parser.y', 403)
1978
1988
 
1979
1989
  # reduce 101 omitted
1980
1990
 
1981
- module_eval(<<'.,.,', 'parser.y', 413)
1991
+ module_eval(<<'.,.,', 'parser.y', 420)
1982
1992
  def _reduce_102(val, _values, result)
1983
1993
  reset_precs
1984
1994
  result = Grammar::RuleBuilder.new(@rule_counter, @midrule_action_counter)
@@ -1987,7 +1997,7 @@ module_eval(<<'.,.,', 'parser.y', 413)
1987
1997
  end
1988
1998
  .,.,
1989
1999
 
1990
- module_eval(<<'.,.,', 'parser.y', 418)
2000
+ module_eval(<<'.,.,', 'parser.y', 425)
1991
2001
  def _reduce_103(val, _values, result)
1992
2002
  reset_precs
1993
2003
  result = Grammar::RuleBuilder.new(@rule_counter, @midrule_action_counter)
@@ -1996,7 +2006,7 @@ module_eval(<<'.,.,', 'parser.y', 418)
1996
2006
  end
1997
2007
  .,.,
1998
2008
 
1999
- module_eval(<<'.,.,', 'parser.y', 423)
2009
+ module_eval(<<'.,.,', 'parser.y', 430)
2000
2010
  def _reduce_104(val, _values, result)
2001
2011
  token = val[1]
2002
2012
  token.alias_name = val[2]
@@ -2008,7 +2018,7 @@ module_eval(<<'.,.,', 'parser.y', 423)
2008
2018
  end
2009
2019
  .,.,
2010
2020
 
2011
- module_eval(<<'.,.,', 'parser.y', 431)
2021
+ module_eval(<<'.,.,', 'parser.y', 438)
2012
2022
  def _reduce_105(val, _values, result)
2013
2023
  token = Lrama::Lexer::Token::InstantiateRule.new(s_value: val[2], location: @lexer.location, args: [val[1]], lhs_tag: val[3])
2014
2024
  builder = val[0]
@@ -2020,7 +2030,7 @@ module_eval(<<'.,.,', 'parser.y', 431)
2020
2030
  end
2021
2031
  .,.,
2022
2032
 
2023
- module_eval(<<'.,.,', 'parser.y', 439)
2033
+ module_eval(<<'.,.,', 'parser.y', 446)
2024
2034
  def _reduce_106(val, _values, result)
2025
2035
  token = Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[3], lhs_tag: val[5])
2026
2036
  builder = val[0]
@@ -2032,7 +2042,7 @@ module_eval(<<'.,.,', 'parser.y', 439)
2032
2042
  end
2033
2043
  .,.,
2034
2044
 
2035
- module_eval(<<'.,.,', 'parser.y', 447)
2045
+ module_eval(<<'.,.,', 'parser.y', 454)
2036
2046
  def _reduce_107(val, _values, result)
2037
2047
  if @prec_seen
2038
2048
  on_action_error("multiple User_code after %prec", val[0]) if @code_after_prec
@@ -2044,7 +2054,7 @@ module_eval(<<'.,.,', 'parser.y', 447)
2044
2054
  end
2045
2055
  .,.,
2046
2056
 
2047
- module_eval(<<'.,.,', 'parser.y', 455)
2057
+ module_eval(<<'.,.,', 'parser.y', 462)
2048
2058
  def _reduce_108(val, _values, result)
2049
2059
  end_c_declaration
2050
2060
 
@@ -2052,7 +2062,7 @@ module_eval(<<'.,.,', 'parser.y', 455)
2052
2062
  end
2053
2063
  .,.,
2054
2064
 
2055
- module_eval(<<'.,.,', 'parser.y', 459)
2065
+ module_eval(<<'.,.,', 'parser.y', 466)
2056
2066
  def _reduce_109(val, _values, result)
2057
2067
  user_code = val[3]
2058
2068
  user_code.alias_name = val[6]
@@ -2064,7 +2074,7 @@ module_eval(<<'.,.,', 'parser.y', 459)
2064
2074
  end
2065
2075
  .,.,
2066
2076
 
2067
- module_eval(<<'.,.,', 'parser.y', 467)
2077
+ module_eval(<<'.,.,', 'parser.y', 474)
2068
2078
  def _reduce_110(val, _values, result)
2069
2079
  sym = @grammar.find_symbol_by_id!(val[2])
2070
2080
  @prec_seen = true
@@ -2076,49 +2086,49 @@ module_eval(<<'.,.,', 'parser.y', 467)
2076
2086
  end
2077
2087
  .,.,
2078
2088
 
2079
- module_eval(<<'.,.,', 'parser.y', 474)
2089
+ module_eval(<<'.,.,', 'parser.y', 481)
2080
2090
  def _reduce_111(val, _values, result)
2081
2091
  result = "option"
2082
2092
  result
2083
2093
  end
2084
2094
  .,.,
2085
2095
 
2086
- module_eval(<<'.,.,', 'parser.y', 475)
2096
+ module_eval(<<'.,.,', 'parser.y', 482)
2087
2097
  def _reduce_112(val, _values, result)
2088
2098
  result = "nonempty_list"
2089
2099
  result
2090
2100
  end
2091
2101
  .,.,
2092
2102
 
2093
- module_eval(<<'.,.,', 'parser.y', 476)
2103
+ module_eval(<<'.,.,', 'parser.y', 483)
2094
2104
  def _reduce_113(val, _values, result)
2095
2105
  result = "list"
2096
2106
  result
2097
2107
  end
2098
2108
  .,.,
2099
2109
 
2100
- module_eval(<<'.,.,', 'parser.y', 478)
2110
+ module_eval(<<'.,.,', 'parser.y', 485)
2101
2111
  def _reduce_114(val, _values, result)
2102
2112
  result = [val[0]]
2103
2113
  result
2104
2114
  end
2105
2115
  .,.,
2106
2116
 
2107
- module_eval(<<'.,.,', 'parser.y', 479)
2117
+ module_eval(<<'.,.,', 'parser.y', 486)
2108
2118
  def _reduce_115(val, _values, result)
2109
2119
  result = val[0].append(val[2])
2110
2120
  result
2111
2121
  end
2112
2122
  .,.,
2113
2123
 
2114
- module_eval(<<'.,.,', 'parser.y', 480)
2124
+ module_eval(<<'.,.,', 'parser.y', 487)
2115
2125
  def _reduce_116(val, _values, result)
2116
2126
  result = [Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[0])]
2117
2127
  result
2118
2128
  end
2119
2129
  .,.,
2120
2130
 
2121
- module_eval(<<'.,.,', 'parser.y', 481)
2131
+ module_eval(<<'.,.,', 'parser.y', 488)
2122
2132
  def _reduce_117(val, _values, result)
2123
2133
  result = [Lrama::Lexer::Token::InstantiateRule.new(s_value: val[0].s_value, location: @lexer.location, args: val[2])]
2124
2134
  result
@@ -2127,7 +2137,7 @@ module_eval(<<'.,.,', 'parser.y', 481)
2127
2137
 
2128
2138
  # reduce 118 omitted
2129
2139
 
2130
- module_eval(<<'.,.,', 'parser.y', 484)
2140
+ module_eval(<<'.,.,', 'parser.y', 491)
2131
2141
  def _reduce_119(val, _values, result)
2132
2142
  result = val[1].s_value
2133
2143
  result
@@ -2138,7 +2148,7 @@ module_eval(<<'.,.,', 'parser.y', 484)
2138
2148
 
2139
2149
  # reduce 121 omitted
2140
2150
 
2141
- module_eval(<<'.,.,', 'parser.y', 491)
2151
+ module_eval(<<'.,.,', 'parser.y', 498)
2142
2152
  def _reduce_122(val, _values, result)
2143
2153
  begin_c_declaration('\Z')
2144
2154
  @grammar.epilogue_first_lineno = @lexer.line + 1
@@ -2147,7 +2157,7 @@ module_eval(<<'.,.,', 'parser.y', 491)
2147
2157
  end
2148
2158
  .,.,
2149
2159
 
2150
- module_eval(<<'.,.,', 'parser.y', 496)
2160
+ module_eval(<<'.,.,', 'parser.y', 503)
2151
2161
  def _reduce_123(val, _values, result)
2152
2162
  end_c_declaration
2153
2163
  @grammar.epilogue = val[2].s_value
@@ -2166,14 +2176,14 @@ module_eval(<<'.,.,', 'parser.y', 496)
2166
2176
 
2167
2177
  # reduce 128 omitted
2168
2178
 
2169
- module_eval(<<'.,.,', 'parser.y', 507)
2179
+ module_eval(<<'.,.,', 'parser.y', 514)
2170
2180
  def _reduce_129(val, _values, result)
2171
2181
  result = [val[0]]
2172
2182
  result
2173
2183
  end
2174
2184
  .,.,
2175
2185
 
2176
- module_eval(<<'.,.,', 'parser.y', 508)
2186
+ module_eval(<<'.,.,', 'parser.y', 515)
2177
2187
  def _reduce_130(val, _values, result)
2178
2188
  result = val[0].append(val[1])
2179
2189
  result
@@ -2184,7 +2194,7 @@ module_eval(<<'.,.,', 'parser.y', 508)
2184
2194
 
2185
2195
  # reduce 132 omitted
2186
2196
 
2187
- module_eval(<<'.,.,', 'parser.y', 513)
2197
+ module_eval(<<'.,.,', 'parser.y', 520)
2188
2198
  def _reduce_133(val, _values, result)
2189
2199
  result = Lrama::Lexer::Token::Ident.new(s_value: val[0])
2190
2200
  result