[svn:parrot] r46440 - trunk/compilers/imcc

plobsing at svn.parrot.org plobsing at svn.parrot.org
Sun May 9 20:50:09 UTC 2010


Author: plobsing
Date: Sun May  9 20:50:08 2010
New Revision: 46440
URL: https://trac.parrot.org/parrot/changeset/46440

Log:
eliminate special parsing of 'new' opcode for old-style class numbering

Modified:
   trunk/compilers/imcc/imc.h
   trunk/compilers/imcc/imcc.y
   trunk/compilers/imcc/imcparser.c
   trunk/compilers/imcc/parser_util.c
   trunk/compilers/imcc/symreg.c

Modified: trunk/compilers/imcc/imc.h
==============================================================================
--- trunk/compilers/imcc/imc.h	Sun May  9 20:32:42 2010	(r46439)
+++ trunk/compilers/imcc/imc.h	Sun May  9 20:50:08 2010	(r46440)
@@ -293,22 +293,6 @@
         __attribute__nonnull__(3)
         FUNC_MODIFIES(*io);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-Instruction * iNEW(PARROT_INTERP,
-    ARGMOD(IMC_Unit *unit),
-    ARGMOD(SymReg *r0),
-    ARGMOD(char *type),
-    ARGIN_NULLOK(SymReg *init),
-    int emit)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        FUNC_MODIFIES(*unit)
-        FUNC_MODIFIES(*r0)
-        FUNC_MODIFIES(*type);
-
 PARROT_IGNORABLE_RESULT
 PARROT_CAN_RETURN_NULL
 Instruction * INS(PARROT_INTERP,
@@ -406,11 +390,6 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(io) \
     , PARROT_ASSERT_ARG(format))
-#define ASSERT_ARGS_iNEW __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(unit) \
-    , PARROT_ASSERT_ARG(r0) \
-    , PARROT_ASSERT_ARG(type))
 #define ASSERT_ARGS_INS __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(unit) \
@@ -604,7 +583,6 @@
     int                   IMCC_DEBUG;
     int                   allocated;
     int                   cnr;
-    int                   cur_pmc_type;
     int                   debug;
     int                   dont_optimize;
     int                   emitter;

Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y	Sun May  9 20:32:42 2010	(r46439)
+++ trunk/compilers/imcc/imcc.y	Sun May  9 20:50:08 2010	(r46440)
@@ -1116,7 +1116,7 @@
 %type <i> class_namespace
 %type <i> constdef sub emit pcc_ret pcc_yield
 %type <i> compilation_units compilation_unit pmc_const pragma
-%type <s> classname relop any_string assign_op  bin_op  un_op
+%type <s> relop any_string assign_op  bin_op  un_op
 %type <i> labels _labels label  statement sub_call
 %type <i> pcc_sub_call
 %type <sr> sub_param sub_params pcc_arg pcc_result pcc_args pcc_results sub_param_type_def
@@ -2037,19 +2037,6 @@
    | PMCV                      { $$ = 'P'; }
    ;
 
-classname:
-     IDENTIFIER
-         {
-           /* there'd normally be a mem_sys_strdup() here, but the lexer already
-            * copied the string, so it's safe to use directly */
-           if ((IMCC_INFO(interp)->cur_pmc_type = Parrot_pmc_get_type_str(interp,
-               Parrot_str_new(interp, $1, 0))) <= 0) {
-               IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
-                    "Unknown PMC type '%s'\n", $1);
-           }
-         }
-   ;
-
 assignment:
      target '=' var
             { $$ = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, $1, $3);  }
@@ -2061,11 +2048,6 @@
             { $$ = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, $1, $3, $5); }
    | target '[' keylist ']' '=' var
             { $$ = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, $1, $3, $6); }
-     /* Removing this line causes test failures in t/compilers/tge/* for
-        some reason. Eventually it should be removed and the normal handling
-        of ops should be used for all forms of "new". */
-   | target '=' 'new' classname '[' keylist ']'
-            { $$ = iNEW(interp, IMCC_INFO(interp)->cur_unit, $1, $4, $6, 1); }
      /* Subroutine call the short way */
    | target  '=' sub_call
          {

Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c	Sun May  9 20:32:42 2010	(r46439)
+++ trunk/compilers/imcc/imcparser.c	Sun May  9 20:50:08 2010	(r46440)
@@ -1665,16 +1665,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  31
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   665
+#define YYLAST   642
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  137
+#define YYNTOKENS  136
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  126
+#define YYNNTS  125
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  339
+#define YYNRULES  337
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  545
+#define YYNSTATES  539
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -1689,16 +1689,16 @@
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        4,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   127,     2,     2,     2,   133,   134,     2,
-     124,   125,   131,   130,     2,   129,     2,   132,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,   136,
+       2,     2,     2,   126,     2,     2,     2,   132,   133,     2,
+     124,   125,   130,   129,     2,   128,     2,   131,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,   135,
        2,   121,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,   122,     2,   123,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     126,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,   135,     2,   128,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,   134,     2,   127,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1751,120 +1751,119 @@
      486,   490,   493,   495,   499,   502,   503,   505,   507,   509,
      510,   515,   520,   525,   526,   533,   535,   536,   543,   546,
      549,   552,   555,   557,   559,   561,   563,   564,   566,   568,
-     570,   572,   574,   578,   583,   589,   596,   603,   611,   615,
-     616,   626,   628,   630,   632,   636,   638,   640,   642,   644,
-     646,   648,   650,   652,   654,   656,   658,   660,   662,   664,
-     666,   668,   670,   672,   674,   676,   678,   680,   682,   684,
-     686,   688,   689,   695,   699,   701,   703,   705,   707,   709,
-     711,   713,   715,   717,   719,   721,   723,   725,   730,   732,
-     734,   736,   738,   742,   746,   750,   754,   755,   761,   762,
-     766,   768,   774,   778,   782,   785,   786,   789,   791,   793,
-     795,   800,   805,   808,   812,   818,   820,   824,   825,   827,
-     829,   836,   842,   847,   852,   859,   865,   867,   869,   871,
-     873,   875,   877,   879,   881,   883,   885,   886,   888,   892,
-     894,   896,   901,   905,   907,   909,   911,   913,   915,   917,
-     919,   921,   923,   925,   927,   928,   931,   932,   935,   937,
-     941,   943,   945,   947,   949,   951,   953,   955,   957,   959
+     570,   572,   576,   581,   587,   594,   601,   605,   606,   616,
+     618,   620,   622,   626,   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,
+     679,   685,   689,   691,   693,   695,   697,   699,   701,   703,
+     705,   707,   709,   711,   713,   715,   720,   722,   724,   726,
+     728,   732,   736,   740,   744,   745,   751,   752,   756,   758,
+     764,   768,   772,   775,   776,   779,   781,   783,   785,   790,
+     795,   798,   802,   808,   810,   814,   815,   817,   819,   826,
+     832,   837,   842,   849,   855,   857,   859,   861,   863,   865,
+     867,   869,   871,   873,   875,   876,   878,   882,   884,   886,
+     891,   895,   897,   899,   901,   903,   905,   907,   909,   911,
+     913,   915,   917,   918,   921,   922,   925,   927,   931,   933,
+     935,   937,   939,   941,   943,   945,   947,   949
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     138,     0,    -1,   139,    -1,   140,    -1,   139,   140,    -1,
-     160,    -1,   145,    -1,   162,    -1,   157,    -1,   109,     4,
-      -1,   141,    -1,   142,    -1,     4,    -1,   144,     4,    -1,
+     137,     0,    -1,   138,    -1,   139,    -1,   138,   139,    -1,
+     159,    -1,   144,    -1,   161,    -1,   156,    -1,   109,     4,
+      -1,   140,    -1,   141,    -1,     4,    -1,   143,     4,    -1,
       95,   111,     4,    -1,     8,   112,    70,   111,     4,    -1,
-       9,   111,     4,    -1,    32,   111,    70,   262,    -1,     7,
-     111,    -1,    -1,    31,   146,   221,   107,   121,   262,    -1,
-      -1,    31,   148,   112,   253,   121,   150,    -1,    -1,    31,
-     149,   111,   253,   121,   150,    -1,   111,    -1,   114,    -1,
-     152,    -1,   151,   152,    -1,   210,   153,     4,    -1,   109,
-       4,    -1,   118,    -1,   117,    -1,   160,    -1,   147,    -1,
-     141,    -1,    -1,   154,   115,   156,    -1,    -1,    76,   155,
-     184,   100,    -1,    14,   254,    -1,    30,   111,    70,   108,
-      -1,    -1,   247,    -1,    -1,   101,   158,   159,   102,    -1,
-      -1,   151,    -1,    25,   161,     4,    -1,   122,   255,   123,
-      -1,   122,   123,    -1,    -1,    -1,    -1,    27,   163,   250,
-     164,   184,     4,   165,   166,   179,    71,    -1,    -1,   166,
-       4,    -1,   166,   167,     4,    -1,    -1,     5,   168,   169,
-      -1,   221,   107,   193,    -1,    93,   124,   177,   125,    -1,
+       9,   111,     4,    -1,    32,   111,    70,   260,    -1,     7,
+     111,    -1,    -1,    31,   145,   220,   107,   121,   260,    -1,
+      -1,    31,   147,   112,   251,   121,   149,    -1,    -1,    31,
+     148,   111,   251,   121,   149,    -1,   111,    -1,   114,    -1,
+     151,    -1,   150,   151,    -1,   209,   152,     4,    -1,   109,
+       4,    -1,   118,    -1,   117,    -1,   159,    -1,   146,    -1,
+     140,    -1,    -1,   153,   115,   155,    -1,    -1,    76,   154,
+     183,   100,    -1,    14,   252,    -1,    30,   111,    70,   108,
+      -1,    -1,   245,    -1,    -1,   101,   157,   158,   102,    -1,
+      -1,   150,    -1,    25,   160,     4,    -1,   122,   253,   123,
+      -1,   122,   123,    -1,    -1,    -1,    -1,    27,   162,   248,
+     163,   183,     4,   164,   165,   178,    71,    -1,    -1,   165,
+       4,    -1,   165,   166,     4,    -1,    -1,     5,   167,   168,
+      -1,   220,   107,   192,    -1,    93,   124,   176,   125,    -1,
       91,   124,   111,   125,    -1,    91,   124,   107,   125,    -1,
       94,    -1,    94,   124,   111,   125,    -1,    89,    -1,    89,
-     124,   150,   125,    -1,    98,    -1,    98,   124,   150,   125,
+     124,   149,   125,    -1,    98,    -1,    98,   124,   149,   125,
       -1,    96,   124,   111,   125,    -1,    97,    -1,    97,   124,
-     150,   125,    -1,    -1,   177,    70,   178,    -1,   178,    -1,
+     149,   125,    -1,    -1,   176,    70,   177,    -1,   177,    -1,
       50,    -1,    51,    -1,    53,    -1,    52,    -1,   107,    -1,
-     111,    -1,   122,   255,   123,    -1,    -1,   207,    -1,    -1,
-      73,     4,   181,   188,   183,   187,   182,   190,    74,    -1,
-      -1,   212,     4,    -1,    -1,    83,   254,     4,    -1,    -1,
-     185,    -1,   186,    -1,   185,   186,    -1,    85,    -1,    86,
+     111,    -1,   122,   253,   123,    -1,    -1,   206,    -1,    -1,
+      73,     4,   180,   187,   182,   186,   181,   189,    74,    -1,
+      -1,   211,     4,    -1,    -1,    83,   252,     4,    -1,    -1,
+     184,    -1,   185,    -1,   184,   185,    -1,    85,    -1,    86,
       -1,    84,    -1,    87,    -1,    88,    -1,    90,    -1,    92,
-      -1,   170,    -1,   171,    -1,   172,    -1,   173,    -1,   174,
-      -1,   175,    -1,   176,    -1,    75,   254,    70,   254,     4,
-      -1,    75,   254,     4,    -1,    81,   254,     4,    -1,    82,
-     246,     4,    -1,    82,   111,     4,    -1,    82,   246,    70,
-     254,     4,    -1,    82,   111,    70,   254,     4,    -1,    -1,
-     188,   189,     4,    -1,    11,   236,    -1,    -1,   190,   191,
-       4,    -1,    61,   246,   193,    -1,    -1,    29,   192,   221,
-     215,    -1,    -1,   193,   194,    -1,    18,    -1,    19,    -1,
+      -1,   169,    -1,   170,    -1,   171,    -1,   172,    -1,   173,
+      -1,   174,    -1,   175,    -1,    75,   252,    70,   252,     4,
+      -1,    75,   252,     4,    -1,    81,   252,     4,    -1,    82,
+     244,     4,    -1,    82,   111,     4,    -1,    82,   244,    70,
+     252,     4,    -1,    82,   111,    70,   252,     4,    -1,    -1,
+     187,   188,     4,    -1,    11,   234,    -1,    -1,   189,   190,
+       4,    -1,    61,   244,   192,    -1,    -1,    29,   191,   220,
+     214,    -1,    -1,   192,   193,    -1,    18,    -1,    19,    -1,
       20,    -1,    21,    -1,    21,   124,   111,   125,    -1,    21,
      124,   114,   125,    -1,    99,    -1,    24,    -1,    -1,    77,
-       4,   196,   199,    78,    -1,   203,    -1,    -1,    79,     4,
-     198,   200,    80,    -1,    -1,   199,     4,    -1,   199,   201,
-       4,    -1,    -1,   200,     4,    -1,   200,   202,     4,    -1,
-      15,   254,   237,    -1,    16,   254,   237,    -1,    -1,   205,
-     124,   204,   206,   125,    -1,    62,    -1,    64,    -1,    -1,
-     236,    -1,   111,    22,   254,    -1,   206,    70,   236,    -1,
-     206,    70,   111,    22,   254,    -1,   209,    -1,   207,   209,
-      -1,    -1,   208,   213,    -1,   109,     4,    -1,   118,    -1,
-     117,    -1,   142,    -1,   143,    -1,    -1,   211,    -1,   211,
-     212,    -1,   212,    -1,   100,    -1,   210,   217,     4,    -1,
-       1,     4,    -1,   215,    -1,   214,    70,   215,    -1,   107,
-     216,    -1,    -1,    99,    -1,   223,    -1,   241,    -1,    -1,
-      29,   218,   221,   214,    -1,    30,   111,    70,   246,    -1,
-      30,   114,    70,   246,    -1,    -1,    31,   219,   221,   107,
-     121,   262,    -1,   147,    -1,    -1,    33,   220,   221,   107,
-     121,   262,    -1,    63,   233,    -1,    10,   252,    -1,   115,
-     247,    -1,    14,   254,    -1,   233,    -1,   180,    -1,   195,
-      -1,   197,    -1,    -1,    50,    -1,    51,    -1,    52,    -1,
-      53,    -1,   107,    -1,   246,   121,   254,    -1,   246,   121,
-     225,   254,    -1,   246,   121,   254,   226,   254,    -1,   246,
-     121,   254,   122,   255,   123,    -1,   246,   122,   255,   123,
-     121,   254,    -1,   246,   121,   126,   222,   122,   255,   123,
-      -1,   246,   121,   233,    -1,    -1,   124,   224,   240,   125,
-     121,   232,   124,   235,   125,    -1,   227,    -1,   229,    -1,
-     231,    -1,   246,   121,    14,    -1,   127,    -1,   128,    -1,
-     129,    -1,   129,    -1,   130,    -1,   131,    -1,   132,    -1,
-     133,    -1,    42,    -1,    66,    -1,   120,    -1,    55,    -1,
+       4,   195,   198,    78,    -1,   202,    -1,    -1,    79,     4,
+     197,   199,    80,    -1,    -1,   198,     4,    -1,   198,   200,
+       4,    -1,    -1,   199,     4,    -1,   199,   201,     4,    -1,
+      15,   252,   235,    -1,    16,   252,   235,    -1,    -1,   204,
+     124,   203,   205,   125,    -1,    62,    -1,    64,    -1,    -1,
+     234,    -1,   111,    22,   252,    -1,   205,    70,   234,    -1,
+     205,    70,   111,    22,   252,    -1,   208,    -1,   206,   208,
+      -1,    -1,   207,   212,    -1,   109,     4,    -1,   118,    -1,
+     117,    -1,   141,    -1,   142,    -1,    -1,   210,    -1,   210,
+     211,    -1,   211,    -1,   100,    -1,   209,   216,     4,    -1,
+       1,     4,    -1,   214,    -1,   213,    70,   214,    -1,   107,
+     215,    -1,    -1,    99,    -1,   221,    -1,   239,    -1,    -1,
+      29,   217,   220,   213,    -1,    30,   111,    70,   244,    -1,
+      30,   114,    70,   244,    -1,    -1,    31,   218,   220,   107,
+     121,   260,    -1,   146,    -1,    -1,    33,   219,   220,   107,
+     121,   260,    -1,    63,   231,    -1,    10,   250,    -1,   115,
+     245,    -1,    14,   252,    -1,   231,    -1,   179,    -1,   194,
+      -1,   196,    -1,    -1,    50,    -1,    51,    -1,    52,    -1,
+      53,    -1,   244,   121,   252,    -1,   244,   121,   223,   252,
+      -1,   244,   121,   252,   224,   252,    -1,   244,   121,   252,
+     122,   253,   123,    -1,   244,   122,   253,   123,   121,   252,
+      -1,   244,   121,   231,    -1,    -1,   124,   222,   238,   125,
+     121,   230,   124,   233,   125,    -1,   225,    -1,   227,    -1,
+     229,    -1,   244,   121,    14,    -1,   126,    -1,   127,    -1,
+     128,    -1,   128,    -1,   129,    -1,   130,    -1,   131,    -1,
+     132,    -1,    42,    -1,    66,    -1,   120,    -1,    55,    -1,
       56,    -1,    57,    -1,    58,    -1,    59,    -1,    60,    -1,
       48,    -1,    49,    -1,    67,    -1,    68,    -1,    69,    -1,
-      54,    -1,   134,    -1,   135,    -1,   128,    -1,    -1,    65,
-     228,   124,   240,   125,    -1,   246,   230,   254,    -1,    34,
+      54,    -1,   133,    -1,   134,    -1,   127,    -1,    -1,    65,
+     226,   124,   238,   125,    -1,   244,   228,   252,    -1,    34,
       -1,    35,    -1,    36,    -1,    37,    -1,    44,    -1,    43,
       -1,    38,    -1,    39,    -1,    40,    -1,    41,    -1,    45,
-      -1,    46,    -1,    47,    -1,   246,   121,   115,   156,    -1,
-     107,    -1,   111,    -1,   114,    -1,   246,    -1,   246,   119,
-     251,    -1,   246,   119,   114,    -1,   246,   119,   111,    -1,
-     246,   119,   246,    -1,    -1,   232,   234,   124,   235,   125,
-      -1,    -1,   235,    70,   236,    -1,   236,    -1,   235,    70,
-     111,    22,   254,    -1,   254,    22,   254,    -1,   111,    22,
-     254,    -1,   254,   237,    -1,    -1,   237,   238,    -1,    17,
+      -1,    46,    -1,    47,    -1,   244,   121,   115,   155,    -1,
+     107,    -1,   111,    -1,   114,    -1,   244,    -1,   244,   119,
+     249,    -1,   244,   119,   114,    -1,   244,   119,   111,    -1,
+     244,   119,   244,    -1,    -1,   230,   232,   124,   233,   125,
+      -1,    -1,   233,    70,   234,    -1,   234,    -1,   233,    70,
+     111,    22,   252,    -1,   252,    22,   252,    -1,   111,    22,
+     252,    -1,   252,   235,    -1,    -1,   235,   236,    -1,    17,
       -1,    21,    -1,    24,    -1,    21,   124,   114,   125,    -1,
-      21,   124,   111,   125,    -1,   246,   193,    -1,   240,    70,
-     239,    -1,   240,    70,   111,    22,   246,    -1,   239,    -1,
-     111,    22,   246,    -1,    -1,   243,    -1,   242,    -1,    13,
-     254,   245,   254,    10,   252,    -1,    13,    14,   254,    10,
-     252,    -1,    13,   254,   244,   252,    -1,    12,   254,   244,
-     252,    -1,    12,   254,   245,   254,    10,   252,    -1,    12,
-      14,   254,    10,   252,    -1,    70,    -1,    10,    -1,    55,
+      21,   124,   111,   125,    -1,   244,   192,    -1,   238,    70,
+     237,    -1,   238,    70,   111,    22,   244,    -1,   237,    -1,
+     111,    22,   244,    -1,    -1,   241,    -1,   240,    -1,    13,
+     252,   243,   252,    10,   250,    -1,    13,    14,   252,    10,
+     250,    -1,    13,   252,   242,   250,    -1,    12,   252,   242,
+     250,    -1,    12,   252,   243,   252,    10,   250,    -1,    12,
+      14,   252,    10,   250,    -1,    70,    -1,    10,    -1,    55,
       -1,    56,    -1,    57,    -1,    58,    -1,    59,    -1,    60,
-      -1,   116,    -1,   261,    -1,    -1,   248,    -1,   248,    70,
-     249,    -1,   249,    -1,   253,    -1,   246,   122,   255,   123,
-      -1,   122,   257,   123,    -1,   251,    -1,   111,    -1,   114,
-      -1,   107,    -1,   115,    -1,   107,    -1,   115,    -1,   252,
-      -1,   254,    -1,   246,    -1,   262,    -1,    -1,   256,   259,
-      -1,    -1,   258,   259,    -1,   260,    -1,   259,   136,   260,
-      -1,   254,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
+      -1,   116,    -1,   259,    -1,    -1,   246,    -1,   246,    70,
+     247,    -1,   247,    -1,   251,    -1,   244,   122,   253,   123,
+      -1,   122,   255,   123,    -1,   249,    -1,   111,    -1,   114,
+      -1,   107,    -1,   115,    -1,   107,    -1,   115,    -1,   250,
+      -1,   252,    -1,   244,    -1,   260,    -1,    -1,   254,   257,
+      -1,    -1,   256,   257,    -1,   258,    -1,   257,   135,   258,
+      -1,   252,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
       -1,   108,    -1,   112,    -1,   113,    -1,   111,    -1,   114,
       -1
 };
