develooper Front page | perl.cvs.parrot | Postings from November 2008

[svn:parrot] r32578 - in trunk: . compilers/imcc

From:
coke
Date:
November 12, 2008 11:59
Subject:
[svn:parrot] r32578 - in trunk: . compilers/imcc
Message ID:
20081112195917.1767CCB9AF@x12.develooper.com
Author: coke
Date: Wed Nov 12 11:59:16 2008
New Revision: 32578

Modified:
   trunk/DEPRECATED.pod
   trunk/compilers/imcc/imcc.y
   trunk/compilers/imcc/imcparser.c

Log:
RT #58974; remove [DEPRECATED] .return syntax; use .tailcall instead. (all tests pass)



Modified: trunk/DEPRECATED.pod
==============================================================================
--- trunk/DEPRECATED.pod	(original)
+++ trunk/DEPRECATED.pod	Wed Nov 12 11:59:16 2008
@@ -146,13 +146,6 @@
     print $S0
     substr $P0, 1, 2, "x"
 
-=item * C<.return> in tailcall context [post 0.7.2]
-
-The C<.return> directive in a tailcall context will be replaced by the more
-explicit C<.tailcall> directive.
-
-See RT #58974.
-
 =item * C<.return> in C<.begin_return> / C<.end_return> [post 0.7.2]
 
 The C<.return> directive in a C<.begin_return> sequence will be replaced by

Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y	(original)
+++ trunk/compilers/imcc/imcc.y	Wed Nov 12 11:59:16 2008
@@ -1525,14 +1525,6 @@
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
            IMCC_INFO(interp)->cur_call = NULL;
          }
-   /* This style is deprecated as per RT#58974. Use ".tailcall" for
-      tailcalls instead of ".return". */
-   | RETURN  sub_call
-         {
-           $$ = NULL;
-           IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
-           IMCC_INFO(interp)->cur_call = NULL;
-         }
    | GOTO label_op { $$ = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, $2); }
    | PARROT_OP vars
          {

Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c	(original)
+++ trunk/compilers/imcc/imcparser.c	Wed Nov 12 11:59:16 2008
@@ -1259,16 +1259,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  28
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   751
+#define YYLAST   732
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  134
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  123
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  342
+#define YYNRULES  341
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  554
+#define YYNSTATES  553
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -1343,23 +1343,23 @@
      432,   434,   435,   437,   440,   442,   444,   448,   451,   453,
      457,   460,   461,   463,   465,   467,   470,   473,   474,   479,
      484,   485,   492,   494,   495,   502,   505,   508,   511,   514,
-     517,   519,   521,   523,   525,   526,   528,   530,   532,   534,
-     536,   540,   545,   551,   558,   565,   572,   580,   585,   590,
-     595,   602,   609,   617,   622,   627,   632,   639,   647,   651,
-     652,   662,   664,   666,   668,   672,   674,   676,   678,   680,
-     682,   684,   686,   688,   690,   692,   694,   696,   698,   700,
-     702,   704,   706,   708,   710,   712,   714,   716,   718,   720,
-     722,   724,   725,   731,   735,   737,   739,   741,   743,   745,
-     747,   749,   751,   753,   755,   757,   759,   761,   766,   768,
-     770,   772,   774,   778,   782,   786,   787,   793,   794,   798,
-     800,   806,   810,   813,   814,   817,   819,   821,   826,   829,
-     833,   839,   841,   845,   846,   848,   850,   857,   863,   868,
-     873,   880,   886,   888,   890,   892,   894,   896,   898,   900,
-     902,   904,   906,   907,   909,   913,   915,   917,   922,   926,
-     928,   930,   932,   934,   936,   938,   940,   942,   944,   946,
-     948,   949,   952,   953,   956,   958,   962,   963,   968,   970,
-     974,   977,   980,   982,   984,   986,   988,   990,   992,   994,
-     996,   998,  1000
+     516,   518,   520,   522,   523,   525,   527,   529,   531,   533,
+     537,   542,   548,   555,   562,   569,   577,   582,   587,   592,
+     599,   606,   614,   619,   624,   629,   636,   644,   648,   649,
+     659,   661,   663,   665,   669,   671,   673,   675,   677,   679,
+     681,   683,   685,   687,   689,   691,   693,   695,   697,   699,
+     701,   703,   705,   707,   709,   711,   713,   715,   717,   719,
+     721,   722,   728,   732,   734,   736,   738,   740,   742,   744,
+     746,   748,   750,   752,   754,   756,   758,   763,   765,   767,
+     769,   771,   775,   779,   783,   784,   790,   791,   795,   797,
+     803,   807,   810,   811,   814,   816,   818,   823,   826,   830,
+     836,   838,   842,   843,   845,   847,   854,   860,   865,   870,
+     877,   883,   885,   887,   889,   891,   893,   895,   897,   899,
+     901,   903,   904,   906,   910,   912,   914,   919,   923,   925,
+     927,   929,   931,   933,   935,   937,   939,   941,   943,   945,
+     946,   949,   950,   953,   955,   959,   960,   965,   967,   971,
+     974,   977,   979,   981,   983,   985,   987,   989,   991,   993,
+     995,   997
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -1415,57 +1415,56 @@
       22,   105,    -1,    -1,    26,   210,   213,   206,    -1,    27,
      109,    69,   238,    -1,    -1,    28,   211,   213,   105,   119,
      255,    -1,   143,    -1,    -1,    31,   212,   213,   105,   119,
-     255,    -1,    62,   225,    -1,    61,   225,    -1,     8,   244,
-      -1,   113,   239,    -1,    12,   246,    -1,   225,    -1,   174,
-      -1,   189,    -1,   191,    -1,    -1,    48,    -1,    49,    -1,
-      50,    -1,    51,    -1,   105,    -1,   238,   119,   246,    -1,
-     238,   119,   217,   246,    -1,   238,   119,   246,   218,   246,
-      -1,   238,   119,   246,   120,   247,   121,    -1,   238,   120,
-     247,   121,   119,   246,    -1,   238,   119,    19,   214,    69,
-     246,    -1,   238,   119,    19,   214,   120,   247,   121,    -1,
-     238,   119,    19,   214,    -1,   238,   119,    19,   246,    -1,
-     238,   119,    19,   157,    -1,   238,   119,    19,   157,    69,
-     246,    -1,   238,   119,    19,   246,    69,   246,    -1,   238,
-     119,    19,   246,   120,   247,   121,    -1,   238,   119,    59,
-     256,    -1,    59,   256,   119,   246,    -1,    19,   238,    69,
-     246,    -1,    19,   238,    69,   246,    69,   246,    -1,    19,
-     238,    69,   246,   120,   247,   121,    -1,   238,   119,   225,
-      -1,    -1,   122,   216,   232,   123,   119,   224,   122,   227,
-     123,    -1,   219,    -1,   221,    -1,   223,    -1,   238,   119,
-      12,    -1,   124,    -1,   125,    -1,   126,    -1,   126,    -1,
-     127,    -1,   128,    -1,   129,    -1,   130,    -1,    40,    -1,
-      65,    -1,   118,    -1,    53,    -1,    54,    -1,    55,    -1,
-      56,    -1,    57,    -1,    58,    -1,    46,    -1,    47,    -1,
-      66,    -1,    67,    -1,    68,    -1,    52,    -1,   131,    -1,
-     132,    -1,   125,    -1,    -1,    64,   220,   122,   232,   123,
-      -1,   238,   222,   246,    -1,    32,    -1,    33,    -1,    34,
-      -1,    35,    -1,    42,    -1,    41,    -1,    36,    -1,    37,
-      -1,    38,    -1,    39,    -1,    43,    -1,    44,    -1,    45,
-      -1,   238,   119,   113,   152,    -1,   105,    -1,   109,    -1,
-     112,    -1,   238,    -1,   238,   117,   243,    -1,   238,   117,
-     109,    -1,   238,   117,   238,    -1,    -1,   224,   226,   122,
-     227,   123,    -1,    -1,   227,    69,   228,    -1,   228,    -1,
-     227,    69,   109,    18,   246,    -1,   109,    18,   246,    -1,
-     246,   229,    -1,    -1,   229,   230,    -1,    13,    -1,    17,
-      -1,    17,   122,   109,   123,    -1,   238,   187,    -1,   232,
-      69,   231,    -1,   232,    69,   109,    18,   238,    -1,   231,
-      -1,   109,    18,   238,    -1,    -1,   235,    -1,   234,    -1,
-      11,   246,   237,   246,     8,   244,    -1,    11,    12,   246,
-       8,   244,    -1,    11,   246,   236,   244,    -1,    10,   246,
-     236,   244,    -1,    10,   246,   237,   246,     8,   244,    -1,
-      10,    12,   246,     8,   244,    -1,    69,    -1,     8,    -1,
-      53,    -1,    54,    -1,    55,    -1,    56,    -1,    57,    -1,
-      58,    -1,   114,    -1,   254,    -1,    -1,   240,    -1,   240,
-      69,   241,    -1,   241,    -1,   245,    -1,   238,   120,   247,
-     121,    -1,   120,   249,   121,    -1,   243,    -1,   109,    -1,
-     112,    -1,   105,    -1,   113,    -1,   105,    -1,   113,    -1,
-     244,    -1,   246,    -1,   238,    -1,   255,    -1,    -1,   248,
-     251,    -1,    -1,   250,   251,    -1,   253,    -1,   251,   133,
-     253,    -1,    -1,   251,    69,   252,   253,    -1,   246,    -1,
-     246,    71,   246,    -1,    71,   246,    -1,   246,    71,    -1,
-     101,    -1,   102,    -1,   103,    -1,   104,    -1,   106,    -1,
-     110,    -1,   111,    -1,   109,    -1,   112,    -1,   103,    -1,
-     109,    -1
+     255,    -1,    62,   225,    -1,     8,   244,    -1,   113,   239,
+      -1,    12,   246,    -1,   225,    -1,   174,    -1,   189,    -1,
+     191,    -1,    -1,    48,    -1,    49,    -1,    50,    -1,    51,
+      -1,   105,    -1,   238,   119,   246,    -1,   238,   119,   217,
+     246,    -1,   238,   119,   246,   218,   246,    -1,   238,   119,
+     246,   120,   247,   121,    -1,   238,   120,   247,   121,   119,
+     246,    -1,   238,   119,    19,   214,    69,   246,    -1,   238,
+     119,    19,   214,   120,   247,   121,    -1,   238,   119,    19,
+     214,    -1,   238,   119,    19,   246,    -1,   238,   119,    19,
+     157,    -1,   238,   119,    19,   157,    69,   246,    -1,   238,
+     119,    19,   246,    69,   246,    -1,   238,   119,    19,   246,
+     120,   247,   121,    -1,   238,   119,    59,   256,    -1,    59,
+     256,   119,   246,    -1,    19,   238,    69,   246,    -1,    19,
+     238,    69,   246,    69,   246,    -1,    19,   238,    69,   246,
+     120,   247,   121,    -1,   238,   119,   225,    -1,    -1,   122,
+     216,   232,   123,   119,   224,   122,   227,   123,    -1,   219,
+      -1,   221,    -1,   223,    -1,   238,   119,    12,    -1,   124,
+      -1,   125,    -1,   126,    -1,   126,    -1,   127,    -1,   128,
+      -1,   129,    -1,   130,    -1,    40,    -1,    65,    -1,   118,
+      -1,    53,    -1,    54,    -1,    55,    -1,    56,    -1,    57,
+      -1,    58,    -1,    46,    -1,    47,    -1,    66,    -1,    67,
+      -1,    68,    -1,    52,    -1,   131,    -1,   132,    -1,   125,
+      -1,    -1,    64,   220,   122,   232,   123,    -1,   238,   222,
+     246,    -1,    32,    -1,    33,    -1,    34,    -1,    35,    -1,
+      42,    -1,    41,    -1,    36,    -1,    37,    -1,    38,    -1,
+      39,    -1,    43,    -1,    44,    -1,    45,    -1,   238,   119,
+     113,   152,    -1,   105,    -1,   109,    -1,   112,    -1,   238,
+      -1,   238,   117,   243,    -1,   238,   117,   109,    -1,   238,
+     117,   238,    -1,    -1,   224,   226,   122,   227,   123,    -1,
+      -1,   227,    69,   228,    -1,   228,    -1,   227,    69,   109,
+      18,   246,    -1,   109,    18,   246,    -1,   246,   229,    -1,
+      -1,   229,   230,    -1,    13,    -1,    17,    -1,    17,   122,
+     109,   123,    -1,   238,   187,    -1,   232,    69,   231,    -1,
+     232,    69,   109,    18,   238,    -1,   231,    -1,   109,    18,
+     238,    -1,    -1,   235,    -1,   234,    -1,    11,   246,   237,
+     246,     8,   244,    -1,    11,    12,   246,     8,   244,    -1,
+      11,   246,   236,   244,    -1,    10,   246,   236,   244,    -1,
+      10,   246,   237,   246,     8,   244,    -1,    10,    12,   246,
+       8,   244,    -1,    69,    -1,     8,    -1,    53,    -1,    54,
+      -1,    55,    -1,    56,    -1,    57,    -1,    58,    -1,   114,
+      -1,   254,    -1,    -1,   240,    -1,   240,    69,   241,    -1,
+     241,    -1,   245,    -1,   238,   120,   247,   121,    -1,   120,
+     249,   121,    -1,   243,    -1,   109,    -1,   112,    -1,   105,
+      -1,   113,    -1,   105,    -1,   113,    -1,   244,    -1,   246,
+      -1,   238,    -1,   255,    -1,    -1,   248,   251,    -1,    -1,
+     250,   251,    -1,   253,    -1,   251,   133,   253,    -1,    -1,
+     251,    69,   252,   253,    -1,   246,    -1,   246,    71,   246,
+      -1,    71,   246,    -1,   246,    71,    -1,   101,    -1,   102,
+      -1,   103,    -1,   104,    -1,   106,    -1,   110,    -1,   111,
+      -1,   109,    -1,   112,    -1,   103,    -1,   109,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -1488,24 +1487,24 @@
     1364,  1374,  1378,  1388,  1396,  1397,  1409,  1413,  1415,  1416,
     1417,  1421,  1422,  1426,  1427,  1431,  1440,  1441,  1452,  1459,
     1468,  1478,  1479,  1484,  1485,  1486,  1487,  1488,  1488,  1504,
-    1508,  1508,  1515,  1516,  1516,  1522,  1530,  1536,  1537,  1549,
-    1550,  1551,  1552,  1553,  1554,  1558,  1559,  1560,  1561,  1565,
-    1578,  1580,  1582,  1584,  1586,  1588,  1590,  1592,  1594,  1596,
-    1598,  1600,  1602,  1604,  1606,  1610,  1612,  1614,  1617,  1624,
-    1623,  1632,  1633,  1634,  1635,  1643,  1644,  1645,  1649,  1650,
-    1651,  1652,  1653,  1654,  1655,  1656,  1657,  1658,  1659,  1660,
-    1661,  1662,  1663,  1664,  1665,  1666,  1667,  1668,  1669,  1670,
-    1671,  1677,  1676,  1688,  1695,  1696,  1697,  1698,  1699,  1700,
-    1701,  1702,  1703,  1704,  1705,  1706,  1707,  1712,  1723,  1724,
-    1725,  1726,  1732,  1733,  1738,  1744,  1743,  1752,  1753,  1763,
-    1773,  1779,  1788,  1792,  1793,  1797,  1798,  1801,  1805,  1809,
-    1819,  1824,  1834,  1839,  1843,  1844,  1848,  1852,  1856,  1863,
-    1867,  1871,  1878,  1879,  1883,  1884,  1885,  1886,  1887,  1888,
-    1892,  1893,  1897,  1898,  1902,  1903,  1907,  1908,  1915,  1922,
-    1923,  1924,  1928,  1929,  1933,  1934,  1938,  1939,  1943,  1944,
-    1948,  1948,  1961,  1961,  1974,  1975,  1980,  1980,  1989,  1995,
-    2002,  2003,  2007,  2008,  2009,  2010,  2011,  2015,  2016,  2017,
-    2018,  2022,  2023
+    1508,  1508,  1515,  1516,  1516,  1522,  1528,  1529,  1541,  1542,
+    1543,  1544,  1545,  1546,  1550,  1551,  1552,  1553,  1557,  1570,
+    1572,  1574,  1576,  1578,  1580,  1582,  1584,  1586,  1588,  1590,
+    1592,  1594,  1596,  1598,  1602,  1604,  1606,  1609,  1616,  1615,
+    1624,  1625,  1626,  1627,  1635,  1636,  1637,  1641,  1642,  1643,
+    1644,  1645,  1646,  1647,  1648,  1649,  1650,  1651,  1652,  1653,
+    1654,  1655,  1656,  1657,  1658,  1659,  1660,  1661,  1662,  1663,
+    1669,  1668,  1680,  1687,  1688,  1689,  1690,  1691,  1692,  1693,
+    1694,  1695,  1696,  1697,  1698,  1699,  1704,  1715,  1716,  1717,
+    1718,  1724,  1725,  1730,  1736,  1735,  1744,  1745,  1755,  1765,
+    1771,  1780,  1784,  1785,  1789,  1790,  1793,  1797,  1801,  1811,
+    1816,  1826,  1831,  1835,  1836,  1840,  1844,  1848,  1855,  1859,
+    1863,  1870,  1871,  1875,  1876,  1877,  1878,  1879,  1880,  1884,
+    1885,  1889,  1890,  1894,  1895,  1899,  1900,  1907,  1914,  1915,
+    1916,  1920,  1921,  1925,  1926,  1930,  1931,  1935,  1936,  1940,
+    1940,  1953,  1953,  1966,  1967,  1972,  1972,  1981,  1987,  1994,
+    1995,  1999,  2000,  2001,  2002,  2003,  2007,  2008,  2009,  2010,
+    2014,  2015
 };
 #endif
 
