[svn:parrot] r38274 - in trunk: compilers/imcc t/compilers/imcc/syn

coke at svn.parrot.org coke at svn.parrot.org
Wed Apr 22 19:57:37 UTC 2009


Author: coke
Date: Wed Apr 22 19:57:35 2009
New Revision: 38274
URL: https://trac.parrot.org/parrot/changeset/38274

Log:
[imcc] - allow unicode lexical identifiers. (Fix TT #575)

Modified:
   trunk/compilers/imcc/imcc.y
   trunk/compilers/imcc/imcparser.c
   trunk/compilers/imcc/imcparser.h
   trunk/t/compilers/imcc/syn/regressions.t

Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y	Wed Apr 22 19:14:46 2009	(r38273)
+++ trunk/compilers/imcc/imcc.y	Wed Apr 22 19:57:35 2009	(r38274)
@@ -5,7 +5,7 @@
  * Intermediate Code Compiler for Parrot.
  *
  * Copyright (C) 2002 Melvin Smith <melvin.smith at mindspring.com>
- * Copyright (C) 2002-2008, Parrot Foundation.
+ * Copyright (C) 2002-2009, Parrot Foundation.
  *
  * Grammar of the PIR language parser.
  *
@@ -227,11 +227,12 @@
 
 static void set_lexical(PARROT_INTERP,
     ARGMOD(SymReg *r),
-    ARGIN(const char *name))
+    ARGMOD(SymReg *name))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
-        FUNC_MODIFIES(*r);
+        FUNC_MODIFIES(*r)
+        FUNC_MODIFIES(*name);
 
 #define ASSERT_ARGS_add_pcc_named_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
@@ -836,30 +837,30 @@
 
 /*
 
-=item C<static void set_lexical(PARROT_INTERP, SymReg *r, const char *name)>
+=item C<static void set_lexical(PARROT_INTERP, SymReg *r, SymReg *name)>
 
 =cut
 
 */
 
 static void
-set_lexical(PARROT_INTERP, ARGMOD(SymReg *r), ARGIN(const char *name))
+set_lexical(PARROT_INTERP, ARGMOD(SymReg *r), ARGMOD(SymReg *name))
 {
     ASSERT_ARGS(set_lexical)
-    SymReg * const n = mk_const(interp, name, 'S');
 
     r->usage |= U_LEXICAL;
 
-    if (n == r->reg)
+    if (name == r->reg)
         IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
-            "register %s already declared as lexical %s", r->name, n->name);
+            "register %s already declared as lexical %s", r->name, name->name);
 
     /* chain all names in r->reg */
-    n->reg = r->reg;
-    r->reg = n;
+    name->reg = r->reg;
+    r->reg = name;
     r->use_count++;
 }
 
+
 /*
 
 =item C<static void add_pcc_named_arg(PARROT_INTERP, SymReg *cur_call, const
@@ -1245,7 +1246,8 @@
    | LEXICAL STRINGC COMMA REG
          {
            SymReg *r = mk_pasm_reg(interp, $4);
-           set_lexical(interp, r, $2);
+           SymReg *n = mk_const(interp, $2, 'S');
+           set_lexical(interp, r, n);
            $$ = 0;
            mem_sys_free($2);
            mem_sys_free($4);
@@ -1866,7 +1868,13 @@
          }
    | LEXICAL STRINGC COMMA target
          {
-           set_lexical(interp, $4, $2); $$ = 0;
+           SymReg *n = mk_const(interp, $2, 'S');
+           set_lexical(interp, $4, n); $$ = 0;
+         }
+   | LEXICAL USTRINGC COMMA target
+         {
+           SymReg *n = mk_const(interp, $2, 'U');
+           set_lexical(interp, $4, n); $$ = 0;
          }
    | CONST { pesky_global__is_def=1; } type IDENTIFIER '=' const
          {

Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c	Wed Apr 22 19:14:46 2009	(r38273)
+++ trunk/compilers/imcc/imcparser.c	Wed Apr 22 19:57:35 2009	(r38274)
@@ -551,11 +551,12 @@
 
 static void set_lexical(PARROT_INTERP,
     ARGMOD(SymReg *r),
-    ARGIN(const char *name))
+    ARGMOD(SymReg *name))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
-        FUNC_MODIFIES(*r);
+        FUNC_MODIFIES(*r)
+        FUNC_MODIFIES(*name);
 
 #define ASSERT_ARGS_add_pcc_named_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
@@ -1160,30 +1161,30 @@
 
 /*
 
-=item C<static void set_lexical(PARROT_INTERP, SymReg *r, const char *name)>
+=item C<static void set_lexical(PARROT_INTERP, SymReg *r, SymReg *name)>
 
 =cut
 
 */
 
 static void
-set_lexical(PARROT_INTERP, ARGMOD(SymReg *r), ARGIN(const char *name))
+set_lexical(PARROT_INTERP, ARGMOD(SymReg *r), ARGMOD(SymReg *name))
 {
     ASSERT_ARGS(set_lexical)
-    SymReg * const n = mk_const(interp, name, 'S');
 
     r->usage |= U_LEXICAL;
 
-    if (n == r->reg)
+    if (name == r->reg)
         IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
-            "register %s already declared as lexical %s", r->name, n->name);
+            "register %s already declared as lexical %s", r->name, name->name);
 
     /* chain all names in r->reg */
-    n->reg = r->reg;
-    r->reg = n;
+    name->reg = r->reg;
+    r->reg = name;
     r->use_count++;
 }
 
+
 /*
 
 =item C<static void add_pcc_named_arg(PARROT_INTERP, SymReg *cur_call, const
@@ -1350,7 +1351,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 1007 "compilers/imcc/imcc.y"
+#line 1010 "compilers/imcc/imcc.y"
 {
     IdList * idlist;
     int t;
@@ -1359,7 +1360,7 @@
     Instruction *i;
 }
 /* Line 187 of yacc.c.  */
-#line 1350 "compilers/imcc/imcparser.c"
+#line 1353 "compilers/imcc/imcparser.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -1372,7 +1373,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 1363 "compilers/imcc/imcparser.c"
+#line 1366 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1587,16 +1588,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  31
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   682
+#define YYLAST   673
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  138
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  126
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  333
+#define YYNRULES  334
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  535
+#define YYNSTATES  538
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -1671,22 +1672,22 @@
      432,   434,   438,   442,   448,   450,   453,   454,   457,   460,
      462,   464,   466,   468,   469,   471,   474,   476,   478,   482,
      485,   487,   491,   494,   495,   497,   499,   501,   502,   507,
-     512,   513,   520,   522,   523,   530,   533,   536,   539,   542,
-     544,   546,   548,   550,   551,   553,   555,   557,   559,   561,
-     565,   570,   576,   583,   590,   598,   602,   603,   613,   615,
-     617,   619,   623,   625,   627,   629,   631,   633,   635,   637,
-     639,   641,   643,   645,   647,   649,   651,   653,   655,   657,
-     659,   661,   663,   665,   667,   669,   671,   673,   675,   676,
-     682,   686,   688,   690,   692,   694,   696,   698,   700,   702,
-     704,   706,   708,   710,   712,   717,   719,   721,   723,   725,
-     729,   733,   737,   738,   744,   745,   749,   751,   757,   761,
-     765,   768,   769,   772,   774,   776,   781,   784,   788,   794,
-     796,   800,   801,   803,   805,   812,   818,   823,   828,   835,
-     841,   843,   845,   847,   849,   851,   853,   855,   857,   859,
-     861,   862,   864,   868,   870,   872,   877,   881,   883,   885,
-     887,   889,   891,   893,   895,   897,   899,   901,   903,   904,
-     907,   908,   911,   913,   917,   919,   921,   923,   925,   927,
-     929,   931,   933,   935
+     512,   517,   518,   525,   527,   528,   535,   538,   541,   544,
+     547,   549,   551,   553,   555,   556,   558,   560,   562,   564,
+     566,   570,   575,   581,   588,   595,   603,   607,   608,   618,
+     620,   622,   624,   628,   630,   632,   634,   636,   638,   640,
+     642,   644,   646,   648,   650,   652,   654,   656,   658,   660,
+     662,   664,   666,   668,   670,   672,   674,   676,   678,   680,
+     681,   687,   691,   693,   695,   697,   699,   701,   703,   705,
+     707,   709,   711,   713,   715,   717,   722,   724,   726,   728,
+     730,   734,   738,   742,   743,   749,   750,   754,   756,   762,
+     766,   770,   773,   774,   777,   779,   781,   786,   789,   793,
+     799,   801,   805,   806,   808,   810,   817,   823,   828,   833,
+     840,   846,   848,   850,   852,   854,   856,   858,   860,   862,
+     864,   866,   867,   869,   873,   875,   877,   882,   886,   888,
+     890,   892,   894,   896,   898,   900,   902,   904,   906,   908,
+     909,   912,   913,   916,   918,   922,   924,   926,   928,   930,
+     932,   934,   936,   938,   940
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -1743,88 +1744,89 @@
        4,    -1,     1,     4,    -1,   216,    -1,   215,    71,   216,
       -1,   108,   217,    -1,    -1,   100,    -1,   224,    -1,   242,
       -1,    -1,    28,   219,   222,   215,    -1,    29,   112,    71,