@@ -1892,20 +1891,20 @@
     1901,  1902,  1913,  1920,  1929,  1937,  1939,  1944,  1945,  1946,
     1946,  1959,  1976,  1989,  1989,  1996,  1997,  1997,  2003,  2009,
     2013,  2025,  2026,  2027,  2028,  2029,  2030,  2034,  2035,  2036,
-    2037,  2041,  2054,  2056,  2058,  2060,  2062,  2067,  2070,  2077,
-    2076,  2085,  2086,  2087,  2088,  2096,  2097,  2098,  2102,  2103,
-    2104,  2105,  2106,  2107,  2108,  2109,  2110,  2111,  2112,  2113,
-    2114,  2115,  2116,  2117,  2118,  2119,  2120,  2121,  2122,  2123,
-    2124,  2130,  2129,  2141,  2146,  2147,  2148,  2149,  2150,  2151,
-    2152,  2153,  2154,  2155,  2156,  2157,  2158,  2163,  2174,  2175,
-    2176,  2177,  2183,  2197,  2203,  2209,  2215,  2214,  2223,  2224,
-    2234,  2244,  2251,  2256,  2266,  2270,  2271,  2275,  2276,  2277,
-    2280,  2281,  2285,  2289,  2299,  2305,  2315,  2320,  2324,  2325,
-    2329,  2333,  2337,  2344,  2348,  2352,  2359,  2360,  2364,  2365,
-    2366,  2367,  2368,  2369,  2373,  2374,  2378,  2379,  2383,  2384,
-    2388,  2389,  2396,  2403,  2404,  2405,  2409,  2410,  2414,  2415,
-    2419,  2420,  2424,  2425,  2429,  2429,  2441,  2441,  2453,  2454,
-    2462,  2469,  2470,  2471,  2472,  2473,  2477,  2478,  2479,  2480
+    2037,  2041,  2043,  2045,  2047,  2049,  2052,  2059,  2058,  2067,
+    2068,  2069,  2070,  2078,  2079,  2080,  2084,  2085,  2086,  2087,
+    2088,  2089,  2090,  2091,  2092,  2093,  2094,  2095,  2096,  2097,
+    2098,  2099,  2100,  2101,  2102,  2103,  2104,  2105,  2106,  2112,
+    2111,  2123,  2128,  2129,  2130,  2131,  2132,  2133,  2134,  2135,
+    2136,  2137,  2138,  2139,  2140,  2145,  2156,  2157,  2158,  2159,
+    2165,  2179,  2185,  2191,  2197,  2196,  2205,  2206,  2216,  2226,
+    2233,  2238,  2248,  2252,  2253,  2257,  2258,  2259,  2262,  2263,
+    2267,  2271,  2281,  2287,  2297,  2302,  2306,  2307,  2311,  2315,
+    2319,  2326,  2330,  2334,  2341,  2342,  2346,  2347,  2348,  2349,
+    2350,  2351,  2355,  2356,  2360,  2361,  2365,  2366,  2370,  2371,
+    2378,  2385,  2386,  2387,  2391,  2392,  2396,  2397,  2401,  2402,
+    2406,  2407,  2411,  2411,  2423,  2423,  2435,  2436,  2444,  2451,
+    2452,  2453,  2454,  2455,  2459,  2460,  2461,  2462
 };
 #endif
 
@@ -1934,25 +1933,24 @@
   "NS_ENTRY", "UNIQUE_REG", "LABEL", "EMIT", "EOM", "IREG", "NREG", "SREG",
   "PREG", "IDENTIFIER", "REG", "MACRO", "ENDM", "STRINGC", "INTC",
   "FLOATC", "USTRINGC", "PARROT_OP", "VAR", "LINECOMMENT", "FILECOMMENT",