@@ -1603,23 +1602,23 @@
      201,   202,   202,   203,   203,   204,   205,   205,   206,   206,
      207,   208,   208,   209,   209,   209,   209,   210,   209,   209,
      211,   209,   209,   212,   209,   209,   209,   209,   209,   209,
-     209,   209,   209,   209,   209,   213,   213,   213,   213,   214,
+     209,   209,   209,   209,   213,   213,   213,   213,   214,   215,
      215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
-     215,   215,   215,   215,   215,   215,   215,   215,   215,   216,
-     215,   215,   215,   215,   215,   217,   217,   217,   218,   218,
+     215,   215,   215,   215,   215,   215,   215,   215,   216,   215,
+     215,   215,   215,   215,   217,   217,   217,   218,   218,   218,
      218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
      218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
-     218,   220,   219,   221,   222,   222,   222,   222,   222,   222,
-     222,   222,   222,   222,   222,   222,   222,   223,   224,   224,
-     224,   224,   224,   224,   224,   226,   225,   227,   227,   227,
-     227,   227,   228,   229,   229,   230,   230,   230,   231,   232,
-     232,   232,   232,   232,   233,   233,   234,   234,   234,   235,
-     235,   235,   236,   236,   237,   237,   237,   237,   237,   237,
-     238,   238,   239,   239,   240,   240,   241,   241,   241,   242,
-     242,   242,   243,   243,   244,   244,   245,   245,   246,   246,
-     248,   247,   250,   249,   251,   251,   252,   251,   253,   253,
-     253,   253,   254,   254,   254,   254,   254,   255,   255,   255,
-     255,   256,   256
+     220,   219,   221,   222,   222,   222,   222,   222,   222,   222,
+     222,   222,   222,   222,   222,   222,   223,   224,   224,   224,
+     224,   224,   224,   224,   226,   225,   227,   227,   227,   227,
+     227,   228,   229,   229,   230,   230,   230,   231,   232,   232,
+     232,   232,   232,   233,   233,   234,   234,   234,   235,   235,
+     235,   236,   236,   237,   237,   237,   237,   237,   237,   238,
+     238,   239,   239,   240,   240,   241,   241,   241,   242,   242,
+     242,   243,   243,   244,   244,   245,   245,   246,   246,   248,
+     247,   250,   249,   251,   251,   252,   251,   253,   253,   253,
+     253,   254,   254,   254,   254,   254,   255,   255,   255,   255,
+     256,   256
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1642,24 +1641,24 @@
        1,     3,     3,     5,     1,     2,     0,     2,     2,     1,
        1,     0,     1,     2,     1,     1,     3,     2,     1,     3,
        2,     0,     1,     1,     1,     2,     2,     0,     4,     4,
