lrama 0.6.3 → 0.6.5

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', 529)
662
662
 
663
663
  include Lrama::Report::Duration
664
664
 
@@ -759,7 +759,7 @@ racc_action_table = [
759
759
  126, 127, 128, 129, 130, 133, 137, 138, 139, 142,
760
760
  143, 144, 146, 161, 163, 164, 165, 166, 167, 168,
761
761
  169, 142, 171, 179, 180, 189, 194, 195, 197, 202,
762
- 189, 94, 194, 216, 218, 94, 223, 94 ]
762
+ 189, 94, 194, 216, 218, 94, 194, 224, 94 ]
763
763
 
764
764
  racc_action_check = [
765
765
  48, 141, 48, 141, 140, 141, 170, 188, 170, 188,
@@ -789,7 +789,7 @@ racc_action_check = [
789
789
  102, 103, 104, 105, 106, 110, 118, 119, 120, 121,
790
790
  122, 123, 125, 145, 147, 148, 149, 150, 151, 152,
791
791
  153, 154, 156, 160, 162, 168, 173, 177, 187, 190,
792
- 197, 198, 203, 206, 211, 216, 222, 223 ]
792
+ 197, 198, 203, 206, 211, 216, 220, 222, 224 ]
793
793
 
794
794
  racc_action_pointer = [
795
795
  nil, 20, 9, 26, 97, nil, nil, 23, nil, 32,
@@ -814,10 +814,10 @@ racc_action_pointer = [
814
814
  229, 166, 163, nil, nil, nil, nil, 225, 221, -16,
815
815
  nil, 183, 188, 264, 189, nil, 253, 9, nil, nil,
816
816
  194, 272, nil, 172, nil, nil, 225, 173, nil, nil,
817
- nil, nil, 256, 227, nil ]
817
+ 268, nil, 257, nil, 228, nil ]
818
818
 
819
819
  racc_action_default = [
820
- -2, -136, -8, -136, -136, -3, -4, -136, 225, -136,
820
+ -2, -136, -8, -136, -136, -3, -4, -136, 226, -136,
821
821
  -9, -10, -11, -136, -136, -136, -136, -136, -136, -136,
822
822
  -23, -24, -136, -28, -136, -136, -136, -136, -136, -136,
823
823
  -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
@@ -839,58 +839,56 @@ racc_action_default = [
839
839
  -92, -136, -114, -105, -135, -108, -130, -60, -118, -92,
840
840
  -65, -136, -136, -134, -136, -116, -136, -59, -62, -63,
841
841
  -136, -136, -68, -136, -106, -115, -118, -136, -66, -117,
842
- -109, -64, -136, -118, -67 ]
842
+ -134, -64, -136, -109, -118, -67 ]
843
843
 
844
844
  racc_goto_table = [
845
- 93, 51, 73, 68, 116, 75, 108, 173, 193, 1,
846
- 188, 196, 2, 191, 117, 196, 196, 141, 4, 71,
847
- 41, 83, 83, 83, 83, 42, 79, 84, 85, 86,
848
- 52, 54, 55, 181, 185, 186, 89, 5, 214, 207,
849
- 109, 116, 205, 114, 213, 113, 75, 108, 135, 209,
850
- 170, 39, 217, 119, 10, 71, 71, 90, 11, 116,
851
- 12, 48, 95, 125, 162, 102, 147, 83, 83, 108,
852
- 103, 148, 104, 149, 105, 150, 106, 151, 131, 67,
853
- 72, 134, 110, 132, 75, 136, 113, 187, 211, 222,
854
- 123, 160, 100, 145, 71, 140, 71, 177, 206, 120,
855
- nil, nil, 83, nil, 83, nil, 113, nil, nil, nil,
856
- nil, nil, 172, 157, nil, nil, nil, nil, 71, nil,
857
- nil, nil, 83, nil, nil, nil, nil, nil, nil, nil,
858
- nil, 178, nil, nil, nil, nil, nil, nil, nil, nil,
859
- nil, nil, 157, 192, nil, nil, nil, nil, nil, nil,
860
- nil, nil, nil, 208, nil, nil, nil, nil, nil, nil,
861
- 198, nil, nil, nil, nil, nil, nil, nil, nil, nil,
862
- nil, 220, nil, 212, 192, nil, 215, nil, 224, 198,
863
- nil, nil, 192 ]
845
+ 93, 75, 51, 68, 73, 193, 116, 108, 191, 173,
846
+ 196, 1, 117, 2, 196, 196, 141, 4, 42, 41,
847
+ 71, 89, 83, 83, 83, 83, 188, 79, 84, 85,
848
+ 86, 52, 54, 55, 5, 214, 181, 185, 186, 213,
849
+ 109, 113, 75, 116, 205, 114, 135, 217, 108, 170,
850
+ 90, 209, 223, 39, 119, 207, 71, 71, 10, 11,
851
+ 12, 116, 48, 95, 125, 162, 102, 147, 83, 83,
852
+ 108, 103, 148, 104, 149, 105, 150, 106, 131, 151,
853
+ 75, 67, 113, 134, 72, 110, 132, 136, 187, 211,
854
+ 222, 123, 160, 100, 145, 71, 140, 71, 177, 206,
855
+ 120, nil, 113, 83, nil, 83, nil, nil, nil, 157,
856
+ nil, nil, 172, nil, nil, nil, nil, nil, nil, 71,
857
+ nil, nil, nil, 83, nil, nil, nil, 178, nil, nil,
858
+ nil, nil, nil, nil, nil, nil, nil, nil, 157, 192,
859
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
860
+ nil, nil, nil, 208, nil, nil, 198, nil, nil, nil,
861
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 212,
862
+ 192, 220, 215, nil, nil, 198, nil, nil, 192, 225 ]
864
863
 