-  "DOT", "CONCAT", "'='", "'['", "']'", "'('", "')'", "'n'", "'!'", "'~'",
-  "'-'", "'+'", "'*'", "'/'", "'%'", "'&'", "'|'", "';'", "$accept",
-  "program", "compilation_units", "compilation_unit", "pragma",
-  "location_directive", "annotate_directive", "hll_def", "constdef", "$@1",
-  "pmc_const", "$@2", "$@3", "any_string", "pasmcode", "pasmline",
-  "pasm_inst", "$@4", "$@5", "pasm_args", "emit", "$@6", "opt_pasmcode",
-  "class_namespace", "maybe_ns", "sub", "$@7", "$@8", "$@9", "sub_params",
-  "sub_param", "$@10", "sub_param_type_def", "multi", "outer", "vtable",
-  "method", "ns_entry_name", "instanceof", "subid", "multi_types",
-  "multi_type", "sub_body", "pcc_sub_call", "@11", "opt_label",
-  "opt_invocant", "sub_proto", "sub_proto_list", "proto", "pcc_call",
-  "pcc_args", "pcc_arg", "pcc_results", "pcc_result", "$@12",
-  "paramtype_list", "paramtype", "pcc_ret", "$@13", "pcc_yield", "$@14",
-  "pcc_returns", "pcc_yields", "pcc_return", "pcc_set_yield",
-  "pcc_return_many", "$@15", "return_or_yield", "var_returns",
-  "statements", "helper_clear_state", "statement", "labels", "_labels",
-  "label", "instruction", "id_list", "id_list_id", "opt_unique_reg",
-  "labeled_inst", "$@16", "$@17", "$@18", "type", "classname",
-  "assignment", "@19", "un_op", "bin_op", "get_results", "@20",
+  "DOT", "CONCAT", "'='", "'['", "']'", "'('", "')'", "'!'", "'~'", "'-'",
+  "'+'", "'*'", "'/'", "'%'", "'&'", "'|'", "';'", "$accept", "program",
+  "compilation_units", "compilation_unit", "pragma", "location_directive",
+  "annotate_directive", "hll_def", "constdef", "$@1", "pmc_const", "$@2",
+  "$@3", "any_string", "pasmcode", "pasmline", "pasm_inst", "$@4", "$@5",
+  "pasm_args", "emit", "$@6", "opt_pasmcode", "class_namespace",
+  "maybe_ns", "sub", "$@7", "$@8", "$@9", "sub_params", "sub_param",
+  "$@10", "sub_param_type_def", "multi", "outer", "vtable", "method",
+  "ns_entry_name", "instanceof", "subid", "multi_types", "multi_type",
+  "sub_body", "pcc_sub_call", "@11", "opt_label", "opt_invocant",
+  "sub_proto", "sub_proto_list", "proto", "pcc_call", "pcc_args",
+  "pcc_arg", "pcc_results", "pcc_result", "$@12", "paramtype_list",
+  "paramtype", "pcc_ret", "$@13", "pcc_yield", "$@14", "pcc_returns",
+  "pcc_yields", "pcc_return", "pcc_set_yield", "pcc_return_many", "$@15",
+  "return_or_yield", "var_returns", "statements", "helper_clear_state",
+  "statement", "labels", "_labels", "label", "instruction", "id_list",
+  "id_list_id", "opt_unique_reg", "labeled_inst", "$@16", "$@17", "$@18",
+  "type", "assignment", "@19", "un_op", "bin_op", "get_results", "@20",
   "op_assign", "assign_op", "func_assign", "the_sub", "sub_call", "@21",
   "arglist", "arg", "argtype_list", "argtype", "result", "targetlist",
   "conditional_statement", "unless_statement", "if_statement",
@@ -1980,48 +1978,48 @@
      344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
      354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
      364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
-     374,    61,    91,    93,    40,    41,   110,    33,   126,    45,
-      43,    42,    47,    37,    38,   124,    59
+     374,    61,    91,    93,    40,    41,    33,   126,    45,    43,
+      42,    47,    37,    38,   124,    59
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   137,   138,   139,   139,   140,   140,   140,   140,   140,
-     140,   140,   140,   141,   141,   142,   142,   143,   144,   146,
-     145,   148,   147,   149,   147,   150,   150,   151,   151,   152,
-     152,   152,   152,   152,   152,   152,   154,   153,   155,   153,
-     153,   153,   153,   156,   158,   157,   159,   159,   160,   161,
-     161,   163,   164,   165,   162,   166,   166,   166,   168,   167,
-     169,   170,   171,   171,   172,   172,   173,   173,   174,   174,
-     175,   176,   176,   177,   177,   177,   178,   178,   178,   178,
-     178,   178,   178,   179,   179,   181,   180,   182,   182,   183,
-     183,   184,   184,   185,   185,   186,   186,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   186,   186,   186,   187,
-     187,   187,   187,   187,   187,   187,   188,   188,   189,   190,
-     190,   191,   192,   191,   193,   193,   194,   194,   194,   194,
-     194,   194,   194,   194,   196,   195,   195,   198,   197,   199,
-     199,   199,   200,   200,   200,   201,   202,   204,   203,   205,
-     205,   206,   206,   206,   206,   206,   207,   207,   208,   209,
-     209,   209,   209,   209,   209,   210,   210,   211,   211,   212,
-     213,   213,   214,   214,   215,   216,   216,   217,   217,   218,
-     217,   217,   217,   219,   217,   217,   220,   217,   217,   217,
-     217,   217,   217,   217,   217,   217,   217,   221,   221,   221,
-     221,   222,   223,   223,   223,   223,   223,   223,   223,   224,
-     223,   223,   223,   223,   223,   225,   225,   225,   226,   226,
-     226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
-     226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
-     226,   228,   227,   229,   230,   230,   230,   230,   230,   230,
-     230,   230,   230,   230,   230,   230,   230,   231,   232,   232,
-     232,   232,   232,   232,   232,   232,   234,   233,   235,   235,
-     235,   235,   235,   235,   236,   237,   237,   238,   238,   238,
-     238,   238,   239,   240,   240,   240,   240,   240,   241,   241,
-     242,   242,   242,   243,   243,   243,   244,   244,   245,   245,
-     245,   245,   245,   245,   246,   246,   247,   247,   248,   248,
-     249,   249,   249,   250,   250,   250,   251,   251,   252,   252,
-     253,   253,   254,   254,   256,   255,   258,   257,   259,   259,
-     260,   261,   261,   261,   261,   261,   262,   262,   262,   262
+       0,   136,   137,   138,   138,   139,   139,   139,   139,   139,
+     139,   139,   139,   140,   140,   141,   141,   142,   143,   145,
+     144,   147,   146,   148,   146,   149,   149,   150,   150,   151,
+     151,   151,   151,   151,   151,   151,   153,   152,   154,   152,
+     152,   152,   152,   155,   157,   156,   158,   158,   159,   160,
+     160,   162,   163,   164,   161,   165,   165,   165,   167,   166,
+     168,   169,   170,   170,   171,   171,   172,   172,   173,   173,
+     174,   175,   175,   176,   176,   176,   177,   177,   177,   177,
+     177,   177,   177,   178,   178,   180,   179,   181,   181,   182,
+     182,   183,   183,   184,   184,   185,   185,   185,   185,   185,
+     185,   185,   185,   185,   185,   185,   185,   185,   185,   186,
+     186,   186,   186,   186,   186,   186,   187,   187,   188,   189,
+     189,   190,   191,   190,   192,   192,   193,   193,   193,   193,
+     193,   193,   193,   193,   195,   194,   194,   197,   196,   198,
+     198,   198,   199,   199,   199,   200,   201,   203,   202,   204,
+     204,   205,   205,   205,   205,   205,   206,   206,   207,   208,
+     208,   208,   208,   208,   208,   209,   209,   210,   210,   211,
+     212,   212,   213,   213,   214,   215,   215,   216,   216,   217,
+     216,   216,   216,   218,   216,   216,   219,   216,   216,   216,
+     216,   216,   216,   216,   216,   216,   216,   220,   220,   220,
+     220,   221,   221,   221,   221,   221,   221,   222,   221,   221,
+     221,   221,   221,   223,   223,   223,   224,   224,   224,   224,
+     224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
+     224,   224,   224,   224,   224,   224,   224,   224,   224,   226,
+     225,   227,   228,   228,   228,   228,   228,   228,   228,   228,
+     228,   228,   228,   228,   228,   229,   230,   230,   230,   230,
+     230,   230,   230,   230,   232,   231,   233,   233,   233,   233,
+     233,   233,   234,   235,   235,   236,   236,   236,   236,   236,
+     237,   238,   238,   238,   238,   238,   239,   239,   240,   240,
+     240,   241,   241,   241,   242,   242,   243,   243,   243,   243,
+     243,   243,   244,   244,   245,   245,   246,   246,   247,   247,
+     247,   248,   248,   248,   249,   249,   250,   250,   251,   251,
+     252,   252,   254,   253,   256,   255,   257,   257,   258,   259,
+     259,   259,   259,   259,   260,   260,   260,   260
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -2047,20 +2045,20 @@
        3,     2,     1,     3,     2,     0,     1,     1,     1,     0,
        4,     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,     3,     4,     5,     6,     6,     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,     0,     5,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     4,     1,     1,
-       1,     1,     3,     3,     3,     3,     0,     5,     0,     3,
-       1,     5,     3,     3,     2,     0,     2,     1,     1,     1,
-       4,     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
+       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,     3,     0,     5,     0,     3,     1,     5,
+       3,     3,     2,     0,     2,     1,     1,     1,     4,     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
@@ -2070,59 +2068,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,   324,     0,     0,     0,     0,   165,
+       7,    18,     0,     0,   322,     0,     0,     0,     0,   165,
        9,     1,     4,    13,     0,    16,    50,     0,     0,    48,
-     316,   314,   315,   317,    52,   313,   197,   198,   199,   200,
+     314,   312,   313,   315,    52,   311,   197,   198,   199,   200,
        0,    14,    21,   169,     0,    32,    31,    35,    34,   165,
-      27,     0,    33,    36,   166,   168,     0,    49,   331,   332,
-     333,   334,   335,   338,   336,   337,   339,   304,   322,   330,
-     325,   328,   305,   323,    91,     0,     0,     0,    30,    28,
+      27,     0,    33,    36,   166,   168,     0,    49,   329,   330,
+     331,   332,   333,   336,   334,   335,   337,   302,   320,   328,
+     323,   326,   303,   321,    91,     0,     0,     0,    30,    28,
       45,     0,     0,    38,     0,     0,   167,    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,
-     306,   329,     0,     0,    73,     0,     0,     0,     0,    53,
-      94,    20,   318,   319,   320,     0,   321,     0,     0,     0,
-     326,    37,   322,    43,   307,   309,   310,    25,    26,     0,
-       0,     0,    76,    77,    79,    78,    80,    81,   324,     0,
+     304,   327,     0,     0,    73,     0,     0,     0,     0,    53,
+      94,    20,   316,   317,   318,     0,   319,     0,     0,     0,
+     324,    37,   320,    43,   305,   307,   308,    25,    26,     0,
+       0,     0,    76,    77,    79,    78,    80,    81,   322,     0,
       75,     0,     0,     0,     0,    55,     0,     0,    41,    39,
-       0,     0,   324,     0,    67,    63,    62,     0,     0,    61,
-      65,    70,    72,    69,   158,    22,    24,   312,   327,     0,
-     308,    82,    74,    56,    58,     0,     0,   162,   161,   163,
-     164,     0,     0,   158,     0,   156,   311,     0,     0,   160,
+       0,     0,   322,     0,    67,    63,    62,     0,     0,    61,
+      65,    70,    72,    69,   158,    22,    24,   310,   325,     0,
+     306,    82,    74,    56,    58,     0,     0,   162,   161,   163,
+     164,     0,     0,   158,     0,   156,   309,     0,     0,   160,
       57,    54,   157,     0,   196,   159,    59,     0,     0,   171,
        0,     0,     0,     0,   179,     0,   183,   186,   149,     0,
-     150,   241,     0,     0,     0,   258,   259,   260,   306,   209,
-     185,   193,   194,   195,   136,     0,     0,   177,   211,   212,
-     213,   266,   192,   178,   289,   288,   261,   124,    17,   189,
+     150,   239,     0,     0,     0,   256,   257,   258,   304,   207,
+     185,   193,   194,   195,   136,     0,     0,   177,   209,   210,
+     211,   264,   192,   178,   287,   286,   259,   124,    17,   189,
        0,     0,     0,     0,   191,     0,     0,     0,     0,     0,
-     188,   261,     0,    85,   134,   137,   190,   287,   147,   170,
-       0,   244,   245,   246,   247,   250,   251,   252,   253,   249,
-     248,   254,   255,   256,     0,     0,   324,     0,    60,     0,
-     297,   298,   299,   300,   301,   302,   303,   296,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   287,   116,
-     139,   142,     0,   285,     0,   124,   151,   268,   264,   263,
-     265,   262,   214,   338,   339,   306,     0,   215,   216,   217,
-       0,   208,   322,   202,     0,   243,   126,   127,   128,   129,
-     133,   132,   125,     0,   293,     0,     0,   292,     0,   175,
-     180,   172,   181,   182,     0,     0,     0,    89,     0,     0,
-       0,     0,     0,   282,   338,     0,   152,   275,   338,     0,
-     270,   275,   257,   201,     0,   203,   223,   232,   233,   237,
-     226,   227,   228,   229,   230,   231,   224,   234,   235,   236,
-     225,   324,   240,   218,   219,   220,   221,   222,   238,   239,
-       0,     0,     0,   295,     0,   291,     0,   176,   174,     0,
-       0,     0,   242,     0,     0,     0,     0,   140,     0,   135,
-       0,   143,     0,   138,     0,   286,     0,   283,     0,     0,
-       0,   148,   274,     0,     0,   267,     0,   324,     0,   204,
-       0,     0,     0,   294,   290,   173,   184,   187,   118,     0,
-       0,     0,     0,    87,   117,   275,   141,   275,   144,     0,
-       0,   153,   338,   154,   277,   278,   279,   276,   273,   338,
-     269,   272,     0,   205,   206,   130,   131,    90,     0,     0,
-       0,     0,   119,     0,   145,   146,   284,   268,     0,     0,
-       0,   207,   110,     0,   111,   113,     0,   112,     0,     0,
-      88,     0,   155,     0,     0,   271,     0,     0,     0,   122,
-       0,    86,     0,   210,   281,   280,   109,   115,   114,     0,
-     124,   120,     0,   121,   123
+     188,   259,     0,    85,   134,   137,   190,   285,   147,   170,
+       0,   242,   243,   244,   245,   248,   249,   250,   251,   247,
+     246,   252,   253,   254,     0,     0,   322,     0,    60,     0,
+     295,   296,   297,   298,   299,   300,   301,   294,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   285,   116,
+     139,   142,     0,   283,     0,   124,   151,   266,   262,   261,
+     263,   260,   212,   336,   337,   304,   213,   214,   215,     0,
+     206,   320,   201,     0,   241,   126,   127,   128,   129,   133,
+     132,   125,     0,   291,     0,     0,   290,     0,   175,   180,
+     172,   181,   182,     0,     0,     0,    89,     0,     0,     0,
+       0,     0,   280,   336,     0,   152,   273,   336,     0,   268,
+     273,   255,   202,   221,   230,   231,   235,   224,   225,   226,
+     227,   228,   229,   222,   232,   233,   234,   223,   322,   238,
+     216,   217,   218,   219,   220,   236,   237,     0,     0,     0,
+     293,     0,   289,     0,   176,   174,     0,     0,     0,   240,
+       0,     0,     0,     0,   140,     0,   135,     0,   143,     0,
+     138,     0,   284,     0,   281,     0,     0,     0,   148,   272,
+       0,     0,   265,     0,     0,   203,     0,     0,     0,   292,
+     288,   173,   184,   187,   118,     0,     0,     0,     0,    87,
+     117,   273,   141,   273,   144,     0,     0,   153,   336,   154,
+     275,   276,   277,   274,   271,   336,   267,   270,   204,   205,
+     130,   131,    90,     0,     0,     0,     0,   119,     0,   145,
+     146,   282,   266,     0,     0,     0,   110,     0,   111,   113,
+       0,   112,     0,     0,    88,     0,   155,     0,     0,   269,
+       0,     0,     0,   122,     0,    86,     0,   208,   279,   278,
+     109,   115,   114,     0,   124,   120,     0,   121,   123
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -2132,15 +2129,15 @@
       58,    86,    87,   159,    59,    60,    94,    95,   128,   151,
       18,    29,    61,    19,    25,    20,    26,    84,   175,   194,
      211,   217,   226,   113,   114,   115,   116,   117,   118,   119,