-       0,     6,     1,     0,     6,     2,     2,     2,     2,     2,
-       1,     1,     1,     1,     0,     1,     1,     1,     1,     1,
-       3,     4,     5,     6,     6,     6,     7,     4,     4,     4,
-       6,     6,     7,     4,     4,     4,     6,     7,     3,     0,
-       9,     1,     1,     1,     3,     1,     1,     1,     1,     1,
+       0,     6,     1,     0,     6,     2,     2,     2,     2,     1,
+       1,     1,     1,     0,     1,     1,     1,     1,     1,     3,
+       4,     5,     6,     6,     6,     7,     4,     4,     4,     6,
+       6,     7,     4,     4,     4,     6,     7,     3,     0,     9,
+       1,     1,     1,     3,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     5,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     4,     1,     1,
-       1,     1,     3,     3,     3,     0,     5,     0,     3,     1,
-       5,     3,     2,     0,     2,     1,     1,     4,     2,     3,
-       5,     1,     3,     0,     1,     1,     6,     5,     4,     4,
-       6,     5,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     1,     3,     1,     1,     4,     3,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     2,     0,     2,     1,     3,     0,     4,     1,     3,
-       2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1
+       0,     5,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     4,     1,     1,     1,
+       1,     3,     3,     3,     0,     5,     0,     3,     1,     5,
+       3,     2,     0,     2,     1,     1,     4,     2,     3,     5,
+       1,     3,     0,     1,     1,     6,     5,     4,     4,     6,
+       5,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     0,     1,     3,     1,     1,     4,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       2,     0,     2,     1,     3,     0,     4,     1,     3,     2,
+       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1669,60 +1668,60 @@
 {
        0,    11,     0,     0,     0,    50,    18,     0,    43,     0,
        0,     2,     3,    10,     0,     6,     8,     5,     7,     0,
-       0,   320,     0,     0,     0,     0,   151,     9,     1,     4,
-      12,     0,    16,    17,     0,    49,     0,     0,    47,   312,
-     310,   311,   313,    51,   309,   185,   186,   187,   188,     0,
+       0,   319,     0,     0,     0,     0,   151,     9,     1,     4,
+      12,     0,    16,    17,     0,    49,     0,     0,    47,   311,
+     309,   310,   312,    51,   308,   184,   185,   186,   187,     0,
       13,    20,   155,     0,    31,    30,    34,    33,   151,    26,
-       0,    32,    35,   152,   154,    14,    15,    48,     0,   332,
-     333,   334,   335,   336,   339,   337,   338,   340,   300,   318,
-     328,   321,   324,   301,   319,    86,     0,     0,     0,    29,
-      27,    44,     0,     0,    37,     0,     0,   153,   330,   331,
-     326,     0,    92,    90,    91,    93,    94,    96,    95,     0,
+       0,    32,    35,   152,   154,    14,    15,    48,     0,   331,
+     332,   333,   334,   335,   338,   336,   337,   339,   299,   317,
+     327,   320,   323,   300,   318,    86,     0,     0,     0,    29,
+      27,    44,     0,     0,    37,     0,     0,   153,   329,   330,
+     325,     0,    92,    90,    91,    93,    94,    96,    95,     0,
       97,     0,    64,     0,     0,    98,    99,   100,   101,   102,
        0,    87,    88,     0,     0,     0,    39,     0,    86,    28,
-     302,   329,     0,   325,     0,    68,     0,     0,     0,    52,
-      89,    19,   314,   315,   316,     0,   317,     0,     0,     0,
-     322,    36,   318,    42,   303,   305,   306,   327,     0,     0,
-      71,    72,    74,    73,    75,    76,   320,     0,    70,     0,
-       0,     0,    54,     0,     0,    40,    38,     0,     0,   320,
+     301,   328,     0,   324,     0,    68,     0,     0,     0,    52,
+      89,    19,   313,   314,   315,     0,   316,     0,     0,     0,
+     321,    36,   317,    42,   302,   304,   305,   326,     0,     0,
+      71,    72,    74,    73,    75,    76,   319,     0,    70,     0,
+       0,     0,    54,     0,     0,    40,    38,     0,     0,   319,
        0,    63,    62,     0,     0,    61,    65,    66,    67,    55,
-     146,    24,    25,    21,    23,   308,   323,     0,   304,    77,
+     146,    24,    25,    21,    23,   307,   322,     0,   303,    77,
       69,    57,     0,   150,   149,     0,     0,   146,     0,   144,
-     307,     0,   148,    56,    53,   145,     0,   184,   147,    58,
+     306,     0,   148,    56,    53,   145,     0,   183,   147,    58,
        0,   157,     0,     0,     0,     0,     0,     0,     0,   167,
-       0,   170,   173,     0,   137,     0,   138,   241,     0,     0,
-       0,   258,   259,   260,   302,   209,   172,   181,   182,   183,
-     128,     0,     0,   163,   211,   212,   213,   265,   180,   164,
-     285,   284,   261,   118,     0,   177,     0,     0,     0,     0,
-     179,     0,   165,   166,     0,     0,     0,     0,   341,   342,
-       0,   176,   261,   175,     0,    80,   126,   129,   178,   283,
-     135,   156,     0,   244,   245,   246,   247,   250,   251,   252,
-     253,   249,   248,   254,   255,   256,     0,     0,   320,     0,
-      59,     0,     0,   293,   294,   295,   296,   297,   298,   299,
-     292,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   283,   110,   131,   131,     0,   281,     0,   118,
-     139,   267,   263,   264,   262,   214,     0,     0,   339,   340,
-     302,   215,   216,   217,     0,   208,   318,   190,     0,   243,
-     120,   121,   122,   123,   125,   119,   118,     0,   289,     0,
-       0,   288,     0,   205,   161,   168,   158,   169,     0,     0,
-     204,     0,    84,     0,     0,     0,     0,     0,   278,   339,
-       0,   140,   273,   339,     0,   269,   189,   199,   197,   198,
-     203,   257,   191,   223,   232,   233,   237,   226,   227,   228,
-     229,   230,   231,   224,   234,   235,   236,   225,   320,   240,
-     218,   219,   220,   221,   222,   238,   239,     0,     0,     0,
-      60,   291,     0,   287,     0,     0,   320,   162,   160,     0,
-       0,     0,   242,     0,     0,     0,     0,   132,     0,   127,
-       0,   130,   282,     0,   279,     0,     0,     0,   136,   272,
-       0,     0,   266,     0,     0,   320,     0,   320,     0,   192,
-       0,     0,   290,   286,   206,     0,   159,   171,   174,   112,
-       0,     0,     0,     0,    82,   111,   273,   133,     0,     0,
-     141,   339,   142,   275,   276,   274,   271,   339,   268,   200,
-     195,     0,   201,     0,   193,   194,   124,   207,    85,     0,
-       0,     0,     0,   113,     0,   134,   280,   267,     0,     0,
-       0,   196,   202,   104,     0,   105,   107,     0,   106,     0,
-       0,    83,     0,   143,     0,   270,     0,     0,     0,   116,
-       0,    81,     0,   210,   277,   103,   109,   108,     0,   118,
-     114,     0,   115,   117
+       0,   170,   173,     0,   137,     0,   138,   240,     0,     0,
+       0,   257,   258,   259,   301,   208,   172,   180,   181,   182,
+     128,     0,     0,   163,   210,   211,   212,   264,   179,   164,
+     284,   283,   260,   118,     0,   176,     0,     0,     0,     0,
+     178,     0,   165,   166,     0,     0,     0,     0,   340,   341,
+       0,   175,   260,     0,    80,   126,   129,   177,   282,   135,
+     156,     0,   243,   244,   245,   246,   249,   250,   251,   252,
+     248,   247,   253,   254,   255,     0,     0,   319,     0,    59,
+       0,     0,   292,   293,   294,   295,   296,   297,   298,   291,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   282,   110,   131,   131,     0,   280,     0,   118,   139,
+     266,   262,   263,   261,   213,     0,     0,   338,   339,   301,
+     214,   215,   216,     0,   207,   317,   189,     0,   242,   120,
+     121,   122,   123,   125,   119,   118,     0,   288,     0,     0,
+     287,     0,   204,   161,   168,   158,   169,     0,     0,   203,
+       0,    84,     0,     0,     0,     0,     0,   277,   338,     0,
+     140,   272,   338,     0,   268,   188,   198,   196,   197,   202,
+     256,   190,   222,   231,   232,   236,   225,   226,   227,   228,
+     229,   230,   223,   233,   234,   235,   224,   319,   239,   217,
+     218,   219,   220,   221,   237,   238,     0,     0,     0,    60,
+     290,     0,   286,     0,     0,   319,   162,   160,     0,     0,
+       0,   241,     0,     0,     0,     0,   132,     0,   127,     0,
+     130,   281,     0,   278,     0,     0,     0,   136,   271,     0,
+       0,   265,     0,     0,   319,     0,   319,     0,   191,     0,
+       0,   289,   285,   205,     0,   159,   171,   174,   112,     0,
+       0,     0,     0,    82,   111,   272,   133,     0,     0,   141,
+     338,   142,   274,   275,   273,   270,   338,   267,   199,   194,
+       0,   200,     0,   192,   193,   124,   206,    85,     0,     0,
+       0,     0,   113,     0,   134,   279,   266,     0,     0,     0,
+     195,   201,   104,     0,   105,   107,     0,   106,     0,     0,
+      83,     0,   143,     0,   269,     0,     0,     0,   116,     0,
+      81,     0,   209,   276,   103,   109,   108,     0,   118,   114,
+       0,   115,   117
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -1732,261 +1731,257 @@
       87,    88,   193,    58,    59,    95,    96,   128,   151,    16,
       26,    60,    17,    22,    18,    23,    85,   172,   190,   205,
      211,   219,   115,   116,   117,   118,   119,   167,   168,   206,
-     247,   333,   513,   445,   120,   121,   122,   484,   382,   446,
-     530,   542,   548,   310,   365,   248,   334,   249,   335,   383,
-     450,   250,   340,   251,   390,   207,   208,   209,    62,    63,
-      64,   218,   375,   376,   438,   252,   274,   276,   277,    49,
-     398,   253,   289,   354,   427,   254,   284,   255,   309,   256,
-     257,   258,   292,   394,   395,   459,   495,   337,   338,   259,
-     260,   261,   321,   322,    79,   153,   154,   155,    43,    44,
+     247,   332,   512,   444,   120,   121,   122,   483,   381,   445,
+     529,   541,   547,   309,   364,   248,   333,   249,   334,   382,
+     449,   250,   339,   251,   389,   207,   208,   209,    62,    63,
+      64,   218,   374,   375,   437,   252,   274,   276,   277,    49,
+     397,   253,   288,   353,   426,   254,   283,   255,   308,   256,
+     257,   258,   291,   393,   394,   458,   494,   336,   337,   259,
+     260,   261,   320,   321,    79,   153,   154,   155,    43,    44,
      144,   156,   146,    36,    37,   177,   178,    81,   132,    82,
       83,    84,   280
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -426
+#define YYPACT_NINF -430
 static const yytype_int16 yypact[] =
 {
-     247,  -426,   -92,   -68,   -77,  -426,  -426,   -55,  -426,    59,
-     118,   247,  -426,  -426,   149,  -426,  -426,  -426,  -426,   101,
-     -54,    61,   179,    55,   175,   181,    65,  -426,  -426,  -426,
-    -426,    83,  -426,  -426,    85,  -426,    72,   271,  -426,  -426,
-    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,    91,
-    -426,    90,  -426,   197,  -426,  -426,  -426,  -426,   184,  -426,
-     102,  -426,   131,   105,  -426,  -426,  -426,  -426,   549,  -426,
-    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,
-     143,   -48,  -426,  -426,  -426,   535,    88,   109,   108,  -426,
-    -426,  -426,   549,   119,  -426,   216,   114,  -426,  -426,   549,
-    -426,   271,  -426,  -426,  -426,  -426,  -426,  -426,  -426,   110,
-    -426,   113,   122,   130,   133,  -426,  -426,  -426,  -426,  -426,
-     226,   535,  -426,   154,   531,   531,  -426,   164,   535,  -426,
-     290,  -426,   271,  -426,    57,     8,   127,   134,   147,  -426,
-    -426,  -426,  -426,  -426,  -426,   150,  -426,   155,   167,   178,
-    -426,  -426,   159,  -426,   211,  -426,  -426,  -426,   158,   160,
-    -426,  -426,  -426,  -426,  -426,  -426,  -426,   -47,  -426,   163,
-     169,   170,   283,     3,     3,  -426,  -426,   174,   271,  -426,
-     290,  -426,  -426,   176,     8,  -426,  -426,  -426,  -426,  -426,
-      29,  -426,  -426,  -426,  -426,  -426,   -48,   177,  -426,  -426,
-    -426,  -426,   286,  -426,  -426,   292,   231,    82,   438,  -426,
-    -426,   175,  -426,  -426,  -426,  -426,   301,    18,  -426,  -426,
-      68,  -426,   -52,   222,   255,   549,   107,   202,   205,  -426,
-     203,    37,  -426,    30,   370,   370,  -426,  -426,   307,   309,
-     310,  -426,  -426,  -426,   290,  -426,  -426,  -426,  -426,  -426,
-    -426,   193,   312,  -426,  -426,  -426,  -426,  -426,  -426,  -426,
-    -426,  -426,   529,  -426,   300,  -426,   549,   294,   549,   294,
-    -426,   250,  -426,  -426,   175,   251,   175,   175,  -426,  -426,
-     210,  -426,   213,  -426,   215,  -426,  -426,  -426,  -426,   619,
-    -426,  -426,   217,  -426,  -426,  -426,  -426,  -426,  -426,  -426,
-    -426,  -426,  -426,  -426,  -426,  -426,   475,   136,  -426,   549,
-      -5,   230,   330,  -426,  -426,  -426,  -426,  -426,  -426,  -426,
-    -426,   -52,   549,   335,   -52,   549,   549,   239,   107,   240,
-     248,   549,   619,  -426,  -426,  -426,   344,  -426,   -36,  -426,
-     563,   577,  -426,  -426,  -426,  -426,   497,    30,   246,   249,
-     290,  -426,  -426,  -426,   549,  -426,    52,   465,   257,  -426,
-    -426,  -426,  -426,   254,  -426,  -426,  -426,   -52,  -426,   362,
-     -52,  -426,   371,   -53,   287,   317,  -426,  -426,   268,   269,
-    -426,   -22,    27,    14,     9,   107,   628,   270,    -5,   379,
-     -21,  -426,  -426,   387,   -19,  -426,  -426,   339,   -46,   -42,
-    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,
-    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,
-    -426,  -426,  -426,  -426,  -426,  -426,  -426,   549,   295,   304,
-      -5,  -426,   -52,  -426,   -52,   549,  -426,  -426,  -426,   239,
-     154,   154,  -426,   549,   549,    76,   405,  -426,   549,  -426,
-     411,  -426,  -426,   398,  -426,   370,   549,   591,  -426,   121,
-     549,   605,  -426,   549,   549,  -426,   549,  -426,   296,  -426,
-     549,   298,  -426,  -426,  -426,   297,  -426,  -426,  -426,  -426,
-     421,   549,   549,   637,   105,  -426,  -426,  -426,   107,   306,
-    -426,   412,  -426,  -426,   313,  -426,  -426,   413,  -426,  -426,
-    -426,   311,  -426,   315,  -426,  -426,  -426,  -426,  -426,    15,
-     430,    31,    34,  -426,   433,   121,  -426,   577,   549,   329,
-     549,  -426,  -426,  -426,   549,  -426,  -426,   549,  -426,   549,
-     111,  -426,    -9,  -426,   318,  -426,   436,   439,   443,  -426,
-     107,  -426,   447,  -426,  -426,  -426,  -426,  -426,   175,  -426,
-    -426,   239,    -5,  -426
+       6,  -430,   -77,   -65,   -74,  -430,  -430,    25,  -430,    97,
+     122,     6,  -430,  -430,   139,  -430,  -430,  -430,  -430,    62,
+       1,    49,   171,    84,   176,   179,    30,  -430,  -430,  -430,
+    -430,    76,  -430,  -430,    81,  -430,    77,   254,  -430,  -430,
+    -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,    99,
+    -430,   104,  -430,   202,  -430,  -430,  -430,  -430,    35,  -430,
+     115,  -430,    61,   119,  -430,  -430,  -430,  -430,   284,  -430,
+    -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
+     151,   -41,  -430,  -430,  -430,   566,   109,   120,   141,  -430,
+    -430,  -430,   284,   142,  -430,   248,   140,  -430,  -430,   284,
+    -430,   254,  -430,  -430,  -430,  -430,  -430,  -430,  -430,   132,
+    -430,   133,   146,   150,   152,  -430,  -430,  -430,  -430,  -430,
+     273,   566,  -430,   123,   562,   562,  -430,   210,   566,  -430,
+     496,  -430,   254,  -430,   -30,    -1,   174,   177,   181,  -430,
+    -430,  -430,  -430,  -430,  -430,   166,  -430,   175,   189,   201,
+    -430,  -430,   180,  -430,   235,  -430,  -430,  -430,   183,   186,
+    -430,  -430,  -430,  -430,  -430,  -430,  -430,   -46,  -430,   194,
+     196,   204,   320,    93,    93,  -430,  -430,   207,   254,  -430,
+     496,  -430,  -430,   214,    -1,  -430,  -430,  -430,  -430,  -430,
+      10,  -430,  -430,  -430,  -430,  -430,   -41,   215,  -430,  -430,
+    -430,  -430,   326,  -430,  -430,   333,   268,    85,   437,  -430,
+    -430,   176,  -430,  -430,  -430,  -430,   336,   270,  -430,  -430,
+      86,  -430,   -60,    55,    70,   284,   391,   236,   238,  -430,
+     240,   110,  -430,     9,  -430,   161,  -430,  -430,   340,   341,
+     343,  -430,  -430,  -430,   496,  -430,  -430,  -430,  -430,  -430,
+    -430,   228,   347,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
+    -430,  -430,   528,  -430,   334,  -430,   284,   154,   284,   154,
+    -430,   292,  -430,  -430,   176,   293,   176,   176,  -430,  -430,
+     234,  -430,   250,   247,  -430,  -430,  -430,  -430,   298,  -430,
+    -430,   255,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
+    -430,  -430,  -430,  -430,  -430,   209,   135,  -430,   284,     2,
+     265,   370,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
+     -60,   284,   372,   -60,   284,   284,   276,   391,   286,   303,
+     284,   298,  -430,  -430,  -430,   385,  -430,   -40,  -430,   576,
+     590,  -430,  -430,  -430,  -430,   516,     9,   287,   291,   496,
+    -430,  -430,  -430,   284,  -430,    46,   464,   294,  -430,  -430,
+    -430,  -430,   295,  -430,  -430,  -430,   -60,  -430,   406,   -60,
+    -430,   408,   -36,   323,   355,  -430,  -430,   308,   310,  -430,
+     -29,     5,    20,    17,   391,   369,   311,     2,   413,   -12,
+    -430,  -430,   415,    -9,  -430,  -430,   365,   -10,    33,  -430,
+    -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
+    -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
+    -430,  -430,  -430,  -430,  -430,  -430,   284,   316,   327,     2,
+    -430,   -60,  -430,   -60,   284,  -430,  -430,  -430,   276,   123,
+     123,  -430,   284,   284,    58,   433,  -430,   284,  -430,   435,
+    -430,  -430,   422,  -430,   161,   284,   604,  -430,   127,   284,
+     618,  -430,   284,   284,  -430,   284,  -430,   321,  -430,   284,
+     328,  -430,  -430,  -430,   325,  -430,  -430,  -430,  -430,   446,
+     284,   284,   474,   119,  -430,  -430,  -430,   391,   330,  -430,
+     436,  -430,  -430,   331,  -430,  -430,   439,  -430,  -430,  -430,
+     339,  -430,   345,  -430,  -430,  -430,  -430,  -430,     7,   451,
+      21,    22,  -430,   457,   127,  -430,   590,   284,   353,   284,
+    -430,  -430,  -430,   284,  -430,  -430,   284,  -430,   284,    12,
+    -430,    -8,  -430,   344,  -430,   465,   470,   472,  -430,   391,
+    -430,   473,  -430,  -430,  -430,  -430,  -430,   176,  -430,  -430,
+     276,     2,  -430
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -426,  -426,  -426,   441,    25,  -426,  -426,  -426,  -426,   236,
-    -426,  -426,   280,  -426,   397,  -426,  -426,  -426,   106,  -426,
-    -426,  -426,    84,   112,  -426,  -426,  -426,  -426,  -426,  -426,
-    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,   277,  -426,
-    -426,  -426,  -426,  -426,   334,  -426,   342,  -426,  -426,  -426,
-    -426,  -426,  -426,  -334,  -426,  -426,  -426,  -426,  -426,   132,
-    -426,  -426,  -426,  -426,  -426,  -426,  -426,   261,   262,  -426,
-     -62,  -426,  -426,  -425,  -426,  -426,  -426,  -426,  -426,  -208,
-    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,
-      22,  -210,  -426,   -39,  -332,    -1,  -426,   100,   156,  -426,
-    -426,  -426,   220,   224,  -128,   252,  -426,   314,  -426,   185,
-    -216,    51,   -37,  -159,  -426,  -426,  -426,   320,  -426,   -59,
-    -426,  -119,   148
+    -430,  -430,  -430,   476,    13,  -430,  -430,  -430,  -430,   264,
+    -430,  -430,   314,  -430,   426,  -430,  -430,  -430,   136,  -430,
+    -430,  -430,    28,   145,  -430,  -430,  -430,  -430,  -430,  -430,
+    -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,   318,  -430,
+    -430,  -430,  -430,  -430,   375,  -430,   386,  -430,  -430,  -430,
+    -430,  -430,  -430,  -330,  -430,  -430,  -430,  -430,  -430,   172,
+    -430,  -430,  -430,  -430,  -430,  -430,  -430,   301,   304,  -430,
+     -62,  -430,  -430,  -429,  -430,  -430,  -430,  -430,  -430,  -208,
+    -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
+      60,  -213,  -430,     8,  -333,    38,  -430,   143,   195,  -430,
+    -430,  -430,   256,   258,  -128,   289,  -430,   354,  -430,   231,
+    -217,   118,   -37,  -159,  -430,  -430,  -430,   359,  -430,   -58,
+    -430,  -119,   198
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -262
+#define YYTABLE_NINF -261
 static const yytype_int16 yytable[] =
 {
-      80,    97,   152,   220,   141,   388,   265,   183,   391,   360,
-     361,   362,   363,   447,   476,    32,   435,    19,   447,   523,
-     197,   100,   184,   464,   281,   283,   222,   466,   223,   224,
-     225,    98,   430,   386,   201,   526,   443,   226,   528,   227,
-     228,    20,   133,    21,   229,   230,   231,   386,   457,   232,
-     461,    56,   152,   142,    25,   126,   160,   161,   162,   163,
-     461,   143,   131,    27,    80,    33,   327,   436,   329,   330,
-     448,     2,     3,   157,   465,   448,   185,   233,   467,   234,
-     235,   236,   237,    56,   524,   101,     4,   387,   451,   262,
-     238,   449,   364,    51,   239,    80,   240,   355,   271,   -78,
-     527,   442,   458,   529,   462,   368,   282,   282,   371,   444,
-      61,   479,   191,   164,   543,   192,   152,   165,    28,    69,
-      70,    71,    72,   241,    73,   492,   553,   242,   166,   498,
-     243,   244,    78,   278,   493,   -41,   202,   539,   494,   279,
-     245,    80,    61,    92,   203,   204,   -22,   -20,   345,   358,
-     481,   431,   -79,    30,   433,   346,   482,   483,    93,     7,
-      39,   339,   158,    52,    40,   -45,   159,    41,    42,   306,
-      31,   540,    53,   263,  -261,   145,   147,   264,   343,   356,
-      54,    55,    35,    38,   541,    50,   267,   269,   270,   202,
-       2,     3,    65,    67,    66,   347,    86,   203,   204,   -22,
-     377,    89,    91,    52,   339,     4,    94,   123,    69,    70,
-      71,    72,    51,    73,    99,   552,   472,   125,   473,   124,
-     129,    78,   152,    45,    46,    47,    48,   130,   127,   312,
-     139,   323,   134,   148,   266,   135,   169,    69,    70,    71,
-      72,   241,    73,   170,   136,   348,    75,    76,   349,   350,
-      78,     1,   137,     2,     3,   138,   171,   452,   339,   468,
-     351,   352,   353,    74,    75,    76,    77,   268,     4,   173,
-     357,     5,   359,   175,   174,     6,   176,   475,     7,   179,
-     180,   181,    52,   182,   -46,   369,   186,   189,   372,   373,
-     212,    53,   187,   188,   380,   195,   213,   199,   210,    54,
-      55,   214,   313,   392,   392,   221,   501,   272,   503,   399,
-     273,   285,   275,   286,   287,   290,   291,   402,   311,   326,
-     328,   477,   478,    69,    70,    71,    72,   282,    73,   331,
-     306,    74,    75,    76,    77,   366,    78,   332,   367,   341,
-     551,     7,    68,   370,   374,   378,     8,   314,   315,   316,
-     317,   318,   319,   379,     9,   512,    69,    70,    71,    72,
-     516,    73,   385,   320,    74,    75,    76,    77,  -259,    78,
-     432,  -260,    69,    70,    71,    72,   429,    73,   428,   434,
-      74,    75,    76,    77,   437,    78,   439,   440,   441,   455,
-     469,    69,    70,    71,    72,   142,    73,   456,   474,    74,
-      75,    76,    77,   143,    78,   460,   392,   480,   463,   485,
-     150,   486,   549,   471,   470,   487,   488,   504,   507,   490,
-     392,   506,   514,   496,   392,   508,   499,   500,   517,   502,
-     518,   520,   521,   505,   525,   519,   522,   531,   534,   216,
-     545,   544,  -151,   546,   509,   510,  -151,   547,  -151,  -151,
-    -151,   550,    29,   246,   194,    90,   401,  -151,   397,  -151,
-    -151,   200,   149,   140,  -151,  -151,  -151,   384,   215,  -151,
-     217,    69,    70,    71,    72,   241,    73,   489,   532,   242,
-     392,   533,   243,   535,    78,   515,   454,   536,   381,   324,
-     537,   344,   538,   325,   198,   400,   288,  -151,   196,  -151,
-    -151,  -151,  -151,     0,     0,   403,     0,     0,     0,     0,
-    -151,   404,   405,     0,  -151,     0,  -151,   406,   407,   408,
-     409,   410,   411,   412,     0,     0,     0,     0,     0,     0,
-     413,   414,   415,   416,     0,     0,    52,     0,     0,  -151,
-    -151,  -151,  -151,  -151,  -151,     0,     0,  -151,     0,     0,
-    -151,  -151,  -151,     0,     0,     0,     0,     0,     0,     0,
-    -151,   293,   294,   295,   296,   297,   298,   299,   300,     0,
-     301,   302,   303,   304,   305,     0,    69,    70,    71,    72,
-      39,    73,     0,   417,   342,   418,     0,     0,    42,    78,
-     419,   420,   421,   422,   423,   424,   425,   426,    69,    70,
-      71,    72,   396,    73,     0,     0,    74,    75,    76,    77,
-       0,    78,     0,     0,     0,     0,     0,    21,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,     0,
-     113,   114,    69,    70,    71,    72,   142,    73,     0,     0,
-      74,    75,    76,    77,   143,    78,   306,     0,   307,   308,
-      69,    70,    71,    72,     0,    73,     0,     0,    74,    75,
-      76,    77,     0,    78,    69,    70,    71,    72,     0,    73,
-       0,     0,   389,    75,    76,    77,     0,    78,    69,    70,
-      71,    72,     0,    73,     0,     0,   393,    75,    76,    77,
-       0,    78,    69,    70,    71,    72,     0,    73,     0,     0,
-     491,    75,    76,    77,     0,    78,    69,    70,    71,    72,
-       0,    73,     0,     0,   497,    75,    76,    77,     0,    78,
-      69,    70,    71,    72,     0,    73,     0,     0,   336,    69,
-      70,    71,    72,    78,    73,     0,     0,   453,    69,    70,
-      71,    72,    78,    73,     0,     0,   511,     0,     0,     0,
-       0,    78
+      80,    97,   152,   220,   141,   265,   390,   183,   387,   475,
+       1,   522,     2,     3,   442,   201,   359,   360,   361,   362,
+     197,   446,   281,   184,   446,   525,   527,     4,   100,   385,
+       5,    98,    19,   434,     6,   429,     2,     3,   538,    56,
+     385,     2,     3,   133,    20,   142,    21,   160,   161,   162,
+     163,     4,   152,   143,    61,   126,     4,   456,    51,   463,
+     460,   460,   131,    51,    80,   -41,   326,   266,   328,   329,
+      32,    56,   539,    92,   157,   158,   523,   185,   447,   159,
+     -78,   447,   268,   386,   435,   540,    61,   443,    93,   262,
+     526,   528,   101,   354,   441,    80,   450,   448,   271,   363,
+       7,    27,   465,   367,   164,     8,   370,   282,   165,   478,
+     464,   457,   278,     9,   461,   542,   152,   202,   279,   166,
+      33,   552,    28,   491,     7,   203,   204,   497,    52,     7,
+     -45,    31,   480,    52,    25,   -46,    94,    53,   481,   482,
+     492,    80,    53,    30,   493,    54,    55,   344,   357,   430,
+      54,    55,   432,   466,   345,   -79,    69,    70,    71,    72,
+     338,    73,   312,   305,    74,    75,    76,    77,  -260,    78,
+      35,    69,    70,    71,    72,    38,    73,   342,   355,    74,
+      75,    76,    77,    50,    78,    65,   267,   269,   270,    39,
+      66,   263,   202,    40,   346,   264,    41,    42,    67,   376,
+     203,   204,   191,   338,    86,   192,    89,   313,   314,   315,
+     316,   317,   318,   -22,   471,    91,   472,    52,   551,   -22,
+     -20,   152,    99,   319,    45,    46,    47,    48,   123,   311,
+     124,   322,    74,    75,    76,    77,    69,    70,    71,    72,
+     241,    73,   145,   147,   347,    75,    76,   348,   349,    78,
+     125,   127,   129,   130,   134,   135,   451,   338,   467,   350,
+     351,   352,    69,    70,    71,    72,   241,    73,   136,   356,
+     242,   358,   137,   243,   138,    78,   474,   139,   222,   148,
+     223,   224,   225,   169,   368,   173,   170,   371,   372,   226,
+     171,   227,   228,   379,   174,   175,   229,   230,   231,   176,
+     179,   232,   391,   391,   180,   500,   181,   502,   398,   182,
+      69,    70,    71,    72,    39,    73,   401,   186,   341,   187,
+     476,   477,    42,    78,   189,    68,   282,   188,   195,   233,
+     212,   234,   235,   236,   237,   199,   210,   213,   214,   550,
+     221,   272,   238,   273,   284,   285,   239,   286,   240,   275,
+     289,   290,   310,   330,   511,    69,    70,    71,    72,   515,
+      73,   325,   327,    74,    75,    76,    77,   305,    78,   331,
+     365,    69,    70,    71,    72,   241,    73,   340,   366,   242,
+     369,   373,   243,   244,    78,    69,    70,    71,    72,   468,
+      73,   377,   245,    74,    75,    76,    77,   473,    78,    69,
+      70,    71,    72,   384,    73,   391,   479,   335,   378,  -258,
+     485,   548,    78,  -259,   431,   427,   433,   428,   489,   391,
+     436,   513,   495,   391,   438,   498,   499,   439,   501,   440,
+     454,   455,   504,   459,   462,   469,   470,   484,   216,   486,
+     487,  -151,   503,   508,   509,  -151,   506,  -151,  -151,  -151,
+     507,   505,   516,   518,   517,   524,  -151,   519,  -151,  -151,
+     520,   530,   533,  -151,  -151,  -151,   521,   543,  -151,   544,
+      69,    70,    71,    72,   545,    73,   546,   549,   452,   391,
+     532,   246,   534,    78,    90,   400,   535,    29,   194,   536,
+     396,   537,    69,    70,    71,    72,  -151,    73,  -151,  -151,
+    -151,  -151,   200,   149,   402,    78,   383,   140,   215,  -151,
+     403,   404,   217,  -151,   488,  -151,   405,   406,   407,   408,
+     409,   410,   411,   514,   531,   323,   380,   324,   453,   412,
+     413,   414,   415,   287,   198,    52,   343,   196,  -151,  -151,
+    -151,  -151,  -151,  -151,   399,     0,  -151,     0,     0,  -151,
+    -151,  -151,     0,     0,     0,     0,     0,     0,     0,  -151,
+     292,   293,   294,   295,   296,   297,   298,   299,     0,   300,
+     301,   302,   303,   304,     0,    69,    70,    71,    72,     0,
+      73,     0,   416,   510,   417,     0,     0,     0,    78,   418,
+     419,   420,   421,   422,   423,   424,   425,    69,    70,    71,
+      72,   142,    73,     0,     0,    74,    75,    76,    77,   143,
+      78,     0,     0,     0,     0,     0,   150,    69,    70,    71,
+      72,   395,    73,     0,     0,    74,    75,    76,    77,     0,
+      78,     0,     0,     0,     0,     0,    21,     0,     0,     0,
+       0,     0,     0,     0,     0,   305,     0,   306,   307,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+       0,   113,   114,    69,    70,    71,    72,   142,    73,     0,
+       0,    74,    75,    76,    77,   143,    78,    69,    70,    71,
+      72,     0,    73,     0,     0,   388,    75,    76,    77,     0,
+      78,    69,    70,    71,    72,     0,    73,     0,     0,   392,
+      75,    76,    77,     0,    78,    69,    70,    71,    72,     0,
+      73,     0,     0,   490,    75,    76,    77,     0,    78,    69,
+      70,    71,    72,     0,    73,     0,     0,   496,    75,    76,
+      77,     0,    78
 };
 
 static const yytype_int16 yycheck[] =
 {
-      37,    63,   130,   211,   123,   339,   222,   166,   340,    14,
-      15,    16,    17,     4,   439,    69,    69,   109,     4,     4,
-     179,    69,    69,    69,   234,   235,     8,    69,    10,    11,
-      12,    68,   366,    69,     5,     4,     9,    19,     4,    21,
-      22,   109,   101,   120,    26,    27,    28,    69,    69,    31,
-      69,    26,   180,   105,   109,    92,    48,    49,    50,    51,
-      69,   113,    99,     4,   101,   119,   274,   120,   276,   277,
-      61,     6,     7,   132,   120,    61,   123,    59,   120,    61,
-      62,    63,    64,    58,    69,   133,    21,   123,    79,   217,
-      72,    77,    97,    28,    76,   132,    78,   307,   226,    70,
-      69,   123,   123,    69,   123,   321,   234,   235,   324,    82,
-      26,   443,   109,   105,   123,   112,   244,   109,     0,   101,
-     102,   103,   104,   105,   106,   457,   551,   109,   120,   461,
-     112,   113,   114,   103,    13,     4,   107,    26,    17,   109,
-     122,   178,    58,    12,   115,   116,   109,   110,    12,   308,
-      74,   367,    70,     4,   370,    19,    80,    81,    27,    94,
-     105,   289,   105,    98,   109,   100,   109,   112,   113,   117,
-      69,    60,   107,   105,   122,   124,   125,   109,   306,   307,
-     115,   116,   121,     4,    73,     4,   223,   224,   225,   107,
-       6,     7,   109,   121,   109,    59,   105,   115,   116,   109,
-     328,     4,   100,    98,   332,    21,    75,   119,   101,   102,
-     103,   104,    28,   106,    71,   549,   432,   109,   434,   110,
-       4,   114,   350,    48,    49,    50,    51,   113,   109,   266,
-       4,   268,   122,    69,    12,   122,   109,   101,   102,   103,
-     104,   105,   106,   109,   122,   109,   110,   111,   112,   113,
-     114,     4,   122,     6,     7,   122,   109,   385,   386,   418,
-     124,   125,   126,   109,   110,   111,   112,    12,    21,   119,
-     307,    24,   309,   106,   119,    28,    98,   436,    94,   120,
-      69,   123,    98,   123,   100,   322,   123,     4,   325,   326,
-       4,   107,   123,   123,   331,   121,     4,   121,   121,   115,
-     116,    70,     8,   340,   341,     4,   465,   105,   467,   346,
-     105,     4,   109,     4,     4,   122,     4,   354,    18,    69,
-      69,   440,   441,   101,   102,   103,   104,   455,   106,   119,
-     117,   109,   110,   111,   112,   105,   114,   122,     8,   122,
-     548,    94,    71,     8,   105,   105,    99,    53,    54,    55,
-      56,    57,    58,   105,   107,   483,   101,   102,   103,   104,
-     488,   106,    18,    69,   109,   110,   111,   112,   122,   114,
-       8,   122,   101,   102,   103,   104,   122,   106,   121,     8,
-     109,   110,   111,   112,    97,   114,    69,   119,   119,   119,
-     427,   101,   102,   103,   104,   105,   106,    18,   435,   109,
-     110,   111,   112,   113,   114,    18,   443,   444,    69,     4,
-     120,   448,   540,   109,   119,     4,    18,   121,   121,   456,
-     457,   123,   484,   460,   461,     4,   463,   464,   122,   466,
-      18,    18,   121,   470,     4,   122,   121,     4,   109,     1,
-       4,   123,     4,     4,   481,   482,     8,     4,    10,    11,
-      12,     4,    11,   217,   174,    58,   350,    19,   346,    21,
-      22,   184,   128,   121,    26,    27,    28,   335,   207,    31,
-     208,   101,   102,   103,   104,   105,   106,   455,   517,   109,
-     517,   518,   112,   520,   114,   486,   386,   524,   332,   269,
-     527,   306,   529,   269,   180,   347,   244,    59,   178,    61,
-      62,    63,    64,    -1,    -1,    40,    -1,    -1,    -1,    -1,
-      72,    46,    47,    -1,    76,    -1,    78,    52,    53,    54,
-      55,    56,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,
-      65,    66,    67,    68,    -1,    -1,    98,    -1,    -1,   101,
-     102,   103,   104,   105,   106,    -1,    -1,   109,    -1,    -1,
-     112,   113,   114,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     122,    32,    33,    34,    35,    36,    37,    38,    39,    -1,
-      41,    42,    43,    44,    45,    -1,   101,   102,   103,   104,
-     105,   106,    -1,   118,   109,   120,    -1,    -1,   113,   114,
-     125,   126,   127,   128,   129,   130,   131,   132,   101,   102,
-     103,   104,   105,   106,    -1,    -1,   109,   110,   111,   112,
-      -1,   114,    -1,    -1,    -1,    -1,    -1,   120,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    -1,
-      95,    96,   101,   102,   103,   104,   105,   106,    -1,    -1,
-     109,   110,   111,   112,   113,   114,   117,    -1,   119,   120,
-     101,   102,   103,   104,    -1,   106,    -1,    -1,   109,   110,
-     111,   112,    -1,   114,   101,   102,   103,   104,    -1,   106,
-      -1,    -1,   109,   110,   111,   112,    -1,   114,   101,   102,
-     103,   104,    -1,   106,    -1,    -1,   109,   110,   111,   112,
-      -1,   114,   101,   102,   103,   104,    -1,   106,    -1,    -1,
-     109,   110,   111,   112,    -1,   114,   101,   102,   103,   104,
-      -1,   106,    -1,    -1,   109,   110,   111,   112,    -1,   114,
-     101,   102,   103,   104,    -1,   106,    -1,    -1,   109,   101,
-     102,   103,   104,   114,   106,    -1,    -1,   109,   101,   102,
-     103,   104,   114,   106,    -1,    -1,   109,    -1,    -1,    -1,
-      -1,   114
+      37,    63,   130,   211,   123,   222,   339,   166,   338,   438,
+       4,     4,     6,     7,     9,     5,    14,    15,    16,    17,
+     179,     4,   235,    69,     4,     4,     4,    21,    69,    69,
+      24,    68,   109,    69,    28,   365,     6,     7,    26,    26,
+      69,     6,     7,   101,   109,   105,   120,    48,    49,    50,
+      51,    21,   180,   113,    26,    92,    21,    69,    28,    69,
+      69,    69,    99,    28,   101,     4,   274,    12,   276,   277,
+      69,    58,    60,    12,   132,   105,    69,   123,    61,   109,
+      70,    61,    12,   123,   120,    73,    58,    82,    27,   217,
+      69,    69,   133,   306,   123,   132,    79,    77,   226,    97,
+      94,     4,    69,   320,   105,    99,   323,   235,   109,   442,
+     120,   123,   103,   107,   123,   123,   244,   107,   109,   120,
+     119,   550,     0,   456,    94,   115,   116,   460,    98,    94,
+     100,    69,    74,    98,   109,   100,    75,   107,    80,    81,
+      13,   178,   107,     4,    17,   115,   116,    12,   307,   366,
+     115,   116,   369,   120,    19,    70,   101,   102,   103,   104,
+     288,   106,     8,   117,   109,   110,   111,   112,   122,   114,
+     121,   101,   102,   103,   104,     4,   106,   305,   306,   109,
+     110,   111,   112,     4,   114,   109,   223,   224,   225,   105,
+     109,   105,   107,   109,    59,   109,   112,   113,   121,   327,
+     115,   116,   109,   331,   105,   112,     4,    53,    54,    55,
+      56,    57,    58,   109,   431,   100,   433,    98,   548,   109,
+     110,   349,    71,    69,    48,    49,    50,    51,   119,   266,
+     110,   268,   109,   110,   111,   112,   101,   102,   103,   104,
+     105,   106,   124,   125,   109,   110,   111,   112,   113,   114,
+     109,   109,     4,   113,   122,   122,   384,   385,   417,   124,
+     125,   126,   101,   102,   103,   104,   105,   106,   122,   306,
+     109,   308,   122,   112,   122,   114,   435,     4,     8,    69,
+      10,    11,    12,   109,   321,   119,   109,   324,   325,    19,
+     109,    21,    22,   330,   119,   106,    26,    27,    28,    98,
+     120,    31,   339,   340,    69,   464,   123,   466,   345,   123,
+     101,   102,   103,   104,   105,   106,   353,   123,   109,   123,
+     439,   440,   113,   114,     4,    71,   454,   123,   121,    59,
+       4,    61,    62,    63,    64,   121,   121,     4,    70,   547,
+       4,   105,    72,   105,     4,     4,    76,     4,    78,   109,
+     122,     4,    18,   119,   482,   101,   102,   103,   104,   487,
+     106,    69,    69,   109,   110,   111,   112,   117,   114,   122,
+     105,   101,   102,   103,   104,   105,   106,   122,     8,   109,
+       8,   105,   112,   113,   114,   101,   102,   103,   104,   426,
+     106,   105,   122,   109,   110,   111,   112,   434,   114,   101,
+     102,   103,   104,    18,   106,   442,   443,   109,   105,   122,
+     447,   539,   114,   122,     8,   121,     8,   122,   455,   456,
+      97,   483,   459,   460,    69,   462,   463,   119,   465,   119,
+     119,    18,   469,    18,    69,   119,   109,     4,     1,     4,
+      18,     4,   121,   480,   481,     8,   121,    10,    11,    12,
+       4,   123,   122,   122,    18,     4,    19,    18,    21,    22,
+     121,     4,   109,    26,    27,    28,   121,   123,    31,     4,
+     101,   102,   103,   104,     4,   106,     4,     4,   109,   516,
+     517,   217,   519,   114,    58,   349,   523,    11,   174,   526,
+     345,   528,   101,   102,   103,   104,    59,   106,    61,    62,
+      63,    64,   184,   128,    40,   114,   334,   121,   207,    72,
+      46,    47,   208,    76,   454,    78,    52,    53,    54,    55,
+      56,    57,    58,   485,   516,   269,   331,   269,   385,    65,
+      66,    67,    68,   244,   180,    98,   305,   178,   101,   102,
+     103,   104,   105,   106,   346,    -1,   109,    -1,    -1,   112,
+     113,   114,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   122,
+      32,    33,    34,    35,    36,    37,    38,    39,    -1,    41,
+      42,    43,    44,    45,    -1,   101,   102,   103,   104,    -1,
+     106,    -1,   118,   109,   120,    -1,    -1,    -1,   114,   125,
+     126,   127,   128,   129,   130,   131,   132,   101,   102,   103,
+     104,   105,   106,    -1,    -1,   109,   110,   111,   112,   113,
+     114,    -1,    -1,    -1,    -1,    -1,   120,   101,   102,   103,
+     104,   105,   106,    -1,    -1,   109,   110,   111,   112,    -1,
+     114,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   117,    -1,   119,   120,    83,
+      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      -1,    95,    96,   101,   102,   103,   104,   105,   106,    -1,
+      -1,   109,   110,   111,   112,   113,   114,   101,   102,   103,
+     104,    -1,   106,    -1,    -1,   109,   110,   111,   112,    -1,
+     114,   101,   102,   103,   104,    -1,   106,    -1,    -1,   109,
+     110,   111,   112,    -1,   114,   101,   102,   103,   104,    -1,
+     106,    -1,    -1,   109,   110,   111,   112,    -1,   114,   101,
+     102,   103,   104,    -1,   106,    -1,    -1,   109,   110,   111,
+     112,    -1,   114
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -2021,34 +2016,34 @@
      195,   197,   209,   215,   219,   221,   223,   224,   225,   233,
      234,   235,   238,   105,   109,   244,    12,   246,    12,   246,
      246,   238,   105,   105,   210,   109,   211,   212,   103,   109,
-     256,   225,   238,   225,   220,     4,     4,     4,   239,   216,
-     122,     4,   226,    32,    33,    34,    35,    36,    37,    38,
-      39,    41,    42,    43,    44,    45,   117,   119,   120,   222,
-     187,    18,   246,     8,    53,    54,    55,    56,    57,    58,
-      69,   236,   237,   246,   236,   237,    69,   213,    69,   213,
-     213,   119,   122,   175,   190,   192,   109,   231,   232,   238,
-     196,   122,   109,   238,   243,    12,    19,    59,   109,   112,
-     113,   124,   125,   126,   217,   225,   238,   246,   247,   246,
-      14,    15,    16,    17,    97,   188,   105,     8,   244,   246,
-       8,   244,   246,   246,   105,   206,   207,   238,   105,   105,
-     246,   232,   182,   193,   193,    18,    69,   123,   187,   109,
-     198,   228,   246,   109,   227,   228,   105,   157,   214,   246,
-     256,   152,   246,    40,    46,    47,    52,    53,    54,    55,
-      56,    57,    58,    65,    66,    67,    68,   118,   120,   125,
-     126,   127,   128,   129,   130,   131,   132,   218,   121,   122,
-     187,   244,     8,   244,     8,    69,   120,    97,   208,    69,
-     119,   119,   123,     9,    82,   177,   183,     4,    61,    77,
-     194,    79,   238,   109,   231,   119,    18,    69,   123,   229,
-      18,    69,   123,    69,    69,   120,    69,   120,   247,   246,
-     119,   109,   244,   244,   246,   247,   207,   255,   255,   228,
-     246,    74,    80,    81,   181,     4,   246,     4,    18,   224,
-     246,   109,   228,    13,    17,   230,   246,   109,   228,   246,
-     246,   247,   246,   247,   121,   246,   123,   121,     4,   246,
-     246,   109,   238,   176,   204,   229,   238,   122,    18,   122,
-      18,   121,   121,     4,    69,     4,     4,    69,     4,    69,
-     184,     4,   227,   246,   109,   246,   246,   246,   246,    26,
-      60,    73,   185,   123,   123,     4,     4,     4,   186,   238,
-       4,   213,   187,   207
+     256,   225,   238,   220,     4,     4,     4,   239,   216,   122,
+       4,   226,    32,    33,    34,    35,    36,    37,    38,    39,
+      41,    42,    43,    44,    45,   117,   119,   120,   222,   187,
+      18,   246,     8,    53,    54,    55,    56,    57,    58,    69,
+     236,   237,   246,   236,   237,    69,   213,    69,   213,   213,
+     119,   122,   175,   190,   192,   109,   231,   232,   238,   196,
+     122,   109,   238,   243,    12,    19,    59,   109,   112,   113,
+     124,   125,   126,   217,   225,   238,   246,   247,   246,    14,
+      15,    16,    17,    97,   188,   105,     8,   244,   246,     8,
+     244,   246,   246,   105,   206,   207,   238,   105,   105,   246,
+     232,   182,   193,   193,    18,    69,   123,   187,   109,   198,
+     228,   246,   109,   227,   228,   105,   157,   214,   246,   256,
+     152,   246,    40,    46,    47,    52,    53,    54,    55,    56,
+      57,    58,    65,    66,    67,    68,   118,   120,   125,   126,
+     127,   128,   129,   130,   131,   132,   218,   121,   122,   187,
+     244,     8,   244,     8,    69,   120,    97,   208,    69,   119,
+     119,   123,     9,    82,   177,   183,     4,    61,    77,   194,
+      79,   238,   109,   231,   119,    18,    69,   123,   229,    18,
+      69,   123,    69,    69,   120,    69,   120,   247,   246,   119,
+     109,   244,   244,   246,   247,   207,   255,   255,   228,   246,
+      74,    80,    81,   181,     4,   246,     4,    18,   224,   246,
+     109,   228,    13,    17,   230,   246,   109,   228,   246,   246,
+     247,   246,   247,   121,   246,   123,   121,     4,   246,   246,
+     109,   238,   176,   204,   229,   238,   122,    18,   122,    18,
+     121,   121,     4,    69,     4,     4,    69,     4,    69,   184,
+       4,   227,   246,   109,   246,   246,   246,   246,    26,    60,
+      73,   185,   123,   123,     4,     4,     4,   186,   238,     4,
+     213,   187,   207
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -3913,21 +3908,12 @@
     break;
 
   case 176:
-#line 1531 "compilers/imcc/imcc.y"
-    {
-           (yyval.i) = NULL;
-           IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
-           IMCC_INFO(interp)->cur_call = NULL;
-         }
-    break;
-
-  case 177:
-#line 1536 "compilers/imcc/imcc.y"
+#line 1528 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
-  case 178:
-#line 1538 "compilers/imcc/imcc.y"
+  case 177:
+#line 1530 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -3941,48 +3927,48 @@
          }
     break;
 
-  case 179:
-#line 1549 "compilers/imcc/imcc.y"
+  case 178:
+#line 1541 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
-  case 180:
-#line 1550 "compilers/imcc/imcc.y"
+  case 179:
+#line 1542 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
-  case 181:
-#line 1551 "compilers/imcc/imcc.y"
+  case 180:
+#line 1543 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 184:
-#line 1554 "compilers/imcc/imcc.y"
+  case 183:
+#line 1546 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
-  case 185:
-#line 1558 "compilers/imcc/imcc.y"
+  case 184:
+#line 1550 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; }
     break;
 
-  case 186:
-#line 1559 "compilers/imcc/imcc.y"
+  case 185:
+#line 1551 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; }
     break;
 
-  case 187:
-#line 1560 "compilers/imcc/imcc.y"
+  case 186:
+#line 1552 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; }
     break;
 
-  case 188:
-#line 1561 "compilers/imcc/imcc.y"
+  case 187:
+#line 1553 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; }
     break;
 
-  case 189:
-#line 1566 "compilers/imcc/imcc.y"
+  case 188:
+#line 1558 "compilers/imcc/imcc.y"
     {
            /* there'd normally be a str_dup() here, but the lexer already
             * copied the string, so it's safe to use directly */
@@ -3994,98 +3980,98 @@
          }
     break;
 
-  case 190:
-#line 1579 "compilers/imcc/imcc.y"
+  case 189:
+#line 1571 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  }
     break;
 
-  case 191:
-#line 1581 "compilers/imcc/imcc.y"
+  case 190:
+#line 1573 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  }
     break;
 
-  case 192:
-#line 1583 "compilers/imcc/imcc.y"
+  case 191:
+#line 1575 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));  }
     break;
 
-  case 193:
-#line 1585 "compilers/imcc/imcc.y"
+  case 192:
+#line 1577 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); }
     break;
 
-  case 194:
-#line 1587 "compilers/imcc/imcc.y"
+  case 193:
+#line 1579 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 195:
-#line 1589 "compilers/imcc/imcc.y"
+  case 194:
+#line 1581 "compilers/imcc/imcc.y"
     { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].s), (yyvsp[(6) - (6)].sr), 1); }
     break;
 