-     247,    -1,    -1,    30,   220,   222,   108,   122,   263,    -1,
-     148,    -1,    -1,    34,   221,   222,   108,   122,   263,    -1,
-      64,   234,    -1,     9,   253,    -1,   116,   248,    -1,    13,
-     255,    -1,   234,    -1,   181,    -1,   196,    -1,   198,    -1,
-      -1,    51,    -1,    52,    -1,    53,    -1,    54,    -1,   108,
-      -1,   247,   122,   255,    -1,   247,   122,   226,   255,    -1,
-     247,   122,   255,   227,   255,    -1,   247,   122,   255,   123,
-     256,   124,    -1,   247,   123,   256,   124,   122,   255,    -1,
-     247,   122,   127,   223,   123,   256,   124,    -1,   247,   122,
-     234,    -1,    -1,   125,   225,   241,   126,   122,   233,   125,
-     236,   126,    -1,   228,    -1,   230,    -1,   232,    -1,   247,
-     122,    13,    -1,   128,    -1,   129,    -1,   130,    -1,   130,
-      -1,   131,    -1,   132,    -1,   133,    -1,   134,    -1,    43,
-      -1,    67,    -1,   121,    -1,    56,    -1,    57,    -1,    58,
-      -1,    59,    -1,    60,    -1,    61,    -1,    49,    -1,    50,
-      -1,    68,    -1,    69,    -1,    70,    -1,    55,    -1,   135,
-      -1,   136,    -1,   129,    -1,    -1,    66,   229,   125,   241,
-     126,    -1,   247,   231,   255,    -1,    35,    -1,    36,    -1,
-      37,    -1,    38,    -1,    45,    -1,    44,    -1,    39,    -1,
-      40,    -1,    41,    -1,    42,    -1,    46,    -1,    47,    -1,
-      48,    -1,   247,   122,   116,   157,    -1,   108,    -1,   112,
-      -1,   115,    -1,   247,    -1,   247,   120,   252,    -1,   247,
-     120,   112,    -1,   247,   120,   247,    -1,    -1,   233,   235,
-     125,   236,   126,    -1,    -1,   236,    71,   237,    -1,   237,
-      -1,   236,    71,   112,    21,   255,    -1,   255,    21,   255,
-      -1,   112,    21,   255,    -1,   255,   238,    -1,    -1,   238,
-     239,    -1,    16,    -1,    20,    -1,    20,   125,   112,   126,
-      -1,   247,   194,    -1,   241,    71,   240,    -1,   241,    71,
-     112,    21,   247,    -1,   240,    -1,   112,    21,   247,    -1,
-      -1,   244,    -1,   243,    -1,    12,   255,   246,   255,     9,
-     253,    -1,    12,    13,   255,     9,   253,    -1,    12,   255,
-     245,   253,    -1,    11,   255,   245,   253,    -1,    11,   255,
-     246,   255,     9,   253,    -1,    11,    13,   255,     9,   253,
-      -1,    71,    -1,     9,    -1,    56,    -1,    57,    -1,    58,
-      -1,    59,    -1,    60,    -1,    61,    -1,   117,    -1,   262,
-      -1,    -1,   249,    -1,   249,    71,   250,    -1,   250,    -1,
-     254,    -1,   247,   123,   256,   124,    -1,   123,   258,   124,
-      -1,   252,    -1,   112,    -1,   115,    -1,   108,    -1,   116,
-      -1,   108,    -1,   116,    -1,   253,    -1,   255,    -1,   247,
-      -1,   263,    -1,    -1,   257,   260,    -1,    -1,   259,   260,
-      -1,   261,    -1,   260,   137,   261,    -1,   255,    -1,   104,
-      -1,   105,    -1,   106,    -1,   107,    -1,   109,    -1,   113,
-      -1,   114,    -1,   112,    -1,   115,    -1
+     247,    -1,    29,   115,    71,   247,    -1,    -1,    30,   220,
+     222,   108,   122,   263,    -1,   148,    -1,    -1,    34,   221,
+     222,   108,   122,   263,    -1,    64,   234,    -1,     9,   253,
+      -1,   116,   248,    -1,    13,   255,    -1,   234,    -1,   181,
+      -1,   196,    -1,   198,    -1,    -1,    51,    -1,    52,    -1,
+      53,    -1,    54,    -1,   108,    -1,   247,   122,   255,    -1,
+     247,   122,   226,   255,    -1,   247,   122,   255,   227,   255,
+      -1,   247,   122,   255,   123,   256,   124,    -1,   247,   123,
+     256,   124,   122,   255,    -1,   247,   122,   127,   223,   123,
+     256,   124,    -1,   247,   122,   234,    -1,    -1,   125,   225,
+     241,   126,   122,   233,   125,   236,   126,    -1,   228,    -1,
+     230,    -1,   232,    -1,   247,   122,    13,    -1,   128,    -1,
+     129,    -1,   130,    -1,   130,    -1,   131,    -1,   132,    -1,
+     133,    -1,   134,    -1,    43,    -1,    67,    -1,   121,    -1,
+      56,    -1,    57,    -1,    58,    -1,    59,    -1,    60,    -1,
+      61,    -1,    49,    -1,    50,    -1,    68,    -1,    69,    -1,
+      70,    -1,    55,    -1,   135,    -1,   136,    -1,   129,    -1,
+      -1,    66,   229,   125,   241,   126,    -1,   247,   231,   255,
+      -1,    35,    -1,    36,    -1,    37,    -1,    38,    -1,    45,
+      -1,    44,    -1,    39,    -1,    40,    -1,    41,    -1,    42,
+      -1,    46,    -1,    47,    -1,    48,    -1,   247,   122,   116,
+     157,    -1,   108,    -1,   112,    -1,   115,    -1,   247,    -1,
+     247,   120,   252,    -1,   247,   120,   112,    -1,   247,   120,
+     247,    -1,    -1,   233,   235,   125,   236,   126,    -1,    -1,
+     236,    71,   237,    -1,   237,    -1,   236,    71,   112,    21,
+     255,    -1,   255,    21,   255,    -1,   112,    21,   255,    -1,
+     255,   238,    -1,    -1,   238,   239,    -1,    16,    -1,    20,
+      -1,    20,   125,   112,   126,    -1,   247,   194,    -1,   241,
+      71,   240,    -1,   241,    71,   112,    21,   247,    -1,   240,
+      -1,   112,    21,   247,    -1,    -1,   244,    -1,   243,    -1,
+      12,   255,   246,   255,     9,   253,    -1,    12,    13,   255,
+       9,   253,    -1,    12,   255,   245,   253,    -1,    11,   255,
+     245,   253,    -1,    11,   255,   246,   255,     9,   253,    -1,
+      11,    13,   255,     9,   253,    -1,    71,    -1,     9,    -1,
+      56,    -1,    57,    -1,    58,    -1,    59,    -1,    60,    -1,
+      61,    -1,   117,    -1,   262,    -1,    -1,   249,    -1,   249,
+      71,   250,    -1,   250,    -1,   254,    -1,   247,   123,   256,
+     124,    -1,   123,   258,   124,    -1,   252,    -1,   112,    -1,
+     115,    -1,   108,    -1,   116,    -1,   108,    -1,   116,    -1,
+     253,    -1,   255,    -1,   247,    -1,   263,    -1,    -1,   257,
+     260,    -1,    -1,   259,   260,    -1,   261,    -1,   260,   137,
+     261,    -1,   255,    -1,   104,    -1,   105,    -1,   106,    -1,
+     107,    -1,   109,    -1,   113,    -1,   114,    -1,   112,    -1,
+     115,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,  1102,  1102,  1106,  1107,  1111,  1112,  1113,  1119,  1125,
-    1126,  1127,  1128,  1132,  1133,  1142,  1147,  1154,  1166,  1178,
-    1178,  1187,  1187,  1193,  1193,  1200,  1201,  1205,  1206,  1210,
-    1211,  1212,  1213,  1214,  1215,  1216,  1219,  1219,  1228,  1227,
-    1239,  1243,  1251,  1255,  1259,  1259,  1271,  1273,  1277,  1292,
-    1300,  1305,  1309,  1313,  1304,  1325,  1326,  1327,  1340,  1340,
-    1344,  1358,  1362,  1368,  1377,  1383,  1392,  1398,  1407,  1413,
-    1422,  1430,  1435,  1446,  1449,  1454,  1462,  1463,  1464,  1465,
-    1466,  1477,  1488,  1491,  1493,  1498,  1497,  1530,  1531,  1535,
-    1536,  1540,  1541,  1545,  1546,  1550,  1551,  1552,  1553,  1554,
-    1555,  1556,  1557,  1558,  1559,  1560,  1561,  1562,  1563,  1567,
-    1572,  1576,  1581,  1585,  1589,  1594,  1603,  1604,  1608,  1613,
-    1614,  1622,  1623,  1623,  1638,  1639,  1643,  1644,  1645,  1646,
-    1647,  1648,  1653,  1653,  1656,  1664,  1664,  1670,  1671,  1676,
-    1684,  1685,  1690,  1698,  1702,  1707,  1706,  1719,  1720,  1724,
-    1725,  1735,  1739,  1749,  1757,  1758,  1770,  1774,  1776,  1777,
-    1778,  1779,  1780,  1784,  1785,  1789,  1790,  1794,  1803,  1804,
-    1815,  1822,  1831,  1841,  1842,  1847,  1848,  1849,  1849,  1865,
-    1869,  1869,  1876,  1877,  1877,  1883,  1889,  1893,  1905,  1906,
-    1907,  1908,  1909,  1910,  1914,  1915,  1916,  1917,  1921,  1934,
-    1936,  1938,  1940,  1942,  1947,  1950,  1957,  1956,  1965,  1966,
-    1967,  1968,  1976,  1977,  1978,  1982,  1983,  1984,  1985,  1986,
-    1987,  1988,  1989,  1990,  1991,  1992,  1993,  1994,  1995,  1996,
-    1997,  1998,  1999,  2000,  2001,  2002,  2003,  2004,  2010,  2009,
-    2021,  2028,  2029,  2030,  2031,  2032,  2033,  2034,  2035,  2036,
-    2037,  2038,  2039,  2040,  2045,  2056,  2057,  2058,  2059,  2065,
-    2079,  2085,  2091,  2090,  2099,  2100,  2110,  2120,  2126,  2131,
-    2140,  2144,  2145,  2149,  2150,  2153,  2157,  2161,  2171,  2176,
-    2186,  2191,  2195,  2196,  2200,  2204,  2208,  2215,  2219,  2223,
-    2230,  2231,  2235,  2236,  2237,  2238,  2239,  2240,  2244,  2245,
-    2249,  2250,  2254,  2255,  2259,  2260,  2267,  2274,  2275,  2276,
-    2280,  2281,  2285,  2286,  2290,  2291,  2295,  2296,  2300,  2300,
-    2313,  2313,  2326,  2327,  2335,  2344,  2345,  2346,  2347,  2348,
-    2352,  2353,  2354,  2355
+       0,  1105,  1105,  1109,  1110,  1114,  1115,  1116,  1122,  1128,
+    1129,  1130,  1131,  1135,  1136,  1145,  1150,  1157,  1169,  1181,
+    1181,  1190,  1190,  1196,  1196,  1203,  1204,  1208,  1209,  1213,
+    1214,  1215,  1216,  1217,  1218,  1219,  1222,  1222,  1231,  1230,
+    1242,  1246,  1255,  1259,  1263,  1263,  1275,  1277,  1281,  1296,
+    1304,  1309,  1313,  1317,  1308,  1329,  1330,  1331,  1344,  1344,
+    1348,  1362,  1366,  1372,  1381,  1387,  1396,  1402,  1411,  1417,
+    1426,  1434,  1439,  1450,  1453,  1458,  1466,  1467,  1468,  1469,
+    1470,  1481,  1492,  1495,  1497,  1502,  1501,  1534,  1535,  1539,
+    1540,  1544,  1545,  1549,  1550,  1554,  1555,  1556,  1557,  1558,
+    1559,  1560,  1561,  1562,  1563,  1564,  1565,  1566,  1567,  1571,
+    1576,  1580,  1585,  1589,  1593,  1598,  1607,  1608,  1612,  1617,
+    1618,  1626,  1627,  1627,  1642,  1643,  1647,  1648,  1649,  1650,
+    1651,  1652,  1657,  1657,  1660,  1668,  1668,  1674,  1675,  1680,
+    1688,  1689,  1694,  1702,  1706,  1711,  1710,  1723,  1724,  1728,
+    1729,  1739,  1743,  1753,  1761,  1762,  1774,  1778,  1780,  1781,
+    1782,  1783,  1784,  1788,  1789,  1793,  1794,  1798,  1807,  1808,
+    1819,  1826,  1835,  1845,  1846,  1851,  1852,  1853,  1853,  1869,
+    1874,  1879,  1879,  1886,  1887,  1887,  1893,  1899,  1903,  1915,
+    1916,  1917,  1918,  1919,  1920,  1924,  1925,  1926,  1927,  1931,
+    1944,  1946,  1948,  1950,  1952,  1957,  1960,  1967,  1966,  1975,
+    1976,  1977,  1978,  1986,  1987,  1988,  1992,  1993,  1994,  1995,
+    1996,  1997,  1998,  1999,  2000,  2001,  2002,  2003,  2004,  2005,
+    2006,  2007,  2008,  2009,  2010,  2011,  2012,  2013,  2014,  2020,
+    2019,  2031,  2038,  2039,  2040,  2041,  2042,  2043,  2044,  2045,
+    2046,  2047,  2048,  2049,  2050,  2055,  2066,  2067,  2068,  2069,
+    2075,  2089,  2095,  2101,  2100,  2109,  2110,  2120,  2130,  2136,
+    2141,  2150,  2154,  2155,  2159,  2160,  2163,  2167,  2171,  2181,
+    2186,  2196,  2201,  2205,  2206,  2210,  2214,  2218,  2225,  2229,
+    2233,  2240,  2241,  2245,  2246,  2247,  2248,  2249,  2250,  2254,
+    2255,  2259,  2260,  2264,  2265,  2269,  2270,  2277,  2284,  2285,
+    2286,  2290,  2291,  2295,  2296,  2300,  2301,  2305,  2306,  2310,
+    2310,  2323,  2323,  2336,  2337,  2345,  2354,  2355,  2356,  2357,
+    2358,  2362,  2363,  2364,  2365
 };
 #endif
 
@@ -1924,22 +1926,22 @@
      207,   207,   207,   207,   208,   208,   209,   210,   210,   210,
      210,   210,   210,   211,   211,   212,   212,   213,   214,   214,
      215,   215,   216,   217,   217,   218,   218,   219,   218,   218,
-     220,   218,   218,   221,   218,   218,   218,   218,   218,   218,
-     218,   218,   218,   218,   222,   222,   222,   222,   223,   224,
-     224,   224,   224,   224,   224,   224,   225,   224,   224,   224,
-     224,   224,   226,   226,   226,   227,   227,   227,   227,   227,
+     218,   220,   218,   218,   221,   218,   218,   218,   218,   218,
+     218,   218,   218,   218,   218,   222,   222,   222,   222,   223,
+     224,   224,   224,   224,   224,   224,   224,   225,   224,   224,
+     224,   224,   224,   226,   226,   226,   227,   227,   227,   227,
      227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
-     227,   227,   227,   227,   227,   227,   227,   227,   229,   228,
-     230,   231,   231,   231,   231,   231,   231,   231,   231,   231,
-     231,   231,   231,   231,   232,   233,   233,   233,   233,   233,
-     233,   233,   235,   234,   236,   236,   236,   236,   236,   236,
-     237,   238,   238,   239,   239,   239,   240,   241,   241,   241,
-     241,   241,   242,   242,   243,   243,   243,   244,   244,   244,
-     245,   245,   246,   246,   246,   246,   246,   246,   247,   247,
-     248,   248,   249,   249,   250,   250,   250,   251,   251,   251,
-     252,   252,   253,   253,   254,   254,   255,   255,   257,   256,
-     259,   258,   260,   260,   261,   262,   262,   262,   262,   262,
-     263,   263,   263,   263
+     227,   227,   227,   227,   227,   227,   227,   227,   227,   229,
+     228,   230,   231,   231,   231,   231,   231,   231,   231,   231,
+     231,   231,   231,   231,   231,   232,   233,   233,   233,   233,
+     233,   233,   233,   235,   234,   236,   236,   236,   236,   236,
+     236,   237,   238,   238,   239,   239,   239,   240,   241,   241,
+     241,   241,   241,   242,   242,   243,   243,   243,   244,   244,
+     244,   245,   245,   246,   246,   246,   246,   246,   246,   247,
+     247,   248,   248,   249,   249,   250,   250,   250,   251,   251,
+     251,   252,   252,   253,   253,   254,   254,   255,   255,   257,
+     256,   259,   258,   260,   260,   261,   262,   262,   262,   262,
+     262,   263,   263,   263,   263
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1963,22 +1965,22 @@
        1,     3,     3,     5,     1,     2,     0,     2,     2,     1,
        1,     1,     1,     0,     1,     2,     1,     1,     3,     2,
        1,     3,     2,     0,     1,     1,     1,     0,     4,     4,