-     169,   170,   212,   251,   329,   502,   435,   120,   121,   122,
-     473,   377,   436,   519,   532,   539,   308,   362,   252,   330,
-     253,   331,   378,   379,   440,   444,   254,   336,   255,   385,
-     213,   214,   215,    63,    64,    65,   225,   370,   371,   428,
-     256,   275,   278,   279,    50,   394,   257,   287,   350,   420,
-     258,   282,   259,   307,   260,   261,   262,   290,   389,   390,
-     452,   487,   333,   334,   263,   264,   265,   318,   319,    78,
-     153,   154,   155,    44,    45,   144,   156,   146,    37,    38,
-     180,   181,    80,    81,    82,    83
+     169,   170,   212,   251,   329,   497,   432,   120,   121,   122,
+     469,   376,   433,   513,   526,   533,   308,   361,   252,   330,
+     253,   331,   377,   378,   437,   441,   254,   336,   255,   384,
+     213,   214,   215,    63,    64,    65,   225,   369,   370,   425,
+     256,   275,   278,   279,    50,   257,   287,   349,   417,   258,
+     282,   259,   307,   260,   261,   262,   290,   388,   389,   449,
+     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
@@ -2148,226 +2145,221 @@
 #define YYPACT_NINF -424
 static const yytype_int16 yypact[] =
 {
-     212,  -424,   -88,   -32,   -23,   -25,  -424,  -424,   -10,  -424,
-     101,   118,   212,  -424,  -424,  -424,   127,  -424,  -424,  -424,
-    -424,  -424,    70,   129,    28,   148,   143,   266,   162,   173,
-    -424,  -424,  -424,  -424,    56,  -424,  -424,    51,   456,  -424,
-    -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-      74,  -424,    76,  -424,   195,  -424,  -424,  -424,  -424,   183,
-    -424,    99,  -424,    63,   102,  -424,   199,  -424,  -424,  -424,
+      27,  -424,   -90,   -80,   -54,   -47,  -424,  -424,   -29,  -424,
+      80,   134,    27,  -424,  -424,  -424,   131,  -424,  -424,  -424,
+    -424,  -424,    71,   142,    28,   154,   -41,   197,   164,    12,
+    -424,  -424,  -424,  -424,    60,  -424,  -424,    51,   210,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-      73,  -424,  -424,  -424,   446,    85,   100,   104,  -424,  -424,
-    -424,   456,   107,  -424,   207,    98,  -424,  -424,   456,  -424,
-    -424,  -424,  -424,  -424,   105,  -424,   106,  -424,   109,   111,
-     112,   116,   117,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-     218,   446,  -424,   241,   442,   442,  -424,   161,   446,  -424,
-     405,  -424,   -70,   -48,   355,   137,   138,   -70,   -70,  -424,
-    -424,  -424,  -424,  -424,  -424,   130,  -424,   134,   151,   156,
-    -424,  -424,   142,  -424,   190,  -424,  -424,  -424,  -424,   141,
-     146,   147,  -424,  -424,  -424,  -424,  -424,  -424,  -424,   -50,
-    -424,   149,   152,   154,   155,  -424,   -70,   -70,  -424,  -424,
-     153,   456,  -424,   405,  -424,  -424,  -424,   164,   355,  -424,
-    -424,  -424,  -424,  -424,     5,  -424,  -424,  -424,    73,   165,
-    -424,  -424,  -424,  -424,  -424,   178,   298,  -424,  -424,  -424,
-    -424,   299,   233,    37,    21,  -424,  -424,   266,   236,  -424,
-    -424,  -424,  -424,   304,   232,  -424,  -424,   203,   241,  -424,
-     -41,   256,   272,   456,  -424,    27,   -55,  -424,  -424,   526,
-    -424,  -424,   318,   319,   320,  -424,  -424,  -424,   405,  -424,
-    -424,  -424,  -424,  -424,  -424,   202,   323,  -424,  -424,  -424,
-    -424,  -424,  -424,  -424,  -424,  -424,   407,  -424,  -424,  -424,
-     456,   168,   456,   168,  -424,   266,   262,   264,   266,   266,
-    -424,   223,   221,  -424,  -424,  -424,  -424,   352,  -424,  -424,
-     226,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-    -424,  -424,  -424,  -424,   381,    57,  -424,   456,     8,   339,
-    -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,   -41,   456,
-     347,   -41,   456,   251,   225,   225,   258,   259,   352,  -424,
-    -424,  -424,   341,  -424,   -34,  -424,   470,   484,  -424,  -424,
-    -424,  -424,  -424,   247,   249,   405,   267,  -424,  -424,  -424,
-     456,  -424,    34,   371,   268,  -424,  -424,  -424,  -424,   255,
-    -424,  -424,  -424,   -41,  -424,   377,   -41,  -424,   379,   282,
-     322,  -424,  -424,  -424,   269,   273,   -30,     6,     4,    26,
-     225,   540,   276,     8,   376,   -22,  -424,  -424,   387,   -21,
-    -424,   392,  -424,  -424,   271,  -424,  -424,  -424,  -424,  -424,
+      77,  -424,    81,  -424,   194,  -424,  -424,  -424,  -424,    55,
+    -424,   100,  -424,    37,   127,  -424,   231,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
+     103,  -424,  -424,  -424,   479,   133,   141,   144,  -424,  -424,
+    -424,   210,   148,  -424,   257,   150,  -424,  -424,   210,  -424,
+    -424,  -424,  -424,  -424,   158,  -424,   162,  -424,   163,   173,
+     177,   178,   179,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
+     262,   479,  -424,   182,   415,   415,  -424,   208,   479,  -424,
+     395,  -424,   -55,    58,   157,   196,   199,   -55,   -55,  -424,
+    -424,  -424,  -424,  -424,  -424,   167,  -424,   184,   204,   220,
+    -424,  -424,   203,  -424,   258,  -424,  -424,  -424,  -424,   202,
+     211,   212,  -424,  -424,  -424,  -424,  -424,  -424,  -424,   -57,
+    -424,   214,   221,   223,   224,  -424,   -55,   -55,  -424,  -424,
+     206,   210,  -424,   395,  -424,  -424,  -424,   222,   157,  -424,
+    -424,  -424,  -424,  -424,     7,  -424,  -424,  -424,   103,   235,
+    -424,  -424,  -424,  -424,  -424,   239,   355,  -424,  -424,  -424,
+    -424,   362,   300,   153,    75,  -424,  -424,   197,   303,  -424,
+    -424,  -424,  -424,   370,   227,  -424,  -424,   271,   182,  -424,
+     -69,   117,   330,   210,  -424,   -42,    76,  -424,  -424,   169,
+    -424,  -424,   381,   383,   384,  -424,  -424,  -424,   395,  -424,
+    -424,  -424,  -424,  -424,  -424,   266,   387,  -424,  -424,  -424,
+    -424,  -424,  -424,  -424,  -424,  -424,   413,  -424,  -424,  -424,
+     210,   156,   210,   156,  -424,   197,   325,   328,   197,   197,
+    -424,   280,   276,  -424,  -424,  -424,  -424,   278,  -424,  -424,
+     279,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
+    -424,  -424,  -424,  -424,   316,   249,  -424,   210,     4,   392,
+    -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,   -69,   210,
+     394,   -69,   210,   298,   264,   264,   304,   307,   278,  -424,
+    -424,  -424,   385,  -424,   -30,  -424,   433,   475,  -424,  -424,
+    -424,  -424,  -424,   286,   292,   395,  -424,  -424,  -424,   210,
+    -424,     8,   428,   294,  -424,  -424,  -424,  -424,   301,  -424,
+    -424,  -424,   -69,  -424,   416,   -69,  -424,   427,   340,   375,
+    -424,  -424,  -424,   319,   334,   -28,    -2,    14,    10,   264,
+     517,   341,     4,   439,   -25,  -424,  -424,   441,    -7,  -424,
+     444,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-     456,   278,    77,  -424,   -41,  -424,   -41,  -424,  -424,   251,
-     241,   241,  -424,   456,   456,    75,   397,  -424,   456,  -424,
-     399,  -424,   456,  -424,   413,  -424,   401,  -424,   526,   456,
-     498,  -424,   158,   456,   512,  -424,   456,  -424,   301,  -424,
-     456,   296,   309,  -424,  -424,  -424,  -424,  -424,  -424,   431,
-     456,   456,   549,   102,  -424,  -424,  -424,  -424,  -424,   225,
-     312,  -424,   427,  -424,  -424,   335,  -424,  -424,  -424,   439,
-    -424,  -424,   342,  -424,  -424,  -424,  -424,  -424,    11,   460,
-      17,    20,  -424,   463,   158,   158,  -424,   484,   456,    78,
-     456,  -424,  -424,   456,  -424,  -424,   456,  -424,   456,    18,
-    -424,    -8,  -424,   346,   348,  -424,   472,   475,   477,  -424,
-     225,  -424,   478,  -424,  -424,  -424,  -424,  -424,  -424,   266,
-    -424,  -424,   251,     8,  -424
+    -424,  -424,  -424,  -424,  -424,  -424,  -424,   210,   347,   -20,
+    -424,   -69,  -424,   -69,  -424,  -424,   298,   182,   182,  -424,
+     210,   210,   161,   467,  -424,   210,  -424,   469,  -424,   210,
+    -424,   471,  -424,   456,  -424,   169,   210,   489,  -424,   132,
+     210,   503,  -424,   210,   356,  -424,   210,   364,   365,  -424,
+    -424,  -424,  -424,  -424,  -424,   476,   210,   210,   526,   127,
+    -424,  -424,  -424,  -424,  -424,   264,   357,  -424,   470,  -424,
+    -424,   367,  -424,  -424,  -424,   482,  -424,  -424,  -424,  -424,
+    -424,  -424,  -424,    13,   501,    23,    29,  -424,   508,   132,
+     132,  -424,   475,   210,    56,   210,  -424,   210,  -424,  -424,
+     210,  -424,   210,    86,  -424,     1,  -424,   368,   388,  -424,
+     510,   511,   512,  -424,   264,  -424,   520,  -424,  -424,  -424,
+    -424,  -424,  -424,   197,  -424,  -424,   298,     4,  -424
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -424,  -424,  -424,   462,     9,  -155,  -424,  -424,  -424,  -424,
-     270,  -424,  -424,   -28,  -424,   424,  -424,  -424,  -424,   145,
-    -424,  -424,  -424,    14,  -424,  -424,  -424,  -424,  -424,  -424,
+    -424,  -424,  -424,   513,    18,  -164,  -424,  -424,  -424,  -424,
+     309,  -424,  -424,    68,  -424,   481,  -424,  -424,  -424,   198,
+    -424,  -424,  -424,   104,  -424,  -424,  -424,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-    -424,   310,  -424,  -424,  -424,  -424,  -424,   386,  -424,   394,
+    -424,   354,  -424,  -424,  -424,  -424,  -424,   423,  -424,   431,
     -424,  -424,  -424,  -424,  -424,  -424,  -330,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-    -424,  -424,   294,   308,  -424,   -63,  -424,  -424,  -423,  -424,
+    -424,  -424,   361,   339,  -424,   -63,  -424,  -424,  -419,  -424,
     -424,  -424,  -424,  -424,  -214,  -424,  -424,  -424,  -424,  -424,
-    -424,  -424,  -424,  -424,  -424,    93,  -227,  -424,    16,  -320,
-    -405,  -424,   144,   196,  -424,  -424,  -424,   279,   290,  -128,
-     303,  -424,   382,  -424,   275,  -219,    -9,   -38,  -164,  -424,
-    -424,  -424,   385,   473,  -424,  -116
+    -424,  -424,  -424,  -424,   109,  -195,  -424,    82,  -328,  -423,
+    -424,   205,   254,  -424,  -424,  -424,   317,   323,  -128,   350,
+    -424,   421,  -424,   295,  -220,    94,   -38,  -162,  -424,  -424,
+    -424,   429,   514,  -424,  -119
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -262
+#define YYTABLE_NINF -260
 static const yytype_int16 yytable[] =
 {
-      79,    96,   152,   227,   187,   383,   465,   141,   437,   203,
-     204,   269,   280,     3,     4,   512,   386,   433,   199,   438,
-     188,   515,   223,    21,   517,  -165,   356,   357,   358,   359,
-     441,  -165,   360,  -165,  -165,  -165,   381,   205,    57,   209,
-     381,   157,   442,    62,   158,     3,     4,   529,   450,   454,
-    -165,  -165,  -165,   126,  -165,   152,   -23,   -21,   209,   160,
-      79,   323,   454,   161,   326,   327,   142,   -42,    57,   205,
-     504,   342,   505,    62,   143,   189,   -83,    91,   351,   530,
-      22,   513,   439,  -165,  -165,  -165,  -165,   516,    23,   434,
-     518,   382,   531,    92,  -165,   432,   266,    24,  -165,   364,
-    -165,    28,   367,   451,   455,    30,   443,   361,   -84,   173,
-     174,   281,   268,   468,   206,   145,   147,   533,    31,   544,
-     152,    53,   207,   208,  -165,  -165,  -165,  -165,  -165,  -165,
-     483,    33,  -165,    35,   490,  -165,  -165,  -165,   276,    93,
-      34,   277,   354,    79,   423,  -165,   206,   425,   195,   196,
-     470,    36,    39,   304,   207,   208,   471,   472,  -261,   335,
-      68,    69,    70,    71,   245,    72,    51,    66,   343,    74,
-      75,   344,   345,    77,    67,   484,   340,   352,   310,   485,
-       2,    85,   486,   346,   347,   348,   349,   -23,   461,   523,
-       2,   462,   524,   271,   273,   274,   372,   373,     5,    88,
-     335,    90,    53,    97,    52,   463,   123,   464,     5,    98,
-     543,   129,   124,   130,    52,   125,     1,   152,   127,     2,
-       3,     4,   139,   311,   312,   313,   314,   315,   316,   132,
-     133,   148,   309,   134,   320,   135,   136,     5,   317,     6,
-     137,   138,   230,     7,   231,   232,   233,   458,   171,   172,
-      40,   176,   445,   335,    41,   177,   179,    42,    43,   178,
-     183,   234,   235,   236,   182,   237,   184,   353,     8,   355,
-     270,   185,   186,    53,   190,   -46,   197,   191,     8,   192,
-     193,   365,    54,    53,   368,   -47,   272,   201,   216,   218,
-      55,    56,    54,   492,   238,   239,   240,   241,   387,   391,
-      55,    56,   219,   220,   221,   242,   228,     8,   229,   243,
-     267,   244,   395,     9,   466,   467,    46,    47,    48,    49,
-     281,    10,   283,   284,   285,   542,   288,   289,    68,    69,
-      70,    71,   324,    72,   325,    68,    69,    70,    71,   245,
-      72,    77,   304,   246,   501,   328,   247,   248,    77,   363,
-     337,   506,    73,    74,    75,    76,   249,   366,   369,    68,
-      69,    70,    71,   380,    72,   374,   375,    73,    74,    75,
-      76,  -259,    77,  -260,   393,    68,    69,    70,    71,   422,
-      72,   427,   459,    73,    74,    75,    76,   424,    77,   426,
-     430,   421,   429,   457,   431,   387,   469,   448,   449,   460,
-     475,   474,   540,   476,   477,   162,   163,   164,   165,   453,
-     503,   481,   387,   396,   456,   488,   387,   478,   491,   397,
-     398,   495,   494,   479,   493,   399,   400,   401,   402,   403,
-     404,   405,   498,   499,   496,   497,   507,   406,   407,   408,
-     409,   291,   292,   293,   294,   295,   296,   297,   298,   508,
-     299,   300,   301,   302,   303,    68,    69,    70,    71,   509,
-      72,   510,   166,   332,   514,   511,   167,   520,    77,   391,
-     522,   534,   525,   535,    32,   526,   536,   168,   527,   537,
-     528,   538,   541,    89,    68,    69,    70,    71,    40,    72,
-     392,   410,   338,   411,   250,   339,    43,    77,   202,   412,
-     413,   414,   415,   416,   417,   418,   419,   222,    68,    69,
-      70,    71,   142,    72,   149,   140,    73,    74,    75,    76,
-     143,    77,   224,   521,   376,   447,   304,   150,   305,   306,
-      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-     109,   480,   110,   111,   112,    68,    69,    70,    71,   142,
-      72,   286,   321,    73,    74,    75,    76,   143,    77,    68,
-      69,    70,    71,   322,    72,   200,   198,    73,    74,    75,
-      76,   131,    77,    68,    69,    70,    71,     0,    72,   341,
-       0,   384,    74,    75,    76,     0,    77,    68,    69,    70,
-      71,     0,    72,     0,     0,   388,    74,    75,    76,     0,
-      77,    68,    69,    70,    71,     0,    72,     0,     0,   482,
-      74,    75,    76,     0,    77,    68,    69,    70,    71,     0,
-      72,     0,     0,   489,    74,    75,    76,     0,    77,    68,
-      69,    70,    71,   245,    72,     0,     0,   246,     0,     0,
-     247,     0,    77,    68,    69,    70,    71,     0,    72,     0,
-       0,   446,    68,    69,    70,    71,    77,    72,     0,     0,
-     500,     0,     0,     0,     0,    77
+      79,    96,   152,   227,   141,   382,   187,   461,   385,   430,
+     269,   203,   204,   188,   438,     3,     4,   506,   434,     2,
+     199,    21,   355,   356,   357,   358,   439,   509,   359,   435,
+     209,     1,    22,   511,     2,     3,     4,     5,   142,   205,
+     380,   -42,   380,    52,   280,   447,   143,    57,   499,   209,
+     500,    91,     5,   126,     6,   152,   157,    23,     7,   158,
+      79,   323,     2,   451,   326,   327,    40,    92,   189,   276,
+      41,   451,   277,    42,    43,    24,   223,    57,   -83,  -165,
+       5,   431,    28,   507,    30,  -165,    52,  -165,  -165,  -165,
+     440,   457,   436,   510,   458,   381,   266,   429,   363,   512,
+     448,   366,   464,   360,  -165,  -165,  -165,     8,  -165,   268,
+     350,   281,    53,    93,   -46,   523,   206,   538,   452,   479,
+     152,    54,     8,   486,   207,   208,   527,   304,     9,    55,
+      56,   270,  -259,    62,    31,    33,    10,  -165,  -165,  -165,
+    -165,    34,   420,    79,   353,   422,    35,   524,  -165,   480,
+       8,    36,  -165,   481,  -165,    53,   482,   -47,    39,   335,
+     525,     3,     4,    62,    54,   160,   310,   517,    51,   161,
+     518,    66,    55,    56,    67,    53,   340,   351,  -165,  -165,
+    -165,  -165,  -165,  -165,    85,   205,  -165,   -23,   -21,  -165,
+    -165,  -165,   -23,   271,   273,   274,   371,   372,    88,  -165,
+     335,   459,    90,   460,   537,   173,   174,   162,   163,   164,
+     165,   311,   312,   313,   314,   315,   316,   152,   145,   147,
+      68,    69,    70,    71,   -84,    72,   317,    53,    73,    74,
+      75,    76,   309,    77,   320,    97,   466,   230,    98,   231,
+     232,   233,   467,   468,   195,   196,   454,    46,    47,    48,
+      49,   442,   335,   124,   123,   125,   234,   235,   236,   127,
+     237,   129,   206,   342,   166,   130,   139,   352,   167,   354,
+     207,   208,    68,    69,    70,    71,   245,    72,   148,   168,
+     246,   364,   132,   247,   367,    77,   133,   134,   176,   238,
+     239,   240,   241,    73,    74,    75,    76,   135,   386,   390,
+     242,   136,   137,   138,   243,   177,   244,   171,   462,   463,
+     172,   392,   178,    68,    69,    70,    71,   281,    72,   536,
+     179,    73,    74,    75,    76,   182,    77,   184,   183,   197,
+      68,    69,    70,    71,   245,    72,   185,   186,   246,   190,
+     496,   247,   248,    77,   272,   201,   191,   501,   192,   193,
+     218,   249,    68,    69,    70,    71,   245,    72,   216,   219,
+     343,    74,    75,   344,   345,    77,   220,    68,    69,    70,
+      71,   221,    72,   228,   229,   346,   347,   348,   267,   455,
+      77,    68,    69,    70,    71,   283,    72,   284,   285,   332,
+     288,   289,   386,   465,    77,   324,   534,   471,   325,   304,
+     328,   473,   362,   337,   365,   368,   498,   379,   477,   386,
+    -257,   373,   484,   386,   374,   487,  -258,   418,   489,    68,
+      69,    70,    71,    40,    72,   419,   421,   338,   493,   494,
+     339,    43,    77,    68,    69,    70,    71,   423,    72,   424,
+     427,    73,    74,    75,    76,   426,    77,   291,   292,   293,
+     294,   295,   296,   297,   298,   428,   299,   300,   301,   302,
+     303,   446,   445,   450,   390,   516,   453,   519,   456,   520,
+     393,   470,   521,   472,   522,   474,   394,   395,   475,   488,
+     492,   502,   396,   397,   398,   399,   400,   401,   402,   490,
+     491,   504,   503,   528,   403,   404,   405,   406,    68,    69,
+      70,    71,   142,    72,   505,   508,    73,    74,    75,    76,
+     143,    77,   514,   529,   530,   531,   532,   150,    68,    69,
+      70,    71,   142,    72,   535,    32,    73,    74,    75,    76,
+     143,    77,   304,   250,   305,   306,    68,    69,    70,    71,
+      89,    72,   202,   391,   383,    74,    75,    76,   407,    77,
+     408,   149,   140,   224,   476,   409,   410,   411,   412,   413,
+     414,   415,   416,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   222,   110,   111,   112,    68,    69,
+      70,    71,   375,    72,   515,   444,   387,    74,    75,    76,
+     321,    77,    68,    69,    70,    71,   322,    72,   286,   341,
+     478,    74,    75,    76,   200,    77,    68,    69,    70,    71,
+     198,    72,   131,     0,   485,    74,    75,    76,     0,    77,
+      68,    69,    70,    71,     0,    72,     0,     0,   443,    68,
+      69,    70,    71,    77,    72,     0,     0,   495,     0,     0,
+       0,     0,    77
 };
 
 static const yytype_int16 yycheck[] =
 {
-      38,    64,   130,   217,   168,   335,   429,   123,     4,     4,
-       5,   230,   239,     8,     9,     4,   336,    11,   182,    15,
-      70,     4,     1,   111,     4,     4,    18,    19,    20,    21,
-       4,    10,    24,    12,    13,    14,    70,    32,    29,   194,
-      70,   111,    16,    29,   114,     8,     9,    29,    70,    70,
-      29,    30,    31,    91,    33,   183,   111,   112,   213,   107,
-      98,   275,    70,   111,   278,   279,   107,     4,    59,    32,
-     475,    14,   477,    59,   115,   125,    71,    14,   305,    61,
-     112,    70,    78,    62,    63,    64,    65,    70,   111,    83,
-      70,   125,    74,    30,    73,   125,   224,   122,    77,   318,
-      79,   111,   321,   125,   125,     4,    80,    99,    71,   137,
-     138,   239,   228,   433,   109,   124,   125,   125,     0,   542,
-     248,   100,   117,   118,   103,   104,   105,   106,   107,   108,
-     450,     4,   111,     4,   454,   114,   115,   116,   111,    76,
-      70,   114,   306,   181,   363,   124,   109,   366,   176,   177,
-      75,   123,     4,   119,   117,   118,    81,    82,   124,   287,
-     103,   104,   105,   106,   107,   108,     4,   111,   111,   112,
-     113,   114,   115,   116,   123,    17,   304,   305,    10,    21,
-       7,   107,    24,   126,   127,   128,   129,   111,   111,   111,
-       7,   114,   114,   231,   232,   233,   324,   325,    25,     4,
-     328,   102,   100,     4,    31,   424,   121,   426,    25,   136,
-     540,     4,   112,   115,    31,   111,     4,   345,   111,     7,
-       8,     9,     4,    55,    56,    57,    58,    59,    60,   124,
-     124,    70,   270,   124,   272,   124,   124,    25,    70,    27,
-     124,   124,    10,    31,    12,    13,    14,   411,   111,   111,
-     107,   121,   380,   381,   111,   121,   100,   114,   115,   108,
-      70,    29,    30,    31,   122,    33,   125,   305,    95,   307,
-      14,   125,   125,   100,   125,   102,   123,   125,    95,   125,
-     125,   319,   109,   100,   322,   102,    14,   123,   123,   111,
-     117,   118,   109,   457,    62,    63,    64,    65,   336,   337,
-     117,   118,     4,     4,    71,    73,    70,    95,     4,    77,
-     107,    79,   350,   101,   430,   431,    50,    51,    52,    53,
-     448,   109,     4,     4,     4,   539,   124,     4,   103,   104,
-     105,   106,    70,   108,    70,   103,   104,   105,   106,   107,
-     108,   116,   119,   111,   472,   124,   114,   115,   116,    10,
-     124,   479,   111,   112,   113,   114,   124,    10,   107,   103,
-     104,   105,   106,    22,   108,   107,   107,   111,   112,   113,
-     114,   124,   116,   124,   107,   103,   104,   105,   106,   124,
-     108,    99,   420,   111,   112,   113,   114,    10,   116,    10,
-     121,   123,    70,   122,   121,   433,   434,   121,    22,   121,
-     438,     4,   530,     4,   442,    50,    51,    52,    53,    22,
-     473,   449,   450,    42,    22,   453,   454,     4,   456,    48,
-      49,   125,   460,    22,   123,    54,    55,    56,    57,    58,
-      59,    60,   470,   471,   125,     4,   124,    66,    67,    68,
-      69,    34,    35,    36,    37,    38,    39,    40,    41,    22,
-      43,    44,    45,    46,    47,   103,   104,   105,   106,   124,
-     108,    22,   107,   111,     4,   123,   111,     4,   116,   507,
-     508,   125,   510,   125,    12,   513,     4,   122,   516,     4,
-     518,     4,     4,    59,   103,   104,   105,   106,   107,   108,
-     345,   120,   111,   122,   224,   114,   115,   116,   188,   128,
-     129,   130,   131,   132,   133,   134,   135,   213,   103,   104,
-     105,   106,   107,   108,   128,   121,   111,   112,   113,   114,
-     115,   116,   214,   507,   328,   381,   119,   122,   121,   122,
-      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,   448,    96,    97,    98,   103,   104,   105,   106,   107,
-     108,   248,   273,   111,   112,   113,   114,   115,   116,   103,
-     104,   105,   106,   273,   108,   183,   181,   111,   112,   113,
-     114,    98,   116,   103,   104,   105,   106,    -1,   108,   304,
-      -1,   111,   112,   113,   114,    -1,   116,   103,   104,   105,
-     106,    -1,   108,    -1,    -1,   111,   112,   113,   114,    -1,
-     116,   103,   104,   105,   106,    -1,   108,    -1,    -1,   111,
-     112,   113,   114,    -1,   116,   103,   104,   105,   106,    -1,
-     108,    -1,    -1,   111,   112,   113,   114,    -1,   116,   103,
-     104,   105,   106,   107,   108,    -1,    -1,   111,    -1,    -1,
-     114,    -1,   116,   103,   104,   105,   106,    -1,   108,    -1,
-      -1,   111,   103,   104,   105,   106,   116,   108,    -1,    -1,
-     111,    -1,    -1,    -1,    -1,   116
+      38,    64,   130,   217,   123,   335,   168,   426,   336,    11,
+     230,     4,     5,    70,     4,     8,     9,     4,     4,     7,
+     182,   111,    18,    19,    20,    21,    16,     4,    24,    15,
+     194,     4,   112,     4,     7,     8,     9,    25,   107,    32,
+      70,     4,    70,    31,   239,    70,   115,    29,   471,   213,
+     473,    14,    25,    91,    27,   183,   111,   111,    31,   114,
+      98,   275,     7,    70,   278,   279,   107,    30,   125,   111,
+     111,    70,   114,   114,   115,   122,     1,    59,    71,     4,
+      25,    83,   111,    70,     4,    10,    31,    12,    13,    14,
+      80,   111,    78,    70,   114,   125,   224,   125,   318,    70,
+     125,   321,   430,    99,    29,    30,    31,    95,    33,   228,
+     305,   239,   100,    76,   102,    29,   109,   536,   125,   447,
+     248,   109,    95,   451,   117,   118,   125,   119,   101,   117,
+     118,    14,   124,    29,     0,     4,   109,    62,    63,    64,
+      65,    70,   362,   181,   306,   365,     4,    61,    73,    17,
+      95,   123,    77,    21,    79,   100,    24,   102,     4,   287,
+      74,     8,     9,    59,   109,   107,    10,   111,     4,   111,
+     114,   111,   117,   118,   123,   100,   304,   305,   103,   104,
+     105,   106,   107,   108,   107,    32,   111,   111,   112,   114,
+     115,   116,   111,   231,   232,   233,   324,   325,     4,   124,
+     328,   421,   102,   423,   534,   137,   138,    50,    51,    52,
+      53,    55,    56,    57,    58,    59,    60,   345,   124,   125,
+     103,   104,   105,   106,    71,   108,    70,   100,   111,   112,
+     113,   114,   270,   116,   272,     4,    75,    10,   135,    12,
+      13,    14,    81,    82,   176,   177,   408,    50,    51,    52,
+      53,   379,   380,   112,   121,   111,    29,    30,    31,   111,
+      33,     4,   109,    14,   107,   115,     4,   305,   111,   307,
+     117,   118,   103,   104,   105,   106,   107,   108,    70,   122,
+     111,   319,   124,   114,   322,   116,   124,   124,   121,    62,
+      63,    64,    65,   111,   112,   113,   114,   124,   336,   337,
+      73,   124,   124,   124,    77,   121,    79,   111,   427,   428,
+     111,   349,   108,   103,   104,   105,   106,   445,   108,   533,
+     100,   111,   112,   113,   114,   122,   116,   125,    70,   123,
+     103,   104,   105,   106,   107,   108,   125,   125,   111,   125,
+     468,   114,   115,   116,    14,   123,   125,   475,   125,   125,
+     111,   124,   103,   104,   105,   106,   107,   108,   123,     4,
+     111,   112,   113,   114,   115,   116,     4,   103,   104,   105,
+     106,    71,   108,    70,     4,   126,   127,   128,   107,   417,
+     116,   103,   104,   105,   106,     4,   108,     4,     4,   111,
+     124,     4,   430,   431,   116,    70,   524,   435,    70,   119,
+     124,   439,    10,   124,    10,   107,   469,    22,   446,   447,
+     124,   107,   450,   451,   107,   453,   124,   123,   456,   103,
+     104,   105,   106,   107,   108,   124,    10,   111,   466,   467,
+     114,   115,   116,   103,   104,   105,   106,    10,   108,    99,
+     121,   111,   112,   113,   114,    70,   116,    34,    35,    36,
+      37,    38,    39,    40,    41,   121,    43,    44,    45,    46,
+      47,    22,   121,    22,   502,   503,    22,   505,   121,   507,
+      42,     4,   510,     4,   512,     4,    48,    49,    22,   123,
+       4,   124,    54,    55,    56,    57,    58,    59,    60,   125,
+     125,   124,    22,   125,    66,    67,    68,    69,   103,   104,
+     105,   106,   107,   108,    22,     4,   111,   112,   113,   114,
+     115,   116,     4,   125,     4,     4,     4,   122,   103,   104,
+     105,   106,   107,   108,     4,    12,   111,   112,   113,   114,
+     115,   116,   119,   224,   121,   122,   103,   104,   105,   106,
+      59,   108,   188,   345,   111,   112,   113,   114,   120,   116,
+     122,   128,   121,   214,   445,   127,   128,   129,   130,   131,
+     132,   133,   134,    84,    85,    86,    87,    88,    89,    90,
+      91,    92,    93,    94,   213,    96,    97,    98,   103,   104,
+     105,   106,   328,   108,   502,   380,   111,   112,   113,   114,
+     273,   116,   103,   104,   105,   106,   273,   108,   248,   304,
+     111,   112,   113,   114,   183,   116,   103,   104,   105,   106,
+     181,   108,    98,    -1,   111,   112,   113,   114,    -1,   116,
+     103,   104,   105,   106,    -1,   108,    -1,    -1,   111,   103,
+     104,   105,   106,   116,   108,    -1,    -1,   111,    -1,    -1,
+      -1,    -1,   116
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -2375,60 +2367,59 @@
 static const yytype_uint16 yystos[] =
 {
        0,     4,     7,     8,     9,    25,    27,    31,    95,   101,
-     109,   138,   139,   140,   141,   142,   144,   145,   157,   160,
-     162,   111,   112,   111,   122,   161,   163,   146,   111,   158,
-       4,     0,   140,     4,    70,     4,   123,   255,   256,     4,
-     107,   111,   114,   115,   250,   251,    50,    51,    52,    53,
-     221,     4,    31,   100,   109,   117,   118,   141,   147,   151,
-     152,   159,   160,   210,   211,   212,   111,   123,   103,   104,
-     105,   106,   108,   111,   112,   113,   114,   116,   246,   254,
-     259,   260,   261,   262,   164,   107,   148,   149,     4,   152,
-     102,    14,    30,    76,   153,   154,   212,     4,   136,    84,
+     109,   137,   138,   139,   140,   141,   143,   144,   156,   159,
+     161,   111,   112,   111,   122,   160,   162,   145,   111,   157,
+       4,     0,   139,     4,    70,     4,   123,   253,   254,     4,
+     107,   111,   114,   115,   248,   249,    50,    51,    52,    53,
+     220,     4,    31,   100,   109,   117,   118,   140,   146,   150,
+     151,   158,   159,   209,   210,   211,   111,   123,   103,   104,
+     105,   106,   108,   111,   112,   113,   114,   116,   244,   252,
+     257,   258,   259,   260,   163,   107,   147,   148,     4,   151,
+     102,    14,    30,    76,   152,   153,   211,     4,   135,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      96,    97,    98,   170,   171,   172,   173,   174,   175,   176,
-     184,   185,   186,   121,   112,   111,   254,   111,   155,     4,
-     115,   260,   124,   124,   124,   124,   124,   124,   124,     4,
-     186,   262,   107,   115,   252,   253,   254,   253,    70,   184,
-     122,   156,   246,   247,   248,   249,   253,   111,   114,   150,
-     107,   111,    50,    51,    52,    53,   107,   111,   122,   177,
-     178,   111,   111,   150,   150,   165,   121,   121,   108,   100,
-     257,   258,   122,    70,   125,   125,   125,   255,    70,   125,
-     125,   125,   125,   125,   166,   150,   150,   123,   259,   255,
-     249,   123,   178,     4,     5,    32,   109,   117,   118,   142,
-     143,   167,   179,   207,   208,   209,   123,   168,   111,     4,
-       4,    71,   209,     1,   210,   213,   169,   221,    70,     4,
+      96,    97,    98,   169,   170,   171,   172,   173,   174,   175,
+     183,   184,   185,   121,   112,   111,   252,   111,   154,     4,
+     115,   258,   124,   124,   124,   124,   124,   124,   124,     4,
+     185,   260,   107,   115,   250,   251,   252,   251,    70,   183,
+     122,   155,   244,   245,   246,   247,   251,   111,   114,   149,
+     107,   111,    50,    51,    52,    53,   107,   111,   122,   176,
+     177,   111,   111,   149,   149,   164,   121,   121,   108,   100,
+     255,   256,   122,    70,   125,   125,   125,   253,    70,   125,
+     125,   125,   125,   125,   165,   149,   149,   123,   257,   253,
+     247,   123,   177,     4,     5,    32,   109,   117,   118,   141,
+     142,   166,   178,   206,   207,   208,   123,   167,   111,     4,
+       4,    71,   208,     1,   209,   212,   168,   220,    70,     4,
       10,    12,    13,    14,    29,    30,    31,    33,    62,    63,
       64,    65,    73,    77,    79,   107,   111,   114,   115,   124,
-     147,   180,   195,   197,   203,   205,   217,   223,   227,   229,
-     231,   232,   233,   241,   242,   243,   246,   107,   262,   252,
-      14,   254,    14,   254,   254,   218,   111,   114,   219,   220,
-     233,   246,   228,     4,     4,     4,   247,   224,   124,     4,
-     234,    34,    35,    36,    37,    38,    39,    40,    41,    43,
-      44,    45,    46,    47,   119,   121,   122,   230,   193,   254,
-      10,    55,    56,    57,    58,    59,    60,    70,   244,   245,
-     254,   244,   245,   221,    70,    70,   221,   221,   124,   181,
-     196,   198,   111,   239,   240,   246,   204,   124,   111,   114,
-     246,   251,    14,   111,   114,   115,   126,   127,   128,   129,
-     225,   233,   246,   254,   255,   254,    18,    19,    20,    21,
-      24,    99,   194,    10,   252,   254,    10,   252,   254,   107,
-     214,   215,   246,   246,   107,   107,   240,   188,   199,   200,
-      22,    70,   125,   193,   111,   206,   236,   254,   111,   235,
-     236,   254,   156,   107,   222,   254,    42,    48,    49,    54,
-      55,    56,    57,    58,    59,    60,    66,    67,    68,    69,
-     120,   122,   128,   129,   130,   131,   132,   133,   134,   135,
-     226,   123,   124,   252,    10,   252,    10,    99,   216,    70,
-     121,   121,   125,    11,    83,   183,   189,     4,    15,    78,
-     201,     4,    16,    80,   202,   246,   111,   239,   121,    22,
-      70,   125,   237,    22,    70,   125,    22,   122,   255,   254,
-     121,   111,   114,   252,   252,   215,   262,   262,   236,   254,
-      75,    81,    82,   187,     4,   254,     4,   254,     4,    22,
-     232,   254,   111,   236,    17,    21,    24,   238,   254,   111,
-     236,   254,   255,   123,   254,   125,   125,     4,   254,   254,
-     111,   246,   182,   212,   237,   237,   246,   124,    22,   124,
-      22,   123,     4,    70,     4,     4,    70,     4,    70,   190,
-       4,   235,   254,   111,   114,   254,   254,   254,   254,    29,
-      61,    74,   191,   125,   125,   125,     4,     4,     4,   192,
-     246,     4,   221,   193,   215
+     146,   179,   194,   196,   202,   204,   216,   221,   225,   227,
+     229,   230,   231,   239,   240,   241,   244,   107,   260,   250,
+      14,   252,    14,   252,   252,   217,   111,   114,   218,   219,
+     231,   244,   226,     4,     4,     4,   245,   222,   124,     4,
+     232,    34,    35,    36,    37,    38,    39,    40,    41,    43,
+      44,    45,    46,    47,   119,   121,   122,   228,   192,   252,
+      10,    55,    56,    57,    58,    59,    60,    70,   242,   243,
+     252,   242,   243,   220,    70,    70,   220,   220,   124,   180,
+     195,   197,   111,   237,   238,   244,   203,   124,   111,   114,
+     244,   249,    14,   111,   114,   115,   126,   127,   128,   223,
+     231,   244,   252,   253,   252,    18,    19,    20,    21,    24,
+      99,   193,    10,   250,   252,    10,   250,   252,   107,   213,
+     214,   244,   244,   107,   107,   238,   187,   198,   199,    22,
+      70,   125,   192,   111,   205,   234,   252,   111,   233,   234,
+     252,   155,   252,    42,    48,    49,    54,    55,    56,    57,
+      58,    59,    60,    66,    67,    68,    69,   120,   122,   127,
+     128,   129,   130,   131,   132,   133,   134,   224,   123,   124,
+     250,    10,   250,    10,    99,   215,    70,   121,   121,   125,
+      11,    83,   182,   188,     4,    15,    78,   200,     4,    16,
+      80,   201,   244,   111,   237,   121,    22,    70,   125,   235,
+      22,    70,   125,    22,   253,   252,   121,   111,   114,   250,
+     250,   214,   260,   260,   234,   252,    75,    81,    82,   186,
+       4,   252,     4,   252,     4,    22,   230,   252,   111,   234,
+      17,    21,    24,   236,   252,   111,   234,   252,   123,   252,
+     125,   125,     4,   252,   252,   111,   244,   181,   211,   235,
+     235,   244,   124,    22,   124,    22,     4,    70,     4,     4,
+      70,     4,    70,   189,     4,   233,   252,   111,   114,   252,
+     252,   252,   252,    29,    61,    74,   190,   125,   125,   125,
+       4,     4,     4,   191,   244,     4,   220,   192,   214
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -4806,63 +4797,41 @@
 
 /* Line 1464 of yacc.c  */
 #line 2042 "compilers/imcc/imcc.y"
-    {
-           /* there'd normally be a mem_sys_strdup() here, but the lexer already
-            * copied the string, so it's safe to use directly */
-           if ((IMCC_INFO(interp)->cur_pmc_type = Parrot_pmc_get_type_str(interp,
-               Parrot_str_new(interp, (yyvsp[(1) - (1)].s), 0))) <= 0) {
-               IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
-                    "Unknown PMC type '%s'\n", (yyvsp[(1) - (1)].s));
-           }
-         }
-    break;
-
-  case 202:
-
-/* Line 1464 of yacc.c  */
-#line 2055 "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 203:
+  case 202:
 
 /* Line 1464 of yacc.c  */
-#line 2057 "compilers/imcc/imcc.y"
+#line 2044 "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 204:
+  case 203:
 
 /* Line 1464 of yacc.c  */
-#line 2059 "compilers/imcc/imcc.y"
+#line 2046 "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 205:
+  case 204:
 
 /* Line 1464 of yacc.c  */
-#line 2061 "compilers/imcc/imcc.y"
+#line 2048 "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 206:
+  case 205:
 
 /* Line 1464 of yacc.c  */
-#line 2063 "compilers/imcc/imcc.y"
+#line 2050 "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 207:
-
-/* Line 1464 of yacc.c  */
-#line 2068 "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 208:
+  case 206:
 
 /* Line 1464 of yacc.c  */
-#line 2071 "compilers/imcc/imcc.y"
+#line 2053 "compilers/imcc/imcc.y"
     {
            add_pcc_result(interp, (yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4870,220 +4839,220 @@
          }
     break;
 
-  case 209:
+  case 207:
 
 /* Line 1464 of yacc.c  */
-#line 2077 "compilers/imcc/imcc.y"
+#line 2059 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
          }
     break;
 
-  case 210:
+  case 208:
 
 /* Line 1464 of yacc.c  */
-#line 2081 "compilers/imcc/imcc.y"
+#line 2063 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
          }
     break;
 
-  case 214:
+  case 212:
 
 /* Line 1464 of yacc.c  */
-#line 2089 "compilers/imcc/imcc.y"
+#line 2071 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
          }
     break;
 
-  case 215:
+  case 213:
 
 /* Line 1464 of yacc.c  */
-#line 2096 "compilers/imcc/imcc.y"
+#line 2078 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
-  case 216:
+  case 214:
 
 /* Line 1464 of yacc.c  */
-#line 2097 "compilers/imcc/imcc.y"
+#line 2079 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
-  case 217:
+  case 215:
 
 /* Line 1464 of yacc.c  */
-#line 2098 "compilers/imcc/imcc.y"
+#line 2080 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
-  case 218:
+  case 216:
 
 /* Line 1464 of yacc.c  */
-#line 2102 "compilers/imcc/imcc.y"
+#line 2084 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 219:
+  case 217:
 
 /* Line 1464 of yacc.c  */
-#line 2103 "compilers/imcc/imcc.y"
+#line 2085 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
-  case 220:
+  case 218:
 
 /* Line 1464 of yacc.c  */
-#line 2104 "compilers/imcc/imcc.y"
+#line 2086 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 221:
+  case 219:
 
 /* Line 1464 of yacc.c  */
-#line 2105 "compilers/imcc/imcc.y"
+#line 2087 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
-  case 222:
+  case 220:
 
 /* Line 1464 of yacc.c  */
-#line 2106 "compilers/imcc/imcc.y"
+#line 2088 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 223:
+  case 221:
 
 /* Line 1464 of yacc.c  */
-#line 2107 "compilers/imcc/imcc.y"
+#line 2089 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 224:
+  case 222:
 
 /* Line 1464 of yacc.c  */
-#line 2108 "compilers/imcc/imcc.y"
+#line 2090 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
-  case 225:
+  case 223:
 
 /* Line 1464 of yacc.c  */
-#line 2109 "compilers/imcc/imcc.y"
+#line 2091 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 226:
+  case 224:
 
 /* Line 1464 of yacc.c  */
-#line 2110 "compilers/imcc/imcc.y"
+#line 2092 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
-  case 227:
+  case 225:
 
 /* Line 1464 of yacc.c  */
-#line 2111 "compilers/imcc/imcc.y"
+#line 2093 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
-  case 228:
+  case 226:
 
 /* Line 1464 of yacc.c  */
-#line 2112 "compilers/imcc/imcc.y"
+#line 2094 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
-  case 229:
+  case 227:
 
 /* Line 1464 of yacc.c  */
-#line 2113 "compilers/imcc/imcc.y"
+#line 2095 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
-  case 230:
+  case 228:
 
 /* Line 1464 of yacc.c  */
-#line 2114 "compilers/imcc/imcc.y"
+#line 2096 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
-  case 231:
+  case 229:
 
 /* Line 1464 of yacc.c  */
-#line 2115 "compilers/imcc/imcc.y"
+#line 2097 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
-  case 232:
+  case 230:
 
 /* Line 1464 of yacc.c  */
-#line 2116 "compilers/imcc/imcc.y"
+#line 2098 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 233:
+  case 231:
 
 /* Line 1464 of yacc.c  */
-#line 2117 "compilers/imcc/imcc.y"
+#line 2099 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 234:
+  case 232:
 
 /* Line 1464 of yacc.c  */
-#line 2118 "compilers/imcc/imcc.y"
+#line 2100 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 235:
+  case 233:
 
 /* Line 1464 of yacc.c  */
-#line 2119 "compilers/imcc/imcc.y"
+#line 2101 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
-  case 236:
+  case 234:
 
 /* Line 1464 of yacc.c  */
-#line 2120 "compilers/imcc/imcc.y"
+#line 2102 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
-  case 237:
+  case 235:
 
 /* Line 1464 of yacc.c  */
-#line 2121 "compilers/imcc/imcc.y"
+#line 2103 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
-  case 238:
+  case 236:
 
 /* Line 1464 of yacc.c  */
-#line 2122 "compilers/imcc/imcc.y"
+#line 2104 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
-  case 239:
+  case 237:
 
 /* Line 1464 of yacc.c  */
-#line 2123 "compilers/imcc/imcc.y"
+#line 2105 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 240:
+  case 238:
 
 /* Line 1464 of yacc.c  */
-#line 2124 "compilers/imcc/imcc.y"
+#line 2106 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 241:
+  case 239:
 
 /* Line 1464 of yacc.c  */
-#line 2130 "compilers/imcc/imcc.y"
+#line 2112 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
@@ -5091,115 +5060,115 @@
          }
     break;
 