-  case 196:
-#line 1591 "compilers/imcc/imcc.y"
+  case 195:
+#line 1583 "compilers/imcc/imcc.y"
     { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); }
     break;
 
-  case 197:
-#line 1593 "compilers/imcc/imcc.y"
+  case 196:
+#line 1585 "compilers/imcc/imcc.y"
     { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].s), NULL, 1); }
     break;
 
-  case 198:
-#line 1595 "compilers/imcc/imcc.y"
+  case 197:
+#line 1587 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
-  case 199:
-#line 1597 "compilers/imcc/imcc.y"
+  case 198:
+#line 1589 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
-  case 200:
-#line 1599 "compilers/imcc/imcc.y"
+  case 199:
+#line 1591 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 201:
-#line 1601 "compilers/imcc/imcc.y"
+  case 200:
+#line 1593 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 202:
-#line 1603 "compilers/imcc/imcc.y"
+  case 201:
+#line 1595 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); }
     break;
 
-  case 203:
-#line 1605 "compilers/imcc/imcc.y"
+  case 202:
+#line 1597 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "find_global", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));}
     break;
 
-  case 204:
-#line 1607 "compilers/imcc/imcc.y"
+  case 203:
+#line 1599 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "store_global", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
-  case 205:
-#line 1611 "compilers/imcc/imcc.y"
+  case 204:
+#line 1603 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
-  case 206:
-#line 1613 "compilers/imcc/imcc.y"
+  case 205:
+#line 1605 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 207:
-#line 1615 "compilers/imcc/imcc.y"
+  case 206:
+#line 1607 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); }
     break;
 