-       0,     6,     1,     0,     6,     2,     2,     2,     2,     1,
-       1,     1,     1,     0,     1,     1,     1,     1,     1,     3,
-       4,     5,     6,     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,     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,     3,
-       2,     0,     2,     1,     1,     4,     2,     3,     5,     1,
-       3,     0,     1,     1,     6,     5,     4,     4,     6,     5,
+       4,     0,     6,     1,     0,     6,     2,     2,     2,     2,
+       1,     1,     1,     1,     0,     1,     1,     1,     1,     1,
+       3,     4,     5,     6,     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,
-       0,     1,     3,     1,     1,     4,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     2,
-       0,     2,     1,     3,     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,
+       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,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1988,58 +1990,58 @@
 {
        0,    12,     0,     0,     0,     0,    51,    19,     0,    44,
        0,     0,     2,     3,    10,    11,     0,     6,     8,     5,
-       7,    18,     0,     0,   318,     0,     0,     0,     0,   163,
+       7,    18,     0,     0,   319,     0,     0,     0,     0,   163,
        9,     1,     4,    13,     0,    16,    50,     0,     0,    48,
-     310,   308,   309,   311,    52,   307,   194,   195,   196,   197,
+     311,   309,   310,   312,    52,   308,   195,   196,   197,   198,
        0,    14,    21,   167,     0,    32,    31,    35,    34,   163,
-      27,     0,    33,    36,   164,   166,     0,    49,   325,   326,
-     327,   328,   329,   332,   330,   331,   333,   298,   316,   324,
-     319,   322,   299,   317,    91,     0,     0,     0,    30,    28,
+      27,     0,    33,    36,   164,   166,     0,    49,   326,   327,
+     328,   329,   330,   333,   331,   332,   334,   299,   317,   325,
+     320,   323,   300,   318,    91,     0,     0,     0,    30,    28,
       45,     0,     0,    38,     0,     0,   165,    15,     0,    97,
       95,    96,    98,    99,    66,   100,     0,   101,     0,    64,
        0,    71,    68,   102,   103,   104,   105,   106,   107,   108,
        0,    92,    93,     0,     0,     0,    40,     0,    91,    29,
-     300,   323,     0,     0,    73,     0,     0,     0,     0,    53,
-      94,    20,   312,   313,   314,     0,   315,     0,     0,     0,
-     320,    37,   316,    43,   301,   303,   304,    25,    26,     0,
-       0,     0,    76,    77,    79,    78,    80,    81,   318,     0,
+     301,   324,     0,     0,    73,     0,     0,     0,     0,    53,
+      94,    20,   313,   314,   315,     0,   316,     0,     0,     0,
+     321,    37,   317,    43,   302,   304,   305,    25,    26,     0,
+       0,     0,    76,    77,    79,    78,    80,    81,   319,     0,
       75,     0,     0,     0,     0,    55,     0,     0,    41,    39,
-       0,     0,   318,     0,    67,    63,    62,     0,     0,    61,
-      65,    70,    72,    69,    56,   156,    22,    24,   306,   321,
-       0,   302,    82,    74,    58,     0,     0,   160,   159,   161,
-     162,     0,     0,   156,     0,   154,   305,     0,     0,   158,
-      57,    54,   155,     0,   193,   157,    59,     0,     0,   169,
-       0,     0,     0,     0,   177,     0,   180,   183,   147,     0,
-     148,   238,     0,     0,     0,   255,   256,   257,   300,   206,
-     182,   190,   191,   192,   134,     0,     0,   175,   208,   209,
-     210,   262,   189,   176,   283,   282,   258,   124,    17,   186,
-       0,     0,     0,     0,   188,     0,     0,     0,     0,   185,
-     258,     0,    85,   132,   135,   187,   281,   145,   168,     0,
-     241,   242,   243,   244,   247,   248,   249,   250,   246,   245,
-     251,   252,   253,     0,     0,   318,     0,    60,     0,   291,
-     292,   293,   294,   295,   296,   297,   290,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   281,   116,   137,   140,
-       0,   279,     0,   124,   149,   264,   260,   261,   259,   211,
-     332,   333,   300,     0,   212,   213,   214,     0,   205,   316,
-     199,     0,   240,   126,   127,   128,   129,   131,   125,     0,
-     287,     0,     0,   286,     0,   173,   178,   170,   179,     0,
-       0,     0,    89,     0,     0,     0,     0,     0,   276,   332,
-       0,   150,   271,   332,     0,   266,   271,   254,   198,     0,
-     200,   220,   229,   230,   234,   223,   224,   225,   226,   227,
-     228,   221,   231,   232,   233,   222,   318,   237,   215,   216,
-     217,   218,   219,   235,   236,     0,     0,     0,   289,     0,
-     285,     0,   174,   172,     0,     0,     0,   239,     0,     0,
-       0,     0,   138,     0,   133,     0,   141,     0,   136,     0,
-     280,     0,   277,     0,     0,     0,   146,   270,     0,     0,
-     263,     0,   318,     0,   201,     0,     0,   288,   284,   171,
-     181,   184,   118,     0,     0,     0,     0,    87,   117,   271,
-     139,   271,   142,     0,     0,   151,   332,   152,   273,   274,
-     272,   269,   332,   265,   268,     0,   202,   203,   130,    90,
-       0,     0,     0,     0,   119,     0,   143,   144,   278,   264,
-       0,     0,     0,   204,   110,     0,   111,   113,     0,   112,
-       0,     0,    88,     0,   153,     0,   267,     0,     0,     0,
-     122,     0,    86,     0,   207,   275,   109,   115,   114,     0,
-     124,   120,     0,   121,   123
+       0,     0,   319,     0,    67,    63,    62,     0,     0,    61,
+      65,    70,    72,    69,    56,   156,    22,    24,   307,   322,
+       0,   303,    82,    74,    58,     0,     0,   160,   159,   161,
+     162,     0,     0,   156,     0,   154,   306,     0,     0,   158,
+      57,    54,   155,     0,   194,   157,    59,     0,     0,   169,
+       0,     0,     0,     0,   177,     0,   181,   184,   147,     0,
+     148,   239,     0,     0,     0,   256,   257,   258,   301,   207,
+     183,   191,   192,   193,   134,     0,     0,   175,   209,   210,
+     211,   263,   190,   176,   284,   283,   259,   124,    17,   187,
+       0,     0,     0,     0,   189,     0,     0,     0,     0,     0,
+     186,   259,     0,    85,   132,   135,   188,   282,   145,   168,
+       0,   242,   243,   244,   245,   248,   249,   250,   251,   247,
+     246,   252,   253,   254,     0,     0,   319,     0,    60,     0,
+     292,   293,   294,   295,   296,   297,   298,   291,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   282,   116,
+     137,   140,     0,   280,     0,   124,   149,   265,   261,   262,
+     260,   212,   333,   334,   301,     0,   213,   214,   215,     0,
+     206,   317,   200,     0,   241,   126,   127,   128,   129,   131,
+     125,     0,   288,     0,     0,   287,     0,   173,   178,   170,
+     179,   180,     0,     0,     0,    89,     0,     0,     0,     0,
+       0,   277,   333,     0,   150,   272,   333,     0,   267,   272,
+     255,   199,     0,   201,   221,   230,   231,   235,   224,   225,
+     226,   227,   228,   229,   222,   232,   233,   234,   223,   319,
+     238,   216,   217,   218,   219,   220,   236,   237,     0,     0,
+       0,   290,     0,   286,     0,   174,   172,     0,     0,     0,
+     240,     0,     0,     0,     0,   138,     0,   133,     0,   141,
+       0,   136,     0,   281,     0,   278,     0,     0,     0,   146,
+     271,     0,     0,   264,     0,   319,     0,   202,     0,     0,
+     289,   285,   171,   182,   185,   118,     0,     0,     0,     0,
+      87,   117,   272,   139,   272,   142,     0,     0,   151,   333,
+     152,   274,   275,   273,   270,   333,   266,   269,     0,   203,
+     204,   130,    90,     0,     0,     0,     0,   119,     0,   143,
+     144,   279,   265,     0,     0,     0,   205,   110,     0,   111,
+     113,     0,   112,     0,     0,    88,     0,   153,     0,   268,
+       0,     0,     0,   122,     0,    86,     0,   208,   276,   109,
+     115,   114,     0,   124,   120,     0,   121,   123
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -2049,245 +2051,243 @@
       58,    86,    87,   159,    59,    60,    94,    95,   128,   151,
       18,    29,    61,    19,    25,    20,    26,    84,   175,   195,
      211,   217,   226,   113,   114,   115,   116,   117,   118,   119,
-     169,   170,   212,   251,   327,   494,   430,   120,   121,   122,
-     467,   372,   431,   511,   523,   529,   307,   358,   252,   328,
-     253,   329,   373,   374,   435,   439,   254,   334,   255,   380,
-     213,   214,   215,    63,    64,    65,   225,   366,   367,   423,
-     256,   275,   277,   278,    50,   389,   257,   286,   347,   415,
-     258,   281,   259,   306,   260,   261,   262,   289,   384,   385,
-     447,   480,   331,   332,   263,   264,   265,   317,   318,    78,
+     169,   170,   212,   251,   329,   497,   433,   120,   121,   122,
+     470,   375,   434,   514,   526,   532,   308,   360,   252,   330,
+     253,   331,   376,   377,   438,   442,   254,   336,   255,   383,
+     213,   214,   215,    63,    64,    65,   225,   368,   369,   426,
+     256,   275,   278,   279,    50,   392,   257,   287,   349,   418,
+     258,   282,   259,   307,   260,   261,   262,   290,   387,   388,
+     450,   483,   333,   334,   263,   264,   265,   318,   319,    78,
      153,   154,   155,    44,    45,   144,   156,   146,    37,    38,
      180,   181,    80,    81,    82,    83
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -413
+#define YYPACT_NINF -414
 static const yytype_int16 yypact[] =
 {
-     246,  -413,   -77,   -65,    -8,   -45,  -413,  -413,    -6,  -413,
-     120,   130,   246,  -413,  -413,  -413,   132,  -413,  -413,  -413,
-    -413,  -413,    68,   148,    50,   152,    38,   127,   171,   104,
-    -413,  -413,  -413,  -413,    70,  -413,  -413,    63,   458,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-      80,  -413,    77,  -413,   187,  -413,  -413,  -413,  -413,   125,
-    -413,    89,  -413,    32,    97,  -413,   193,  -413,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-      64,  -413,  -413,  -413,   448,    84,    99,   101,  -413,  -413,
-    -413,   458,   105,  -413,   212,   102,  -413,  -413,   458,  -413,
-    -413,  -413,  -413,  -413,    95,  -413,   100,  -413,   108,   111,
-     113,   121,   122,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-     220,   448,  -413,    96,   444,   444,  -413,   156,   448,  -413,
-     407,  -413,    -7,   -41,   273,   117,   118,    -7,    -7,  -413,
-    -413,  -413,  -413,  -413,  -413,   123,  -413,   129,   146,   158,
-    -413,  -413,   137,  -413,   190,  -413,  -413,  -413,  -413,   138,
-     139,   145,  -413,  -413,  -413,  -413,  -413,  -413,  -413,   -37,
-    -413,   147,   149,   153,   155,   259,    -7,    -7,  -413,  -413,
-     150,   458,  -413,   407,  -413,  -413,  -413,   160,   273,  -413,
-    -413,  -413,  -413,  -413,  -413,    19,  -413,  -413,  -413,    64,
-     161,  -413,  -413,  -413,  -413,   170,   282,  -413,  -413,  -413,
-    -413,   283,   217,   159,    10,  -413,  -413,   127,   219,  -413,
-    -413,  -413,  -413,   291,   228,  -413,  -413,   191,    96,  -413,
-     -54,   206,   254,   458,  -413,   186,   -55,  -413,  -413,   528,
-    -413,  -413,   296,   297,   299,  -413,  -413,  -413,   407,  -413,
-    -413,  -413,  -413,  -413,  -413,   182,   310,  -413,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,   409,  -413,  -413,  -413,
-     458,   426,   458,   426,  -413,   127,   251,   127,   127,  -413,
-     208,   204,  -413,  -413,  -413,  -413,   245,  -413,  -413,   205,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-    -413,  -413,  -413,   542,    56,  -413,   458,    13,   322,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,   -54,   458,   329,
-     -54,   458,   233,   269,   239,   247,   245,  -413,  -413,  -413,
-     343,  -413,   -34,  -413,   472,   486,  -413,  -413,  -413,  -413,
-     240,   255,   407,   262,  -413,  -413,  -413,   458,  -413,   -61,
-     373,   248,  -413,  -413,  -413,  -413,   257,  -413,  -413,   -54,
-    -413,   370,   -54,  -413,   374,   284,   316,  -413,  -413,   266,
-     267,   -30,    15,     3,     5,   269,   556,   270,    13,   372,
-     -28,  -413,  -413,   376,   -25,  -413,   377,  -413,  -413,   277,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,   458,   279,   290,  -413,   -54,
-    -413,   -54,  -413,  -413,   233,    96,    96,  -413,   458,   458,
-      75,   399,  -413,   458,  -413,   401,  -413,   458,  -413,   404,
-    -413,   388,  -413,   528,   458,   500,  -413,    52,   458,   514,
-    -413,   458,  -413,   288,  -413,   458,   289,  -413,  -413,  -413,
-    -413,  -413,  -413,   410,   458,   458,   565,    97,  -413,  -413,
-    -413,  -413,  -413,   269,   293,  -413,   398,  -413,  -413,   295,
-    -413,  -413,   400,  -413,  -413,   300,  -413,  -413,  -413,  -413,
-       6,   421,    12,    24,  -413,   432,    52,    52,  -413,   486,
-     458,   325,   458,  -413,  -413,   458,  -413,  -413,   458,  -413,
-     458,   -20,  -413,   -24,  -413,   312,  -413,   435,   454,   455,
-    -413,   269,  -413,   456,  -413,  -413,  -413,  -413,  -413,   127,
-    -413,  -413,   233,    13,  -413
+     264,  -414,   -85,   -71,   -58,   -53,  -414,  -414,   -26,  -414,
+      74,   101,   264,  -414,  -414,  -414,   109,  -414,  -414,  -414,
+    -414,  -414,    55,   128,    36,   169,   -64,    97,   170,     9,
+    -414,  -414,  -414,  -414,    66,  -414,  -414,    58,   486,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+      76,  -414,    79,  -414,   182,  -414,  -414,  -414,  -414,    44,
+    -414,    89,  -414,    17,   104,  -414,   194,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+      65,  -414,  -414,  -414,   454,    85,    95,   103,  -414,  -414,
+    -414,   486,   106,  -414,   215,   117,  -414,  -414,   486,  -414,
+    -414,  -414,  -414,  -414,   112,  -414,   113,  -414,   114,   115,
+     116,   121,   124,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+     238,   454,  -414,    43,   472,   472,  -414,   187,   454,  -414,
+     345,  -414,    52,    -5,   136,   154,   161,    52,    52,  -414,
+    -414,  -414,  -414,  -414,  -414,   152,  -414,   157,   171,   181,
+    -414,  -414,   162,  -414,   218,  -414,  -414,  -414,  -414,   160,
+     174,   175,  -414,  -414,  -414,  -414,  -414,  -414,  -414,   -43,
+    -414,   186,   188,   190,   191,   283,    52,    52,  -414,  -414,
+     172,   486,  -414,   345,  -414,  -414,  -414,   200,   136,  -414,
+    -414,  -414,  -414,  -414,  -414,     5,  -414,  -414,  -414,    65,
+     202,  -414,  -414,  -414,  -414,   183,   293,  -414,  -414,  -414,
+    -414,   323,   260,   173,   105,  -414,  -414,    97,   269,  -414,
+    -414,  -414,  -414,   342,   413,  -414,  -414,   241,    43,  -414,
+     -45,   216,   230,   486,  -414,    60,    40,  -414,  -414,   198,
+    -414,  -414,   346,   347,   363,  -414,  -414,  -414,   345,  -414,
+    -414,  -414,  -414,  -414,  -414,   243,   365,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,   317,  -414,  -414,  -414,
+     486,   329,   486,   329,  -414,    97,   305,   306,    97,    97,
+    -414,   259,   256,  -414,  -414,  -414,  -414,   -48,  -414,  -414,
+     257,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,   119,   148,  -414,   486,    -1,   375,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,   -45,   486,
+     382,   -45,   486,   284,   327,   327,   287,   289,   -48,  -414,
+    -414,  -414,   378,  -414,   -42,  -414,   500,   514,  -414,  -414,
+    -414,  -414,   276,   278,   345,   296,  -414,  -414,  -414,   486,
+    -414,   -44,   439,   281,  -414,  -414,  -414,  -414,   286,  -414,
+    -414,   -45,  -414,   397,   -45,  -414,   399,   312,   344,  -414,
+    -414,  -414,   295,   297,   -39,    -2,    21,     7,   327,   266,
+     299,    -1,   402,   -37,  -414,  -414,   406,   -34,  -414,   407,
+    -414,  -414,   315,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,   486,   313,
+     333,  -414,   -45,  -414,   -45,  -414,  -414,   284,    43,    43,
+    -414,   486,   486,    54,   414,  -414,   486,  -414,   442,  -414,
+     486,  -414,   444,  -414,   434,  -414,   198,   486,   528,  -414,
+     126,   486,   542,  -414,   486,  -414,   332,  -414,   486,   337,
+    -414,  -414,  -414,  -414,  -414,  -414,   462,   486,   486,   556,
+     104,  -414,  -414,  -414,  -414,  -414,   327,   349,  -414,   448,
+    -414,  -414,   355,  -414,  -414,   450,  -414,  -414,   348,  -414,
+    -414,  -414,  -414,    19,   477,    20,    22,  -414,   479,   126,
+     126,  -414,   514,   486,   372,   486,  -414,  -414,   486,  -414,
+    -414,   486,  -414,   486,    10,  -414,   -24,  -414,   359,  -414,
+     482,   488,   497,  -414,   327,  -414,   498,  -414,  -414,  -414,
+    -414,  -414,    97,  -414,  -414,   284,    -1,  -414
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -413,  -413,  -413,   440,    20,  -143,  -413,  -413,  -413,  -413,
-     241,  -413,  -413,   -44,  -413,   412,  -413,  -413,  -413,   124,
-    -413,  -413,  -413,    22,  -413,  -413,  -413,  -413,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-    -413,   275,  -413,  -413,  -413,  -413,  -413,   340,  -413,   348,
-    -413,  -413,  -413,  -413,  -413,  -413,  -327,  -413,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-    -413,  -413,   260,   261,  -413,   -63,  -413,  -413,  -412,  -413,
-    -413,  -413,  -413,  -413,  -212,  -413,  -413,  -413,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,    31,  -224,  -413,   -23,  -305,
-    -384,  -413,   103,   151,  -413,  -413,  -413,   207,   215,  -127,
-     230,  -413,   298,  -413,   188,  -217,    23,   -38,  -164,  -413,
-    -413,  -413,   308,   392,  -413,  -121
+    -414,  -414,  -414,   478,    14,  -146,  -414,  -414,  -414,  -414,
+     279,  -414,  -414,   -97,  -414,   445,  -414,  -414,  -414,   166,
+    -414,  -414,  -414,    16,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,   324,  -414,  -414,  -414,  -414,  -414,   377,  -414,   390,
+    -414,  -414,  -414,  -414,  -414,  -414,  -330,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,   300,   301,  -414,   -63,  -414,  -414,  -413,  -414,
+    -414,  -414,  -414,  -414,  -213,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,    68,  -208,  -414,    24,  -327,
+    -343,  -414,   137,   195,  -414,  -414,  -414,   251,   254,  -128,
+     285,  -414,   351,  -414,   227,  -223,    41,   -38,  -162,  -414,
+    -414,  -414,   354,   438,  -414,  -120
 };
 
 /* 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 -259
+#define YYTABLE_NINF -260
 static const yytype_int16 yytable[] =
 {
-      79,    96,   141,   152,   187,   227,   378,   432,   520,   436,
-     504,   223,   459,   269,  -163,   279,   507,   433,   200,  -163,
-     437,  -163,  -163,  -163,   204,   428,     3,     4,   509,   381,
-     353,   354,   355,   356,   188,    21,   -42,   376,  -163,  -163,
-    -163,   376,   521,   445,  -163,    91,   449,   449,    22,    57,
-     205,    62,   209,   126,   142,   522,   152,   -23,   -21,   303,
-      79,    92,   143,   322,  -258,   324,   325,   160,   478,   339,
-     209,   161,   479,  -163,  -163,  -163,  -163,   505,    24,    57,
-     348,    62,   434,   508,  -163,   496,   438,   497,  -163,   189,
-    -163,   -83,   377,   173,   174,   510,   427,   266,   446,   429,
-     360,   450,   524,   363,    23,   157,    28,   268,   158,    93,
-       2,    53,   280,   357,  -163,  -163,  -163,  -163,  -163,  -163,
-     534,   152,  -163,   462,    30,  -163,  -163,  -163,     5,   206,
-      31,     2,   196,   197,    52,  -163,    33,   207,   208,    34,
-     477,   351,   418,    79,   483,   420,    40,   145,   147,     5,
-      41,   464,    35,    42,    43,    52,    39,   465,   466,   333,
-      68,    69,    70,    71,   245,    72,     3,     4,   340,    74,
-      75,   341,   342,    77,    36,    51,   337,   349,    46,    47,
-      48,    49,    66,   343,   344,   345,   346,    67,    85,   -23,
-     205,    88,    90,   271,   273,   274,   368,    97,    53,   333,
-       8,    98,   457,   533,   458,    53,   123,   -46,    73,    74,
-      75,    76,   124,   125,    54,   152,   129,   127,   130,   270,
-     132,     8,    55,    56,   139,   133,    53,   148,   -47,   171,
-     172,   -84,   308,   134,   319,    54,   135,   230,   136,   231,
-     232,   233,   453,    55,    56,   176,   137,   138,   440,   333,
-       1,   177,     2,     3,     4,   178,   234,   235,   236,   179,
-     182,   183,   237,   194,   184,   185,   350,   272,   352,   206,
-       5,   186,     6,   190,   198,   191,     7,   207,   208,   192,
-     361,   193,   218,   364,   202,   216,   219,   220,   485,   221,
-     228,   238,   239,   240,   241,   229,   382,   386,   276,   267,
-     282,   283,   242,   284,   460,   461,   243,   287,   244,   390,
-      68,    69,    70,    71,   288,    72,   280,   532,    73,    74,
-      75,    76,   323,    77,   162,   163,   164,   165,   303,   326,
-     335,   359,    68,    69,    70,    71,   245,    72,   362,   493,
-     246,   365,     8,   247,   248,    77,   498,   369,     9,    68,
-      69,    70,    71,   249,    72,   370,    10,   330,    68,    69,
-      70,    71,    77,    72,   375,  -256,    73,    74,    75,    76,
-     388,    77,   416,    68,    69,    70,    71,   454,    72,   419,
-    -257,   166,   417,   421,   422,   167,    77,   424,   425,   426,
-     382,   463,   443,   444,   530,   469,   168,   448,   451,   471,
-     452,   455,   456,   468,   495,   470,   475,   382,   472,   473,
-     481,   382,   486,   484,   489,   488,   391,   487,   499,   500,
-     501,   502,   392,   393,   503,   506,   490,   491,   394,   395,
-     396,   397,   398,   399,   400,   309,   512,   515,   525,   526,
-     401,   402,   403,   404,   290,   291,   292,   293,   294,   295,
-     296,   297,    32,   298,   299,   300,   301,   302,   527,   528,
-     531,   386,   514,   203,   516,   250,   387,   517,   149,   140,
-     518,    89,   519,   222,   474,   224,   513,   371,   285,   442,
-     320,   201,   310,   311,   312,   313,   314,   315,   321,   199,
-     131,   338,     0,     0,   405,     0,   406,   316,     0,     0,
-       0,     0,   407,   408,   409,   410,   411,   412,   413,   414,
-       0,    68,    69,    70,    71,   142,    72,     0,     0,    73,
-      74,    75,    76,   143,    77,     0,     0,     0,     0,   303,
-     150,   304,   305,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,     0,   110,   111,   112,    68,    69,
-      70,    71,   142,    72,     0,     0,    73,    74,    75,    76,
-     143,    77,    68,    69,    70,    71,     0,    72,     0,     0,
-      73,    74,    75,    76,     0,    77,    68,    69,    70,    71,
-       0,    72,     0,     0,   379,    74,    75,    76,     0,    77,
-      68,    69,    70,    71,     0,    72,     0,     0,   383,    74,
+      79,    96,   152,   141,   227,   381,   187,   269,   431,   384,
+     204,   439,     3,     4,   462,     2,   355,   356,   357,   358,
+     200,   -42,   440,   507,   510,   435,   512,    21,   188,   379,
+      91,   280,   379,     5,   448,   436,   205,   452,   523,    52,
+     173,   174,    22,    57,    40,    62,    92,   452,    41,   209,
+       2,    42,    43,   126,    23,   152,    68,    69,    70,    71,
+      79,    72,   323,   142,   332,   326,   327,   209,     5,    77,
+      24,   143,   524,    57,    52,    62,   304,   -83,    30,   196,
+     197,  -259,   432,   189,   380,   525,    28,   430,   441,   449,
+     508,   511,   453,   513,    93,   362,   266,   350,   365,   359,
+     437,    31,   527,   160,   465,     8,   223,   161,   268,  -163,
+      53,   281,   -46,    33,  -163,   206,  -163,  -163,  -163,    54,
+     152,   480,   537,   207,   208,   486,    34,    55,    56,   499,
+     467,   500,    35,  -163,  -163,  -163,   468,   469,   421,  -163,
+       8,   423,   481,    79,   353,    53,   482,   -47,    46,    47,
+      48,    49,   -23,   -21,    54,    73,    74,    75,    76,   335,
+      36,   341,    55,    56,   157,   145,   147,   158,  -163,  -163,
+    -163,  -163,   276,    39,    51,   277,   339,   351,    66,  -163,
+       3,     4,    67,  -163,    85,  -163,    88,   162,   163,   164,
+     165,   -23,    90,   271,   273,   274,   370,   371,    97,   460,
+     335,   461,    98,   536,   205,    53,    53,   123,   124,  -163,
+    -163,  -163,  -163,  -163,  -163,   125,   152,  -163,   127,   129,
+    -163,  -163,  -163,    68,    69,    70,    71,    40,    72,   270,
+    -163,   338,   309,   130,   320,    43,    77,   132,   133,   134,
+     135,   136,   139,   272,   166,   -84,   137,   456,   167,   138,
+     443,   335,    68,    69,    70,    71,   245,    72,   148,   168,
+     342,    74,    75,   343,   344,    77,   171,   352,     1,   354,
+       2,     3,     4,   172,   176,   345,   346,   347,   348,   177,
+     178,   363,   179,   206,   366,   182,   184,   194,     5,   183,
+       6,   207,   208,   488,     7,   218,   198,   219,   385,   389,
+     185,   186,    68,    69,    70,    71,   245,    72,   463,   464,
+     246,   393,   190,   247,   191,    77,   192,   193,   281,   535,
+      68,    69,    70,    71,   202,    72,   216,   220,    73,    74,
+      75,    76,   221,    77,    68,    69,    70,    71,   310,    72,
+     228,   496,    73,    74,    75,    76,   229,    77,   501,   267,
+     283,   284,   291,   292,   293,   294,   295,   296,   297,   298,
+       8,   299,   300,   301,   302,   303,     9,   285,   288,   289,
+      68,    69,    70,    71,    10,    72,   324,   325,   444,   304,
+     457,   328,   337,    77,   361,   311,   312,   313,   314,   315,
+     316,   364,   367,   385,   466,   372,   533,   373,   472,   378,
+     317,  -257,   474,  -258,   391,   419,   422,   498,   424,   478,
+     385,   420,   425,   484,   385,   427,   487,   428,   471,   429,
+     490,   446,   230,   447,   231,   232,   233,   451,   454,   493,
+     494,    68,    69,    70,    71,   458,    72,   304,   455,   305,
+     306,   234,   235,   236,    77,   459,   473,   237,   475,    68,
+      69,    70,    71,   142,    72,   476,   489,    73,    74,    75,
+      76,   143,    77,   491,   389,   517,   492,   519,   150,   503,
+     520,   505,   506,   521,   502,   522,   238,   239,   240,   241,
+     504,   509,   394,   515,   518,   528,   529,   242,   395,   396,
+      32,   243,   530,   244,   397,   398,   399,   400,   401,   402,
+     403,   531,   534,   250,    89,   149,   404,   405,   406,   407,
+     390,   140,   203,   222,   477,   224,   445,    68,    69,    70,
+      71,   245,    72,   374,   321,   246,   516,   322,   247,   248,
+      77,   340,     0,   286,   201,   199,   131,     0,   249,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+       0,   110,   111,   112,     0,     0,     0,     0,     0,     0,
+     408,     0,   409,     0,     0,     0,     0,     0,   410,   411,
+     412,   413,   414,   415,   416,   417,    68,    69,    70,    71,
+     142,    72,     0,     0,    73,    74,    75,    76,   143,    77,
+      68,    69,    70,    71,     0,    72,     0,     0,    73,    74,
       75,    76,     0,    77,    68,    69,    70,    71,     0,    72,
-       0,     0,   476,    74,    75,    76,     0,    77,    68,    69,
-      70,    71,     0,    72,     0,     0,   482,    74,    75,    76,
-       0,    77,    68,    69,    70,    71,   245,    72,     0,     0,
-     246,     0,     0,   247,     0,    77,    68,    69,    70,    71,
-      40,    72,     0,     0,   336,     0,     0,     0,    43,    77,
-      68,    69,    70,    71,     0,    72,     0,     0,   441,    68,
-      69,    70,    71,    77,    72,     0,     0,   492,     0,     0,
-       0,     0,    77
+       0,     0,   382,    74,    75,    76,     0,    77,    68,    69,
+      70,    71,     0,    72,     0,     0,   386,    74,    75,    76,
+       0,    77,    68,    69,    70,    71,     0,    72,     0,     0,
+     479,    74,    75,    76,     0,    77,    68,    69,    70,    71,
+       0,    72,     0,     0,   485,    74,    75,    76,     0,    77,
+      68,    69,    70,    71,     0,    72,     0,     0,   495,     0,
+       0,     0,     0,    77
 };
 
 static const yytype_int16 yycheck[] =
 {
-      38,    64,   123,   130,   168,   217,   333,     4,    28,     4,
-       4,     1,   424,   230,     4,   239,     4,    14,   182,     9,
-      15,    11,    12,    13,     5,    10,     7,     8,     4,   334,
-      17,    18,    19,    20,    71,   112,     4,    71,    28,    29,
-      30,    71,    62,    71,    34,    13,    71,    71,   113,    29,
-      31,    29,   195,    91,   108,    75,   183,   112,   113,   120,
-      98,    29,   116,   275,   125,   277,   278,   108,    16,    13,
-     213,   112,    20,    63,    64,    65,    66,    71,   123,    59,
-     304,    59,    79,    71,    74,   469,    81,   471,    78,   126,
-      80,    72,   126,   137,   138,    71,   126,   224,   126,    84,
-     317,   126,   126,   320,   112,   112,   112,   228,   115,    77,
-       6,   101,   239,   100,   104,   105,   106,   107,   108,   109,
-     532,   248,   112,   428,     4,   115,   116,   117,    24,   110,
-       0,     6,   176,   177,    30,   125,     4,   118,   119,    71,
-     445,   305,   359,   181,   449,   362,   108,   124,   125,    24,
-     112,    76,     4,   115,   116,    30,     4,    82,    83,   286,
-     104,   105,   106,   107,   108,   109,     7,     8,   112,   113,
-     114,   115,   116,   117,   124,     4,   303,   304,    51,    52,
-      53,    54,   112,   127,   128,   129,   130,   124,   108,   112,
-      31,     4,   103,   231,   232,   233,   323,     4,   101,   326,
-      96,   137,   419,   530,   421,   101,   122,   103,   112,   113,
-     114,   115,   113,   112,   110,   342,     4,   112,   116,    13,
-     125,    96,   118,   119,     4,   125,   101,    71,   103,   112,
-     112,    72,   270,   125,   272,   110,   125,     9,   125,    11,
-      12,    13,   406,   118,   119,   122,   125,   125,   375,   376,
-       4,   122,     6,     7,     8,   109,    28,    29,    30,   101,
-     123,    71,    34,     4,   126,   126,   304,    13,   306,   110,
-      24,   126,    26,   126,   124,   126,    30,   118,   119,   126,
-     318,   126,   112,   321,   124,   124,     4,     4,   452,    72,
-      71,    63,    64,    65,    66,     4,   334,   335,   112,   108,
-       4,     4,    74,     4,   425,   426,    78,   125,    80,   347,
-     104,   105,   106,   107,     4,   109,   443,   529,   112,   113,
-     114,   115,    71,   117,    51,    52,    53,    54,   120,   125,
-     125,     9,   104,   105,   106,   107,   108,   109,     9,   466,
-     112,   108,    96,   115,   116,   117,   473,   108,   102,   104,
-     105,   106,   107,   125,   109,   108,   110,   112,   104,   105,
-     106,   107,   117,   109,    21,   125,   112,   113,   114,   115,
-     108,   117,   124,   104,   105,   106,   107,   415,   109,     9,
-     125,   108,   125,     9,   100,   112,   117,    71,   122,   122,
-     428,   429,   122,    21,   521,   433,   123,    21,    21,   437,
-     123,   122,   112,     4,   467,     4,   444,   445,     4,    21,
-     448,   449,   124,   451,     4,   126,    43,   455,   125,    21,
-     125,    21,    49,    50,   124,     4,   464,   465,    55,    56,
-      57,    58,    59,    60,    61,     9,     4,   112,   126,     4,
-      67,    68,    69,    70,    35,    36,    37,    38,    39,    40,
-      41,    42,    12,    44,    45,    46,    47,    48,     4,     4,
-       4,   499,   500,   188,   502,   224,   342,   505,   128,   121,
-     508,    59,   510,   213,   443,   214,   499,   326,   248,   376,
-     273,   183,    56,    57,    58,    59,    60,    61,   273,   181,
-      98,   303,    -1,    -1,   121,    -1,   123,    71,    -1,    -1,
-      -1,    -1,   129,   130,   131,   132,   133,   134,   135,   136,
-      -1,   104,   105,   106,   107,   108,   109,    -1,    -1,   112,
-     113,   114,   115,   116,   117,    -1,    -1,    -1,    -1,   120,
-     123,   122,   123,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    -1,    97,    98,    99,   104,   105,
-     106,   107,   108,   109,    -1,    -1,   112,   113,   114,   115,
-     116,   117,   104,   105,   106,   107,    -1,   109,    -1,    -1,
-     112,   113,   114,   115,    -1,   117,   104,   105,   106,   107,
-      -1,   109,    -1,    -1,   112,   113,   114,   115,    -1,   117,
+      38,    64,   130,   123,   217,   335,   168,   230,    10,   336,
+       5,     4,     7,     8,   427,     6,    17,    18,    19,    20,
+     182,     4,    15,     4,     4,     4,     4,   112,    71,    71,
+      13,   239,    71,    24,    71,    14,    31,    71,    28,    30,
+     137,   138,   113,    29,   108,    29,    29,    71,   112,   195,
+       6,   115,   116,    91,   112,   183,   104,   105,   106,   107,
+      98,   109,   275,   108,   112,   278,   279,   213,    24,   117,
+     123,   116,    62,    59,    30,    59,   120,    72,     4,   176,
+     177,   125,    84,   126,   126,    75,   112,   126,    81,   126,
+      71,    71,   126,    71,    77,   318,   224,   305,   321,   100,
+      79,     0,   126,   108,   431,    96,     1,   112,   228,     4,
+     101,   239,   103,     4,     9,   110,    11,    12,    13,   110,
+     248,   448,   535,   118,   119,   452,    71,   118,   119,   472,
+      76,   474,     4,    28,    29,    30,    82,    83,   361,    34,
+      96,   364,    16,   181,   306,   101,    20,   103,    51,    52,
+      53,    54,   112,   113,   110,   112,   113,   114,   115,   287,
+     124,    13,   118,   119,   112,   124,   125,   115,    63,    64,
+      65,    66,   112,     4,     4,   115,   304,   305,   112,    74,
+       7,     8,   124,    78,   108,    80,     4,    51,    52,    53,
+      54,   112,   103,   231,   232,   233,   324,   325,     4,   422,
+     328,   424,   137,   533,    31,   101,   101,   122,   113,   104,
+     105,   106,   107,   108,   109,   112,   344,   112,   112,     4,
+     115,   116,   117,   104,   105,   106,   107,   108,   109,    13,
+     125,   112,   270,   116,   272,   116,   117,   125,   125,   125,
+     125,   125,     4,    13,   108,    72,   125,   409,   112,   125,
+     378,   379,   104,   105,   106,   107,   108,   109,    71,   123,
+     112,   113,   114,   115,   116,   117,   112,   305,     4,   307,
+       6,     7,     8,   112,   122,   127,   128,   129,   130,   122,
+     109,   319,   101,   110,   322,   123,   126,     4,    24,    71,
+      26,   118,   119,   455,    30,   112,   124,     4,   336,   337,
+     126,   126,   104,   105,   106,   107,   108,   109,   428,   429,
+     112,   349,   126,   115,   126,   117,   126,   126,   446,   532,
+     104,   105,   106,   107,   124,   109,   124,     4,   112,   113,
+     114,   115,    72,   117,   104,   105,   106,   107,     9,   109,
+      71,   469,   112,   113,   114,   115,     4,   117,   476,   108,
+       4,     4,    35,    36,    37,    38,    39,    40,    41,    42,
+      96,    44,    45,    46,    47,    48,   102,     4,   125,     4,
+     104,   105,   106,   107,   110,   109,    71,    71,   112,   120,
+     418,   125,   125,   117,     9,    56,    57,    58,    59,    60,
+      61,     9,   108,   431,   432,   108,   524,   108,   436,    21,
+      71,   125,   440,   125,   108,   124,     9,   470,     9,   447,
+     448,   125,   100,   451,   452,    71,   454,   122,     4,   122,
+     458,   122,     9,    21,    11,    12,    13,    21,    21,   467,
+     468,   104,   105,   106,   107,   122,   109,   120,   123,   122,
+     123,    28,    29,    30,   117,   112,     4,    34,     4,   104,
+     105,   106,   107,   108,   109,    21,   124,   112,   113,   114,
+     115,   116,   117,   126,   502,   503,     4,   505,   123,    21,
+     508,    21,   124,   511,   125,   513,    63,    64,    65,    66,
+     125,     4,    43,     4,   112,   126,     4,    74,    49,    50,
+      12,    78,     4,    80,    55,    56,    57,    58,    59,    60,
+      61,     4,     4,   224,    59,   128,    67,    68,    69,    70,
+     344,   121,   188,   213,   446,   214,   379,   104,   105,   106,
+     107,   108,   109,   328,   273,   112,   502,   273,   115,   116,
+     117,   304,    -1,   248,   183,   181,    98,    -1,   125,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      -1,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,    -1,
+     121,    -1,   123,    -1,    -1,    -1,    -1,    -1,   129,   130,
+     131,   132,   133,   134,   135,   136,   104,   105,   106,   107,
+     108,   109,    -1,    -1,   112,   113,   114,   115,   116,   117,
      104,   105,   106,   107,    -1,   109,    -1,    -1,   112,   113,
      114,   115,    -1,   117,   104,   105,   106,   107,    -1,   109,
       -1,    -1,   112,   113,   114,   115,    -1,   117,   104,   105,
      106,   107,    -1,   109,    -1,    -1,   112,   113,   114,   115,
-      -1,   117,   104,   105,   106,   107,   108,   109,    -1,    -1,
-     112,    -1,    -1,   115,    -1,   117,   104,   105,   106,   107,
-     108,   109,    -1,    -1,   112,    -1,    -1,    -1,   116,   117,
-     104,   105,   106,   107,    -1,   109,    -1,    -1,   112,   104,
-     105,   106,   107,   117,   109,    -1,    -1,   112,    -1,    -1,
-      -1,    -1,   117
+      -1,   117,   104,   105,   106,   107,    -1,   109,    -1,    -1,
+     112,   113,   114,   115,    -1,   117,   104,   105,   106,   107,
+      -1,   109,    -1,    -1,   112,   113,   114,   115,    -1,   117,
+     104,   105,   106,   107,    -1,   109,    -1,    -1,   112,    -1,
+      -1,    -1,    -1,   117
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -2321,33 +2321,33 @@
       65,    66,    74,    78,    80,   108,   112,   115,   116,   125,
      148,   181,   196,   198,   204,   206,   218,   224,   228,   230,
      232,   233,   234,   242,   243,   244,   247,   108,   263,   253,
-      13,   255,    13,   255,   255,   219,   112,   220,   221,   234,
-     247,   229,     4,     4,     4,   248,   225,   125,     4,   235,
-      35,    36,    37,    38,    39,    40,    41,    42,    44,    45,
-      46,    47,    48,   120,   122,   123,   231,   194,   255,     9,
-      56,    57,    58,    59,    60,    61,    71,   245,   246,   255,
-     245,   246,   222,    71,   222,   222,   125,   182,   197,   199,
-     112,   240,   241,   247,   205,   125,   112,   247,   252,    13,
-     112,   115,   116,   127,   128,   129,   130,   226,   234,   247,
-     255,   256,   255,    17,    18,    19,    20,   100,   195,     9,
-     253,   255,     9,   253,   255,   108,   215,   216,   247,   108,
-     108,   241,   189,   200,   201,    21,    71,   126,   194,   112,
-     207,   237,   255,   112,   236,   237,   255,   157,   108,   223,
-     255,    43,    49,    50,    55,    56,    57,    58,    59,    60,
-      61,    67,    68,    69,    70,   121,   123,   129,   130,   131,
-     132,   133,   134,   135,   136,   227,   124,   125,   253,     9,
-     253,     9,   100,   217,    71,   122,   122,   126,    10,    84,
-     184,   190,     4,    14,    79,   202,     4,    15,    81,   203,
-     247,   112,   240,   122,    21,    71,   126,   238,    21,    71,
-     126,    21,   123,   256,   255,   122,   112,   253,   253,   216,
-     263,   263,   237,   255,    76,    82,    83,   188,     4,   255,
-       4,   255,     4,    21,   233,   255,   112,   237,    16,    20,
-     239,   255,   112,   237,   255,   256,   124,   255,   126,     4,
-     255,   255,   112,   247,   183,   213,   238,   238,   247,   125,
-      21,   125,    21,   124,     4,    71,     4,     4,    71,     4,
-      71,   191,     4,   236,   255,   112,   255,   255,   255,   255,
-      28,    62,    75,   192,   126,   126,     4,     4,     4,   193,
-     247,     4,   222,   194,   216
+      13,   255,    13,   255,   255,   219,   112,   115,   220,   221,
+     234,   247,   229,     4,     4,     4,   248,   225,   125,     4,
+     235,    35,    36,    37,    38,    39,    40,    41,    42,    44,
+      45,    46,    47,    48,   120,   122,   123,   231,   194,   255,
+       9,    56,    57,    58,    59,    60,    61,    71,   245,   246,
+     255,   245,   246,   222,    71,    71,   222,   222,   125,   182,
+     197,   199,   112,   240,   241,   247,   205,   125,   112,   247,
+     252,    13,   112,   115,   116,   127,   128,   129,   130,   226,
+     234,   247,   255,   256,   255,    17,    18,    19,    20,   100,
+     195,     9,   253,   255,     9,   253,   255,   108,   215,   216,
+     247,   247,   108,   108,   241,   189,   200,   201,    21,    71,
+     126,   194,   112,   207,   237,   255,   112,   236,   237,   255,
+     157,   108,   223,   255,    43,    49,    50,    55,    56,    57,
+      58,    59,    60,    61,    67,    68,    69,    70,   121,   123,
+     129,   130,   131,   132,   133,   134,   135,   136,   227,   124,
+     125,   253,     9,   253,     9,   100,   217,    71,   122,   122,
+     126,    10,    84,   184,   190,     4,    14,    79,   202,     4,
+      15,    81,   203,   247,   112,   240,   122,    21,    71,   126,
+     238,    21,    71,   126,    21,   123,   256,   255,   122,   112,
+     253,   253,   216,   263,   263,   237,   255,    76,    82,    83,
+     188,     4,   255,     4,   255,     4,    21,   233,   255,   112,
+     237,    16,    20,   239,   255,   112,   237,   255,   256,   124,
+     255,   126,     4,   255,   255,   112,   247,   183,   213,   238,
+     238,   247,   125,    21,   125,    21,   124,     4,    71,     4,
+       4,    71,     4,    71,   191,     4,   236,   255,   112,   255,
+     255,   255,   255,    28,    62,    75,   192,   126,   126,     4,
+       4,     4,   193,   247,     4,   222,   194,   216
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -3175,22 +3175,22 @@
   switch (yyn)
     {
         case 2:
-#line 1102 "compilers/imcc/imcc.y"
+#line 1105 "compilers/imcc/imcc.y"
     { if (yynerrs) YYABORT; (yyval.i) = 0; }
     break;
 
   case 5:
-#line 1111 "compilers/imcc/imcc.y"
+#line 1114 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 6:
-#line 1112 "compilers/imcc/imcc.y"
+#line 1115 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 7:
-#line 1114 "compilers/imcc/imcc.y"
+#line 1117 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3199,7 +3199,7 @@
     break;
 
   case 8:
-#line 1120 "compilers/imcc/imcc.y"
+#line 1123 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3208,32 +3208,32 @@
     break;
 
   case 9:
-#line 1125 "compilers/imcc/imcc.y"
+#line 1128 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 10:
-#line 1126 "compilers/imcc/imcc.y"
+#line 1129 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 11:
-#line 1127 "compilers/imcc/imcc.y"
+#line 1130 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 12:
-#line 1128 "compilers/imcc/imcc.y"
+#line 1131 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 13:
-#line 1132 "compilers/imcc/imcc.y"
+#line 1135 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 14:
-#line 1134 "compilers/imcc/imcc.y"
+#line 1137 "compilers/imcc/imcc.y"
     {
            (yyval.i) = 0;
            do_loadlib(interp, (yyvsp[(2) - (3)].s));
@@ -3242,7 +3242,7 @@
     break;
 
   case 15:
-#line 1143 "compilers/imcc/imcc.y"
+#line 1146 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
            set_filename(interp, (yyvsp[(4) - (5)].s));
@@ -3250,14 +3250,14 @@
     break;
 
   case 16:
-#line 1148 "compilers/imcc/imcc.y"
+#line 1151 "compilers/imcc/imcc.y"
     {
            set_filename(interp, (yyvsp[(2) - (3)].s));
          }
     break;
 
   case 17:
-#line 1155 "compilers/imcc/imcc.y"
+#line 1158 "compilers/imcc/imcc.y"
     {
           /* We'll want to store an entry while emitting instructions, so just
            * store annotation like it's an instruction. */
@@ -3268,7 +3268,7 @@
     break;
 
   case 18:
-#line 1167 "compilers/imcc/imcc.y"
+#line 1170 "compilers/imcc/imcc.y"
     {
             STRING * const hll_name = Parrot_str_unescape(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
             CONTEXT(interp)->current_HLL =
@@ -3280,12 +3280,12 @@
     break;
 
   case 19:
-#line 1178 "compilers/imcc/imcc.y"
+#line 1181 "compilers/imcc/imcc.y"
     { pesky_global__is_def = 1; }
     break;
 
   case 20:
-#line 1179 "compilers/imcc/imcc.y"
+#line 1182 "compilers/imcc/imcc.y"
     {
              mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
              mem_sys_free((yyvsp[(4) - (6)].s));
@@ -3294,12 +3294,12 @@
     break;
 
   case 21:
-#line 1187 "compilers/imcc/imcc.y"
+#line 1190 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 22:
-#line 1188 "compilers/imcc/imcc.y"
+#line 1191 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
            pesky_global__is_def = 0;
@@ -3307,12 +3307,12 @@
     break;
 
   case 23:
-#line 1193 "compilers/imcc/imcc.y"
+#line 1196 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 24:
-#line 1194 "compilers/imcc/imcc.y"
+#line 1197 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
            pesky_global__is_def = 0;
@@ -3320,37 +3320,37 @@
     break;
 
   case 29:
-#line 1210 "compilers/imcc/imcc.y"
+#line 1213 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 30:
-#line 1211 "compilers/imcc/imcc.y"
+#line 1214 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 31:
-#line 1212 "compilers/imcc/imcc.y"
+#line 1215 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 32:
-#line 1213 "compilers/imcc/imcc.y"
+#line 1216 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 33:
-#line 1214 "compilers/imcc/imcc.y"
+#line 1217 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 36:
-#line 1219 "compilers/imcc/imcc.y"
+#line 1222 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 37:
-#line 1221 "compilers/imcc/imcc.y"
+#line 1224 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
                     (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs,
@@ -3360,7 +3360,7 @@
     break;
 
   case 38:
-#line 1228 "compilers/imcc/imcc.y"
+#line 1231 "compilers/imcc/imcc.y"
     {
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
@@ -3368,7 +3368,7 @@
     break;
 
   case 39:
-#line 1233 "compilers/imcc/imcc.y"
+#line 1236 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iSUBROUTINE(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -3378,17 +3378,18 @@
     break;
 
   case 40:
-#line 1240 "compilers/imcc/imcc.y"
+#line 1243 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
          }
     break;
 
   case 41:
-#line 1244 "compilers/imcc/imcc.y"
+#line 1247 "compilers/imcc/imcc.y"
     {
            SymReg *r = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s));
-           set_lexical(interp, r, (yyvsp[(2) - (4)].s));
+           SymReg *n = mk_const(interp, (yyvsp[(2) - (4)].s), 'S');
+           set_lexical(interp, r, n);
            (yyval.i) = 0;
            mem_sys_free((yyvsp[(2) - (4)].s));
            mem_sys_free((yyvsp[(4) - (4)].s));
@@ -3396,17 +3397,17 @@
     break;
 
   case 42:
-#line 1251 "compilers/imcc/imcc.y"
+#line 1255 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 44:
-#line 1259 "compilers/imcc/imcc.y"
+#line 1263 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
     break;
 
   case 45:
-#line 1262 "compilers/imcc/imcc.y"
+#line 1266 "compilers/imcc/imcc.y"
     {
            /* if (optimizer_level & OPT_PASM)
                          imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3417,7 +3418,7 @@
     break;
 
   case 48:
-#line 1278 "compilers/imcc/imcc.y"
+#line 1282 "compilers/imcc/imcc.y"
     {
            int re_open = 0;
            (yyval.i) = 0;
@@ -3432,7 +3433,7 @@
     break;
 
   case 49:
-#line 1293 "compilers/imcc/imcc.y"
+#line 1297 "compilers/imcc/imcc.y"
     {
             if (IMCC_INFO(interp)->in_slice)
                 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -3443,26 +3444,26 @@
     break;
 
   case 50:
-#line 1300 "compilers/imcc/imcc.y"
+#line 1304 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 51:
-#line 1305 "compilers/imcc/imcc.y"
+#line 1309 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
          }
     break;
 
   case 52:
-#line 1309 "compilers/imcc/imcc.y"
+#line 1313 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 53:
-#line 1313 "compilers/imcc/imcc.y"
+#line 1317 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t);
           if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid) {
@@ -3473,22 +3474,22 @@
     break;
 
   case 54:
-#line 1321 "compilers/imcc/imcc.y"
+#line 1325 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 55:
-#line 1325 "compilers/imcc/imcc.y"
+#line 1329 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 56:
-#line 1326 "compilers/imcc/imcc.y"
+#line 1330 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 57:
-#line 1328 "compilers/imcc/imcc.y"
+#line 1332 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                  add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
@@ -3501,17 +3502,17 @@
     break;
 
   case 58:
-#line 1340 "compilers/imcc/imcc.y"
+#line 1344 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 59:
-#line 1340 "compilers/imcc/imcc.y"
+#line 1344 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(3) - (3)].sr); pesky_global__is_def=0; }
     break;
 
   case 60:
-#line 1345 "compilers/imcc/imcc.y"
+#line 1349 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(3) - (3)].t) & VT_UNIQUE_REG)
                (yyval.sr) = mk_ident_ur(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
@@ -3523,12 +3524,12 @@
     break;
 
   case 61:
-#line 1358 "compilers/imcc/imcc.y"
+#line 1362 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 62:
-#line 1363 "compilers/imcc/imcc.y"
+#line 1367 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
@@ -3537,7 +3538,7 @@
     break;
 
   case 63:
-#line 1369 "compilers/imcc/imcc.y"
+#line 1373 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3546,7 +3547,7 @@
     break;
 
   case 64:
-#line 1378 "compilers/imcc/imcc.y"
+#line 1382 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name = NULL;
@@ -3555,7 +3556,7 @@
     break;
 
   case 65:
-#line 1384 "compilers/imcc/imcc.y"
+#line 1388 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name = (yyvsp[(3) - (4)].s);
@@ -3564,7 +3565,7 @@
     break;
 
   case 66:
-#line 1393 "compilers/imcc/imcc.y"
+#line 1397 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = NULL;
@@ -3573,7 +3574,7 @@
     break;
 
   case 67:
-#line 1399 "compilers/imcc/imcc.y"
+#line 1403 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
@@ -3582,7 +3583,7 @@
     break;
 
   case 68:
-#line 1408 "compilers/imcc/imcc.y"
+#line 1412 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL;
@@ -3591,7 +3592,7 @@
     break;
 
   case 69:
-#line 1414 "compilers/imcc/imcc.y"
+#line 1418 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
@@ -3600,7 +3601,7 @@
     break;
 
   case 70:
-#line 1423 "compilers/imcc/imcc.y"
+#line 1427 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
@@ -3608,7 +3609,7 @@
     break;
 
   case 71:
-#line 1431 "compilers/imcc/imcc.y"
+#line 1435 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = NULL;
@@ -3616,7 +3617,7 @@
     break;
 
   case 72:
-#line 1436 "compilers/imcc/imcc.y"
+#line 1440 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3626,14 +3627,14 @@
     break;
 
   case 73:
-#line 1446 "compilers/imcc/imcc.y"
+#line 1450 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
          }
     break;
 
   case 74:
-#line 1450 "compilers/imcc/imcc.y"
+#line 1454 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
@@ -3641,7 +3642,7 @@
     break;
 
   case 75:
-#line 1455 "compilers/imcc/imcc.y"
+#line 1459 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
@@ -3649,27 +3650,27 @@
     break;
 
   case 76:
-#line 1462 "compilers/imcc/imcc.y"
+#line 1466 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
     break;
 
   case 77:
-#line 1463 "compilers/imcc/imcc.y"
+#line 1467 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
     break;
 
   case 78:
-#line 1464 "compilers/imcc/imcc.y"
+#line 1468 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
     break;
 
   case 79:
-#line 1465 "compilers/imcc/imcc.y"
+#line 1469 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
     break;
 
   case 80:
-#line 1467 "compilers/imcc/imcc.y"
+#line 1471 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3683,7 +3684,7 @@
     break;
 
   case 81:
-#line 1478 "compilers/imcc/imcc.y"
+#line 1482 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3697,12 +3698,12 @@
     break;
 
   case 82:
-#line 1488 "compilers/imcc/imcc.y"
+#line 1492 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 85:
-#line 1498 "compilers/imcc/imcc.y"
+#line 1502 "compilers/imcc/imcc.y"
     {
            char name[128];
            SymReg *r, *r1;
@@ -3729,82 +3730,82 @@
     break;
 
   case 86:
-#line 1526 "compilers/imcc/imcc.y"
+#line 1530 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 87:
-#line 1530 "compilers/imcc/imcc.y"
+#line 1534 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
   case 88:
-#line 1531 "compilers/imcc/imcc.y"
+#line 1535 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
   case 89:
-#line 1535 "compilers/imcc/imcc.y"
+#line 1539 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 90:
-#line 1536 "compilers/imcc/imcc.y"
+#line 1540 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 91:
-#line 1540 "compilers/imcc/imcc.y"
+#line 1544 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 93:
-#line 1545 "compilers/imcc/imcc.y"
+#line 1549 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
   case 94:
-#line 1546 "compilers/imcc/imcc.y"
+#line 1550 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 95:
-#line 1550 "compilers/imcc/imcc.y"
+#line 1554 "compilers/imcc/imcc.y"
     { (yyval.t) = P_LOAD; }
     break;
 
   case 96:
-#line 1551 "compilers/imcc/imcc.y"
+#line 1555 "compilers/imcc/imcc.y"
     { (yyval.t) = P_INIT; }
     break;
 
   case 97:
-#line 1552 "compilers/imcc/imcc.y"
+#line 1556 "compilers/imcc/imcc.y"
     { (yyval.t) = P_MAIN; }
     break;
 
   case 98:
-#line 1553 "compilers/imcc/imcc.y"
+#line 1557 "compilers/imcc/imcc.y"
     { (yyval.t) = P_IMMEDIATE; }
     break;
 
   case 99:
-#line 1554 "compilers/imcc/imcc.y"
+#line 1558 "compilers/imcc/imcc.y"
     { (yyval.t) = P_POSTCOMP; }
     break;
 
   case 100:
-#line 1555 "compilers/imcc/imcc.y"
+#line 1559 "compilers/imcc/imcc.y"
     { (yyval.t) = P_ANON; }
     break;
 
   case 101:
-#line 1556 "compilers/imcc/imcc.y"
+#line 1560 "compilers/imcc/imcc.y"
     { (yyval.t) = P_NEED_LEX; }
     break;
 
   case 109:
-#line 1568 "compilers/imcc/imcc.y"
+#line 1572 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -3812,14 +3813,14 @@
     break;
 
   case 110:
-#line 1573 "compilers/imcc/imcc.y"
+#line 1577 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 111:
-#line 1577 "compilers/imcc/imcc.y"
+#line 1581 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isNCI;
@@ -3827,21 +3828,21 @@
     break;
 
   case 112:
-#line 1582 "compilers/imcc/imcc.y"
+#line 1586 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 113:
-#line 1586 "compilers/imcc/imcc.y"
+#line 1590 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
          }
     break;
 
   case 114:
-#line 1590 "compilers/imcc/imcc.y"
+#line 1594 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -3849,7 +3850,7 @@
     break;
 
   case 115:
-#line 1595 "compilers/imcc/imcc.y"
+#line 1599 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -3857,27 +3858,27 @@
     break;
 
   case 116:
-#line 1603 "compilers/imcc/imcc.y"
+#line 1607 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 117:
-#line 1604 "compilers/imcc/imcc.y"
+#line 1608 "compilers/imcc/imcc.y"
     { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
   case 118:
-#line 1608 "compilers/imcc/imcc.y"
+#line 1612 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
   case 119:
-#line 1613 "compilers/imcc/imcc.y"
+#line 1617 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 120:
-#line 1615 "compilers/imcc/imcc.y"
+#line 1619 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3885,17 +3886,17 @@
     break;
 
   case 121:
-#line 1622 "compilers/imcc/imcc.y"
+#line 1626 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 122:
-#line 1623 "compilers/imcc/imcc.y"
+#line 1627 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 123:
-#line 1624 "compilers/imcc/imcc.y"
+#line 1628 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            SymReg *ignored;
@@ -3910,57 +3911,57 @@
     break;
 
   case 124:
-#line 1638 "compilers/imcc/imcc.y"
+#line 1642 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 125:
-#line 1639 "compilers/imcc/imcc.y"
+#line 1643 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 126:
-#line 1643 "compilers/imcc/imcc.y"
+#line 1647 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;   }
     break;
 
   case 127:
-#line 1644 "compilers/imcc/imcc.y"
+#line 1648 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPTIONAL; }
     break;
 
   case 128:
-#line 1645 "compilers/imcc/imcc.y"
+#line 1649 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPT_FLAG; }
     break;
 
   case 129:
-#line 1646 "compilers/imcc/imcc.y"
+#line 1650 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
   case 130:
-#line 1647 "compilers/imcc/imcc.y"
+#line 1651 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 131:
-#line 1648 "compilers/imcc/imcc.y"
+#line 1652 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_UNIQUE_REG; }
     break;
 
   case 132:
-#line 1653 "compilers/imcc/imcc.y"
+#line 1657 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 0); }
     break;
 
   case 133:
-#line 1655 "compilers/imcc/imcc.y"
+#line 1659 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 134:
-#line 1657 "compilers/imcc/imcc.y"
+#line 1661 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
            (yyval.i) = 0;
@@ -3968,22 +3969,22 @@
     break;
 
   case 135:
-#line 1664 "compilers/imcc/imcc.y"
+#line 1668 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); }
     break;
 
   case 136:
-#line 1666 "compilers/imcc/imcc.y"
+#line 1670 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 137:
-#line 1670 "compilers/imcc/imcc.y"
+#line 1674 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 138:
-#line 1672 "compilers/imcc/imcc.y"
+#line 1676 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -3991,7 +3992,7 @@
     break;
 
   case 139:
-#line 1677 "compilers/imcc/imcc.y"
+#line 1681 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -3999,12 +4000,12 @@
     break;
 
   case 140:
-#line 1684 "compilers/imcc/imcc.y"
+#line 1688 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 141:
-#line 1686 "compilers/imcc/imcc.y"
+#line 1690 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -4012,7 +4013,7 @@
     break;
 
   case 142:
-#line 1691 "compilers/imcc/imcc.y"
+#line 1695 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -4020,17 +4021,17 @@
     break;
 
   case 143:
-#line 1698 "compilers/imcc/imcc.y"
+#line 1702 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 144:
-#line 1702 "compilers/imcc/imcc.y"
+#line 1706 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 145:
-#line 1707 "compilers/imcc/imcc.y"
+#line 1711 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
               begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
@@ -4038,7 +4039,7 @@
     break;
 
   case 146:
-#line 1712 "compilers/imcc/imcc.y"
+#line 1716 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
           (yyval.t) = 0;
@@ -4046,22 +4047,22 @@
     break;
 
   case 147:
-#line 1719 "compilers/imcc/imcc.y"
+#line 1723 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 148:
-#line 1720 "compilers/imcc/imcc.y"
+#line 1724 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 149:
-#line 1724 "compilers/imcc/imcc.y"
+#line 1728 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 150:
-#line 1726 "compilers/imcc/imcc.y"
+#line 1730 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -4074,14 +4075,14 @@
     break;
 
   case 151:
-#line 1736 "compilers/imcc/imcc.y"
+#line 1740 "compilers/imcc/imcc.y"
     {
            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 152:
-#line 1740 "compilers/imcc/imcc.y"
+#line 1744 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -4094,66 +4095,66 @@
     break;
 
   case 153:
-#line 1750 "compilers/imcc/imcc.y"
+#line 1754 "compilers/imcc/imcc.y"
     {
            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
          }
     break;
 
   case 156:
-#line 1770 "compilers/imcc/imcc.y"
+#line 1774 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 157:
-#line 1775 "compilers/imcc/imcc.y"
+#line 1779 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
   case 158:
-#line 1776 "compilers/imcc/imcc.y"
+#line 1780 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 159:
-#line 1777 "compilers/imcc/imcc.y"
+#line 1781 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 160:
-#line 1778 "compilers/imcc/imcc.y"
+#line 1782 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 161:
-#line 1779 "compilers/imcc/imcc.y"
+#line 1783 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 162:
-#line 1780 "compilers/imcc/imcc.y"
+#line 1784 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 163:
-#line 1784 "compilers/imcc/imcc.y"
+#line 1788 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 167:
-#line 1795 "compilers/imcc/imcc.y"
+#line 1799 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
          }
     break;
 
   case 168:
-#line 1803 "compilers/imcc/imcc.y"
+#line 1807 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
   case 169:
-#line 1805 "compilers/imcc/imcc.y"
+#line 1809 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
                IMCC_warning(interp, "Too many errors. Correct some first.\n");
@@ -4164,7 +4165,7 @@
     break;
 
   case 170:
-#line 1816 "compilers/imcc/imcc.y"
+#line 1820 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(1) - (1)].idlist);
            l->next = NULL;
@@ -4173,7 +4174,7 @@
     break;
 
   case 171:
-#line 1823 "compilers/imcc/imcc.y"
+#line 1827 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(3) - (3)].idlist);
            l->next = (yyvsp[(1) - (3)].idlist);
@@ -4182,7 +4183,7 @@
     break;
 
   case 172:
-#line 1832 "compilers/imcc/imcc.y"
+#line 1836 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
            l->id           = (yyvsp[(1) - (2)].s);
@@ -4192,22 +4193,22 @@
     break;
 
   case 173:
-#line 1841 "compilers/imcc/imcc.y"
+#line 1845 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 174:
-#line 1842 "compilers/imcc/imcc.y"
+#line 1846 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 177:
-#line 1849 "compilers/imcc/imcc.y"
+#line 1853 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 178:
-#line 1850 "compilers/imcc/imcc.y"
+#line 1854 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            while (l) {
@@ -4226,19 +4227,28 @@
     break;
 
   case 179:
-#line 1866 "compilers/imcc/imcc.y"
+#line 1870 "compilers/imcc/imcc.y"
     {
-           set_lexical(interp, (yyvsp[(4) - (4)].sr), (yyvsp[(2) - (4)].s)); (yyval.i) = 0;
+           SymReg *n = mk_const(interp, (yyvsp[(2) - (4)].s), 'S');
+           set_lexical(interp, (yyvsp[(4) - (4)].sr), n); (yyval.i) = 0;
          }
     break;
 
   case 180:
-#line 1869 "compilers/imcc/imcc.y"
-    { pesky_global__is_def=1; }
+#line 1875 "compilers/imcc/imcc.y"
+    {
+           SymReg *n = mk_const(interp, (yyvsp[(2) - (4)].s), 'U');
+           set_lexical(interp, (yyvsp[(4) - (4)].sr), n); (yyval.i) = 0;
+         }
     break;
 
   case 181:
-#line 1870 "compilers/imcc/imcc.y"
+#line 1879 "compilers/imcc/imcc.y"
+    { pesky_global__is_def=1; }
+    break;
+
+  case 182:
+#line 1880 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
            pesky_global__is_def=0;
@@ -4246,13 +4256,13 @@
          }
     break;
 
-  case 183:
-#line 1877 "compilers/imcc/imcc.y"
+  case 184:
+#line 1887 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
-  case 184:
-#line 1878 "compilers/imcc/imcc.y"
+  case 185:
+#line 1888 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
            pesky_global__is_def=0;
@@ -4260,8 +4270,8 @@
          }
     break;
 
-  case 185:
-#line 1884 "compilers/imcc/imcc.y"
+  case 186:
+#line 1894 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
@@ -4269,15 +4279,15 @@
          }
     break;
 
-  case 186:
-#line 1890 "compilers/imcc/imcc.y"
+  case 187:
+#line 1900 "compilers/imcc/imcc.y"
     {
             (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
          }
     break;
 
-  case 187:
-#line 1894 "compilers/imcc/imcc.y"
+  case 188:
+#line 1904 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -4291,48 +4301,48 @@
          }
     break;
 
-  case 188:
-#line 1905 "compilers/imcc/imcc.y"
+  case 189:
+#line 1915 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
-  case 189:
-#line 1906 "compilers/imcc/imcc.y"
+  case 190:
+#line 1916 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
-  case 190:
-#line 1907 "compilers/imcc/imcc.y"
+  case 191:
+#line 1917 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 193:
-#line 1910 "compilers/imcc/imcc.y"
+  case 194:
+#line 1920 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
-  case 194:
-#line 1914 "compilers/imcc/imcc.y"
+  case 195:
+#line 1924 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; }
     break;
 
-  case 195:
-#line 1915 "compilers/imcc/imcc.y"
+  case 196:
+#line 1925 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; }
     break;
 
-  case 196:
-#line 1916 "compilers/imcc/imcc.y"
+  case 197:
+#line 1926 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; }
     break;
 
-  case 197:
-#line 1917 "compilers/imcc/imcc.y"
+  case 198:
+#line 1927 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; }
     break;
 
-  case 198:
-#line 1922 "compilers/imcc/imcc.y"
+  case 199:
+#line 1932 "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 */
@@ -4344,38 +4354,38 @@
          }
     break;
 
-  case 199:
-#line 1935 "compilers/imcc/imcc.y"
+  case 200:
+#line 1945 "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 200:
-#line 1937 "compilers/imcc/imcc.y"
+  case 201:
+#line 1947 "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 201:
-#line 1939 "compilers/imcc/imcc.y"
+  case 202:
+#line 1949 "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 202:
-#line 1941 "compilers/imcc/imcc.y"
+  case 203:
+#line 1951 "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 203:
-#line 1943 "compilers/imcc/imcc.y"
+  case 204:
+#line 1953 "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 204:
-#line 1948 "compilers/imcc/imcc.y"
+  case 205:
+#line 1958 "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 205:
-#line 1951 "compilers/imcc/imcc.y"
+  case 206:
+#line 1961 "compilers/imcc/imcc.y"
     {
            add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4383,160 +4393,160 @@
          }
     break;
 
-  case 206:
-#line 1957 "compilers/imcc/imcc.y"
+  case 207:
+#line 1967 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
          }
     break;
 
-  case 207:
-#line 1961 "compilers/imcc/imcc.y"
+  case 208:
+#line 1971 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
          }
     break;
 
-  case 211:
-#line 1969 "compilers/imcc/imcc.y"
+  case 212:
+#line 1979 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
          }
     break;
 
-  case 212:
-#line 1976 "compilers/imcc/imcc.y"
+  case 213:
+#line 1986 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
-  case 213:
-#line 1977 "compilers/imcc/imcc.y"
+  case 214:
+#line 1987 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
-  case 214:
-#line 1978 "compilers/imcc/imcc.y"
+  case 215:
+#line 1988 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
-  case 215:
-#line 1982 "compilers/imcc/imcc.y"
+  case 216:
+#line 1992 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 216:
-#line 1983 "compilers/imcc/imcc.y"
+  case 217:
+#line 1993 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
-  case 217:
-#line 1984 "compilers/imcc/imcc.y"
+  case 218:
+#line 1994 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 218:
-#line 1985 "compilers/imcc/imcc.y"
+  case 219:
+#line 1995 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
-  case 219:
-#line 1986 "compilers/imcc/imcc.y"
+  case 220:
+#line 1996 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 220:
-#line 1987 "compilers/imcc/imcc.y"
+  case 221:
+#line 1997 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 221:
-#line 1988 "compilers/imcc/imcc.y"
+  case 222:
+#line 1998 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
-  case 222:
-#line 1989 "compilers/imcc/imcc.y"
+  case 223:
+#line 1999 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 223:
-#line 1990 "compilers/imcc/imcc.y"
+  case 224:
+#line 2000 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
-  case 224:
-#line 1991 "compilers/imcc/imcc.y"
+  case 225:
+#line 2001 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
-  case 225:
-#line 1992 "compilers/imcc/imcc.y"
+  case 226:
+#line 2002 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
-  case 226:
-#line 1993 "compilers/imcc/imcc.y"
+  case 227:
+#line 2003 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
-  case 227:
-#line 1994 "compilers/imcc/imcc.y"
+  case 228:
+#line 2004 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
-  case 228:
-#line 1995 "compilers/imcc/imcc.y"
+  case 229:
+#line 2005 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
-  case 229:
-#line 1996 "compilers/imcc/imcc.y"
+  case 230:
+#line 2006 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 230:
-#line 1997 "compilers/imcc/imcc.y"
+  case 231:
+#line 2007 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 231:
-#line 1998 "compilers/imcc/imcc.y"
+  case 232:
+#line 2008 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 232:
-#line 1999 "compilers/imcc/imcc.y"
+  case 233:
+#line 2009 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
-  case 233:
-#line 2000 "compilers/imcc/imcc.y"
+  case 234:
+#line 2010 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
-  case 234:
-#line 2001 "compilers/imcc/imcc.y"
+  case 235:
+#line 2011 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
-  case 235:
-#line 2002 "compilers/imcc/imcc.y"
+  case 236:
+#line 2012 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
-  case 236:
-#line 2003 "compilers/imcc/imcc.y"
+  case 237:
+#line 2013 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 237:
-#line 2004 "compilers/imcc/imcc.y"
+  case 238:
+#line 2014 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 238:
-#line 2010 "compilers/imcc/imcc.y"
+  case 239:
+#line 2020 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
@@ -4544,85 +4554,85 @@
          }
     break;
 