-  case 242:
+  case 240:
 
 /* Line 1464 of yacc.c  */
-#line 2135 "compilers/imcc/imcc.y"
+#line 2117 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
-  case 243:
+  case 241:
 
 /* Line 1464 of yacc.c  */
-#line 2142 "compilers/imcc/imcc.y"
+#line 2124 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); }
     break;
 
-  case 244:
+  case 242:
 
 /* Line 1464 of yacc.c  */
-#line 2146 "compilers/imcc/imcc.y"
+#line 2128 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
-  case 245:
+  case 243:
 
 /* Line 1464 of yacc.c  */
-#line 2147 "compilers/imcc/imcc.y"
+#line 2129 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 246:
+  case 244:
 
 /* Line 1464 of yacc.c  */
-#line 2148 "compilers/imcc/imcc.y"
+#line 2130 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 247:
+  case 245:
 
 /* Line 1464 of yacc.c  */
-#line 2149 "compilers/imcc/imcc.y"
+#line 2131 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
-  case 248:
+  case 246:
 
 /* Line 1464 of yacc.c  */
-#line 2150 "compilers/imcc/imcc.y"
+#line 2132 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 249:
+  case 247:
 
 /* Line 1464 of yacc.c  */
-#line 2151 "compilers/imcc/imcc.y"
+#line 2133 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 250:
+  case 248:
 
 /* Line 1464 of yacc.c  */