-  case 208:
-#line 1618 "compilers/imcc/imcc.y"
+  case 207:
+#line 1610 "compilers/imcc/imcc.y"
     {
            add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4093,160 +4079,160 @@
          }
     break;
 
-  case 209:
-#line 1624 "compilers/imcc/imcc.y"
+  case 208:
+#line 1616 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
          }
     break;
 
-  case 210:
-#line 1628 "compilers/imcc/imcc.y"
+  case 209:
+#line 1620 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
          }
     break;
 
-  case 214:
-#line 1636 "compilers/imcc/imcc.y"
+  case 213:
+#line 1628 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
          }
     break;
 
-  case 215:
-#line 1643 "compilers/imcc/imcc.y"
+  case 214:
+#line 1635 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
-  case 216:
-#line 1644 "compilers/imcc/imcc.y"
+  case 215:
+#line 1636 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
-  case 217:
-#line 1645 "compilers/imcc/imcc.y"
+  case 216:
+#line 1637 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
-  case 218:
-#line 1649 "compilers/imcc/imcc.y"
+  case 217:
+#line 1641 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 219:
-#line 1650 "compilers/imcc/imcc.y"
+  case 218:
+#line 1642 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
-  case 220:
-#line 1651 "compilers/imcc/imcc.y"
+  case 219:
+#line 1643 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 221:
-#line 1652 "compilers/imcc/imcc.y"
+  case 220:
+#line 1644 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
-  case 222:
-#line 1653 "compilers/imcc/imcc.y"
+  case 221:
+#line 1645 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 223:
-#line 1654 "compilers/imcc/imcc.y"
+  case 222:
+#line 1646 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 224:
-#line 1655 "compilers/imcc/imcc.y"
+  case 223:
+#line 1647 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
-  case 225:
-#line 1656 "compilers/imcc/imcc.y"
+  case 224:
+#line 1648 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 226:
-#line 1657 "compilers/imcc/imcc.y"
+  case 225:
+#line 1649 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
-  case 227:
-#line 1658 "compilers/imcc/imcc.y"
+  case 226:
+#line 1650 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
-  case 228:
-#line 1659 "compilers/imcc/imcc.y"
+  case 227:
+#line 1651 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
-  case 229:
-#line 1660 "compilers/imcc/imcc.y"
+  case 228:
+#line 1652 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
-  case 230:
-#line 1661 "compilers/imcc/imcc.y"
+  case 229:
+#line 1653 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
-  case 231:
-#line 1662 "compilers/imcc/imcc.y"
+  case 230:
+#line 1654 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
-  case 232:
-#line 1663 "compilers/imcc/imcc.y"
+  case 231:
+#line 1655 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 233:
-#line 1664 "compilers/imcc/imcc.y"
+  case 232:
+#line 1656 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 234:
-#line 1665 "compilers/imcc/imcc.y"
+  case 233:
+#line 1657 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 235:
-#line 1666 "compilers/imcc/imcc.y"
+  case 234:
+#line 1658 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
-  case 236:
-#line 1667 "compilers/imcc/imcc.y"
+  case 235:
+#line 1659 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
-  case 237:
-#line 1668 "compilers/imcc/imcc.y"
+  case 236:
+#line 1660 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
-  case 238:
-#line 1669 "compilers/imcc/imcc.y"
+  case 237:
+#line 1661 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
-  case 239:
-#line 1670 "compilers/imcc/imcc.y"
+  case 238:
+#line 1662 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 240:
-#line 1671 "compilers/imcc/imcc.y"
+  case 239:
+#line 1663 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 241:
-#line 1677 "compilers/imcc/imcc.y"
+  case 240:
+#line 1669 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
@@ -4254,85 +4240,85 @@
          }
     break;
 