-  case 239:
-#line 2015 "compilers/imcc/imcc.y"
+  case 240:
+#line 2025 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
-  case 240:
-#line 2022 "compilers/imcc/imcc.y"
+  case 241:
+#line 2032 "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 241:
-#line 2028 "compilers/imcc/imcc.y"
+  case 242:
+#line 2038 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
-  case 242:
-#line 2029 "compilers/imcc/imcc.y"
+  case 243:
+#line 2039 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 243:
-#line 2030 "compilers/imcc/imcc.y"
+  case 244:
+#line 2040 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 244:
-#line 2031 "compilers/imcc/imcc.y"
+  case 245:
+#line 2041 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
-  case 245:
-#line 2032 "compilers/imcc/imcc.y"
+  case 246:
+#line 2042 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 246:
-#line 2033 "compilers/imcc/imcc.y"
+  case 247:
+#line 2043 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 247:
-#line 2034 "compilers/imcc/imcc.y"
+  case 248:
+#line 2044 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 248:
-#line 2035 "compilers/imcc/imcc.y"
+  case 249:
+#line 2045 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
-  case 249:
-#line 2036 "compilers/imcc/imcc.y"
+  case 250:
+#line 2046 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 250:
-#line 2037 "compilers/imcc/imcc.y"
+  case 251:
+#line 2047 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 251:
-#line 2038 "compilers/imcc/imcc.y"
+  case 252:
+#line 2048 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 252:
-#line 2039 "compilers/imcc/imcc.y"
+  case 253:
+#line 2049 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 253:
-#line 2040 "compilers/imcc/imcc.y"
+  case 254:
+#line 2050 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 254:
-#line 2046 "compilers/imcc/imcc.y"
+  case 255:
+#line 2056 "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,
@@ -4632,23 +4642,23 @@
        }
     break;
 