-#line 2152 "compilers/imcc/imcc.y"
+#line 2134 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 251:
+  case 249:
 
 /* Line 1464 of yacc.c  */
-#line 2153 "compilers/imcc/imcc.y"
+#line 2135 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
-  case 252:
+  case 250:
 
 /* Line 1464 of yacc.c  */
-#line 2154 "compilers/imcc/imcc.y"
+#line 2136 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 253:
+  case 251:
 
 /* Line 1464 of yacc.c  */
-#line 2155 "compilers/imcc/imcc.y"
+#line 2137 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 254:
+  case 252:
 
 /* Line 1464 of yacc.c  */
-#line 2156 "compilers/imcc/imcc.y"
+#line 2138 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 255:
+  case 253:
 
 /* Line 1464 of yacc.c  */
-#line 2157 "compilers/imcc/imcc.y"
+#line 2139 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 256:
+  case 254:
 
 /* Line 1464 of yacc.c  */
-#line 2158 "compilers/imcc/imcc.y"
+#line 2140 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 257:
+  case 255:
 
 /* Line 1464 of yacc.c  */
-#line 2164 "compilers/imcc/imcc.y"
+#line 2146 "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,
@@ -5209,31 +5178,31 @@
        }
     break;
 
-  case 258:
+  case 256:
 
 /* Line 1464 of yacc.c  */