-  case 242:
-#line 1682 "compilers/imcc/imcc.y"
+  case 241:
+#line 1674 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
-  case 243:
-#line 1689 "compilers/imcc/imcc.y"
+  case 242:
+#line 1681 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
          }
     break;
 
-  case 244:
-#line 1695 "compilers/imcc/imcc.y"
+  case 243:
+#line 1687 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
-  case 245:
-#line 1696 "compilers/imcc/imcc.y"
+  case 244:
+#line 1688 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 246:
-#line 1697 "compilers/imcc/imcc.y"
+  case 245:
+#line 1689 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 247:
-#line 1698 "compilers/imcc/imcc.y"
+  case 246:
+#line 1690 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
-  case 248:
-#line 1699 "compilers/imcc/imcc.y"
+  case 247:
+#line 1691 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 249:
-#line 1700 "compilers/imcc/imcc.y"
+  case 248:
+#line 1692 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 250:
-#line 1701 "compilers/imcc/imcc.y"
+  case 249:
+#line 1693 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 251:
-#line 1702 "compilers/imcc/imcc.y"
+  case 250:
+#line 1694 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
-  case 252:
-#line 1703 "compilers/imcc/imcc.y"
+  case 251:
+#line 1695 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 253:
-#line 1704 "compilers/imcc/imcc.y"
+  case 252:
+#line 1696 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 254:
-#line 1705 "compilers/imcc/imcc.y"
+  case 253:
+#line 1697 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 255:
-#line 1706 "compilers/imcc/imcc.y"
+  case 254:
+#line 1698 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 256:
-#line 1707 "compilers/imcc/imcc.y"
+  case 255:
+#line 1699 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 257:
-#line 1713 "compilers/imcc/imcc.y"
+  case 256:
+#line 1705 "compilers/imcc/imcc.y"
     {
         (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
                       IMCC_INFO(interp) -> regs,
@@ -4342,23 +4328,23 @@
        }
     break;
 
-  case 258:
-#line 1723 "compilers/imcc/imcc.y"
+  case 257:
+#line 1715 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 259:
-#line 1724 "compilers/imcc/imcc.y"
+  case 258:
+#line 1716 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 260:
-#line 1725 "compilers/imcc/imcc.y"
+  case 259:
+#line 1717 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 261:
-#line 1727 "compilers/imcc/imcc.y"
+  case 260:
+#line 1719 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -4366,44 +4352,44 @@
          }
     break;
 