-  case 255:
-#line 2056 "compilers/imcc/imcc.y"
+  case 256:
+#line 2066 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 256:
-#line 2057 "compilers/imcc/imcc.y"
+  case 257:
+#line 2067 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 257:
-#line 2058 "compilers/imcc/imcc.y"
+  case 258:
+#line 2068 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 258:
-#line 2060 "compilers/imcc/imcc.y"
+  case 259:
+#line 2070 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -4656,8 +4666,8 @@
          }
     break;
 
-  case 259:
-#line 2066 "compilers/imcc/imcc.y"
+  case 260:
+#line 2076 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
             char *name = (yyvsp[(3) - (3)].sr)->name;
@@ -4673,8 +4683,8 @@
         }
     break;
 
-  case 260:
-#line 2080 "compilers/imcc/imcc.y"
+  case 261:
+#line 2090 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -4682,31 +4692,31 @@
          }
     break;
 
-  case 261:
-#line 2085 "compilers/imcc/imcc.y"
+  case 262:
+#line 2095 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
-  case 262:
-#line 2091 "compilers/imcc/imcc.y"
+  case 263:
+#line 2101 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
          }
     break;
 
-  case 263:
-#line 2095 "compilers/imcc/imcc.y"
+  case 264:
+#line 2105 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
-  case 264:
-#line 2099 "compilers/imcc/imcc.y"
+  case 265:
+#line 2109 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 265:
-#line 2101 "compilers/imcc/imcc.y"
+  case 266:
+#line 2111 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4718,8 +4728,8 @@
          }
     break;
 