865
864
  racc_goto_check = [
866
- 41, 34, 46, 32, 53, 40, 33, 42, 59, 1,
867
- 39, 63, 2, 43, 52, 63, 63, 58, 3, 34,
868
- 4, 34, 34, 34, 34, 54, 31, 31, 31, 31,
869
- 14, 14, 14, 20, 20, 20, 5, 6, 59, 39,
870
- 32, 53, 42, 46, 43, 40, 40, 33, 52, 42,
871
- 58, 7, 43, 8, 9, 34, 34, 54, 10, 53,
872
- 11, 12, 13, 15, 16, 17, 18, 34, 34, 33,
873
- 21, 22, 23, 24, 25, 26, 27, 28, 32, 29,
874
- 30, 46, 35, 36, 40, 37, 40, 38, 44, 45,
875
- 48, 49, 50, 51, 34, 57, 34, 60, 61, 62,
876
- nil, nil, 34, nil, 34, nil, 40, nil, nil, nil,
877
- nil, nil, 41, 40, nil, nil, nil, nil, 34, nil,
878
- nil, nil, 34, nil, nil, nil, nil, nil, nil, nil,
879
- nil, 40, nil, nil, nil, nil, nil, nil, nil, nil,
880
- nil, nil, 40, 40, nil, nil, nil, nil, nil, nil,
881
- nil, nil, nil, 41, nil, nil, nil, nil, nil, nil,
882
- 40, nil, nil, nil, nil, nil, nil, nil, nil, nil,
883
- nil, 41, nil, 40, 40, nil, 40, nil, 41, 40,
884
- nil, nil, 40 ]
865
+ 41, 40, 34, 32, 46, 59, 53, 33, 43, 42,
866
+ 63, 1, 52, 2, 63, 63, 58, 3, 54, 4,
867
+ 34, 5, 34, 34, 34, 34, 39, 31, 31, 31,
868
+ 31, 14, 14, 14, 6, 59, 20, 20, 20, 43,
869
+ 32, 40, 40, 53, 42, 46, 52, 43, 33, 58,
870
+ 54, 42, 59, 7, 8, 39, 34, 34, 9, 10,
871
+ 11, 53, 12, 13, 15, 16, 17, 18, 34, 34,
872
+ 33, 21, 22, 23, 24, 25, 26, 27, 32, 28,
873
+ 40, 29, 40, 46, 30, 35, 36, 37, 38, 44,
874
+ 45, 48, 49, 50, 51, 34, 57, 34, 60, 61,
875
+ 62, nil, 40, 34, nil, 34, nil, nil, nil, 40,
876
+ nil, nil, 41, nil, nil, nil, nil, nil, nil, 34,
877
+ nil, nil, nil, 34, nil, nil, nil, 40, nil, nil,
878
+ nil, nil, nil, nil, nil, nil, nil, nil, 40, 40,
879
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
880
+ nil, nil, nil, 41, nil, nil, 40, nil, nil, nil,
881
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 40,
882
+ 40, 41, 40, nil, nil, 40, nil, nil, 40, 41 ]
885
883
 
886
884
  racc_goto_pointer = [
887
- nil, 9, 12, 16, 11, -5, 35, 45, -35, 50,
888
- 54, 56, 47, 14, 15, -38, -82, 8, -60, nil,
889
- -132, 12, -56, 13, -55, 14, -54, 15, -53, 47,
890
- 47, -8, -29, -62, -13, 11, -27, -33, -81, -158,
891
- -28, -45, -150, -158, -112, -129, -31, nil, -9, -53,
892
- 39, -31, -67, -76, 16, nil, nil, -26, -104, -165,
893
- -61, -97, 8, -170 ]
885
+ nil, 11, 13, 15, 10, -20, 32, 47, -34, 54,
886
+ 55, 56, 48, 15, 16, -37, -81, 9, -59, nil,
887
+ -129, 13, -55, 14, -54, 15, -53, 16, -51, 49,
888
+ 51, -7, -29, -61, -12, 14, -24, -31, -80, -142,
889
+ -32, -45, -148, -163, -111, -128, -29, nil, -8, -52,
890
+ 40, -30, -69, -74, 9, nil, nil, -25, -105, -168,
891
+ -60, -96, 9, -171 ]
894
892
 