-  case 262:
-#line 1732 "compilers/imcc/imcc.y"
+  case 261:
+#line 1724 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
-  case 263:
-#line 1734 "compilers/imcc/imcc.y"
+  case 262:
+#line 1726 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
            mem_sys_free((yyvsp[(3) - (3)].s));
          }
     break;
 
-  case 264:
-#line 1738 "compilers/imcc/imcc.y"
+  case 263:
+#line 1730 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
-  case 265:
-#line 1744 "compilers/imcc/imcc.y"
+  case 264:
+#line 1736 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
          }
     break;
 
-  case 266:
-#line 1748 "compilers/imcc/imcc.y"
+  case 265:
+#line 1740 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
-  case 267:
-#line 1752 "compilers/imcc/imcc.y"
+  case 266:
+#line 1744 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 268:
-#line 1754 "compilers/imcc/imcc.y"
+  case 267:
+#line 1746 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4415,8 +4401,8 @@
          }
     break;
 
-  case 269:
-#line 1764 "compilers/imcc/imcc.y"
+  case 268:
+#line 1756 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4428,8 +4414,8 @@
          }
     break;
 
-  case 270:
-#line 1774 "compilers/imcc/imcc.y"
+  case 269:
+#line 1766 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
@@ -4437,8 +4423,8 @@
          }
     break;
 