-  case 266:
-#line 2111 "compilers/imcc/imcc.y"
+  case 267:
+#line 2121 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4731,8 +4741,8 @@
          }
     break;
 
-  case 267:
-#line 2121 "compilers/imcc/imcc.y"
+  case 268:
+#line 2131 "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));
@@ -4740,16 +4750,16 @@
          }
     break;
 
-  case 268:
-#line 2127 "compilers/imcc/imcc.y"
+  case 269:
+#line 2137 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg_var(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
          }
     break;
 
-  case 269:
-#line 2132 "compilers/imcc/imcc.y"
+  case 270:
+#line 2142 "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));
@@ -4757,43 +4767,43 @@
          }
     break;
 
-  case 270:
-#line 2140 "compilers/imcc/imcc.y"
+  case 271:
+#line 2150 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 271:
-#line 2144 "compilers/imcc/imcc.y"
+  case 272:
+#line 2154 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 272:
-#line 2145 "compilers/imcc/imcc.y"
+  case 273:
+#line 2155 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
-  case 273:
-#line 2149 "compilers/imcc/imcc.y"
+  case 274:
+#line 2159 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT; }
     break;
 
-  case 274:
-#line 2150 "compilers/imcc/imcc.y"
+  case 275:
+#line 2160 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
-  case 275:
-#line 2153 "compilers/imcc/imcc.y"
+  case 276:
+#line 2163 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
-  case 276:
-#line 2157 "compilers/imcc/imcc.y"
+  case 277:
+#line 2167 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 277:
-#line 2162 "compilers/imcc/imcc.y"
+  case 278:
+#line 2172 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4805,16 +4815,16 @@
          }
     break;
 