-#line 2174 "compilers/imcc/imcc.y"
+#line 2156 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));       mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 259:
+  case 257:
 
 /* Line 1464 of yacc.c  */
-#line 2175 "compilers/imcc/imcc.y"
+#line 2157 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 260:
+  case 258:
 
 /* Line 1464 of yacc.c  */
-#line 2176 "compilers/imcc/imcc.y"
+#line 2158 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));     mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 261:
+  case 259:
 
 /* Line 1464 of yacc.c  */
-#line 2178 "compilers/imcc/imcc.y"
+#line 2160 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -5241,10 +5210,10 @@
          }
     break;
 
-  case 262:
+  case 260:
 
 /* Line 1464 of yacc.c  */
-#line 2184 "compilers/imcc/imcc.y"
+#line 2166 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
             const char * const name = (yyvsp[(3) - (3)].sr)->name;
@@ -5260,10 +5229,10 @@
         }
     break;
 
-  case 263:
+  case 261:
 
 /* Line 1464 of yacc.c  */
-#line 2198 "compilers/imcc/imcc.y"
+#line 2180 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'U');
@@ -5271,10 +5240,10 @@
          }
     break;
 
-  case 264:
+  case 262:
 
 /* Line 1464 of yacc.c  */
-#line 2204 "compilers/imcc/imcc.y"
+#line 2186 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -5282,41 +5251,41 @@
          }
     break;
 
-  case 265:
+  case 263:
 
 /* Line 1464 of yacc.c  */
-#line 2209 "compilers/imcc/imcc.y"
+#line 2191 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
-  case 266:
+  case 264:
 
 /* Line 1464 of yacc.c  */
-#line 2215 "compilers/imcc/imcc.y"
+#line 2197 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
          }
     break;
 
-  case 267:
+  case 265:
 
 /* Line 1464 of yacc.c  */
-#line 2219 "compilers/imcc/imcc.y"
+#line 2201 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
-  case 268:
+  case 266:
 
 /* Line 1464 of yacc.c  */
-#line 2223 "compilers/imcc/imcc.y"
+#line 2205 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 269:
+  case 267:
 
 /* Line 1464 of yacc.c  */
-#line 2225 "compilers/imcc/imcc.y"
+#line 2207 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -5328,10 +5297,10 @@
          }
     break;
 
-  case 270:
+  case 268:
 
 /* Line 1464 of yacc.c  */
-#line 2235 "compilers/imcc/imcc.y"
+#line 2217 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -5343,10 +5312,10 @@
          }
     break;
 