-  case 271:
-#line 1780 "compilers/imcc/imcc.y"
+  case 270:
+#line 1772 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
@@ -4446,43 +4432,43 @@
          }
     break;
 
-  case 272:
-#line 1788 "compilers/imcc/imcc.y"
+  case 271:
+#line 1780 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 273:
-#line 1792 "compilers/imcc/imcc.y"
+  case 272:
+#line 1784 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 274:
-#line 1793 "compilers/imcc/imcc.y"
+  case 273:
+#line 1785 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
-  case 275:
-#line 1797 "compilers/imcc/imcc.y"
+  case 274:
+#line 1789 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT; }
     break;
 
-  case 276:
-#line 1798 "compilers/imcc/imcc.y"
+  case 275:
+#line 1790 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
-  case 277:
-#line 1801 "compilers/imcc/imcc.y"
+  case 276:
+#line 1793 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
-  case 278:
-#line 1805 "compilers/imcc/imcc.y"
+  case 277:
+#line 1797 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 279:
-#line 1810 "compilers/imcc/imcc.y"
+  case 278:
+#line 1802 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4494,16 +4480,16 @@
          }
     break;
 
-  case 280:
-#line 1820 "compilers/imcc/imcc.y"
+  case 279:
+#line 1812 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
            mem_sys_free((yyvsp[(3) - (5)].s));
          }
     break;
 
-  case 281:
-#line 1825 "compilers/imcc/imcc.y"
+  case 280:
+#line 1817 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4515,133 +4501,133 @@
          }
     break;
 
-  case 282:
-#line 1835 "compilers/imcc/imcc.y"
+  case 281:
+#line 1827 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
            mem_sys_free((yyvsp[(1) - (3)].s));
          }
     break;
 
-  case 283:
-#line 1839 "compilers/imcc/imcc.y"
+  case 282:
+#line 1831 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 284:
-#line 1843 "compilers/imcc/imcc.y"
+  case 283:
+#line 1835 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 285:
-#line 1844 "compilers/imcc/imcc.y"
+  case 284:
+#line 1836 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 286:
-#line 1849 "compilers/imcc/imcc.y"
+  case 285:
+#line 1841 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
          }
     break;
 
-  case 287:
-#line 1853 "compilers/imcc/imcc.y"
+  case 286:
+#line 1845 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
          }
     break;
 
-  case 288:
-#line 1857 "compilers/imcc/imcc.y"
+  case 287:
+#line 1849 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
          }
     break;
 
-  case 289:
-#line 1864 "compilers/imcc/imcc.y"
+  case 288:
+#line 1856 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
          }
     break;
 
-  case 290:
-#line 1868 "compilers/imcc/imcc.y"
+  case 289:
+#line 1860 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
          }
     break;
 
-  case 291:
-#line 1872 "compilers/imcc/imcc.y"
+  case 290:
+#line 1864 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
          }
     break;
 
-  case 292:
-#line 1878 "compilers/imcc/imcc.y"
+  case 291:
+#line 1870 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 293:
-#line 1879 "compilers/imcc/imcc.y"
+  case 292:
+#line 1871 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 294:
-#line 1883 "compilers/imcc/imcc.y"
+  case 293:
+#line 1875 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
-  case 295:
-#line 1884 "compilers/imcc/imcc.y"
+  case 294:
+#line 1876 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
-  case 296:
-#line 1885 "compilers/imcc/imcc.y"
+  case 295:
+#line 1877 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
-  case 297:
-#line 1886 "compilers/imcc/imcc.y"
+  case 296:
+#line 1878 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
-  case 298:
-#line 1887 "compilers/imcc/imcc.y"
+  case 297:
+#line 1879 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
-  case 299:
-#line 1888 "compilers/imcc/imcc.y"
+  case 298:
+#line 1880 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
-  case 302:
-#line 1897 "compilers/imcc/imcc.y"
+  case 301:
+#line 1889 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
-  case 303:
-#line 1898 "compilers/imcc/imcc.y"
+  case 302:
+#line 1890 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 304:
-#line 1902 "compilers/imcc/imcc.y"
+  case 303:
+#line 1894 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
-  case 306:
-#line 1907 "compilers/imcc/imcc.y"
+  case 305:
+#line 1899 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 307:
-#line 1909 "compilers/imcc/imcc.y"
+  case 306:
+#line 1901 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
            IMCC_INFO(interp) -> keyvec |= KEY_BIT(IMCC_INFO(interp)->nargs);
@@ -4650,54 +4636,54 @@
          }
     break;
 
-  case 308:
-#line 1916 "compilers/imcc/imcc.y"
+  case 307:
+#line 1908 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
          }
     break;
 
-  case 310:
-#line 1923 "compilers/imcc/imcc.y"
+  case 309:
+#line 1915 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 311:
-#line 1924 "compilers/imcc/imcc.y"
+  case 310:
+#line 1916 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 312:
-#line 1928 "compilers/imcc/imcc.y"
+  case 311:
+#line 1920 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 313:
-#line 1929 "compilers/imcc/imcc.y"
+  case 312:
+#line 1921 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 314:
-#line 1933 "compilers/imcc/imcc.y"
+  case 313:
+#line 1925 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 315:
-#line 1934 "compilers/imcc/imcc.y"
+  case 314:
+#line 1926 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 320:
-#line 1948 "compilers/imcc/imcc.y"
+  case 319:
+#line 1940 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
            IMCC_INFO(interp)->in_slice = 0;
          }
     break;
 
-  case 321:
-#line 1953 "compilers/imcc/imcc.y"
+  case 320:
+#line 1945 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -4705,16 +4691,16 @@
          }
     break;
 
-  case 322:
-#line 1961 "compilers/imcc/imcc.y"
+  case 321:
+#line 1953 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
            IMCC_INFO(interp)->in_slice = 0;
          }
     break;
 
-  case 323:
-#line 1966 "compilers/imcc/imcc.y"
+  case 322:
+#line 1958 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -4722,34 +4708,34 @@
          }
     break;
 
-  case 324:
-#line 1974 "compilers/imcc/imcc.y"
+  case 323:
+#line 1966 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 325:
-#line 1976 "compilers/imcc/imcc.y"
+  case 324:
+#line 1968 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
            (yyval.sr) = IMCC_INFO(interp)->keys[0];
          }
     break;
 
-  case 326:
-#line 1980 "compilers/imcc/imcc.y"
+  case 325:
+#line 1972 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->in_slice = 1; }
     break;
 
-  case 327:
-#line 1982 "compilers/imcc/imcc.y"
+  case 326:
+#line 1974 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(4) - (4)].sr);
            (yyval.sr) = IMCC_INFO(interp)->keys[0];
          }
     break;
 
-  case 328:
-#line 1990 "compilers/imcc/imcc.y"
+  case 327:
+#line 1982 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->in_slice)
                (yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE;
@@ -4757,8 +4743,8 @@
          }
     break;
 
-  case 329:
-#line 1996 "compilers/imcc/imcc.y"
+  case 328:
+#line 1988 "compilers/imcc/imcc.y"
     {
            (yyvsp[(1) - (3)].sr)->type |= VT_START_SLICE;
            (yyvsp[(3) - (3)].sr)->type |= VT_END_SLICE;
@@ -4767,74 +4753,74 @@
          }
     break;
 
-  case 330:
-#line 2002 "compilers/imcc/imcc.y"
+  case 329:
+#line 1994 "compilers/imcc/imcc.y"
     { (yyvsp[(2) - (2)].sr)->type |= VT_START_ZERO | VT_END_SLICE; (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
-  case 331:
-#line 2003 "compilers/imcc/imcc.y"
+  case 330:
+#line 1995 "compilers/imcc/imcc.y"
     { (yyvsp[(1) - (2)].sr)->type |= VT_START_SLICE | VT_END_INF; (yyval.sr) = (yyvsp[(1) - (2)].sr); }
     break;
 
-  case 332:
-#line 2007 "compilers/imcc/imcc.y"
+  case 331:
+#line 1999 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
-  case 333:
-#line 2008 "compilers/imcc/imcc.y"
+  case 332:
+#line 2000 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
-  case 334:
-#line 2009 "compilers/imcc/imcc.y"
+  case 333:
+#line 2001 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
-  case 335:
-#line 2010 "compilers/imcc/imcc.y"
+  case 334:
+#line 2002 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
-  case 336:
-#line 2011 "compilers/imcc/imcc.y"
+  case 335:
+#line 2003 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 337:
-#line 2015 "compilers/imcc/imcc.y"
+  case 336:
+#line 2007 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 338:
-#line 2016 "compilers/imcc/imcc.y"
+  case 337:
+#line 2008 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 339:
-#line 2017 "compilers/imcc/imcc.y"
+  case 338:
+#line 2009 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 340:
-#line 2018 "compilers/imcc/imcc.y"
+  case 339:
+#line 2010 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 341:
-#line 2022 "compilers/imcc/imcc.y"
+  case 340:
+#line 2014 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 342:
-#line 2023 "compilers/imcc/imcc.y"
+  case 341:
+#line 2015 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S');  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 4827 "compilers/imcc/imcparser.c"
+#line 4813 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5048,7 +5034,7 @@
 }
 
 
-#line 2028 "compilers/imcc/imcc.y"
+#line 2020 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About