895
893
  racc_goto_default = [
896
894
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
@@ -933,7 +931,7 @@ racc_reduce_table = [
933
931
  1, 63, :_reduce_none,
934
932
  0, 76, :_reduce_29,
935
933
  0, 77, :_reduce_30,
936
- 7, 63, :_reduce_none,
934
+ 7, 63, :_reduce_31,
937
935
  0, 78, :_reduce_32,
938
936
  0, 79, :_reduce_33,
939
937
  7, 63, :_reduce_34,
@@ -1011,7 +1009,7 @@ racc_reduce_table = [
1011
1009
  6, 111, :_reduce_106,
1012
1010
  0, 113, :_reduce_107,
1013
1011
  0, 114, :_reduce_108,
1014
- 7, 111, :_reduce_109,
1012
+ 8, 111, :_reduce_109,
1015
1013
  3, 111, :_reduce_110,
1016
1014
  1, 95, :_reduce_111,
1017
1015
  1, 95, :_reduce_112,
@@ -1041,7 +1039,7 @@ racc_reduce_table = [
1041
1039
 
1042
1040
  racc_reduce_n = 136
1043
1041
 
1044
- racc_shift_n = 225
1042
+ racc_shift_n = 226
1045
1043
 
1046
1044
  racc_token_table = {
1047
1045
  false => 0,
@@ -1424,9 +1422,19 @@ module_eval(<<'.,.,', 'parser.y', 96)
1424
1422
  end
1425
1423
  .,.,
1426
1424
 
1427
- # reduce 31 omitted
1425
+ module_eval(<<'.,.,', 'parser.y', 100)
1426
+ def _reduce_31(val, _values, result)
1427
+ @grammar.add_destructor(
1428
+ ident_or_tags: val[6],
1429
+ token_code: val[3],
1430
+ lineno: val[3].line
1431
+ )
1428
1432
 
1429
- module_eval(<<'.,.,', 'parser.y', 101)
1433
+ result
1434
+ end
1435
+ .,.,
1436
+
1437
+ module_eval(<<'.,.,', 'parser.y', 108)
1430
1438
  def _reduce_32(val, _values, result)
1431
1439
  begin_c_declaration("}")
1432
1440
 
@@ -1434,7 +1442,7 @@ module_eval(<<'.,.,', 'parser.y', 101)
1434
1442
  end
1435
1443
  .,.,
1436
1444
 
1437
- module_eval(<<'.,.,', 'parser.y', 105)
1445
+ module_eval(<<'.,.,', 'parser.y', 112)
1438
1446
  def _reduce_33(val, _values, result)
1439
1447
  end_c_declaration
1440
1448
 
@@ -1442,7 +1450,7 @@ module_eval(<<'.,.,', 'parser.y', 105)
1442
1450
  end
1443
1451
  .,.,
1444
1452
 
1445
- module_eval(<<'.,.,', 'parser.y', 109)
1453
+ module_eval(<<'.,.,', 'parser.y', 116)
1446
1454
  def _reduce_34(val, _values, result)
1447
1455
  @grammar.add_printer(
1448
1456
  ident_or_tags: val[6],
@@ -1454,7 +1462,7 @@ module_eval(<<'.,.,', 'parser.y', 109)
1454
1462
  end
1455
1463
  .,.,
1456
1464
 
1457
- module_eval(<<'.,.,', 'parser.y', 117)
1465
+ module_eval(<<'.,.,', 'parser.y', 124)
1458
1466
  def _reduce_35(val, _values, result)
1459
1467
  begin_c_declaration("}")
1460
1468
 
@@ -1462,7 +1470,7 @@ module_eval(<<'.,.,', 'parser.y', 117)
1462
1470
  end
1463
1471
  .,.,
1464
1472
 
1465
- module_eval(<<'.,.,', 'parser.y', 121)
1473
+ module_eval(<<'.,.,', 'parser.y', 128)
1466
1474
  def _reduce_36(val, _values, result)
1467
1475
  end_c_declaration
1468
1476
 
@@ -1470,7 +1478,7 @@ module_eval(<<'.,.,', 'parser.y', 121)
1470
1478
  end
1471
1479
  .,.,
1472
1480
 
1473
- module_eval(<<'.,.,', 'parser.y', 125)
1481
+ module_eval(<<'.,.,', 'parser.y', 132)
1474
1482
  def _reduce_37(val, _values, result)
1475
1483
  @grammar.add_error_token(
1476
1484
  ident_or_tags: val[6],
@@ -1482,7 +1490,7 @@ module_eval(<<'.,.,', 'parser.y', 125)
1482
1490
  end
1483
1491
  .,.,
1484
1492
 
1485
- module_eval(<<'.,.,', 'parser.y', 133)
1493
+ module_eval(<<'.,.,', 'parser.y', 140)
1486
1494
  def _reduce_38(val, _values, result)
1487
1495
  @grammar.after_shift = val[1]
1488
1496
 
@@ -1490,7 +1498,7 @@ module_eval(<<'.,.,', 'parser.y', 133)
1490
1498
  end
1491
1499
  .,.,
1492
1500
 
1493
- module_eval(<<'.,.,', 'parser.y', 137)
1501
+ module_eval(<<'.,.,', 'parser.y', 144)
1494
1502
  def _reduce_39(val, _values, result)
1495
1503
  @grammar.before_reduce = val[1]
1496
1504
 
@@ -1498,7 +1506,7 @@ module_eval(<<'.,.,', 'parser.y', 137)
1498
1506
  end
1499
1507
  .,.,
1500
1508
 
1501
- module_eval(<<'.,.,', 'parser.y', 141)
1509
+ module_eval(<<'.,.,', 'parser.y', 148)
1502
1510
  def _reduce_40(val, _values, result)
1503
1511
  @grammar.after_reduce = val[1]
1504
1512
 
@@ -1506,7 +1514,7 @@ module_eval(<<'.,.,', 'parser.y', 141)
1506
1514
  end
1507
1515
  .,.,
1508
1516
 
1509
- module_eval(<<'.,.,', 'parser.y', 145)
1517
+ module_eval(<<'.,.,', 'parser.y', 152)
1510
1518
  def _reduce_41(val, _values, result)
1511
1519
  @grammar.after_shift_error_token = val[1]
1512
1520
 
@@ -1514,7 +1522,7 @@ module_eval(<<'.,.,', 'parser.y', 145)
1514
1522
  end
1515
1523
  .,.,
1516
1524
 
1517
- module_eval(<<'.,.,', 'parser.y', 149)
1525
+ module_eval(<<'.,.,', 'parser.y', 156)
1518
1526
  def _reduce_42(val, _values, result)
1519
1527
  @grammar.after_pop_stack = val[1]
1520
1528
 
@@ -1524,7 +1532,7 @@ module_eval(<<'.,.,', 'parser.y', 149)
1524
1532
 
1525
1533
  # reduce 43 omitted
1526
1534
 
1527
- module_eval(<<'.,.,', 'parser.y', 155)
1535
+ module_eval(<<'.,.,', 'parser.y', 162)
1528
1536
  def _reduce_44(val, _values, result)
1529
1537
  val[1].each {|hash|
1530
1538
  hash[:tokens].each {|id|
@@ -1536,7 +1544,7 @@ module_eval(<<'.,.,', 'parser.y', 155)
1536
1544
  end
1537
1545
  .,.,
1538
1546
 
1539
- module_eval(<<'.,.,', 'parser.y', 163)
1547
+ module_eval(<<'.,.,', 'parser.y', 170)
1540
1548
  def _reduce_45(val, _values, result)
1541
1549
  val[1].each {|hash|
1542
1550
  hash[:tokens].each {|id|
@@ -1550,7 +1558,7 @@ module_eval(<<'.,.,', 'parser.y', 163)
1550
1558
  end
1551
1559
  .,.,
1552
1560
 
1553
- module_eval(<<'.,.,', 'parser.y', 173)
1561
+ module_eval(<<'.,.,', 'parser.y', 180)
1554
1562
  def _reduce_46(val, _values, result)
1555
1563
  val[1].each {|hash|
1556
1564
  hash[:tokens].each {|id|
@@ -1564,7 +1572,7 @@ module_eval(<<'.,.,', 'parser.y', 173)
1564
1572
  end
1565
1573
  .,.,
1566
1574
 
1567
- module_eval(<<'.,.,', 'parser.y', 183)
1575
+ module_eval(<<'.,.,', 'parser.y', 190)
1568
1576
  def _reduce_47(val, _values, result)
1569
1577
  val[1].each {|hash|
1570
1578
  hash[:tokens].each {|id|
@@ -1578,7 +1586,7 @@ module_eval(<<'.,.,', 'parser.y', 183)
1578
1586
  end
1579
1587
  .,.,
1580
1588
 
1581
- module_eval(<<'.,.,', 'parser.y', 193)
1589
+ module_eval(<<'.,.,', 'parser.y', 200)
1582
1590
  def _reduce_48(val, _values, result)
1583
1591
  val[1].each {|hash|
1584
1592
  hash[:tokens].each {|id|
@@ -1592,7 +1600,7 @@ module_eval(<<'.,.,', 'parser.y', 193)
1592
1600
  end
1593
1601
  .,.,
1594
1602
 
1595
- module_eval(<<'.,.,', 'parser.y', 204)
1603
+ module_eval(<<'.,.,', 'parser.y', 211)
1596
1604
  def _reduce_49(val, _values, result)
1597
1605
  val[0].each {|token_declaration|
1598
1606
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: nil, replace: true)
@@ -1602,7 +1610,7 @@ module_eval(<<'.,.,', 'parser.y', 204)
1602
1610
  end
1603
1611
  .,.,
1604
1612
 
1605
- module_eval(<<'.,.,', 'parser.y', 210)
1613
+ module_eval(<<'.,.,', 'parser.y', 217)
1606
1614
  def _reduce_50(val, _values, result)
1607
1615
  val[1].each {|token_declaration|
1608
1616
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: val[0], replace: true)
@@ -1612,7 +1620,7 @@ module_eval(<<'.,.,', 'parser.y', 210)
1612
1620
  end
1613
1621
  .,.,
1614
1622
 
1615
- module_eval(<<'.,.,', 'parser.y', 216)
1623
+ module_eval(<<'.,.,', 'parser.y', 223)
1616
1624
  def _reduce_51(val, _values, result)
1617
1625
  val[2].each {|token_declaration|
1618
1626
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: val[1], replace: true)
@@ -1622,28 +1630,28 @@ module_eval(<<'.,.,', 'parser.y', 216)
1622
1630
  end
1623
1631
  .,.,
1624
1632
 
1625
- module_eval(<<'.,.,', 'parser.y', 221)
1633
+ module_eval(<<'.,.,', 'parser.y', 228)
1626
1634
  def _reduce_52(val, _values, result)
1627
1635
  result = [val[0]]
1628
1636
  result
1629
1637
  end
1630
1638
  .,.,
1631
1639
 
1632
- module_eval(<<'.,.,', 'parser.y', 222)
1640
+ module_eval(<<'.,.,', 'parser.y', 229)
1633
1641
  def _reduce_53(val, _values, result)
1634
1642
  result = val[0].append(val[1])
1635
1643
  result
1636
1644
  end
1637
1645
  .,.,
1638
1646
 
1639
- module_eval(<<'.,.,', 'parser.y', 224)
1647
+ module_eval(<<'.,.,', 'parser.y', 231)
1640
1648
  def _reduce_54(val, _values, result)
1641
1649
  result = val
1642
1650
  result
1643
1651
  end
1644
1652
  .,.,
1645
1653
 
1646
- module_eval(<<'.,.,', 'parser.y', 228)
1654
+ module_eval(<<'.,.,', 'parser.y', 235)
1647
1655
  def _reduce_55(val, _values, result)
1648
1656
  rule = Grammar::ParameterizingRule::Rule.new(val[1].s_value, val[3], val[6])
1649
1657
  @grammar.add_parameterizing_rule(rule)
@@ -1652,21 +1660,21 @@ module_eval(<<'.,.,', 'parser.y', 228)
1652
1660
  end
1653
1661
  .,.,
1654
1662
 
1655
- module_eval(<<'.,.,', 'parser.y', 232)
1663
+ module_eval(<<'.,.,', 'parser.y', 239)
1656
1664
  def _reduce_56(val, _values, result)
1657
1665
  result = [val[0]]
1658
1666
  result
1659
1667
  end
1660
1668
  .,.,
1661
1669
 
1662
- module_eval(<<'.,.,', 'parser.y', 233)
1670
+ module_eval(<<'.,.,', 'parser.y', 240)
1663
1671
  def _reduce_57(val, _values, result)
1664
1672
  result = val[0].append(val[2])
1665
1673
  result
1666
1674
  end
1667
1675
  .,.,
1668
1676
 
1669
- module_eval(<<'.,.,', 'parser.y', 237)
1677
+ module_eval(<<'.,.,', 'parser.y', 244)
1670
1678
  def _reduce_58(val, _values, result)
1671
1679
  builder = val[0]
1672
1680
  result = [builder]
@@ -1675,7 +1683,7 @@ module_eval(<<'.,.,', 'parser.y', 237)
1675
1683
  end
1676
1684
  .,.,
1677
1685
 
1678
- module_eval(<<'.,.,', 'parser.y', 242)
1686
+ module_eval(<<'.,.,', 'parser.y', 249)
1679
1687
  def _reduce_59(val, _values, result)
1680
1688
  builder = val[2]
1681
1689
  result = val[0].append(builder)
@@ -1684,7 +1692,7 @@ module_eval(<<'.,.,', 'parser.y', 242)
1684
1692
  end
1685
1693
  .,.,
1686
1694
 
1687
- module_eval(<<'.,.,', 'parser.y', 248)
1695
+ module_eval(<<'.,.,', 'parser.y', 255)
1688
1696
  def _reduce_60(val, _values, result)
1689
1697
  reset_precs
1690
1698
  result = Grammar::ParameterizingRule::Rhs.new
@@ -1693,7 +1701,7 @@ module_eval(<<'.,.,', 'parser.y', 248)
1693
1701
  end
1694
1702
  .,.,
1695
1703
 
1696
- module_eval(<<'.,.,', 'parser.y', 253)
1704
+ module_eval(<<'.,.,', 'parser.y', 260)
1697
1705
  def _reduce_61(val, _values, result)
1698
1706
  reset_precs
1699
1707
  result = Grammar::ParameterizingRule::Rhs.new
@@ -1702,7 +1710,7 @@ module_eval(<<'.,.,', 'parser.y', 253)
1702
1710
  end
1703
1711
  .,.,
1704
1712
 
1705
- module_eval(<<'.,.,', 'parser.y', 258)
1713
+ module_eval(<<'.,.,', 'parser.y', 265)
1706
1714
  def _reduce_62(val, _values, result)
1707
1715
  token = val[1]
1708
1716
  token.alias_name = val[2]
@@ -1714,7 +1722,7 @@ module_eval(<<'.,.,', 'parser.y', 258)
1714
1722
  end
1715
1723
  .,.,
1716
1724
 
1717
- module_eval(<<'.,.,', 'parser.y', 266)
1725
+ module_eval(<<'.,.,', 'parser.y', 273)
1718
1726
  def _reduce_63(val, _values, result)
1719
1727
  builder = val[0]
1720
1728
  builder.symbols << Lrama::Lexer::Token::InstantiateRule.new(s_value: val[2], location: @lexer.location, args: [val[1]])
@@ -1724,7 +1732,7 @@ module_eval(<<'.,.,', 'parser.y', 266)
1724
1732
  end
1725
1733
  .,.,
1726
1734
 
1727
- module_eval(<<'.,.,', 'parser.y', 272)
1735
+ module_eval(<<'.,.,', 'parser.y', 279)
1728
1736
  def _reduce_64(val, _values, result)
1729
1737
  builder = val[0]
1730
1738
  builder.symbols << Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[3])
@@ -1734,7 +1742,7 @@ module_eval(<<'.,.,', 'parser.y', 272)
1734
1742
  end
1735
1743
  .,.,
1736
1744
 
1737
- module_eval(<<'.,.,', 'parser.y', 278)
1745
+ module_eval(<<'.,.,', 'parser.y', 285)
1738
1746
  def _reduce_65(val, _values, result)
1739
1747
  if @prec_seen
1740
1748
  on_action_error("multiple User_code after %prec", val[0]) if @code_after_prec
@@ -1746,7 +1754,7 @@ module_eval(<<'.,.,', 'parser.y', 278)
1746
1754
  end
1747
1755
  .,.,
1748
1756
 
1749
- module_eval(<<'.,.,', 'parser.y', 286)
1757
+ module_eval(<<'.,.,', 'parser.y', 293)
1750
1758
  def _reduce_66(val, _values, result)
1751
1759
  end_c_declaration
1752
1760
 
@@ -1754,7 +1762,7 @@ module_eval(<<'.,.,', 'parser.y', 286)
1754
1762
  end
1755
1763
  .,.,
1756
1764
 
1757
- module_eval(<<'.,.,', 'parser.y', 290)
1765
+ module_eval(<<'.,.,', 'parser.y', 297)
1758
1766
  def _reduce_67(val, _values, result)
1759
1767
  user_code = val[3]
1760
1768
  user_code.alias_name = val[6]
@@ -1766,7 +1774,7 @@ module_eval(<<'.,.,', 'parser.y', 290)
1766
1774
  end
1767
1775
  .,.,
1768
1776
 
1769
- module_eval(<<'.,.,', 'parser.y', 298)
1777
+ module_eval(<<'.,.,', 'parser.y', 305)
1770
1778
  def _reduce_68(val, _values, result)
1771
1779
  sym = @grammar.find_symbol_by_id!(val[2])
1772
1780
  @prec_seen = true
@@ -1786,7 +1794,7 @@ module_eval(<<'.,.,', 'parser.y', 298)
1786
1794
 
1787
1795
  # reduce 72 omitted
1788
1796
 
1789
- module_eval(<<'.,.,', 'parser.y', 313)
1797
+ module_eval(<<'.,.,', 'parser.y', 320)
1790
1798
  def _reduce_73(val, _values, result)
1791
1799
  result = [{tag: nil, tokens: val[0]}]
1792
1800
 
@@ -1794,7 +1802,7 @@ module_eval(<<'.,.,', 'parser.y', 313)
1794
1802
  end
1795
1803
  .,.,
1796
1804
 
1797
- module_eval(<<'.,.,', 'parser.y', 317)
1805
+ module_eval(<<'.,.,', 'parser.y', 324)
1798
1806
  def _reduce_74(val, _values, result)
1799
1807
  result = [{tag: val[0], tokens: val[1]}]
1800
1808
 
@@ -1802,7 +1810,7 @@ module_eval(<<'.,.,', 'parser.y', 317)
1802
1810
  end
1803
1811
  .,.,
1804
1812
 
1805
- module_eval(<<'.,.,', 'parser.y', 321)
1813
+ module_eval(<<'.,.,', 'parser.y', 328)
1806
1814
  def _reduce_75(val, _values, result)
1807
1815
  result = val[0].append({tag: val[1], tokens: val[2]})
1808
1816
 
@@ -1810,14 +1818,14 @@ module_eval(<<'.,.,', 'parser.y', 321)
1810
1818
  end
1811
1819
  .,.,
1812
1820
 
1813
- module_eval(<<'.,.,', 'parser.y', 324)
1821
+ module_eval(<<'.,.,', 'parser.y', 331)
1814
1822
  def _reduce_76(val, _values, result)
1815
1823
  result = [val[0]]
1816
1824
  result
1817
1825
  end
1818
1826
  .,.,
1819
1827
 
1820
- module_eval(<<'.,.,', 'parser.y', 325)
1828
+ module_eval(<<'.,.,', 'parser.y', 332)
1821
1829
  def _reduce_77(val, _values, result)
1822
1830
  result = val[0].append(val[1])
1823
1831
  result
@@ -1828,7 +1836,7 @@ module_eval(<<'.,.,', 'parser.y', 325)
1828
1836
 
1829
1837
  # reduce 79 omitted
1830
1838
 
1831
- module_eval(<<'.,.,', 'parser.y', 332)
1839
+ module_eval(<<'.,.,', 'parser.y', 339)
1832
1840
  def _reduce_80(val, _values, result)
1833
1841
  begin_c_declaration("}")
1834
1842
 
@@ -1836,7 +1844,7 @@ module_eval(<<'.,.,', 'parser.y', 332)
1836
1844
  end
1837
1845
  .,.,
1838
1846
 
1839
- module_eval(<<'.,.,', 'parser.y', 336)
1847
+ module_eval(<<'.,.,', 'parser.y', 343)
1840
1848
  def _reduce_81(val, _values, result)
1841
1849
  end_c_declaration
1842
1850
 
@@ -1844,7 +1852,7 @@ module_eval(<<'.,.,', 'parser.y', 336)
1844
1852
  end
1845
1853
  .,.,
1846
1854
 
1847
- module_eval(<<'.,.,', 'parser.y', 340)
1855
+ module_eval(<<'.,.,', 'parser.y', 347)
1848
1856
  def _reduce_82(val, _values, result)
1849
1857
  result = val[0].append(val[3])
1850
1858
 
@@ -1852,7 +1860,7 @@ module_eval(<<'.,.,', 'parser.y', 340)
1852
1860
  end
1853
1861
  .,.,
1854
1862
 
1855
- module_eval(<<'.,.,', 'parser.y', 344)
1863
+ module_eval(<<'.,.,', 'parser.y', 351)
1856
1864
  def _reduce_83(val, _values, result)
1857
1865
  begin_c_declaration("}")
1858
1866
 
@@ -1860,7 +1868,7 @@ module_eval(<<'.,.,', 'parser.y', 344)
1860
1868
  end
1861
1869
  .,.,
1862
1870
 
1863
- module_eval(<<'.,.,', 'parser.y', 348)
1871
+ module_eval(<<'.,.,', 'parser.y', 355)
1864
1872
  def _reduce_84(val, _values, result)
1865
1873
  end_c_declaration
1866
1874
 
@@ -1868,7 +1876,7 @@ module_eval(<<'.,.,', 'parser.y', 348)
1868
1876
  end
1869
1877
  .,.,
1870
1878
 
1871
- module_eval(<<'.,.,', 'parser.y', 352)
1879
+ module_eval(<<'.,.,', 'parser.y', 359)
1872
1880
  def _reduce_85(val, _values, result)
1873
1881
  result = [val[2]]
1874
1882
 
@@ -1876,7 +1884,7 @@ module_eval(<<'.,.,', 'parser.y', 352)
1876
1884
  end
1877
1885
  .,.,
1878
1886
 
1879
- module_eval(<<'.,.,', 'parser.y', 357)
1887
+ module_eval(<<'.,.,', 'parser.y', 364)
1880
1888
  def _reduce_86(val, _values, result)
1881
1889
  result = [{tag: nil, tokens: val[0]}]
1882
1890
 
@@ -1884,7 +1892,7 @@ module_eval(<<'.,.,', 'parser.y', 357)
1884
1892
  end
1885
1893
  .,.,
1886
1894
 
1887
- module_eval(<<'.,.,', 'parser.y', 361)
1895
+ module_eval(<<'.,.,', 'parser.y', 368)
1888
1896
  def _reduce_87(val, _values, result)
1889
1897
  result = [{tag: val[0], tokens: val[1]}]
1890
1898
 
@@ -1892,7 +1900,7 @@ module_eval(<<'.,.,', 'parser.y', 361)
1892
1900
  end
1893
1901
  .,.,
1894
1902
 
1895
- module_eval(<<'.,.,', 'parser.y', 365)
1903
+ module_eval(<<'.,.,', 'parser.y', 372)
1896
1904
  def _reduce_88(val, _values, result)
1897
1905
  result = val[0].append({tag: val[1], tokens: val[2]})
1898
1906
 
@@ -1900,14 +1908,14 @@ module_eval(<<'.,.,', 'parser.y', 365)
1900
1908
  end
1901
1909
  .,.,
1902
1910
 
1903
- module_eval(<<'.,.,', 'parser.y', 368)
1911
+ module_eval(<<'.,.,', 'parser.y', 375)
1904
1912
  def _reduce_89(val, _values, result)
1905
1913
  result = [val[0]]
1906
1914
  result
1907
1915
  end
1908
1916
  .,.,
1909
1917
 
1910
- module_eval(<<'.,.,', 'parser.y', 369)
1918
+ module_eval(<<'.,.,', 'parser.y', 376)
1911
1919
  def _reduce_90(val, _values, result)
1912
1920
  result = val[0].append(val[1])
1913
1921
  result
@@ -1916,14 +1924,14 @@ module_eval(<<'.,.,', 'parser.y', 369)
1916
1924
 
1917
1925
  # reduce 91 omitted
1918
1926
 
1919
- module_eval(<<'.,.,', 'parser.y', 373)
1927
+ module_eval(<<'.,.,', 'parser.y', 380)
1920
1928
  def _reduce_92(val, _values, result)
1921
1929
  on_action_error("ident after %prec", val[0]) if @prec_seen
1922
1930
  result
1923
1931
  end
1924
1932
  .,.,
1925
1933
 
1926
- module_eval(<<'.,.,', 'parser.y', 374)
1934
+ module_eval(<<'.,.,', 'parser.y', 381)
1927
1935
  def _reduce_93(val, _values, result)
1928
1936
  on_action_error("char after %prec", val[0]) if @prec_seen
1929
1937
  result
@@ -1938,7 +1946,7 @@ module_eval(<<'.,.,', 'parser.y', 374)
1938
1946
 
1939
1947
  # reduce 97 omitted
1940
1948
 
1941
- module_eval(<<'.,.,', 'parser.y', 384)
1949
+ module_eval(<<'.,.,', 'parser.y', 391)
1942
1950
  def _reduce_98(val, _values, result)
1943
1951
  lhs = val[0]
1944
1952
  lhs.alias_name = val[1]
@@ -1952,7 +1960,7 @@ module_eval(<<'.,.,', 'parser.y', 384)
1952
1960
  end
1953
1961
  .,.,
1954
1962
 
1955
- module_eval(<<'.,.,', 'parser.y', 395)
1963
+ module_eval(<<'.,.,', 'parser.y', 402)
1956
1964
  def _reduce_99(val, _values, result)
1957
1965
  builder = val[0]
1958
1966
  if !builder.line
@@ -1964,7 +1972,7 @@ module_eval(<<'.,.,', 'parser.y', 395)
1964
1972
  end
1965
1973
  .,.,
1966
1974
 
1967
- module_eval(<<'.,.,', 'parser.y', 403)
1975
+ module_eval(<<'.,.,', 'parser.y', 410)
1968
1976
  def _reduce_100(val, _values, result)
1969
1977
  builder = val[2]
1970
1978
  if !builder.line
@@ -1978,7 +1986,7 @@ module_eval(<<'.,.,', 'parser.y', 403)
1978
1986
 
1979
1987
  # reduce 101 omitted
1980
1988
 
1981
- module_eval(<<'.,.,', 'parser.y', 413)
1989
+ module_eval(<<'.,.,', 'parser.y', 420)
1982
1990
  def _reduce_102(val, _values, result)
1983
1991
  reset_precs
1984
1992
  result = Grammar::RuleBuilder.new(@rule_counter, @midrule_action_counter)
@@ -1987,7 +1995,7 @@ module_eval(<<'.,.,', 'parser.y', 413)
1987
1995
  end
1988
1996
  .,.,
1989
1997
 
1990
- module_eval(<<'.,.,', 'parser.y', 418)
1998
+ module_eval(<<'.,.,', 'parser.y', 425)
1991
1999
  def _reduce_103(val, _values, result)
1992
2000
  reset_precs
1993
2001
  result = Grammar::RuleBuilder.new(@rule_counter, @midrule_action_counter)
@@ -1996,7 +2004,7 @@ module_eval(<<'.,.,', 'parser.y', 418)
1996
2004
  end
1997
2005
  .,.,
1998
2006
 
1999
- module_eval(<<'.,.,', 'parser.y', 423)
2007
+ module_eval(<<'.,.,', 'parser.y', 430)
2000
2008
  def _reduce_104(val, _values, result)
2001
2009
  token = val[1]
2002
2010
  token.alias_name = val[2]
@@ -2008,7 +2016,7 @@ module_eval(<<'.,.,', 'parser.y', 423)
2008
2016
  end
2009
2017
  .,.,
2010
2018
 
2011
- module_eval(<<'.,.,', 'parser.y', 431)
2019
+ module_eval(<<'.,.,', 'parser.y', 438)
2012
2020
  def _reduce_105(val, _values, result)
2013
2021
  token = Lrama::Lexer::Token::InstantiateRule.new(s_value: val[2], location: @lexer.location, args: [val[1]], lhs_tag: val[3])
2014
2022
  builder = val[0]
@@ -2020,7 +2028,7 @@ module_eval(<<'.,.,', 'parser.y', 431)
2020
2028
  end
2021
2029
  .,.,
2022
2030
 
2023
- module_eval(<<'.,.,', 'parser.y', 439)
2031
+ module_eval(<<'.,.,', 'parser.y', 446)
2024
2032
  def _reduce_106(val, _values, result)
2025
2033
  token = Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[3], lhs_tag: val[5])
2026
2034
  builder = val[0]
@@ -2032,7 +2040,7 @@ module_eval(<<'.,.,', 'parser.y', 439)
2032
2040
  end
2033
2041
  .,.,
2034
2042
 
2035
- module_eval(<<'.,.,', 'parser.y', 447)
2043
+ module_eval(<<'.,.,', 'parser.y', 454)
2036
2044
  def _reduce_107(val, _values, result)
2037
2045
  if @prec_seen
2038
2046
  on_action_error("multiple User_code after %prec", val[0]) if @code_after_prec
@@ -2044,7 +2052,7 @@ module_eval(<<'.,.,', 'parser.y', 447)
2044
2052
  end
2045
2053
  .,.,
2046
2054
 
2047
- module_eval(<<'.,.,', 'parser.y', 455)
2055
+ module_eval(<<'.,.,', 'parser.y', 462)
2048
2056
  def _reduce_108(val, _values, result)
2049
2057
  end_c_declaration
2050
2058
 
@@ -2052,10 +2060,11 @@ module_eval(<<'.,.,', 'parser.y', 455)
2052
2060
  end
2053
2061
  .,.,
2054
2062
 
2055
- module_eval(<<'.,.,', 'parser.y', 459)
2063
+ module_eval(<<'.,.,', 'parser.y', 466)
2056
2064
  def _reduce_109(val, _values, result)
2057
2065
  user_code = val[3]
2058
2066
  user_code.alias_name = val[6]
2067
+ user_code.tag = val[7]
2059
2068
  builder = val[0]
2060
2069
  builder.user_code = user_code
2061
2070
  result = builder
@@ -2064,7 +2073,7 @@ module_eval(<<'.,.,', 'parser.y', 459)
2064
2073
  end
2065
2074
  .,.,
2066
2075
 
2067
- module_eval(<<'.,.,', 'parser.y', 467)
2076
+ module_eval(<<'.,.,', 'parser.y', 475)
2068
2077
  def _reduce_110(val, _values, result)
2069
2078
  sym = @grammar.find_symbol_by_id!(val[2])
2070
2079
  @prec_seen = true
@@ -2076,49 +2085,49 @@ module_eval(<<'.,.,', 'parser.y', 467)
2076
2085
  end
2077
2086
  .,.,
2078
2087
 
2079
- module_eval(<<'.,.,', 'parser.y', 474)
2088
+ module_eval(<<'.,.,', 'parser.y', 482)
2080
2089
  def _reduce_111(val, _values, result)
2081
2090
  result = "option"
2082
2091
  result
2083
2092
  end
2084
2093
  .,.,
2085
2094
 
2086
- module_eval(<<'.,.,', 'parser.y', 475)
2095
+ module_eval(<<'.,.,', 'parser.y', 483)
2087
2096
  def _reduce_112(val, _values, result)
2088
2097
  result = "nonempty_list"
2089
2098
  result
2090
2099
  end
2091
2100
  .,.,
2092
2101
 
2093
- module_eval(<<'.,.,', 'parser.y', 476)
2102
+ module_eval(<<'.,.,', 'parser.y', 484)
2094
2103
  def _reduce_113(val, _values, result)
2095
2104
  result = "list"
2096
2105
  result
2097
2106
  end
2098
2107
  .,.,
2099
2108
 
2100
- module_eval(<<'.,.,', 'parser.y', 478)
2109
+ module_eval(<<'.,.,', 'parser.y', 486)
2101
2110
  def _reduce_114(val, _values, result)
2102
2111
  result = [val[0]]
2103
2112
  result
2104
2113
  end
2105
2114
  .,.,
2106
2115
 
2107
- module_eval(<<'.,.,', 'parser.y', 479)
2116
+ module_eval(<<'.,.,', 'parser.y', 487)
2108
2117
  def _reduce_115(val, _values, result)
2109
2118
  result = val[0].append(val[2])
2110
2119
  result
2111
2120
  end
2112
2121
  .,.,
2113
2122
 
2114
- module_eval(<<'.,.,', 'parser.y', 480)
2123
+ module_eval(<<'.,.,', 'parser.y', 488)
2115
2124
  def _reduce_116(val, _values, result)
2116
2125
  result = [Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[0])]
2117
2126
  result
2118
2127
  end
2119
2128
  .,.,
2120
2129
 
2121
- module_eval(<<'.,.,', 'parser.y', 481)
2130
+ module_eval(<<'.,.,', 'parser.y', 489)
2122
2131
  def _reduce_117(val, _values, result)
2123
2132
  result = [Lrama::Lexer::Token::InstantiateRule.new(s_value: val[0].s_value, location: @lexer.location, args: val[2])]
2124
2133
  result
@@ -2127,7 +2136,7 @@ module_eval(<<'.,.,', 'parser.y', 481)
2127
2136
 
2128
2137
  # reduce 118 omitted
2129
2138
 
2130
- module_eval(<<'.,.,', 'parser.y', 484)
2139
+ module_eval(<<'.,.,', 'parser.y', 492)
2131
2140
  def _reduce_119(val, _values, result)
2132
2141
  result = val[1].s_value
2133
2142
  result
@@ -2138,7 +2147,7 @@ module_eval(<<'.,.,', 'parser.y', 484)
2138
2147
 
2139
2148
  # reduce 121 omitted
2140
2149
 
2141
- module_eval(<<'.,.,', 'parser.y', 491)
2150
+ module_eval(<<'.,.,', 'parser.y', 499)
2142
2151
  def _reduce_122(val, _values, result)
2143
2152
  begin_c_declaration('\Z')
2144
2153
  @grammar.epilogue_first_lineno = @lexer.line + 1
@@ -2147,7 +2156,7 @@ module_eval(<<'.,.,', 'parser.y', 491)
2147
2156
  end
2148
2157
  .,.,
2149
2158
 
2150
- module_eval(<<'.,.,', 'parser.y', 496)
2159
+ module_eval(<<'.,.,', 'parser.y', 504)
2151
2160
  def _reduce_123(val, _values, result)
2152
2161
  end_c_declaration
2153
2162
  @grammar.epilogue = val[2].s_value
@@ -2166,14 +2175,14 @@ module_eval(<<'.,.,', 'parser.y', 496)
2166
2175
 
2167
2176
  # reduce 128 omitted
2168
2177
 
2169
- module_eval(<<'.,.,', 'parser.y', 507)
2178
+ module_eval(<<'.,.,', 'parser.y', 515)
2170
2179
  def _reduce_129(val, _values, result)
2171
2180
  result = [val[0]]
2172
2181
  result
2173
2182
  end
2174
2183
  .,.,
2175
2184
 
2176
- module_eval(<<'.,.,', 'parser.y', 508)
2185
+ module_eval(<<'.,.,', 'parser.y', 516)
2177
2186
  def _reduce_130(val, _values, result)
2178
2187
  result = val[0].append(val[1])
2179
2188
  result
@@ -2184,7 +2193,7 @@ module_eval(<<'.,.,', 'parser.y', 508)
2184
2193
 
2185
2194
  # reduce 132 omitted
2186
2195
 
2187
- module_eval(<<'.,.,', 'parser.y', 513)
2196
+ module_eval(<<'.,.,', 'parser.y', 521)
2188
2197
  def _reduce_133(val, _values, result)
2189
2198
  result = Lrama::Lexer::Token::Ident.new(s_value: val[0])
2190
2199
  result