-  case 271:
+  case 269:
 
 /* Line 1464 of yacc.c  */
-#line 2245 "compilers/imcc/imcc.y"
+#line 2227 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call,
@@ -5355,20 +5324,20 @@
          }
     break;
 
-  case 272:
+  case 270:
 
 /* Line 1464 of yacc.c  */
-#line 2252 "compilers/imcc/imcc.y"
+#line 2234 "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 273:
+  case 271:
 
 /* Line 1464 of yacc.c  */
-#line 2257 "compilers/imcc/imcc.y"
+#line 2239 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call,
@@ -5377,73 +5346,73 @@
          }
     break;
 
-  case 274:
+  case 272:
 
 /* Line 1464 of yacc.c  */
-#line 2266 "compilers/imcc/imcc.y"
+#line 2248 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 275:
+  case 273:
 
 /* Line 1464 of yacc.c  */
-#line 2270 "compilers/imcc/imcc.y"
+#line 2252 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 276:
+  case 274:
 
 /* Line 1464 of yacc.c  */
-#line 2271 "compilers/imcc/imcc.y"
+#line 2253 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
-  case 277:
+  case 275:
 
 /* Line 1464 of yacc.c  */
-#line 2275 "compilers/imcc/imcc.y"
+#line 2257 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;     }
     break;
 
-  case 278:
+  case 276:
 
 /* Line 1464 of yacc.c  */
-#line 2276 "compilers/imcc/imcc.y"
+#line 2258 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED;    }
     break;
 
-  case 279:
+  case 277:
 
 /* Line 1464 of yacc.c  */
-#line 2277 "compilers/imcc/imcc.y"
+#line 2259 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_CALL_SIG; }
     break;
 
-  case 280:
+  case 278:
 
 /* Line 1464 of yacc.c  */
-#line 2280 "compilers/imcc/imcc.y"
+#line 2262 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
-  case 281:
+  case 279:
 
 /* Line 1464 of yacc.c  */
-#line 2281 "compilers/imcc/imcc.y"
+#line 2263 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; }
     break;
 
-  case 282:
+  case 280:
 
 /* Line 1464 of yacc.c  */
-#line 2285 "compilers/imcc/imcc.y"
+#line 2267 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 283:
+  case 281:
 
 /* Line 1464 of yacc.c  */
-#line 2290 "compilers/imcc/imcc.y"
+#line 2272 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -5455,10 +5424,10 @@
          }
     break;
 
-  case 284:
+  case 282:
 
 /* Line 1464 of yacc.c  */
-#line 2300 "compilers/imcc/imcc.y"
+#line 2282 "compilers/imcc/imcc.y"
     {
             add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call,
                     mk_const(interp, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr));
@@ -5466,10 +5435,10 @@
          }
     break;
 
-  case 285:
+  case 283:
 
 /* Line 1464 of yacc.c  */
-#line 2306 "compilers/imcc/imcc.y"
+#line 2288 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -5481,179 +5450,179 @@
          }
     break;
 
-  case 286:
+  case 284:
 
 /* Line 1464 of yacc.c  */
-#line 2316 "compilers/imcc/imcc.y"
+#line 2298 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr));
            mem_sys_free((yyvsp[(1) - (3)].s));
          }
     break;
 
-  case 287:
+  case 285:
 
 /* Line 1464 of yacc.c  */
-#line 2320 "compilers/imcc/imcc.y"
+#line 2302 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 288:
+  case 286:
 
 /* Line 1464 of yacc.c  */
-#line 2324 "compilers/imcc/imcc.y"
+#line 2306 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 289:
+  case 287:
 
 /* Line 1464 of yacc.c  */
-#line 2325 "compilers/imcc/imcc.y"
+#line 2307 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 290:
+  case 288:
 
 /* Line 1464 of yacc.c  */
-#line 2330 "compilers/imcc/imcc.y"
+#line 2312 "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 291:
+  case 289:
 
 /* Line 1464 of yacc.c  */
-#line 2334 "compilers/imcc/imcc.y"
+#line 2316 "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 292:
+  case 290:
 
 /* Line 1464 of yacc.c  */
-#line 2338 "compilers/imcc/imcc.y"
+#line 2320 "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 293:
+  case 291:
 
 /* Line 1464 of yacc.c  */
-#line 2345 "compilers/imcc/imcc.y"
+#line 2327 "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 294:
+  case 292:
 
 /* Line 1464 of yacc.c  */
-#line 2349 "compilers/imcc/imcc.y"
+#line 2331 "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 295:
+  case 293:
 
 /* Line 1464 of yacc.c  */
-#line 2353 "compilers/imcc/imcc.y"
+#line 2335 "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 296:
+  case 294:
 
 /* Line 1464 of yacc.c  */
-#line 2359 "compilers/imcc/imcc.y"
+#line 2341 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 297:
+  case 295:
 
 /* Line 1464 of yacc.c  */
-#line 2360 "compilers/imcc/imcc.y"
+#line 2342 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 298:
+  case 296:
 
 /* Line 1464 of yacc.c  */
-#line 2364 "compilers/imcc/imcc.y"
+#line 2346 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
-  case 299:
+  case 297:
 
 /* Line 1464 of yacc.c  */
-#line 2365 "compilers/imcc/imcc.y"
+#line 2347 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
-  case 300:
+  case 298:
 
 /* Line 1464 of yacc.c  */
-#line 2366 "compilers/imcc/imcc.y"
+#line 2348 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
-  case 301:
+  case 299:
 
 /* Line 1464 of yacc.c  */
-#line 2367 "compilers/imcc/imcc.y"
+#line 2349 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
-  case 302:
+  case 300:
 
 /* Line 1464 of yacc.c  */
-#line 2368 "compilers/imcc/imcc.y"
+#line 2350 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
-  case 303:
+  case 301:
 
 /* Line 1464 of yacc.c  */
-#line 2369 "compilers/imcc/imcc.y"
+#line 2351 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
-  case 306:
+  case 304:
 
 /* Line 1464 of yacc.c  */
-#line 2378 "compilers/imcc/imcc.y"
+#line 2360 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
-  case 307:
+  case 305:
 
 /* Line 1464 of yacc.c  */
-#line 2379 "compilers/imcc/imcc.y"
+#line 2361 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 308:
+  case 306:
 
 /* Line 1464 of yacc.c  */
-#line 2383 "compilers/imcc/imcc.y"
+#line 2365 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
-  case 310:
+  case 308:
 
 /* Line 1464 of yacc.c  */
-#line 2388 "compilers/imcc/imcc.y"
+#line 2370 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 311:
+  case 309:
 
 /* Line 1464 of yacc.c  */
-#line 2390 "compilers/imcc/imcc.y"
+#line 2372 "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);
@@ -5662,71 +5631,71 @@
          }
     break;
 
-  case 312:
+  case 310:
 
 /* Line 1464 of yacc.c  */
-#line 2397 "compilers/imcc/imcc.y"
+#line 2379 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
          }
     break;
 
-  case 314:
+  case 312:
 
 /* Line 1464 of yacc.c  */
-#line 2404 "compilers/imcc/imcc.y"
+#line 2386 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 315:
+  case 313:
 
 /* Line 1464 of yacc.c  */
-#line 2405 "compilers/imcc/imcc.y"
+#line 2387 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 316:
+  case 314:
 
 /* Line 1464 of yacc.c  */
-#line 2409 "compilers/imcc/imcc.y"
+#line 2391 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 317:
+  case 315:
 
 /* Line 1464 of yacc.c  */
-#line 2410 "compilers/imcc/imcc.y"
+#line 2392 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 318:
+  case 316:
 
 /* Line 1464 of yacc.c  */
-#line 2414 "compilers/imcc/imcc.y"
+#line 2396 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 319:
+  case 317:
 
 /* Line 1464 of yacc.c  */
-#line 2415 "compilers/imcc/imcc.y"
+#line 2397 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 324:
+  case 322:
 
 /* Line 1464 of yacc.c  */
-#line 2429 "compilers/imcc/imcc.y"
+#line 2411 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
          }
     break;
 
-  case 325:
+  case 323:
 
 /* Line 1464 of yacc.c  */
-#line 2433 "compilers/imcc/imcc.y"
+#line 2415 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5734,19 +5703,19 @@
          }
     break;
 
-  case 326:
+  case 324:
 
 /* Line 1464 of yacc.c  */
-#line 2441 "compilers/imcc/imcc.y"
+#line 2423 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
          }
     break;
 
-  case 327:
+  case 325:
 
 /* Line 1464 of yacc.c  */
-#line 2445 "compilers/imcc/imcc.y"
+#line 2427 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5754,99 +5723,99 @@
          }
     break;
 
-  case 328:
+  case 326:
 
 /* Line 1464 of yacc.c  */
-#line 2453 "compilers/imcc/imcc.y"
+#line 2435 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 329:
+  case 327:
 
 /* Line 1464 of yacc.c  */
-#line 2455 "compilers/imcc/imcc.y"
+#line 2437 "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 330:
+  case 328:
 
 /* Line 1464 of yacc.c  */
-#line 2463 "compilers/imcc/imcc.y"
+#line 2445 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
          }
     break;
 
-  case 331:
+  case 329:
 
 /* Line 1464 of yacc.c  */
-#line 2469 "compilers/imcc/imcc.y"
+#line 2451 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
-  case 332:
+  case 330:
 
 /* Line 1464 of yacc.c  */
-#line 2470 "compilers/imcc/imcc.y"
+#line 2452 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
-  case 333:
+  case 331:
 
 /* Line 1464 of yacc.c  */
-#line 2471 "compilers/imcc/imcc.y"
+#line 2453 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
-  case 334:
+  case 332:
 
 /* Line 1464 of yacc.c  */
-#line 2472 "compilers/imcc/imcc.y"
+#line 2454 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
-  case 335:
+  case 333:
 
 /* Line 1464 of yacc.c  */
-#line 2473 "compilers/imcc/imcc.y"
+#line 2455 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 336:
+  case 334:
 
 /* Line 1464 of yacc.c  */
-#line 2477 "compilers/imcc/imcc.y"
+#line 2459 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 337:
+  case 335:
 
 /* Line 1464 of yacc.c  */
-#line 2478 "compilers/imcc/imcc.y"
+#line 2460 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 338:
+  case 336:
 
 /* Line 1464 of yacc.c  */
-#line 2479 "compilers/imcc/imcc.y"
+#line 2461 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 339:
+  case 337:
 
 /* Line 1464 of yacc.c  */
-#line 2480 "compilers/imcc/imcc.y"
+#line 2462 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
 
 
 /* Line 1464 of yacc.c  */
-#line 5839 "compilers/imcc/imcparser.c"
+#line 5808 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -6058,7 +6027,7 @@
 
 
 /* Line 1684 of yacc.c  */
-#line 2486 "compilers/imcc/imcc.y"
+#line 2468 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */

Modified: trunk/compilers/imcc/parser_util.c
==============================================================================
--- trunk/compilers/imcc/parser_util.c	Sun May  9 20:32:42 2010	(r46439)
+++ trunk/compilers/imcc/parser_util.c	Sun May  9 20:50:08 2010	(r46440)
@@ -128,61 +128,7 @@
 
 =head2 Functions
 
-=over 4
-
-=item C<Instruction * iNEW(PARROT_INTERP, IMC_Unit *unit, SymReg *r0, char
-*type, SymReg *init, int emit)>
-
- * P = new type, [init]
- * PASM like:
- *   new P, 'SomeThing'
- * is done in the lexer, this is a mess
- * best would be to have a flag in core.ops, where a PMC type is expected
-
-=cut
-
- */
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-Instruction *
-iNEW(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGMOD(SymReg *r0),
-        ARGMOD(char *type), ARGIN_NULLOK(SymReg *init), int emit)
-{
-    ASSERT_ARGS(iNEW)
-    char fmt[256];
-    SymReg *regs[3];
-    SymReg *pmc;
-    int nargs;
-    const int pmc_num = Parrot_pmc_get_type_str(interp,
-            Parrot_str_new(interp, *type == '.' ? type + 1 : type, 0));
-
-    snprintf(fmt, sizeof (fmt), "%d", pmc_num);
-    pmc = mk_const(interp, fmt, 'I');
-
-    if (pmc_num <= 0)
-        IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "Unknown PMC type '%s'\n", type);
-
-    snprintf(fmt, sizeof (fmt), "%%s, %d\t # .%s", pmc_num, type);
-
-    r0->usage |= U_NEW;
-    if (STREQ(type, "Hash"))
-        r0->usage |= U_KEYED;
-
-    regs[0] = r0;
-    regs[1] = pmc;
-
-    if (init) {
-        regs[2] = init;
-        nargs   = 3;
-    }
-    else
-        nargs = 2;
-
-    return INS(interp, unit, "new", fmt, regs, nargs, 0, emit);
-}
-
-/*
+=over
 
 =item C<void op_fullname(char *dest, const char *name, SymReg * const *args, int
 narg, int keyvec)>

Modified: trunk/compilers/imcc/symreg.c
==============================================================================
--- trunk/compilers/imcc/symreg.c	Sun May  9 20:32:42 2010	(r46439)
+++ trunk/compilers/imcc/symreg.c	Sun May  9 20:50:08 2010	(r46440)
@@ -665,11 +665,6 @@
     else
         mem_sys_free(fullname);
 
-    if (t == 'P') {
-        r->pmc_type                     = IMCC_INFO(interp)->cur_pmc_type;
-        IMCC_INFO(interp)->cur_pmc_type = 0;
-    }
-
     return r;
 }
 


More information about the parrot-commits mailing list