-  case 278:
-#line 2172 "compilers/imcc/imcc.y"
+  case 279:
+#line 2182 "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 279:
-#line 2177 "compilers/imcc/imcc.y"
+  case 280:
+#line 2187 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4826,133 +4836,133 @@
          }
     break;
 
-  case 280:
-#line 2187 "compilers/imcc/imcc.y"
+  case 281:
+#line 2197 "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 281:
-#line 2191 "compilers/imcc/imcc.y"
+  case 282:
+#line 2201 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 282:
-#line 2195 "compilers/imcc/imcc.y"
+  case 283:
+#line 2205 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 283:
-#line 2196 "compilers/imcc/imcc.y"
+  case 284:
+#line 2206 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 284:
-#line 2201 "compilers/imcc/imcc.y"
+  case 285:
+#line 2211 "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 285:
-#line 2205 "compilers/imcc/imcc.y"
+  case 286:
+#line 2215 "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 286:
-#line 2209 "compilers/imcc/imcc.y"
+  case 287:
+#line 2219 "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 287:
-#line 2216 "compilers/imcc/imcc.y"
+  case 288:
+#line 2226 "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 288:
-#line 2220 "compilers/imcc/imcc.y"
+  case 289:
+#line 2230 "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 289:
-#line 2224 "compilers/imcc/imcc.y"
+  case 290:
+#line 2234 "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 290:
-#line 2230 "compilers/imcc/imcc.y"
+  case 291:
+#line 2240 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 291:
-#line 2231 "compilers/imcc/imcc.y"
+  case 292:
+#line 2241 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 292:
-#line 2235 "compilers/imcc/imcc.y"
+  case 293:
+#line 2245 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
-  case 293:
-#line 2236 "compilers/imcc/imcc.y"
+  case 294:
+#line 2246 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
-  case 294:
-#line 2237 "compilers/imcc/imcc.y"
+  case 295:
+#line 2247 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
-  case 295:
-#line 2238 "compilers/imcc/imcc.y"
+  case 296:
+#line 2248 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
-  case 296:
-#line 2239 "compilers/imcc/imcc.y"
+  case 297:
+#line 2249 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
-  case 297:
-#line 2240 "compilers/imcc/imcc.y"
+  case 298:
+#line 2250 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
-  case 300:
-#line 2249 "compilers/imcc/imcc.y"
+  case 301:
+#line 2259 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
-  case 301:
-#line 2250 "compilers/imcc/imcc.y"
+  case 302:
+#line 2260 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 302:
-#line 2254 "compilers/imcc/imcc.y"
+  case 303:
+#line 2264 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
-  case 304:
-#line 2259 "compilers/imcc/imcc.y"
+  case 305:
+#line 2269 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 305:
-#line 2261 "compilers/imcc/imcc.y"
+  case 306:
+#line 2271 "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);
@@ -4961,54 +4971,54 @@
          }
     break;
 
-  case 306:
-#line 2268 "compilers/imcc/imcc.y"
+  case 307:
+#line 2278 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
          }
     break;
 
-  case 308:
-#line 2275 "compilers/imcc/imcc.y"
+  case 309:
+#line 2285 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 309:
-#line 2276 "compilers/imcc/imcc.y"
+  case 310:
+#line 2286 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 310:
-#line 2280 "compilers/imcc/imcc.y"
+  case 311:
+#line 2290 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 311:
-#line 2281 "compilers/imcc/imcc.y"
+  case 312:
+#line 2291 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 312:
-#line 2285 "compilers/imcc/imcc.y"
+  case 313:
+#line 2295 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 313:
-#line 2286 "compilers/imcc/imcc.y"
+  case 314:
+#line 2296 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 318:
-#line 2300 "compilers/imcc/imcc.y"
+  case 319:
+#line 2310 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
            IMCC_INFO(interp)->in_slice = 0;
          }
     break;
 
-  case 319:
-#line 2305 "compilers/imcc/imcc.y"
+  case 320:
+#line 2315 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5016,16 +5026,16 @@
          }
     break;
 
-  case 320:
-#line 2313 "compilers/imcc/imcc.y"
+  case 321:
+#line 2323 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
            IMCC_INFO(interp)->in_slice = 0;
          }
     break;
 
-  case 321:
-#line 2318 "compilers/imcc/imcc.y"
+  case 322:
+#line 2328 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5033,21 +5043,21 @@
          }
     break;
 
-  case 322:
-#line 2326 "compilers/imcc/imcc.y"
+  case 323:
+#line 2336 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 323:
-#line 2328 "compilers/imcc/imcc.y"
+  case 324:
+#line 2338 "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 324:
-#line 2336 "compilers/imcc/imcc.y"
+  case 325:
+#line 2346 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->in_slice)
                (yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE;
@@ -5055,54 +5065,54 @@
          }
     break;
 
-  case 325:
-#line 2344 "compilers/imcc/imcc.y"
+  case 326:
+#line 2354 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
-  case 326:
-#line 2345 "compilers/imcc/imcc.y"
+  case 327:
+#line 2355 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
-  case 327:
-#line 2346 "compilers/imcc/imcc.y"
+  case 328:
+#line 2356 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
-  case 328:
-#line 2347 "compilers/imcc/imcc.y"
+  case 329:
+#line 2357 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
-  case 329:
-#line 2348 "compilers/imcc/imcc.y"
+  case 330:
+#line 2358 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 330:
-#line 2352 "compilers/imcc/imcc.y"
+  case 331:
+#line 2362 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 331:
-#line 2353 "compilers/imcc/imcc.y"
+  case 332:
+#line 2363 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 332:
-#line 2354 "compilers/imcc/imcc.y"
+  case 333:
+#line 2364 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 333:
-#line 2355 "compilers/imcc/imcc.y"
+  case 334:
+#line 2365 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 5093 "compilers/imcc/imcparser.c"
+#line 5105 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5316,7 +5326,7 @@
 }
 
 
-#line 2361 "compilers/imcc/imcc.y"
+#line 2371 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */

Modified: trunk/compilers/imcc/imcparser.h
==============================================================================
--- trunk/compilers/imcc/imcparser.h	Wed Apr 22 19:14:46 2009	(r38273)
+++ trunk/compilers/imcc/imcparser.h	Wed Apr 22 19:57:35 2009	(r38274)
@@ -295,7 +295,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 1007 "compilers/imcc/imcc.y"
+#line 1010 "compilers/imcc/imcc.y"
 {
     IdList * idlist;
     int t;

Modified: trunk/t/compilers/imcc/syn/regressions.t
==============================================================================
--- trunk/t/compilers/imcc/syn/regressions.t	Wed Apr 22 19:14:46 2009	(r38273)
+++ trunk/t/compilers/imcc/syn/regressions.t	Wed Apr 22 19:57:35 2009	(r38274)
@@ -126,9 +126,6 @@
 /syntax error/
 OUT
 
-TODO: {
-  local $TODO = "TT #575";
-
 pir_output_is( <<'CODE', <<'OUT', 'unicode lexical identifiers (TT #575)');
  .sub main :main
     $P0 = box 'hello world'
@@ -140,7 +137,6 @@
 CODE
 hello world
 OUT
-}
 
 # Local Variables:
 #   mode: cperl


More information about the parrot-commits mailing list