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

NotFound at svn.parrot.org NotFound at svn.parrot.org
Sat Sep 11 22:53:20 UTC 2010


Author: NotFound
Date: Sat Sep 11 22:53:19 2010
New Revision: 48942
URL: https://trac.parrot.org/parrot/changeset/48942

Log:
delete fossil support for the long time ago deprecated form of declaring const PMC in PIR

Modified:
   trunk/compilers/imcc/imcc.y
   trunk/compilers/imcc/imcparser.c
   trunk/compilers/imcc/imcparser.h

Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y	Sat Sep 11 21:59:33 2010	(r48941)
+++ trunk/compilers/imcc/imcc.y	Sat Sep 11 22:53:19 2010	(r48942)
@@ -206,21 +206,6 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
-static Instruction* mk_pmc_const(PARROT_INTERP,
-    ARGMOD(IMC_Unit *unit),
-    ARGIN(const char *type),
-    ARGMOD(SymReg *left),
-    ARGIN(const char *constant))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*unit)
-        FUNC_MODIFIES(*left);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 static Instruction* mk_pmc_const_named(PARROT_INTERP,
     ARGMOD(IMC_Unit *unit),
     ARGIN(const char *name),
@@ -323,12 +308,6 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(unit) \
     , PARROT_ASSERT_ARG(fmt))
-#define ASSERT_ARGS_mk_pmc_const __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(unit) \
-    , PARROT_ASSERT_ARG(type) \
-    , PARROT_ASSERT_ARG(left) \
-    , PARROT_ASSERT_ARG(constant))
 #define ASSERT_ARGS_mk_pmc_const_named __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(unit) \
@@ -422,70 +401,6 @@
 
 /*
 
-=item C<static Instruction* mk_pmc_const(PARROT_INTERP, IMC_Unit *unit, const
-char *type, SymReg *left, const char *constant)>
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static Instruction*
-mk_pmc_const(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(const char *type),
-        ARGMOD(SymReg *left), ARGIN(const char *constant))
-{
-    ASSERT_ARGS(mk_pmc_const)
-    const int type_enum = atoi(type);
-    const int ascii = (*constant == '\'' || *constant == '"');
-    SymReg *rhs;
-    SymReg *r[3];
-    char   *name;
-
-    if (left->type == VTADDRESS) {      /* IDENTIFIER */
-        if (IMCC_INFO(interp)->state->pasm_file) {
-            IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
-                        "Ident as PMC constant",
-                        " %s\n", left->name);
-        }
-        left->type = VTIDENTIFIER;
-        left->set = 'P';
-    }
-    r[0] = left;
-    if (ascii) {
-        /* strip delimiters */
-        name                   = mem_sys_strdup(constant + 1);
-        name[strlen(name) - 1] = 0;
-    }
-    else {
-        name = mem_sys_strdup(constant);
-    }
-
-    switch (type_enum) {
-      case enum_class_Sub:
-      case enum_class_Coroutine:
-        rhs = mk_const(interp, name, 'p');
-
-        if (!ascii)
-            rhs->type |= VT_ENCODED;
-
-        rhs->usage    |= U_FIXUP | U_SUBID_LOOKUP;
-        break;
-      default:
-        rhs = mk_const(interp, name, 'P');
-        break;
-    }
-
-    r[1]          = rhs;
-    rhs->pmc_type = type_enum;
-
-    mem_sys_free(name);
-
-    return INS(interp, unit, "set_p_pc", "", r, 2, 0, 1);
-}
-
-/*
-
 =item C<static Instruction* mk_pmc_const_named(PARROT_INTERP, IMC_Unit *unit,
 const char *name, SymReg *left, const char *constant)>
 
@@ -1251,14 +1166,7 @@
    ;
 
 pmc_const:
-     CONST { IMCC_INFO(interp)->is_def = 1; } INTC var_or_i '=' any_string
-         {
-           $$ = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, $3, $4, $6);
-           mem_sys_free($6);
-           IMCC_INFO(interp)->is_def = 0;
-         }
-
-     | CONST { IMCC_INFO(interp)->is_def = 1; } STRINGC var_or_i '=' any_string
+     CONST { IMCC_INFO(interp)->is_def = 1; } STRINGC var_or_i '=' any_string
          {
            $$ = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, $3, $4, $6);
            mem_sys_free($3);

Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c	Sat Sep 11 21:59:33 2010	(r48941)
+++ trunk/compilers/imcc/imcparser.c	Sat Sep 11 22:53:19 2010	(r48942)
@@ -9,25 +9,27 @@
  */
 /* HEADERIZER HFILE: none */
 /* HEADERIZER STOP */
-/* A Bison parser, made by GNU Bison 2.4.3.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-   2009, 2010 Free Software Foundation, Inc.
-   
-   This program is free software: you can redistribute it and/or modify
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-   
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -38,7 +40,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -56,7 +58,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.3"
+#define YYBISON_VERSION "2.3"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -64,20 +66,259 @@
 /* Pure parsers.  */
 #define YYPURE 1
 
-/* Push parsers.  */
-#define YYPUSH 0
-
-/* Pull parsers.  */
-#define YYPULL 1
-
 /* Using locations.  */
 #define YYLSP_NEEDED 0
 
 
 
-/* Copy the first part of user declarations.  */
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     LOW_PREC = 258,
+     PARAM = 259,
+     SOL = 260,
+     HLL = 261,
+     TK_LINE = 262,
+     TK_FILE = 263,
+     GOTO = 264,
+     ARG = 265,
+     IF = 266,
+     UNLESS = 267,
+     PNULL = 268,
+     SET_RETURN = 269,
+     SET_YIELD = 270,
+     ADV_FLAT = 271,
+     ADV_SLURPY = 272,
+     ADV_OPTIONAL = 273,
+     ADV_OPT_FLAG = 274,
+     ADV_NAMED = 275,
+     ADV_ARROW = 276,
+     ADV_INVOCANT = 277,
+     ADV_CALL_SIG = 278,
+     NAMESPACE = 279,
+     DOT_METHOD = 280,
+     SUB = 281,
+     SYM = 282,
+     LOCAL = 283,
+     LEXICAL = 284,
+     CONST = 285,
+     ANNOTATE = 286,
+     GLOBAL_CONST = 287,
+     PLUS_ASSIGN = 288,
+     MINUS_ASSIGN = 289,
+     MUL_ASSIGN = 290,
+     DIV_ASSIGN = 291,
+     CONCAT_ASSIGN = 292,
+     BAND_ASSIGN = 293,
+     BOR_ASSIGN = 294,
+     BXOR_ASSIGN = 295,
+     FDIV = 296,
+     FDIV_ASSIGN = 297,
+     MOD_ASSIGN = 298,
+     SHR_ASSIGN = 299,
+     SHL_ASSIGN = 300,
+     SHR_U_ASSIGN = 301,
+     SHIFT_LEFT = 302,
+     SHIFT_RIGHT = 303,
+     INTV = 304,
+     FLOATV = 305,
+     STRINGV = 306,
+     PMCV = 307,
+     LOG_XOR = 308,
+     RELOP_EQ = 309,
+     RELOP_NE = 310,
+     RELOP_GT = 311,
+     RELOP_GTE = 312,
+     RELOP_LT = 313,
+     RELOP_LTE = 314,
+     RESULT = 315,
+     RETURN = 316,
+     TAILCALL = 317,
+     YIELDT = 318,
+     GET_RESULTS = 319,
+     POW = 320,
+     SHIFT_RIGHT_U = 321,
+     LOG_AND = 322,
+     LOG_OR = 323,
+     COMMA = 324,
+     ESUB = 325,
+     DOTDOT = 326,
+     PCC_BEGIN = 327,
+     PCC_END = 328,
+     PCC_CALL = 329,
+     PCC_SUB = 330,
+     PCC_BEGIN_RETURN = 331,
+     PCC_END_RETURN = 332,
+     PCC_BEGIN_YIELD = 333,
+     PCC_END_YIELD = 334,
+     NCI_CALL = 335,
+     METH_CALL = 336,
+     INVOCANT = 337,
+     MAIN = 338,
+     LOAD = 339,
+     INIT = 340,
+     IMMEDIATE = 341,
+     POSTCOMP = 342,
+     METHOD = 343,
+     ANON = 344,
+     OUTER = 345,
+     NEED_LEX = 346,
+     MULTI = 347,
+     VTABLE_METHOD = 348,
+     LOADLIB = 349,
+     SUB_INSTANCE_OF = 350,
+     SUBID = 351,
+     NS_ENTRY = 352,
+     UNIQUE_REG = 353,
+     LABEL = 354,
+     EMIT = 355,
+     EOM = 356,
+     IREG = 357,
+     NREG = 358,
+     SREG = 359,
+     PREG = 360,
+     IDENTIFIER = 361,
+     REG = 362,
+     MACRO = 363,
+     ENDM = 364,
+     STRINGC = 365,
+     INTC = 366,
+     FLOATC = 367,
+     USTRINGC = 368,
+     PARROT_OP = 369,
+     VAR = 370,
+     LINECOMMENT = 371,
+     FILECOMMENT = 372,
+     DOT = 373,
+     CONCAT = 374
+   };
+#endif
+/* Tokens.  */
+#define LOW_PREC 258
+#define PARAM 259
+#define SOL 260
+#define HLL 261
+#define TK_LINE 262
+#define TK_FILE 263
+#define GOTO 264
+#define ARG 265
+#define IF 266
+#define UNLESS 267
+#define PNULL 268
+#define SET_RETURN 269
+#define SET_YIELD 270
+#define ADV_FLAT 271
+#define ADV_SLURPY 272
+#define ADV_OPTIONAL 273
+#define ADV_OPT_FLAG 274
+#define ADV_NAMED 275
+#define ADV_ARROW 276
+#define ADV_INVOCANT 277
+#define ADV_CALL_SIG 278
+#define NAMESPACE 279
+#define DOT_METHOD 280
+#define SUB 281
+#define SYM 282
+#define LOCAL 283
+#define LEXICAL 284
+#define CONST 285
+#define ANNOTATE 286
+#define GLOBAL_CONST 287
+#define PLUS_ASSIGN 288
+#define MINUS_ASSIGN 289
+#define MUL_ASSIGN 290
+#define DIV_ASSIGN 291
+#define CONCAT_ASSIGN 292
+#define BAND_ASSIGN 293
+#define BOR_ASSIGN 294
+#define BXOR_ASSIGN 295
+#define FDIV 296
+#define FDIV_ASSIGN 297
+#define MOD_ASSIGN 298
+#define SHR_ASSIGN 299
+#define SHL_ASSIGN 300
+#define SHR_U_ASSIGN 301
+#define SHIFT_LEFT 302
+#define SHIFT_RIGHT 303
+#define INTV 304
+#define FLOATV 305
+#define STRINGV 306
+#define PMCV 307
+#define LOG_XOR 308
+#define RELOP_EQ 309
+#define RELOP_NE 310
+#define RELOP_GT 311
+#define RELOP_GTE 312
+#define RELOP_LT 313
+#define RELOP_LTE 314
+#define RESULT 315
+#define RETURN 316
+#define TAILCALL 317
+#define YIELDT 318
+#define GET_RESULTS 319
+#define POW 320
+#define SHIFT_RIGHT_U 321
+#define LOG_AND 322
+#define LOG_OR 323
+#define COMMA 324
+#define ESUB 325
+#define DOTDOT 326
+#define PCC_BEGIN 327
+#define PCC_END 328
+#define PCC_CALL 329
+#define PCC_SUB 330
+#define PCC_BEGIN_RETURN 331
+#define PCC_END_RETURN 332
+#define PCC_BEGIN_YIELD 333
+#define PCC_END_YIELD 334
+#define NCI_CALL 335
+#define METH_CALL 336
+#define INVOCANT 337
+#define MAIN 338
+#define LOAD 339
+#define INIT 340
+#define IMMEDIATE 341
+#define POSTCOMP 342
+#define METHOD 343
+#define ANON 344
+#define OUTER 345
+#define NEED_LEX 346
+#define MULTI 347
+#define VTABLE_METHOD 348
+#define LOADLIB 349
+#define SUB_INSTANCE_OF 350
+#define SUBID 351
+#define NS_ENTRY 352
+#define UNIQUE_REG 353
+#define LABEL 354
+#define EMIT 355
+#define EOM 356
+#define IREG 357
+#define NREG 358
+#define SREG 359
+#define PREG 360
+#define IDENTIFIER 361
+#define REG 362
+#define MACRO 363
+#define ENDM 364
+#define STRINGC 365
+#define INTC 366
+#define FLOATC 367
+#define USTRINGC 368
+#define PARROT_OP 369
+#define VAR 370
+#define LINECOMMENT 371
+#define FILECOMMENT 372
+#define DOT 373
+#define CONCAT 374
+
 
-/* Line 189 of yacc.c  */
+
+
+/* Copy the first part of user declarations.  */
 #line 1 "compilers/imcc/imcc.y"
 
 /*
@@ -287,22 +528,7 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
-static Instruction* mk_pmc_const(PARROT_INTERP,
-    ARGMOD(IMC_Unit *unit),
-    ARGIN(const char *type),
-    ARGMOD(SymReg *left),
-    ARGIN(const char *constant))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*unit)
-        FUNC_MODIFIES(*left);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static Instruction* mk_pmc_const_named(PARROT_INTERP,
+static Instruction* mk_pmc_const_named(PARROT_INTERP,
     ARGMOD(IMC_Unit *unit),
     ARGIN(const char *name),
     ARGMOD(SymReg *left),
@@ -404,12 +630,6 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(unit) \
     , PARROT_ASSERT_ARG(fmt))
-#define ASSERT_ARGS_mk_pmc_const __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(unit) \
-    , PARROT_ASSERT_ARG(type) \
-    , PARROT_ASSERT_ARG(left) \
-    , PARROT_ASSERT_ARG(constant))
 #define ASSERT_ARGS_mk_pmc_const_named __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(unit) \
@@ -503,70 +723,6 @@
 
 /*
 
-=item C<static Instruction* mk_pmc_const(PARROT_INTERP, IMC_Unit *unit, const
-char *type, SymReg *left, const char *constant)>
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static Instruction*
-mk_pmc_const(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(const char *type),
-        ARGMOD(SymReg *left), ARGIN(const char *constant))
-{
-    ASSERT_ARGS(mk_pmc_const)
-    const int type_enum = atoi(type);
-    const int ascii = (*constant == '\'' || *constant == '"');
-    SymReg *rhs;
-    SymReg *r[3];
-    char   *name;
-
-    if (left->type == VTADDRESS) {      /* IDENTIFIER */
-        if (IMCC_INFO(interp)->state->pasm_file) {
-            IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
-                        "Ident as PMC constant",
-                        " %s\n", left->name);
-        }
-        left->type = VTIDENTIFIER;
-        left->set = 'P';
-    }
-    r[0] = left;
-    if (ascii) {
-        /* strip delimiters */
-        name                   = mem_sys_strdup(constant + 1);
-        name[strlen(name) - 1] = 0;
-    }
-    else {
-        name = mem_sys_strdup(constant);
-    }
-
-    switch (type_enum) {
-      case enum_class_Sub:
-      case enum_class_Coroutine:
-        rhs = mk_const(interp, name, 'p');
-
-        if (!ascii)
-            rhs->type |= VT_ENCODED;
-
-        rhs->usage    |= U_FIXUP | U_SUBID_LOOKUP;
-        break;
-      default:
-        rhs = mk_const(interp, name, 'P');
-        break;
-    }
-
-    r[1]          = rhs;
-    rhs->pmc_type = type_enum;
-
-    mem_sys_free(name);
-
-    return INS(interp, unit, "set_p_pc", "", r, 2, 0, 1);
-}
-
-/*
-
 =item C<static Instruction* mk_pmc_const_named(PARROT_INTERP, IMC_Unit *unit,
 const char *name, SymReg *left, const char *constant)>
 
@@ -1102,351 +1258,96 @@
 
 */
 
-static void
-adv_named_set(PARROT_INTERP, ARGIN(const char *name))
-{
-    ASSERT_ARGS(adv_named_set)
-    if (IMCC_INFO(interp)->adv_named_id)
-        IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
-                    "Named parameter with more than one name.\n");
-
-    IMCC_INFO(interp)->adv_named_id = mk_const(interp, name, 'S');
-}
-
-static void
-adv_named_set_u(PARROT_INTERP, ARGIN(const char *name))
-{
-    ASSERT_ARGS(adv_named_set_u)
-    if (IMCC_INFO(interp)->adv_named_id)
-        IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
-                    "Named parameter with more than one name.\n");
-
-    IMCC_INFO(interp)->adv_named_id = mk_const(interp, name, 'U');
-}
-
-/*
-
-=item C<static void do_loadlib(PARROT_INTERP, const char *lib)>
-
-=cut
-
-*/
-
-static void
-do_loadlib(PARROT_INTERP, ARGIN(const char *lib))
-{
-    ASSERT_ARGS(do_loadlib)
-    STRING * const s       = Parrot_str_unescape(interp, lib + 1, '"', NULL);
-    PMC    * const lib_pmc = Parrot_load_lib(interp, s, NULL);
-    if (PMC_IS_NULL(lib_pmc) || !VTABLE_get_bool(interp, lib_pmc)) {
-        IMCC_fataly(interp, EXCEPTION_LIBRARY_ERROR,
-            "loadlib directive could not find library `%S'", s);
-    }
-    Parrot_register_HLL_lib(interp, s);
-}
-
-/* HEADERIZER STOP */
-
-
-
-/* Line 189 of yacc.c  */
-#line 1143 "compilers/imcc/imcparser.c"
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
-
-
-/* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     LOW_PREC = 258,
-     PARAM = 259,
-     SOL = 260,
-     HLL = 261,
-     TK_LINE = 262,
-     TK_FILE = 263,
-     GOTO = 264,
-     ARG = 265,
-     IF = 266,
-     UNLESS = 267,
-     PNULL = 268,
-     SET_RETURN = 269,
-     SET_YIELD = 270,
-     ADV_FLAT = 271,
-     ADV_SLURPY = 272,
-     ADV_OPTIONAL = 273,
-     ADV_OPT_FLAG = 274,
-     ADV_NAMED = 275,
-     ADV_ARROW = 276,
-     ADV_INVOCANT = 277,
-     ADV_CALL_SIG = 278,
-     NAMESPACE = 279,
-     DOT_METHOD = 280,
-     SUB = 281,
-     SYM = 282,
-     LOCAL = 283,
-     LEXICAL = 284,
-     CONST = 285,
-     ANNOTATE = 286,
-     GLOBAL_CONST = 287,
-     PLUS_ASSIGN = 288,
-     MINUS_ASSIGN = 289,
-     MUL_ASSIGN = 290,
-     DIV_ASSIGN = 291,
-     CONCAT_ASSIGN = 292,
-     BAND_ASSIGN = 293,
-     BOR_ASSIGN = 294,
-     BXOR_ASSIGN = 295,
-     FDIV = 296,
-     FDIV_ASSIGN = 297,
-     MOD_ASSIGN = 298,
-     SHR_ASSIGN = 299,
-     SHL_ASSIGN = 300,
-     SHR_U_ASSIGN = 301,
-     SHIFT_LEFT = 302,
-     SHIFT_RIGHT = 303,
-     INTV = 304,
-     FLOATV = 305,
-     STRINGV = 306,
-     PMCV = 307,
-     LOG_XOR = 308,
-     RELOP_EQ = 309,
-     RELOP_NE = 310,
-     RELOP_GT = 311,
-     RELOP_GTE = 312,
-     RELOP_LT = 313,
-     RELOP_LTE = 314,
-     RESULT = 315,
-     RETURN = 316,
-     TAILCALL = 317,
-     YIELDT = 318,
-     GET_RESULTS = 319,
-     POW = 320,
-     SHIFT_RIGHT_U = 321,
-     LOG_AND = 322,
-     LOG_OR = 323,
-     COMMA = 324,
-     ESUB = 325,
-     DOTDOT = 326,
-     PCC_BEGIN = 327,
-     PCC_END = 328,
-     PCC_CALL = 329,
-     PCC_SUB = 330,
-     PCC_BEGIN_RETURN = 331,
-     PCC_END_RETURN = 332,
-     PCC_BEGIN_YIELD = 333,
-     PCC_END_YIELD = 334,
-     NCI_CALL = 335,
-     METH_CALL = 336,
-     INVOCANT = 337,
-     MAIN = 338,
-     LOAD = 339,
-     INIT = 340,
-     IMMEDIATE = 341,
-     POSTCOMP = 342,
-     METHOD = 343,
-     ANON = 344,
-     OUTER = 345,
-     NEED_LEX = 346,
-     MULTI = 347,
-     VTABLE_METHOD = 348,
-     LOADLIB = 349,
-     SUB_INSTANCE_OF = 350,
-     SUBID = 351,
-     NS_ENTRY = 352,
-     UNIQUE_REG = 353,
-     LABEL = 354,
-     EMIT = 355,
-     EOM = 356,
-     IREG = 357,
-     NREG = 358,
-     SREG = 359,
-     PREG = 360,
-     IDENTIFIER = 361,
-     REG = 362,
-     MACRO = 363,
-     ENDM = 364,
-     STRINGC = 365,
-     INTC = 366,
-     FLOATC = 367,
-     USTRINGC = 368,
-     PARROT_OP = 369,
-     VAR = 370,
-     LINECOMMENT = 371,
-     FILECOMMENT = 372,
-     DOT = 373,
-     CONCAT = 374
-   };
-#endif
-/* Tokens.  */
-#define LOW_PREC 258
-#define PARAM 259
-#define SOL 260
-#define HLL 261
-#define TK_LINE 262
-#define TK_FILE 263
-#define GOTO 264
-#define ARG 265
-#define IF 266
-#define UNLESS 267
-#define PNULL 268
-#define SET_RETURN 269
-#define SET_YIELD 270
-#define ADV_FLAT 271
-#define ADV_SLURPY 272
-#define ADV_OPTIONAL 273
-#define ADV_OPT_FLAG 274
-#define ADV_NAMED 275
-#define ADV_ARROW 276
-#define ADV_INVOCANT 277
-#define ADV_CALL_SIG 278
-#define NAMESPACE 279
-#define DOT_METHOD 280
-#define SUB 281
-#define SYM 282
-#define LOCAL 283
-#define LEXICAL 284
-#define CONST 285
-#define ANNOTATE 286
-#define GLOBAL_CONST 287
-#define PLUS_ASSIGN 288
-#define MINUS_ASSIGN 289
-#define MUL_ASSIGN 290
-#define DIV_ASSIGN 291
-#define CONCAT_ASSIGN 292
-#define BAND_ASSIGN 293
-#define BOR_ASSIGN 294
-#define BXOR_ASSIGN 295
-#define FDIV 296
-#define FDIV_ASSIGN 297
-#define MOD_ASSIGN 298
-#define SHR_ASSIGN 299
-#define SHL_ASSIGN 300
-#define SHR_U_ASSIGN 301
-#define SHIFT_LEFT 302
-#define SHIFT_RIGHT 303
-#define INTV 304
-#define FLOATV 305
-#define STRINGV 306
-#define PMCV 307
-#define LOG_XOR 308
-#define RELOP_EQ 309
-#define RELOP_NE 310
-#define RELOP_GT 311
-#define RELOP_GTE 312
-#define RELOP_LT 313
-#define RELOP_LTE 314
-#define RESULT 315
-#define RETURN 316
-#define TAILCALL 317
-#define YIELDT 318
-#define GET_RESULTS 319
-#define POW 320
-#define SHIFT_RIGHT_U 321
-#define LOG_AND 322
-#define LOG_OR 323
-#define COMMA 324
-#define ESUB 325
-#define DOTDOT 326
-#define PCC_BEGIN 327
-#define PCC_END 328
-#define PCC_CALL 329
-#define PCC_SUB 330
-#define PCC_BEGIN_RETURN 331
-#define PCC_END_RETURN 332
-#define PCC_BEGIN_YIELD 333
-#define PCC_END_YIELD 334
-#define NCI_CALL 335
-#define METH_CALL 336
-#define INVOCANT 337
-#define MAIN 338
-#define LOAD 339
-#define INIT 340
-#define IMMEDIATE 341
-#define POSTCOMP 342
-#define METHOD 343
-#define ANON 344
-#define OUTER 345
-#define NEED_LEX 346
-#define MULTI 347
-#define VTABLE_METHOD 348
-#define LOADLIB 349
-#define SUB_INSTANCE_OF 350
-#define SUBID 351
-#define NS_ENTRY 352
-#define UNIQUE_REG 353
-#define LABEL 354
-#define EMIT 355
-#define EOM 356
-#define IREG 357
-#define NREG 358
-#define SREG 359
-#define PREG 360
-#define IDENTIFIER 361
-#define REG 362
-#define MACRO 363
-#define ENDM 364
-#define STRINGC 365
-#define INTC 366
-#define FLOATC 367
-#define USTRINGC 368
-#define PARROT_OP 369
-#define VAR 370
-#define LINECOMMENT 371
-#define FILECOMMENT 372
-#define DOT 373
-#define CONCAT 374
+static void
+adv_named_set(PARROT_INTERP, ARGIN(const char *name))
+{
+    ASSERT_ARGS(adv_named_set)
+    if (IMCC_INFO(interp)->adv_named_id)
+        IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
+                    "Named parameter with more than one name.\n");
+
+    IMCC_INFO(interp)->adv_named_id = mk_const(interp, name, 'S');
+}
+
+static void
+adv_named_set_u(PARROT_INTERP, ARGIN(const char *name))
+{
+    ASSERT_ARGS(adv_named_set_u)
+    if (IMCC_INFO(interp)->adv_named_id)
+        IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
+                    "Named parameter with more than one name.\n");
 
+    IMCC_INFO(interp)->adv_named_id = mk_const(interp, name, 'U');
+}
 
+/*
 
+=item C<static void do_loadlib(PARROT_INTERP, const char *lib)>
 
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+=cut
+
+*/
+
+static void
+do_loadlib(PARROT_INTERP, ARGIN(const char *lib))
 {
+    ASSERT_ARGS(do_loadlib)
+    STRING * const s       = Parrot_str_unescape(interp, lib + 1, '"', NULL);
+    PMC    * const lib_pmc = Parrot_load_lib(interp, s, NULL);
+    if (PMC_IS_NULL(lib_pmc) || !VTABLE_get_bool(interp, lib_pmc)) {
+        IMCC_fataly(interp, EXCEPTION_LIBRARY_ERROR,
+            "loadlib directive could not find library `%S'", s);
+    }
+    Parrot_register_HLL_lib(interp, s);
+}
+
+/* HEADERIZER STOP */
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
 
-/* Line 214 of yacc.c  */
-#line 1071 "compilers/imcc/imcc.y"
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
 
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+#line 986 "compilers/imcc/imcc.y"
+{
     IdList * idlist;
     int t;
     char * s;
     SymReg * sr;
     Instruction *i;
-
-
-
-/* Line 214 of yacc.c  */
-#line 1427 "compilers/imcc/imcparser.c"
-} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
+}
+/* Line 187 of yacc.c.  */
+#line 1327 "compilers/imcc/imcparser.c"
+	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
+
 /* Copy the second part of user declarations.  */
 
 
-/* Line 264 of yacc.c  */
-#line 1439 "compilers/imcc/imcparser.c"
+/* Line 216 of yacc.c.  */
+#line 1340 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1496,7 +1397,7 @@
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
+# if YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -1521,14 +1422,14 @@
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static int
-YYID (int yyi)
+YYID (int i)
 #else
 static int
-YYID (yyi)
-    int yyi;
+YYID (i)
+    int i;
 #endif
 {
-  return yyi;
+  return i;
 }
 #endif
 
@@ -1609,9 +1510,9 @@
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
-  YYSTYPE yyvs_alloc;
-};
+  yytype_int16 yyss;
+  YYSTYPE yyvs;
+  };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
@@ -1645,12 +1546,12 @@
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
+# define YYSTACK_RELOCATE(Stack)					\
     do									\
       {									\
 	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
 	yyptr += yynewbytes / sizeof (*yyptr);				\
       }									\
@@ -1661,16 +1562,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  31
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   662
+#define YYLAST   664
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  136
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  129
+#define YYNNTS  128
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  342
+#define YYNRULES  340
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  545
+#define YYNSTATES  540
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -1729,181 +1630,180 @@
 {
        0,     0,     3,     5,     7,    10,    12,    14,    16,    18,
       21,    23,    25,    27,    30,    34,    40,    44,    49,    52,
-      53,    60,    61,    68,    69,    76,    78,    80,    82,    85,
-      89,    92,    94,    96,    98,   100,   102,   103,   107,   108,
-     113,   116,   121,   122,   124,   125,   130,   131,   133,   137,
-     141,   144,   145,   148,   150,   154,   155,   156,   157,   168,
-     169,   172,   176,   177,   181,   185,   190,   195,   200,   202,
-     207,   209,   214,   216,   221,   226,   228,   233,   234,   238,
-     240,   242,   244,   246,   248,   250,   252,   256,   257,   259,
-     260,   270,   271,   274,   275,   279,   280,   282,   284,   287,
-     289,   291,   293,   295,   297,   299,   301,   303,   305,   307,
-     309,   311,   313,   315,   321,   325,   329,   333,   337,   343,
-     349,   350,   354,   357,   358,   362,   366,   367,   372,   373,
-     376,   378,   380,   382,   384,   389,   394,   396,   398,   399,
-     405,   407,   408,   414,   415,   418,   422,   423,   426,   430,
-     434,   438,   439,   445,   447,   449,   450,   452,   456,   460,
-     466,   468,   471,   472,   475,   478,   480,   482,   484,   486,
-     487,   489,   492,   494,   496,   500,   503,   505,   509,   512,
-     513,   515,   517,   519,   520,   525,   530,   535,   536,   543,
-     545,   546,   553,   556,   559,   562,   565,   567,   569,   571,
-     573,   574,   576,   578,   580,   582,   586,   591,   597,   604,
-     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,   961
+      53,    60,    61,    68,    70,    72,    74,    77,    81,    84,
+      86,    88,    90,    92,    94,    95,    99,   100,   105,   108,
+     113,   114,   116,   117,   122,   123,   125,   129,   133,   136,
+     137,   140,   142,   146,   147,   148,   149,   160,   161,   164,
+     168,   169,   173,   177,   182,   187,   192,   194,   199,   201,
+     206,   208,   213,   218,   220,   225,   226,   230,   232,   234,
+     236,   238,   240,   242,   244,   248,   249,   251,   252,   262,
+     263,   266,   267,   271,   272,   274,   276,   279,   281,   283,
+     285,   287,   289,   291,   293,   295,   297,   299,   301,   303,
+     305,   307,   313,   317,   321,   325,   329,   335,   341,   342,
+     346,   349,   350,   354,   358,   359,   364,   365,   368,   370,
+     372,   374,   376,   381,   386,   388,   390,   391,   397,   399,
+     400,   406,   407,   410,   414,   415,   418,   422,   426,   430,
+     431,   437,   439,   441,   442,   444,   448,   452,   458,   460,
+     463,   464,   467,   470,   472,   474,   476,   478,   479,   481,
+     484,   486,   488,   492,   495,   497,   501,   504,   505,   507,
+     509,   511,   512,   517,   522,   527,   528,   535,   537,   538,
+     545,   548,   551,   554,   557,   559,   561,   563,   565,   566,
+     568,   570,   572,   574,   578,   583,   589,   596,   603,   607,
+     608,   618,   620,   622,   624,   628,   630,   632,   634,   636,
+     638,   640,   642,   644,   646,   648,   650,   652,   654,   656,
+     658,   660,   662,   664,   666,   668,   670,   672,   674,   676,
+     678,   680,   681,   687,   691,   693,   695,   697,   699,   701,
+     703,   705,   707,   709,   711,   713,   715,   717,   722,   724,
+     726,   728,   730,   734,   738,   742,   746,   747,   753,   754,
+     758,   760,   766,   770,   774,   777,   778,   781,   783,   785,
+     787,   792,   797,   800,   804,   810,   812,   816,   817,   819,
+     821,   828,   834,   839,   844,   851,   857,   859,   861,   863,
+     865,   867,   869,   871,   873,   875,   877,   878,   880,   884,
+     886,   888,   893,   897,   899,   901,   903,   905,   907,   909,
+     911,   913,   915,   917,   919,   920,   923,   924,   927,   929,
+     933,   935,   937,   939,   941,   943,   945,   947,   949,   951,
+     953
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
      137,     0,    -1,   138,    -1,   139,    -1,   138,   139,    -1,
-     159,    -1,   144,    -1,   164,    -1,   156,    -1,   109,     4,
+     158,    -1,   144,    -1,   163,    -1,   155,    -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,   264,    -1,     7,
-     111,    -1,    -1,    31,   145,   223,   107,   121,   264,    -1,
-      -1,    31,   147,   112,   254,   121,   149,    -1,    -1,    31,
-     148,   111,   254,   121,   149,    -1,   111,    -1,   114,    -1,
-     151,    -1,   150,   151,    -1,   212,   152,     4,    -1,   109,
-       4,    -1,   118,    -1,   117,    -1,   159,    -1,   146,    -1,
-     140,    -1,    -1,   153,   115,   155,    -1,    -1,    76,   154,
-     186,   100,    -1,    14,   255,    -1,    30,   111,    70,   108,
-      -1,    -1,   248,    -1,    -1,   101,   157,   158,   102,    -1,
-      -1,   150,    -1,    25,   160,     4,    -1,   122,   161,   123,
-      -1,   122,   123,    -1,    -1,   162,   163,    -1,   263,    -1,
-     163,   124,   263,    -1,    -1,    -1,    -1,    27,   165,   251,
-     166,   186,     4,   167,   168,   181,    71,    -1,    -1,   168,
-       4,    -1,   168,   169,     4,    -1,    -1,     5,   170,   171,
-      -1,   223,   107,   195,    -1,    93,   125,   179,   126,    -1,
-      91,   125,   111,   126,    -1,    91,   125,   107,   126,    -1,
-      94,    -1,    94,   125,   111,   126,    -1,    89,    -1,    89,
-     125,   149,   126,    -1,    98,    -1,    98,   125,   149,   126,
-      -1,    96,   125,   111,   126,    -1,    97,    -1,    97,   125,
-     149,   126,    -1,    -1,   179,    70,   180,    -1,   180,    -1,
-      50,    -1,    51,    -1,    53,    -1,    52,    -1,   107,    -1,
-     111,    -1,   122,   256,   123,    -1,    -1,   209,    -1,    -1,
-      73,     4,   183,   190,   185,   189,   184,   192,    74,    -1,
-      -1,   214,     4,    -1,    -1,    83,   255,     4,    -1,    -1,
-     187,    -1,   188,    -1,   187,   188,    -1,    85,    -1,    86,
-      -1,    84,    -1,    87,    -1,    88,    -1,    90,    -1,    92,
-      -1,   172,    -1,   173,    -1,   174,    -1,   175,    -1,   176,
-      -1,   177,    -1,   178,    -1,    75,   255,    70,   255,     4,
-      -1,    75,   255,     4,    -1,    81,   255,     4,    -1,    82,
-     247,     4,    -1,    82,   111,     4,    -1,    82,   247,    70,
-     255,     4,    -1,    82,   111,    70,   255,     4,    -1,    -1,
-     190,   191,     4,    -1,    11,   237,    -1,    -1,   192,   193,
-       4,    -1,    61,   247,   195,    -1,    -1,    29,   194,   223,
-     217,    -1,    -1,   195,   196,    -1,    18,    -1,    19,    -1,
-      20,    -1,    21,    -1,    21,   125,   111,   126,    -1,    21,
-     125,   114,   126,    -1,    99,    -1,    24,    -1,    -1,    77,
-       4,   198,   201,    78,    -1,   205,    -1,    -1,    79,     4,
-     200,   202,    80,    -1,    -1,   201,     4,    -1,   201,   203,
-       4,    -1,    -1,   202,     4,    -1,   202,   204,     4,    -1,
-      15,   255,   238,    -1,    16,   255,   238,    -1,    -1,   207,
-     125,   206,   208,   126,    -1,    62,    -1,    64,    -1,    -1,
-     237,    -1,   111,    22,   255,    -1,   208,    70,   237,    -1,
-     208,    70,   111,    22,   255,    -1,   211,    -1,   209,   211,
-      -1,    -1,   210,   215,    -1,   109,     4,    -1,   118,    -1,
-     117,    -1,   141,    -1,   142,    -1,    -1,   213,    -1,   213,
-     214,    -1,   214,    -1,   100,    -1,   212,   219,     4,    -1,
-       1,     4,    -1,   217,    -1,   216,    70,   217,    -1,   107,
-     218,    -1,    -1,    99,    -1,   224,    -1,   242,    -1,    -1,
-      29,   220,   223,   216,    -1,    30,   111,    70,   247,    -1,
-      30,   114,    70,   247,    -1,    -1,    31,   221,   223,   107,
-     121,   264,    -1,   146,    -1,    -1,    33,   222,   223,   107,
-     121,   264,    -1,    63,   234,    -1,    10,   253,    -1,   115,
-     248,    -1,    14,   255,    -1,   234,    -1,   182,    -1,   197,
-      -1,   199,    -1,    -1,    50,    -1,    51,    -1,    52,    -1,
-      53,    -1,   247,   121,   255,    -1,   247,   121,   226,   255,
-      -1,   247,   121,   255,   227,   255,    -1,   247,   121,   255,
-     122,   256,   123,    -1,   247,   122,   256,   123,   121,   255,
-      -1,   247,   121,   234,    -1,    -1,   125,   225,   241,   126,
-     121,   233,   125,   236,   126,    -1,   228,    -1,   230,    -1,
-     232,    -1,   247,   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,
-      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,
-     229,   125,   241,   126,    -1,   247,   231,   255,    -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,   247,   121,   115,   155,    -1,
-     107,    -1,   111,    -1,   114,    -1,   247,    -1,   247,   119,
-     252,    -1,   247,   119,   114,    -1,   247,   119,   111,    -1,
-     247,   119,   247,    -1,    -1,   233,   235,   125,   236,   126,
-      -1,    -1,   236,    70,   237,    -1,   237,    -1,   236,    70,
-     111,    22,   255,    -1,   255,    22,   255,    -1,   111,    22,
-     255,    -1,   255,   238,    -1,    -1,   238,   239,    -1,    17,
-      -1,    21,    -1,    24,    -1,    21,   125,   114,   126,    -1,
-      21,   125,   111,   126,    -1,   247,   195,    -1,   241,    70,
-     240,    -1,   241,    70,   111,    22,   247,    -1,   240,    -1,
-     111,    22,   247,    -1,    -1,   244,    -1,   243,    -1,    13,
-     255,   246,   255,    10,   253,    -1,    13,    14,   255,    10,
-     253,    -1,    13,   255,   245,   253,    -1,    12,   255,   245,
-     253,    -1,    12,   255,   246,   255,    10,   253,    -1,    12,
-      14,   255,    10,   253,    -1,    70,    -1,    10,    -1,    55,
-      -1,    56,    -1,    57,    -1,    58,    -1,    59,    -1,    60,
-      -1,   116,    -1,   262,    -1,    -1,   249,    -1,   249,    70,
-     250,    -1,   250,    -1,   254,    -1,   247,   122,   256,   123,
-      -1,   122,   258,   123,    -1,   252,    -1,   111,    -1,   114,
-      -1,   107,    -1,   115,    -1,   107,    -1,   115,    -1,   253,
-      -1,   255,    -1,   247,    -1,   264,    -1,    -1,   257,   260,
-      -1,    -1,   259,   260,    -1,   261,    -1,   260,   124,   261,
-      -1,   255,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
-      -1,   108,    -1,   111,    -1,   114,    -1,   112,    -1,   113,
-      -1,   263,    -1
+       9,   111,     4,    -1,    32,   111,    70,   263,    -1,     7,
+     111,    -1,    -1,    31,   145,   222,   107,   121,   263,    -1,
+      -1,    31,   147,   111,   253,   121,   148,    -1,   111,    -1,
+     114,    -1,   150,    -1,   149,   150,    -1,   211,   151,     4,
+      -1,   109,     4,    -1,   118,    -1,   117,    -1,   158,    -1,
+     146,    -1,   140,    -1,    -1,   152,   115,   154,    -1,    -1,
+      76,   153,   185,   100,    -1,    14,   254,    -1,    30,   111,
+      70,   108,    -1,    -1,   247,    -1,    -1,   101,   156,   157,
+     102,    -1,    -1,   149,    -1,    25,   159,     4,    -1,   122,
+     160,   123,    -1,   122,   123,    -1,    -1,   161,   162,    -1,
+     262,    -1,   162,   124,   262,    -1,    -1,    -1,    -1,    27,
+     164,   250,   165,   185,     4,   166,   167,   180,    71,    -1,
+      -1,   167,     4,    -1,   167,   168,     4,    -1,    -1,     5,
+     169,   170,    -1,   222,   107,   194,    -1,    93,   125,   178,
+     126,    -1,    91,   125,   111,   126,    -1,    91,   125,   107,
+     126,    -1,    94,    -1,    94,   125,   111,   126,    -1,    89,
+      -1,    89,   125,   148,   126,    -1,    98,    -1,    98,   125,
+     148,   126,    -1,    96,   125,   111,   126,    -1,    97,    -1,
+      97,   125,   148,   126,    -1,    -1,   178,    70,   179,    -1,
+     179,    -1,    50,    -1,    51,    -1,    53,    -1,    52,    -1,
+     107,    -1,   111,    -1,   122,   255,   123,    -1,    -1,   208,
+      -1,    -1,    73,     4,   182,   189,   184,   188,   183,   191,
+      74,    -1,    -1,   213,     4,    -1,    -1,    83,   254,     4,
+      -1,    -1,   186,    -1,   187,    -1,   186,   187,    -1,    85,
+      -1,    86,    -1,    84,    -1,    87,    -1,    88,    -1,    90,
+      -1,    92,    -1,   171,    -1,   172,    -1,   173,    -1,   174,
+      -1,   175,    -1,   176,    -1,   177,    -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,   189,   190,     4,    -1,    11,   236,    -1,    -1,
+     191,   192,     4,    -1,    61,   246,   194,    -1,    -1,    29,
+     193,   222,   216,    -1,    -1,   194,   195,    -1,    18,    -1,
+      19,    -1,    20,    -1,    21,    -1,    21,   125,   111,   126,
+      -1,    21,   125,   114,   126,    -1,    99,    -1,    24,    -1,
+      -1,    77,     4,   197,   200,    78,    -1,   204,    -1,    -1,
+      79,     4,   199,   201,    80,    -1,    -1,   200,     4,    -1,
+     200,   202,     4,    -1,    -1,   201,     4,    -1,   201,   203,
+       4,    -1,    15,   254,   237,    -1,    16,   254,   237,    -1,
+      -1,   206,   125,   205,   207,   126,    -1,    62,    -1,    64,
+      -1,    -1,   236,    -1,   111,    22,   254,    -1,   207,    70,
+     236,    -1,   207,    70,   111,    22,   254,    -1,   210,    -1,
+     208,   210,    -1,    -1,   209,   214,    -1,   109,     4,    -1,
+     118,    -1,   117,    -1,   141,    -1,   142,    -1,    -1,   212,
+      -1,   212,   213,    -1,   213,    -1,   100,    -1,   211,   218,
+       4,    -1,     1,     4,    -1,   216,    -1,   215,    70,   216,
+      -1,   107,   217,    -1,    -1,    99,    -1,   223,    -1,   241,
+      -1,    -1,    29,   219,   222,   215,    -1,    30,   111,    70,
+     246,    -1,    30,   114,    70,   246,    -1,    -1,    31,   220,
+     222,   107,   121,   263,    -1,   146,    -1,    -1,    33,   221,
+     222,   107,   121,   263,    -1,    63,   233,    -1,    10,   252,
+      -1,   115,   247,    -1,    14,   254,    -1,   233,    -1,   181,
+      -1,   196,    -1,   198,    -1,    -1,    50,    -1,    51,    -1,
+      52,    -1,    53,    -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,   233,    -1,    -1,   125,   224,
+     240,   126,   121,   232,   125,   235,   126,    -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,    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,   125,   240,   126,    -1,   246,   230,   254,
+      -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,
+     154,    -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,   125,
+     235,   126,    -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,    21,    -1,    24,    -1,    21,   125,   114,
+     126,    -1,    21,   125,   111,   126,    -1,   246,   194,    -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,    -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,   263,    -1,    -1,
+     256,   259,    -1,    -1,   258,   259,    -1,   260,    -1,   259,
+     124,   260,    -1,   254,    -1,   103,    -1,   104,    -1,   105,
+      -1,   106,    -1,   108,    -1,   111,    -1,   114,    -1,   112,
+      -1,   113,    -1,   262,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,  1166,  1166,  1170,  1171,  1175,  1176,  1177,  1183,  1189,
-    1190,  1191,  1192,  1196,  1197,  1206,  1212,  1220,  1232,  1245,
-    1245,  1254,  1254,  1261,  1261,  1270,  1271,  1275,  1276,  1280,
-    1281,  1282,  1283,  1284,  1285,  1286,  1289,  1289,  1298,  1297,
-    1310,  1314,  1327,  1331,  1335,  1335,  1347,  1349,  1353,  1368,
-    1369,  1373,  1373,  1385,  1386,  1395,  1399,  1403,  1394,  1415,
-    1416,  1417,  1430,  1430,  1434,  1459,  1463,  1469,  1478,  1484,
-    1493,  1499,  1508,  1514,  1523,  1531,  1536,  1547,  1550,  1555,
-    1563,  1564,  1565,  1566,  1567,  1578,  1589,  1592,  1594,  1599,
-    1598,  1629,  1630,  1634,  1635,  1639,  1640,  1644,  1645,  1649,
-    1650,  1651,  1652,  1653,  1654,  1655,  1656,  1657,  1658,  1659,
-    1660,  1661,  1662,  1666,  1671,  1675,  1679,  1683,  1687,  1692,
-    1701,  1702,  1714,  1719,  1720,  1728,  1729,  1729,  1741,  1742,
-    1746,  1747,  1748,  1749,  1750,  1751,  1752,  1753,  1758,  1758,
-    1761,  1769,  1769,  1775,  1776,  1781,  1789,  1790,  1795,  1803,
-    1807,  1812,  1811,  1824,  1825,  1829,  1830,  1840,  1845,  1855,
-    1864,  1865,  1877,  1881,  1883,  1884,  1885,  1886,  1887,  1891,
-    1892,  1896,  1897,  1901,  1912,  1913,  1924,  1931,  1940,  1948,
-    1950,  1955,  1956,  1957,  1957,  1970,  1987,  2000,  2000,  2007,
-    2008,  2008,  2014,  2020,  2024,  2036,  2037,  2038,  2039,  2040,
-    2041,  2045,  2046,  2047,  2048,  2052,  2054,  2056,  2058,  2060,
-    2063,  2070,  2069,  2078,  2079,  2080,  2081,  2089,  2090,  2091,
-    2095,  2096,  2097,  2098,  2099,  2100,  2101,  2102,  2103,  2104,
-    2105,  2106,  2107,  2108,  2109,  2110,  2111,  2112,  2113,  2114,
-    2115,  2116,  2117,  2123,  2122,  2134,  2139,  2140,  2141,  2142,
-    2143,  2144,  2145,  2146,  2147,  2148,  2149,  2150,  2151,  2156,
-    2167,  2168,  2169,  2170,  2176,  2190,  2196,  2202,  2208,  2207,
-    2216,  2217,  2227,  2237,  2244,  2249,  2259,  2263,  2264,  2268,
-    2269,  2270,  2272,  2273,  2277,  2281,  2291,  2297,  2307,  2312,
-    2316,  2317,  2321,  2325,  2329,  2336,  2340,  2344,  2351,  2352,
-    2356,  2357,  2358,  2359,  2360,  2361,  2365,  2366,  2370,  2371,
-    2375,  2376,  2380,  2381,  2388,  2395,  2396,  2397,  2401,  2402,
-    2406,  2407,  2411,  2412,  2416,  2417,  2421,  2421,  2433,  2433,
-    2445,  2446,  2454,  2461,  2462,  2463,  2464,  2465,  2469,  2470,
-    2474,  2475,  2476
+       0,  1081,  1081,  1085,  1086,  1090,  1091,  1092,  1098,  1104,
+    1105,  1106,  1107,  1111,  1112,  1121,  1127,  1135,  1147,  1160,
+    1160,  1169,  1169,  1178,  1179,  1183,  1184,  1188,  1189,  1190,
+    1191,  1192,  1193,  1194,  1197,  1197,  1206,  1205,  1218,  1222,
+    1235,  1239,  1243,  1243,  1255,  1257,  1261,  1276,  1277,  1281,
+    1281,  1293,  1294,  1303,  1307,  1311,  1302,  1323,  1324,  1325,
+    1338,  1338,  1342,  1367,  1371,  1377,  1386,  1392,  1401,  1407,
+    1416,  1422,  1431,  1439,  1444,  1455,  1458,  1463,  1471,  1472,
+    1473,  1474,  1475,  1486,  1497,  1500,  1502,  1507,  1506,  1537,
+    1538,  1542,  1543,  1547,  1548,  1552,  1553,  1557,  1558,  1559,
+    1560,  1561,  1562,  1563,  1564,  1565,  1566,  1567,  1568,  1569,
+    1570,  1574,  1579,  1583,  1587,  1591,  1595,  1600,  1609,  1610,
+    1622,  1627,  1628,  1636,  1637,  1637,  1649,  1650,  1654,  1655,
+    1656,  1657,  1658,  1659,  1660,  1661,  1666,  1666,  1669,  1677,
+    1677,  1683,  1684,  1689,  1697,  1698,  1703,  1711,  1715,  1720,
+    1719,  1732,  1733,  1737,  1738,  1748,  1753,  1763,  1772,  1773,
+    1785,  1789,  1791,  1792,  1793,  1794,  1795,  1799,  1800,  1804,
+    1805,  1809,  1820,  1821,  1832,  1839,  1848,  1856,  1858,  1863,
+    1864,  1865,  1865,  1878,  1895,  1908,  1908,  1915,  1916,  1916,
+    1922,  1928,  1932,  1944,  1945,  1946,  1947,  1948,  1949,  1953,
+    1954,  1955,  1956,  1960,  1962,  1964,  1966,  1968,  1971,  1978,
+    1977,  1986,  1987,  1988,  1989,  1997,  1998,  1999,  2003,  2004,
+    2005,  2006,  2007,  2008,  2009,  2010,  2011,  2012,  2013,  2014,
+    2015,  2016,  2017,  2018,  2019,  2020,  2021,  2022,  2023,  2024,
+    2025,  2031,  2030,  2042,  2047,  2048,  2049,  2050,  2051,  2052,
+    2053,  2054,  2055,  2056,  2057,  2058,  2059,  2064,  2075,  2076,
+    2077,  2078,  2084,  2098,  2104,  2110,  2116,  2115,  2124,  2125,
+    2135,  2145,  2152,  2157,  2167,  2171,  2172,  2176,  2177,  2178,
+    2180,  2181,  2185,  2189,  2199,  2205,  2215,  2220,  2224,  2225,
+    2229,  2233,  2237,  2244,  2248,  2252,  2259,  2260,  2264,  2265,
+    2266,  2267,  2268,  2269,  2273,  2274,  2278,  2279,  2283,  2284,
+    2288,  2289,  2296,  2303,  2304,  2305,  2309,  2310,  2314,  2315,
+    2319,  2320,  2324,  2325,  2329,  2329,  2341,  2341,  2353,  2354,
+    2362,  2369,  2370,  2371,  2372,  2373,  2377,  2378,  2382,  2383,
+    2384
 };
 #endif
 
@@ -1935,29 +1835,28 @@
   "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", "nslist", "$@7", "_nslist", "sub", "$@8", "$@9", "$@10",
-  "sub_params", "sub_param", "$@11", "sub_param_type_def", "multi",
-  "outer", "vtable", "method", "ns_entry_name", "instanceof", "subid",
-  "multi_types", "multi_type", "sub_body", "pcc_sub_call", "@12",
-  "opt_label", "opt_invocant", "sub_proto", "sub_proto_list", "proto",
-  "pcc_call", "pcc_args", "pcc_arg", "pcc_results", "pcc_result", "$@13",
-  "paramtype_list", "paramtype", "pcc_ret", "$@14", "pcc_yield", "$@15",
+  "annotate_directive", "hll_def", "constdef", "@1", "pmc_const", "@2",
+  "any_string", "pasmcode", "pasmline", "pasm_inst", "@3", "@4",
+  "pasm_args", "emit", "@5", "opt_pasmcode", "class_namespace", "maybe_ns",
+  "nslist", "@6", "_nslist", "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", "$@16", "return_or_yield", "var_returns",
-  "statements", "helper_clear_state", "statement", "labels", "_labels",
-  "label", "instruction", "id_list", "id_list_id", "opt_unique_reg",
-  "labeled_inst", "$@17", "$@18", "$@19", "type", "assignment", "@20",
-  "un_op", "bin_op", "get_results", "@21", "op_assign", "assign_op",
-  "func_assign", "the_sub", "sub_call", "@22", "arglist", "arg",
-  "argtype_list", "argtype", "result", "targetlist",
-  "conditional_statement", "unless_statement", "if_statement",
-  "comma_or_goto", "relop", "target", "vars", "_vars", "_var_or_i",
-  "sub_label_op_c", "sub_label_op", "label_op", "var_or_i", "var",
-  "keylist", "$@23", "keylist_force", "$@24", "_keylist", "key", "reg",
-  "stringc", "const", 0
+  "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", "comma_or_goto", "relop", "target", "vars", "_vars",
+  "_var_or_i", "sub_label_op_c", "sub_label_op", "label_op", "var_or_i",
+  "var", "keylist", "@22", "keylist_force", "@23", "_keylist", "key",
+  "reg", "stringc", "const", 0
 };
 #endif
 
@@ -1988,39 +1887,39 @@
 {
        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,   161,   163,   163,   165,   166,   167,   164,   168,
-     168,   168,   170,   169,   171,   172,   173,   173,   174,   174,
-     175,   175,   176,   176,   177,   178,   178,   179,   179,   179,
-     180,   180,   180,   180,   180,   180,   180,   181,   181,   183,
-     182,   184,   184,   185,   185,   186,   186,   187,   187,   188,
-     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
-     188,   188,   188,   189,   189,   189,   189,   189,   189,   189,
-     190,   190,   191,   192,   192,   193,   194,   193,   195,   195,
-     196,   196,   196,   196,   196,   196,   196,   196,   198,   197,
-     197,   200,   199,   201,   201,   201,   202,   202,   202,   203,
-     204,   206,   205,   207,   207,   208,   208,   208,   208,   208,
-     209,   209,   210,   211,   211,   211,   211,   211,   211,   212,
-     212,   213,   213,   214,   215,   215,   216,   216,   217,   218,
-     218,   219,   219,   220,   219,   219,   219,   221,   219,   219,
-     222,   219,   219,   219,   219,   219,   219,   219,   219,   219,
-     219,   223,   223,   223,   223,   224,   224,   224,   224,   224,
-     224,   225,   224,   224,   224,   224,   224,   226,   226,   226,
-     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
-     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
-     227,   227,   227,   229,   228,   230,   231,   231,   231,   231,
-     231,   231,   231,   231,   231,   231,   231,   231,   231,   232,
-     233,   233,   233,   233,   233,   233,   233,   233,   235,   234,
-     236,   236,   236,   236,   236,   236,   237,   238,   238,   239,
-     239,   239,   239,   239,   240,   241,   241,   241,   241,   241,
-     242,   242,   243,   243,   243,   244,   244,   244,   245,   245,
-     246,   246,   246,   246,   246,   246,   247,   247,   248,   248,
-     249,   249,   250,   250,   250,   251,   251,   251,   252,   252,
-     253,   253,   254,   254,   255,   255,   257,   256,   259,   258,
-     260,   260,   261,   262,   262,   262,   262,   262,   263,   263,
-     264,   264,   264
+     144,   147,   146,   148,   148,   149,   149,   150,   150,   150,
+     150,   150,   150,   150,   152,   151,   153,   151,   151,   151,
+     151,   154,   156,   155,   157,   157,   158,   159,   159,   161,
+     160,   162,   162,   164,   165,   166,   163,   167,   167,   167,
+     169,   168,   170,   171,   172,   172,   173,   173,   174,   174,
+     175,   175,   176,   177,   177,   178,   178,   178,   179,   179,
+     179,   179,   179,   179,   179,   180,   180,   182,   181,   183,
+     183,   184,   184,   185,   185,   186,   186,   187,   187,   187,
+     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
+     187,   188,   188,   188,   188,   188,   188,   188,   189,   189,
+     190,   191,   191,   192,   193,   192,   194,   194,   195,   195,
+     195,   195,   195,   195,   195,   195,   197,   196,   196,   199,
+     198,   200,   200,   200,   201,   201,   201,   202,   203,   205,
+     204,   206,   206,   207,   207,   207,   207,   207,   208,   208,
+     209,   210,   210,   210,   210,   210,   210,   211,   211,   212,
+     212,   213,   214,   214,   215,   215,   216,   217,   217,   218,
+     218,   219,   218,   218,   218,   220,   218,   218,   221,   218,
+     218,   218,   218,   218,   218,   218,   218,   218,   218,   222,
+     222,   222,   222,   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,   263,   263,
+     263
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -2028,39 +1927,39 @@
 {
        0,     2,     1,     1,     2,     1,     1,     1,     1,     2,
        1,     1,     1,     2,     3,     5,     3,     4,     2,     0,
-       6,     0,     6,     0,     6,     1,     1,     1,     2,     3,
-       2,     1,     1,     1,     1,     1,     0,     3,     0,     4,
-       2,     4,     0,     1,     0,     4,     0,     1,     3,     3,
-       2,     0,     2,     1,     3,     0,     0,     0,    10,     0,
-       2,     3,     0,     3,     3,     4,     4,     4,     1,     4,
-       1,     4,     1,     4,     4,     1,     4,     0,     3,     1,
-       1,     1,     1,     1,     1,     1,     3,     0,     1,     0,
-       9,     0,     2,     0,     3,     0,     1,     1,     2,     1,
+       6,     0,     6,     1,     1,     1,     2,     3,     2,     1,
+       1,     1,     1,     1,     0,     3,     0,     4,     2,     4,
+       0,     1,     0,     4,     0,     1,     3,     3,     2,     0,
+       2,     1,     3,     0,     0,     0,    10,     0,     2,     3,
+       0,     3,     3,     4,     4,     4,     1,     4,     1,     4,
+       1,     4,     4,     1,     4,     0,     3,     1,     1,     1,
+       1,     1,     1,     1,     3,     0,     1,     0,     9,     0,
+       2,     0,     3,     0,     1,     1,     2,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     5,     3,     3,     3,     3,     5,     5,
-       0,     3,     2,     0,     3,     3,     0,     4,     0,     2,
-       1,     1,     1,     1,     4,     4,     1,     1,     0,     5,
-       1,     0,     5,     0,     2,     3,     0,     2,     3,     3,
-       3,     0,     5,     1,     1,     0,     1,     3,     3,     5,
-       1,     2,     0,     2,     2,     1,     1,     1,     1,     0,
-       1,     2,     1,     1,     3,     2,     1,     3,     2,     0,
-       1,     1,     1,     0,     4,     4,     4,     0,     6,     1,
-       0,     6,     2,     2,     2,     2,     1,     1,     1,     1,
-       0,     1,     1,     1,     1,     3,     4,     5,     6,     6,
-       3,     0,     9,     1,     1,     1,     3,     1,     1,     1,
+       1,     5,     3,     3,     3,     3,     5,     5,     0,     3,
+       2,     0,     3,     3,     0,     4,     0,     2,     1,     1,
+       1,     1,     4,     4,     1,     1,     0,     5,     1,     0,
+       5,     0,     2,     3,     0,     2,     3,     3,     3,     0,
+       5,     1,     1,     0,     1,     3,     3,     5,     1,     2,
+       0,     2,     2,     1,     1,     1,     1,     0,     1,     2,
+       1,     1,     3,     2,     1,     3,     2,     0,     1,     1,
+       1,     0,     4,     4,     4,     0,     6,     1,     0,     6,
+       2,     2,     2,     2,     1,     1,     1,     1,     0,     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,     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,     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
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -2068,306 +1967,304 @@
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,    12,     0,     0,     0,     0,    55,    19,     0,    44,
+       0,    12,     0,     0,     0,     0,    53,    19,     0,    42,
        0,     0,     2,     3,    10,    11,     0,     6,     8,     5,
-       7,    18,     0,     0,    51,     0,     0,     0,     0,   169,
-       9,     1,     4,    13,     0,    16,    50,     0,     0,    48,
-     318,   316,   317,   319,    56,   315,   201,   202,   203,   204,
-       0,    14,    21,   173,     0,    32,    31,    35,    34,   169,
-      27,     0,    33,    36,   170,   172,     0,    49,   338,   339,
-      52,    53,    95,     0,     0,     0,    30,    28,    45,     0,
-       0,    38,     0,     0,   171,    15,     0,   101,    99,   100,
-     102,   103,    70,   104,     0,   105,     0,    68,     0,    75,
-      72,   106,   107,   108,   109,   110,   111,   112,     0,    96,
-      97,     0,     0,     0,   333,   334,   335,   336,   337,   340,
-     341,   306,   324,    40,   307,   342,   325,     0,    95,    29,
-     308,    54,     0,     0,    77,     0,     0,     0,     0,    57,
-      98,    20,   320,   321,   322,     0,   323,     0,     0,     0,
-     328,    37,   324,    43,   309,   311,   312,    25,    26,     0,
-       0,     0,    80,    81,    83,    82,    84,    85,   326,     0,
-      79,     0,     0,     0,     0,    59,     0,     0,    41,    39,
-       0,     0,   326,     0,    71,    67,    66,     0,     0,     0,
-      65,    69,    74,    76,    73,   162,    22,    24,   314,   332,
-     329,   330,     0,   310,    86,   327,    78,    60,    62,     0,
-       0,   166,   165,   167,   168,     0,     0,   162,     0,   160,
-       0,   313,     0,     0,   164,    61,    58,   161,     0,   200,
-     163,   331,    63,     0,     0,   175,     0,     0,     0,     0,
-     183,     0,   187,   190,   153,     0,   154,   243,     0,     0,
-       0,   260,   261,   262,   308,   211,   189,   197,   198,   199,
-     140,     0,     0,   181,   213,   214,   215,   268,   196,   182,
-     291,   290,   263,   128,    17,   193,     0,     0,     0,     0,
-     195,     0,     0,     0,     0,     0,   192,   263,     0,    89,
-     138,   141,   194,   289,   151,   174,     0,   246,   247,   248,
-     249,   252,   253,   254,   255,   251,   250,   256,   257,   258,
-       0,     0,   326,     0,    64,     0,   299,   300,   301,   302,
-     303,   304,   305,   298,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   289,   120,   143,   146,     0,   287,
-       0,   128,   155,   270,   266,   265,   267,   264,   216,   338,
-     339,   308,   217,   218,   219,     0,   210,   324,   205,     0,
-     245,   130,   131,   132,   133,   137,   136,   129,     0,   295,
-       0,     0,   294,     0,   179,   184,   176,   185,   186,     0,
-       0,     0,    93,     0,     0,     0,     0,     0,   284,   338,
-       0,   156,   277,   338,     0,   272,   277,   259,   206,   225,
-     234,   235,   239,   228,   229,   230,   231,   232,   233,   226,
-     236,   237,   238,   227,   326,   242,   220,   221,   222,   223,
-     224,   240,   241,     0,     0,     0,   297,     0,   293,     0,
-     180,   178,     0,     0,     0,   244,     0,     0,     0,     0,
-     144,     0,   139,     0,   147,     0,   142,     0,   288,     0,
-     285,     0,     0,     0,   152,   276,     0,     0,   269,     0,
-       0,   207,     0,     0,     0,   296,   292,   177,   188,   191,
-     122,     0,     0,     0,     0,    91,   121,   277,   145,   277,
-     148,     0,     0,   157,   338,   158,   279,   280,   281,   278,
-     275,   338,   271,   274,   208,   209,   134,   135,    94,     0,
-       0,     0,     0,   123,     0,   149,   150,   286,   270,     0,
-       0,     0,   114,     0,   115,   117,     0,   116,     0,     0,
-      92,     0,   159,     0,     0,   273,     0,     0,     0,   126,
-       0,    90,     0,   212,   283,   282,   113,   119,   118,     0,
-     128,   124,     0,   125,   127
+       7,    18,     0,     0,    49,     0,     0,     0,     0,   167,
+       9,     1,     4,    13,     0,    16,    48,     0,     0,    46,
+     316,   314,   315,   317,    54,   313,   199,   200,   201,   202,
+       0,    14,    21,   171,     0,    30,    29,    33,    32,   167,
+      25,     0,    31,    34,   168,   170,     0,    47,   336,   337,
+      50,    51,    93,     0,     0,    28,    26,    43,     0,     0,
+      36,     0,     0,   169,    15,     0,    99,    97,    98,   100,
+     101,    68,   102,     0,   103,     0,    66,     0,    73,    70,
+     104,   105,   106,   107,   108,   109,   110,     0,    94,    95,
+       0,     0,   331,   332,   333,   334,   335,   338,   339,   304,
+     322,    38,   305,   340,   323,     0,    93,    27,   306,    52,
+       0,     0,    75,     0,     0,     0,     0,    55,    96,    20,
+     318,   319,   320,     0,   321,     0,     0,   326,    35,   322,
+      41,   307,   309,   310,    23,    24,     0,     0,     0,    78,
+      79,    81,    80,    82,    83,   324,     0,    77,     0,     0,
+       0,     0,    57,     0,    39,    37,     0,     0,   324,     0,
+      69,    65,    64,     0,     0,     0,    63,    67,    72,    74,
+      71,   160,    22,   312,   330,   327,   328,     0,   308,    84,
+     325,    76,    58,    60,     0,     0,   164,   163,   165,   166,
+       0,     0,   160,     0,   158,     0,   311,     0,     0,   162,
+      59,    56,   159,     0,   198,   161,   329,    61,     0,     0,
+     173,     0,     0,     0,     0,   181,     0,   185,   188,   151,
+       0,   152,   241,     0,     0,     0,   258,   259,   260,   306,
+     209,   187,   195,   196,   197,   138,     0,     0,   179,   211,
+     212,   213,   266,   194,   180,   289,   288,   261,   126,    17,
+     191,     0,     0,     0,     0,   193,     0,     0,     0,     0,
+       0,   190,   261,     0,    87,   136,   139,   192,   287,   149,
+     172,     0,   244,   245,   246,   247,   250,   251,   252,   253,
+     249,   248,   254,   255,   256,     0,     0,   324,     0,    62,
+       0,   297,   298,   299,   300,   301,   302,   303,   296,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   287,
+     118,   141,   144,     0,   285,     0,   126,   153,   268,   264,
+     263,   265,   262,   214,   336,   337,   306,   215,   216,   217,
+       0,   208,   322,   203,     0,   243,   128,   129,   130,   131,
+     135,   134,   127,     0,   293,     0,     0,   292,     0,   177,
+     182,   174,   183,   184,     0,     0,     0,    91,     0,     0,
+       0,     0,     0,   282,   336,     0,   154,   275,   336,     0,
+     270,   275,   257,   204,   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,   178,   176,     0,     0,     0,
+     242,     0,     0,     0,     0,   142,     0,   137,     0,   145,
+       0,   140,     0,   286,     0,   283,     0,     0,     0,   150,
+     274,     0,     0,   267,     0,     0,   205,     0,     0,     0,
+     294,   290,   175,   186,   189,   120,     0,     0,     0,     0,
+      89,   119,   275,   143,   275,   146,     0,     0,   155,   336,
+     156,   277,   278,   279,   276,   273,   336,   269,   272,   206,
+     207,   132,   133,    92,     0,     0,     0,     0,   121,     0,
+     147,   148,   284,   268,     0,     0,     0,   112,     0,   113,
+     115,     0,   114,     0,     0,    90,     0,   157,     0,     0,
+     271,     0,     0,     0,   124,     0,    88,     0,   210,   281,
+     280,   111,   117,   116,     0,   126,   122,     0,   123,   125
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    11,    12,    13,    14,    15,   214,    16,    17,    27,
-      58,    74,    75,   159,    59,    60,    82,    83,   128,   151,
-      18,    29,    61,    19,    25,    37,    38,    70,    20,    26,
-      72,   175,   195,   215,   222,   232,   101,   102,   103,   104,
-     105,   106,   107,   169,   170,   216,   257,   335,   503,   438,
-     108,   109,   110,   475,   382,   439,   519,   532,   539,   314,
-     367,   258,   336,   259,   337,   383,   384,   443,   447,   260,
-     342,   261,   390,   217,   218,   219,    63,    64,    65,   230,
-     375,   376,   431,   262,   281,   284,   285,    50,   263,   293,
-     355,   423,   264,   288,   265,   313,   266,   267,   268,   296,
-     394,   395,   455,   489,   339,   340,   269,   270,   271,   324,
-     325,   122,   153,   154,   155,    44,    45,   144,   156,   146,
-     187,   188,   180,   181,   200,   201,   124,   125,   126
+      -1,    11,    12,    13,    14,    15,   209,    16,    17,    27,
+      58,    74,   156,    59,    60,    81,    82,   126,   148,    18,
+      29,    61,    19,    25,    37,    38,    70,    20,    26,    72,
+     172,   191,   210,   217,   227,   100,   101,   102,   103,   104,
+     105,   106,   166,   167,   211,   252,   330,   498,   433,   107,
+     108,   109,   470,   377,   434,   514,   527,   534,   309,   362,
+     253,   331,   254,   332,   378,   379,   438,   442,   255,   337,
+     256,   385,   212,   213,   214,    63,    64,    65,   225,   370,
+     371,   426,   257,   276,   279,   280,    50,   258,   288,   350,
+     418,   259,   283,   260,   308,   261,   262,   263,   291,   389,
+     390,   450,   484,   334,   335,   264,   265,   266,   319,   320,
+     120,   150,   151,   152,    44,    45,   142,   153,   144,   183,
+     184,   176,   177,   195,   196,   122,   123,   124
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -448
+#define YYPACT_NINF -413
 static const yytype_int16 yypact[] =
 {
-      69,  -448,   -70,   -51,   -44,   -48,  -448,  -448,    22,  -448,
-     136,   150,    69,  -448,  -448,  -448,   153,  -448,  -448,  -448,
-    -448,  -448,    91,   159,    51,   185,   200,   135,   191,   204,
-    -448,  -448,  -448,  -448,    90,  -448,  -448,    99,   -68,  -448,
-    -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,
-     117,  -448,   141,  -448,   251,  -448,  -448,  -448,  -448,   234,
-    -448,   154,  -448,    12,   160,  -448,   257,  -448,  -448,  -448,
-     138,  -448,   413,   151,   170,   162,  -448,  -448,  -448,   189,
-     164,  -448,   279,   171,  -448,  -448,   -68,  -448,  -448,  -448,
-    -448,  -448,   166,  -448,   183,  -448,   184,   187,   192,   193,
-     194,  -448,  -448,  -448,  -448,  -448,  -448,  -448,   281,   413,
-    -448,   101,   426,   426,  -448,  -448,  -448,  -448,  -448,  -448,
-    -448,  -448,  -448,  -448,  -448,  -448,  -448,   226,   413,  -448,
-     374,  -448,    96,   -24,    -3,   199,   213,    96,    96,  -448,
-    -448,  -448,  -448,  -448,  -448,   207,  -448,   209,   217,   231,
-    -448,  -448,   210,  -448,   265,  -448,  -448,  -448,  -448,   211,
-     212,   214,  -448,  -448,  -448,  -448,  -448,  -448,  -448,   -58,
-    -448,   215,   216,   219,   221,  -448,    96,    96,  -448,  -448,
-     225,   189,  -448,   374,  -448,  -448,  -448,   227,   189,    -3,
-    -448,  -448,  -448,  -448,  -448,    19,  -448,  -448,  -448,  -448,
-     230,  -448,   232,  -448,  -448,   230,  -448,  -448,  -448,   222,
-     335,  -448,  -448,  -448,  -448,   345,   285,   172,     7,  -448,
-     189,  -448,   135,   289,  -448,  -448,  -448,  -448,   356,   163,
-    -448,  -448,  -448,   254,   101,  -448,   -62,   284,   302,   189,
-    -448,   119,   127,  -448,  -448,   317,  -448,  -448,   359,   360,
-     361,  -448,  -448,  -448,   374,  -448,  -448,  -448,  -448,  -448,
-    -448,   242,   364,  -448,  -448,  -448,  -448,  -448,  -448,  -448,
-    -448,  -448,   429,  -448,  -448,  -448,   189,   161,   189,   161,
-    -448,   135,   299,   300,   135,   135,  -448,   252,   247,  -448,
-    -448,  -448,  -448,   519,  -448,  -448,   250,  -448,  -448,  -448,
-    -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,
-     449,    40,  -448,   189,    39,   366,  -448,  -448,  -448,  -448,
-    -448,  -448,  -448,  -448,   -62,   189,   369,   -62,   189,   274,
-     546,   546,   275,   277,   519,  -448,  -448,  -448,   363,  -448,
-     -35,  -448,   463,   477,  -448,  -448,  -448,  -448,  -448,   261,
-     266,   374,  -448,  -448,  -448,   189,  -448,   -40,   393,   276,
-    -448,  -448,  -448,  -448,   278,  -448,  -448,  -448,   -62,  -448,
-     391,   -62,  -448,   394,   310,   341,  -448,  -448,  -448,   296,
-     298,     5,    -1,    14,     9,   546,   528,   305,    39,   405,
-      23,  -448,  -448,   414,    36,  -448,   416,  -448,  -448,  -448,
-    -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,
-    -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,
-    -448,  -448,  -448,   189,   319,   139,  -448,   -62,  -448,   -62,
-    -448,  -448,   274,   101,   101,  -448,   189,   189,   109,   439,
-    -448,   189,  -448,   440,  -448,   189,  -448,   441,  -448,   424,
-    -448,   317,   189,   491,  -448,   263,   189,   505,  -448,   189,
-     331,  -448,   189,   329,   330,  -448,  -448,  -448,  -448,  -448,
-    -448,   453,   189,   189,   537,   160,  -448,  -448,  -448,  -448,
-    -448,   546,   333,  -448,   461,  -448,  -448,   346,  -448,  -448,
-    -448,   462,  -448,  -448,  -448,  -448,  -448,  -448,  -448,    27,
-     487,    29,    35,  -448,   488,   263,   263,  -448,   477,   189,
-     140,   189,  -448,   189,  -448,  -448,   189,  -448,   189,   105,
-    -448,    46,  -448,   367,   368,  -448,   504,   508,   510,  -448,
-     546,  -448,   512,  -448,  -448,  -448,  -448,  -448,  -448,   135,
-    -448,  -448,   274,    39,  -448
+     320,  -413,  -102,   -90,   -60,   -61,  -413,  -413,   -39,  -413,
+      70,    89,   320,  -413,  -413,  -413,    93,  -413,  -413,  -413,
+    -413,  -413,    41,   121,   -30,   135,   -44,   139,   144,    57,
+    -413,  -413,  -413,  -413,    50,  -413,  -413,    42,    72,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+      65,  -413,  -413,  -413,   172,  -413,  -413,  -413,  -413,   156,
+    -413,    75,  -413,    24,    78,  -413,   178,  -413,  -413,  -413,
+      60,  -413,   427,    80,    91,  -413,  -413,  -413,   455,    95,
+    -413,   208,   103,  -413,  -413,    72,  -413,  -413,  -413,  -413,
+    -413,   125,  -413,   137,  -413,   150,   151,   152,   153,   154,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,   233,   427,  -413,
+      97,   440,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,   173,   427,  -413,   388,  -413,
+     108,   -26,   118,   141,   142,   108,   108,  -413,  -413,  -413,
+    -413,  -413,  -413,   159,  -413,   174,   164,  -413,  -413,   161,
+    -413,   215,  -413,  -413,  -413,  -413,   160,   167,   168,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,   -53,  -413,   170,   171,
+     175,   176,  -413,   108,  -413,  -413,   181,   455,  -413,   388,
+    -413,  -413,  -413,   188,   455,   118,  -413,  -413,  -413,  -413,
+    -413,    25,  -413,  -413,  -413,   193,  -413,   189,  -413,  -413,
+     193,  -413,  -413,  -413,   214,   315,  -413,  -413,  -413,  -413,
+     322,   259,    23,   184,  -413,   455,  -413,   139,   267,  -413,
+    -413,  -413,  -413,   337,    13,  -413,  -413,  -413,   231,    97,
+    -413,   -49,   202,   334,   455,  -413,   112,   235,  -413,  -413,
+     228,  -413,  -413,   345,   348,   351,  -413,  -413,  -413,   388,
+    -413,  -413,  -413,  -413,  -413,  -413,   232,   352,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,   443,  -413,  -413,
+    -413,   455,   211,   455,   211,  -413,   139,   290,   291,   139,
+     139,  -413,   240,   238,  -413,  -413,  -413,  -413,   128,  -413,
+    -413,   239,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,   469,   289,  -413,   455,    -8,
+     355,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,   -49,
+     455,   356,   -49,   455,   260,   306,   306,   261,   264,   128,
+    -413,  -413,  -413,   350,  -413,   -31,  -413,   483,   497,  -413,
+    -413,  -413,  -413,  -413,   250,   252,   388,  -413,  -413,  -413,
+     455,  -413,    28,   407,   255,  -413,  -413,  -413,  -413,   256,
+    -413,  -413,  -413,   -49,  -413,   370,   -49,  -413,   372,   284,
+     314,  -413,  -413,  -413,   265,   266,   -22,    -3,    32,     3,
+     306,   539,   270,    -8,   363,   -18,  -413,  -413,   366,   -14,
+    -413,   376,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,   455,   285,
+     113,  -413,   -49,  -413,   -49,  -413,  -413,   260,    97,    97,
+    -413,   455,   455,    69,   404,  -413,   455,  -413,   409,  -413,
+     455,  -413,   415,  -413,   398,  -413,   228,   455,   511,  -413,
+     143,   455,   525,  -413,   455,   300,  -413,   455,   298,   301,
+    -413,  -413,  -413,  -413,  -413,  -413,   428,   455,   455,   548,
+      78,  -413,  -413,  -413,  -413,  -413,   306,   309,  -413,   414,
+    -413,  -413,   316,  -413,  -413,  -413,   421,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,    14,   447,    31,    33,  -413,   448,
+     143,   143,  -413,   497,   455,   127,   455,  -413,   455,  -413,
+    -413,   455,  -413,   455,    84,  -413,   -11,  -413,   305,   318,
+    -413,   449,   450,   453,  -413,   306,  -413,   454,  -413,  -413,
+    -413,  -413,  -413,  -413,   139,  -413,  -413,   260,    -8,  -413
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -448,  -448,  -448,   483,   -15,  -161,  -448,  -448,  -448,  -448,
-     288,  -448,  -448,    71,  -448,   459,  -448,  -448,  -448,   168,
-    -448,  -448,  -448,    -7,  -448,  -448,  -448,  -448,  -448,  -448,
-    -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,
-    -448,  -448,  -448,  -448,   347,  -448,  -448,  -448,  -448,  -448,
-     392,  -448,   434,  -448,  -448,  -448,  -448,  -448,  -448,  -335,
-    -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,
-    -448,  -448,  -448,  -448,  -448,   318,   326,  -448,   -63,  -448,
-    -448,  -417,  -448,  -448,  -448,  -448,  -448,  -219,  -448,  -448,
-    -448,  -448,  -448,  -448,  -448,  -448,  -448,    94,  -181,  -448,
-      38,  -333,  -447,  -448,   173,   224,  -448,  -448,  -448,   268,
-     270,  -128,   307,  -448,   379,  -448,   260,  -229,   132,   -79,
-    -177,  -448,  -448,  -448,   384,   353,  -448,    43,  -107
+    -413,  -413,  -413,   456,    -9,  -167,  -413,  -413,  -413,  -413,
+     236,  -413,     0,  -413,   400,  -413,  -413,  -413,   123,  -413,
+    -413,  -413,    20,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,   286,  -413,  -413,  -413,  -413,  -413,   344,
+    -413,   364,  -413,  -413,  -413,  -413,  -413,  -413,  -331,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,   273,   292,  -413,   -63,  -413,  -413,
+    -406,  -413,  -413,  -413,  -413,  -413,  -211,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,    51,  -199,  -413,    -5,
+    -322,  -412,  -413,   126,   177,  -413,  -413,  -413,   234,   248,
+    -126,   277,  -413,   330,  -413,   223,  -217,   419,   -78,  -174,
+    -413,  -413,  -413,   347,   317,  -413,     2,  -107
 };
 
 /* 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 -264
+#define YYTABLE_NINF -262
 static const yytype_int16 yytable[] =
 {
-     123,    84,   152,   233,   141,   202,   388,   275,   228,   391,
-     436,  -169,   189,   444,    57,   467,   -42,  -169,   440,  -169,
-    -169,  -169,    62,   207,   208,   445,    79,     3,     4,   441,
-     505,   512,   506,   515,   213,   386,  -169,  -169,  -169,   517,
-    -169,    21,    80,    68,    57,   142,    69,   162,   163,   164,
-     165,   209,    62,   143,   348,   152,   213,   361,   362,   363,
-     364,    22,   329,   365,   286,   332,   333,    23,   190,  -169,
-    -169,  -169,  -169,     1,    24,   386,     2,     3,     4,   310,
-    -169,    71,   437,   160,  -169,  -263,  -169,   161,    81,   446,
-     -87,   387,   442,   453,     5,   369,     6,   513,   372,   516,
-       7,   272,   199,   470,   166,   518,   457,    53,   167,   199,
-    -169,  -169,  -169,  -169,  -169,  -169,   457,   287,  -169,   168,
-     485,  -169,  -169,  -169,   492,   544,   152,   274,   210,   131,
-     356,   435,  -169,    28,   529,   359,   211,   212,   366,   426,
-      30,   199,   428,   114,   115,   116,   117,   251,   118,   454,
-      31,   349,   119,   120,   350,   351,   121,    33,   277,   279,
-     280,    34,   458,    35,     8,   341,   530,   352,   353,   354,
-       9,   316,   533,   236,    36,   237,   238,   239,    10,   531,
-       3,     4,   346,   357,   472,    46,    47,    48,    49,    39,
-     473,   474,   240,   241,   242,    51,   243,   315,   465,   326,
-     466,    66,   377,   378,   209,   543,   341,   157,   173,   174,
-     158,     2,    68,   119,   120,    69,   317,   318,   319,   320,
-     321,   322,    67,   152,    73,   244,   245,   246,   247,     5,
-     282,   323,   358,   283,   360,    52,   248,   460,   -23,   -21,
-     249,     2,   250,   -88,   145,   147,   370,   196,   197,   373,
-     463,   523,   -23,   464,   524,    76,    78,   448,   341,     5,
-      53,    85,    86,   392,   396,    52,   114,   115,   116,   117,
-     251,   118,   111,   113,   252,   127,   398,   253,   254,   121,
-     486,   210,   112,   129,   487,   139,   130,   488,   255,   211,
-     212,   132,   114,   115,   116,   117,   148,   118,   276,     8,
-      68,   119,   120,    69,    53,   121,   -46,    40,   133,   134,
-     171,    41,   135,    54,    42,    43,   278,   136,   137,   138,
-     542,    55,    56,   287,   172,   178,   468,   469,   176,     8,
-     177,   179,   182,   223,    53,   183,   -47,   184,   185,   224,
-     186,   191,   192,    54,   461,   193,   502,   194,   198,   225,
-     204,    55,    56,   507,   220,   221,   226,   392,   471,   234,
-     235,   273,   477,   289,   290,   291,   479,   294,   295,   330,
-     331,   310,   334,   483,   392,   343,   368,   490,   392,   371,
-     493,   374,   379,   495,   380,   385,  -261,   114,   115,   116,
-     117,  -262,   118,   499,   500,    68,   119,   120,    69,   424,
-     121,   427,   540,   425,   429,   114,   115,   116,   117,   430,
-     118,   432,   504,    68,   119,   120,    69,   433,   121,   434,
-     114,   115,   116,   117,   251,   118,   451,   452,   252,   396,
-     522,   253,   525,   121,   526,   399,   456,   527,   459,   528,
-     462,   400,   401,   476,   478,   480,   481,   402,   403,   404,
-     405,   406,   407,   408,   494,   496,   497,   498,   508,   409,
-     410,   411,   412,   297,   298,   299,   300,   301,   302,   303,
-     304,   510,   305,   306,   307,   308,   309,   114,   115,   116,
-     117,   142,   118,   509,   511,    68,   119,   120,    69,   143,
-     121,   514,   520,   534,   535,    32,   150,    87,    88,    89,
-      90,    91,    92,    93,    94,    95,    96,    97,   536,    98,
-      99,   100,   537,   413,   538,   414,   541,   256,    77,   397,
-     149,   415,   416,   417,   418,   419,   420,   421,   422,   114,
-     115,   116,   117,   142,   118,   227,   206,    68,   119,   120,
-      69,   143,   121,   140,   229,   482,   521,   327,   310,   328,
-     311,   312,   114,   115,   116,   117,    40,   118,   381,   450,
-     344,   292,   203,   345,    43,   121,   114,   115,   116,   117,
-     347,   118,   205,   231,   389,   119,   120,    69,     0,   121,
-     114,   115,   116,   117,     0,   118,     0,     0,   393,   119,
-     120,    69,     0,   121,   114,   115,   116,   117,     0,   118,
-       0,     0,   484,   119,   120,    69,     0,   121,   114,   115,
-     116,   117,     0,   118,     0,     0,   491,   119,   120,    69,
-       0,   121,   114,   115,   116,   117,     0,   118,     0,     0,
-     338,   114,   115,   116,   117,   121,   118,     0,     0,   449,
-     114,   115,   116,   117,   121,   118,     0,     0,   501,   114,
-     115,   116,   117,   121,   118,     0,     0,     0,     0,     0,
-       0,     0,   121
+     121,    83,   149,   139,   197,   383,   228,   439,   431,    21,
+     356,   357,   358,   359,   270,   386,   360,   185,   507,   440,
+      57,   462,    22,   231,   208,   232,   233,   234,   -40,   202,
+     203,     3,     4,     3,     4,   510,   435,   512,    78,   381,
+      71,   281,   235,   236,   237,   208,   238,   436,   381,    62,
+      57,    23,   448,   149,    79,   204,   452,   204,   140,   452,
+     500,    24,   501,    40,     2,   324,   141,    41,   327,   328,
+      42,    43,    28,   186,    30,   239,   240,   241,   242,    62,
+     432,   157,     5,   441,   508,   158,   243,   129,    52,    31,
+     244,   361,   245,    36,   -86,   382,   -85,    33,   267,   194,
+      80,   511,   364,   513,   430,   367,   194,   351,   449,   465,
+     437,    34,   453,   524,   282,   528,   112,   113,   114,   115,
+     246,   116,   269,   149,   247,    35,   480,   248,   249,   119,
+     487,   539,   205,   354,   205,   170,   171,   194,   250,    39,
+     206,   207,   206,   207,   467,   525,   421,   305,    51,   423,
+     468,   469,     8,  -261,   272,   274,   275,    53,   526,   -44,
+     481,    66,   336,     2,   482,    67,    54,   483,   159,   160,
+     161,   162,    73,   192,    55,    56,    75,    77,    53,   341,
+     352,     5,    84,    68,    85,   223,    69,    52,  -167,    46,
+      47,    48,    49,   310,  -167,   321,  -167,  -167,  -167,   372,
+     373,   110,   111,   336,   538,   460,   125,   461,    68,   117,
+     118,    69,   127,  -167,  -167,  -167,   271,  -167,   128,   154,
+     149,   311,   155,   277,   458,   163,   278,   459,   353,   164,
+     355,   112,   113,   114,   115,   455,   116,   137,   518,   333,
+     165,   519,   365,   145,   119,   368,  -167,  -167,  -167,  -167,
+     130,     8,   168,   169,   443,   336,    53,  -167,   -45,   387,
+     391,  -167,   131,  -167,   175,    54,   312,   313,   314,   315,
+     316,   317,   393,    55,    56,   132,   133,   134,   135,   136,
+     173,   318,   174,   178,    53,   179,   180,  -167,  -167,  -167,
+    -167,  -167,  -167,   181,   182,  -167,   187,   188,  -167,  -167,
+    -167,   189,   190,   343,   193,   112,   113,   114,   115,  -167,
+     116,   199,   216,    68,   117,   118,    69,   215,   119,   219,
+     282,   463,   464,   537,     1,   218,   220,     2,     3,     4,
+     221,   112,   113,   114,   115,   246,   116,   229,   268,   247,
+     456,   230,   248,   497,   119,     5,   -21,     6,   273,   284,
+     502,     7,   285,   387,   466,   286,   290,   289,   472,   305,
+     325,   326,   474,   329,   338,   363,   366,   369,   374,   478,
+     387,   375,   380,   485,   387,  -259,   488,  -260,   419,   490,
+     422,   420,   424,   425,   427,   447,   428,   429,   451,   494,
+     495,   446,   112,   113,   114,   115,   246,   116,   454,   535,
+     344,   117,   118,   345,   346,   119,   457,   499,   471,   112,
+     113,   114,   115,   473,   116,     8,   347,   348,   349,   475,
+     476,     9,   119,   489,   491,   391,   517,   492,   520,    10,
+     521,   529,   493,   522,   503,   523,   504,   112,   113,   114,
+     115,   505,   116,   506,   530,    68,   117,   118,    69,   394,
+     119,   509,   515,   531,   532,   395,   396,   533,   536,    76,
+     251,   397,   398,   399,   400,   401,   402,   403,    32,   392,
+     146,   201,   138,   404,   405,   406,   407,   292,   293,   294,
+     295,   296,   297,   298,   299,   222,   300,   301,   302,   303,
+     304,   112,   113,   114,   115,   140,   116,   477,   516,    68,
+     117,   118,    69,   141,   119,   224,   376,   445,   322,   198,
+     147,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,   323,    97,    98,    99,   287,   408,   342,   409,
+     143,   200,   226,     0,     0,   410,   411,   412,   413,   414,
+     415,   416,   417,   112,   113,   114,   115,   140,   116,     0,
+       0,    68,   117,   118,    69,   141,   119,     0,   112,   113,
+     114,   115,   305,   116,   306,   307,    68,   117,   118,    69,
+       0,   119,   112,   113,   114,   115,    40,   116,     0,     0,
+     339,     0,     0,   340,    43,   119,   112,   113,   114,   115,
+       0,   116,     0,     0,   384,   117,   118,    69,     0,   119,
+     112,   113,   114,   115,     0,   116,     0,     0,   388,   117,
+     118,    69,     0,   119,   112,   113,   114,   115,     0,   116,
+       0,     0,   479,   117,   118,    69,     0,   119,   112,   113,
+     114,   115,     0,   116,     0,     0,   486,   117,   118,    69,
+       0,   119,   112,   113,   114,   115,     0,   116,     0,     0,
+     444,   112,   113,   114,   115,   119,   116,     0,     0,   496,
+       0,     0,     0,     0,   119
 };
 
 static const yytype_int16 yycheck[] =
 {
-      79,    64,   130,   222,   111,   182,   341,   236,     1,   342,
-      11,     4,    70,     4,    29,   432,     4,    10,     4,    12,
-      13,    14,    29,     4,     5,    16,    14,     8,     9,    15,
-     477,     4,   479,     4,   195,    70,    29,    30,    31,     4,
-      33,   111,    30,   111,    59,   107,   114,    50,    51,    52,
-      53,    32,    59,   115,    14,   183,   217,    18,    19,    20,
-      21,   112,   281,    24,   245,   284,   285,   111,   126,    62,
-      63,    64,    65,     4,   122,    70,     7,     8,     9,   119,
-      73,    38,    83,   107,    77,   125,    79,   111,    76,    80,
-      71,   126,    78,    70,    25,   324,    27,    70,   327,    70,
-      31,   229,   181,   436,   107,    70,    70,   100,   111,   188,
-     103,   104,   105,   106,   107,   108,    70,   245,   111,   122,
-     453,   114,   115,   116,   457,   542,   254,   234,   109,    86,
-     311,   126,   125,   111,    29,   312,   117,   118,    99,   368,
-       4,   220,   371,   103,   104,   105,   106,   107,   108,   126,
-       0,   111,   112,   113,   114,   115,   116,     4,   237,   238,
-     239,    70,   126,     4,    95,   293,    61,   127,   128,   129,
-     101,    10,   126,    10,   123,    12,    13,    14,   109,    74,
-       8,     9,   310,   311,    75,    50,    51,    52,    53,     4,
-      81,    82,    29,    30,    31,     4,    33,   276,   427,   278,
-     429,   111,   330,   331,    32,   540,   334,   111,   137,   138,
-     114,     7,   111,   112,   113,   114,    55,    56,    57,    58,
-      59,    60,   123,   351,   107,    62,    63,    64,    65,    25,
-     111,    70,   311,   114,   313,    31,    73,   414,   111,   112,
-      77,     7,    79,    71,   112,   113,   325,   176,   177,   328,
-     111,   111,   111,   114,   114,     4,   102,   385,   386,    25,
-     100,     4,   124,   342,   343,    31,   103,   104,   105,   106,
-     107,   108,   121,   111,   111,   111,   355,   114,   115,   116,
-      17,   109,   112,     4,    21,     4,   115,    24,   125,   117,
-     118,   125,   103,   104,   105,   106,    70,   108,    14,    95,
-     111,   112,   113,   114,   100,   116,   102,   107,   125,   125,
-     111,   111,   125,   109,   114,   115,    14,   125,   125,   125,
-     539,   117,   118,   451,   111,   108,   433,   434,   121,    95,
-     121,   100,   122,   111,   100,    70,   102,   126,   126,     4,
-     126,   126,   126,   109,   423,   126,   474,   126,   123,     4,
-     123,   117,   118,   481,   124,   123,    71,   436,   437,    70,
-       4,   107,   441,     4,     4,     4,   445,   125,     4,    70,
-      70,   119,   125,   452,   453,   125,    10,   456,   457,    10,
-     459,   107,   107,   462,   107,    22,   125,   103,   104,   105,
-     106,   125,   108,   472,   473,   111,   112,   113,   114,   123,
-     116,    10,   530,   125,    10,   103,   104,   105,   106,    99,
-     108,    70,   475,   111,   112,   113,   114,   121,   116,   121,
-     103,   104,   105,   106,   107,   108,   121,    22,   111,   508,
-     509,   114,   511,   116,   513,    42,    22,   516,    22,   518,
-     121,    48,    49,     4,     4,     4,    22,    54,    55,    56,
-      57,    58,    59,    60,   123,   126,   126,     4,   125,    66,
-      67,    68,    69,    34,    35,    36,    37,    38,    39,    40,
-      41,   125,    43,    44,    45,    46,    47,   103,   104,   105,
-     106,   107,   108,    22,    22,   111,   112,   113,   114,   115,
-     116,     4,     4,   126,   126,    12,   122,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,     4,    96,
-      97,    98,     4,   120,     4,   122,     4,   229,    59,   351,
-     128,   128,   129,   130,   131,   132,   133,   134,   135,   103,
-     104,   105,   106,   107,   108,   217,   189,   111,   112,   113,
-     114,   115,   116,   109,   218,   451,   508,   279,   119,   279,
-     121,   122,   103,   104,   105,   106,   107,   108,   334,   386,
-     111,   254,   183,   114,   115,   116,   103,   104,   105,   106,
-     310,   108,   188,   220,   111,   112,   113,   114,    -1,   116,
+      78,    64,   128,   110,   178,   336,   217,     4,    11,   111,
+      18,    19,    20,    21,   231,   337,    24,    70,     4,    16,
+      29,   427,   112,    10,   191,    12,    13,    14,     4,     4,
+       5,     8,     9,     8,     9,     4,     4,     4,    14,    70,
+      38,   240,    29,    30,    31,   212,    33,    15,    70,    29,
+      59,   111,    70,   179,    30,    32,    70,    32,   107,    70,
+     472,   122,   474,   107,     7,   276,   115,   111,   279,   280,
+     114,   115,   111,   126,     4,    62,    63,    64,    65,    59,
+      83,   107,    25,    80,    70,   111,    73,    85,    31,     0,
+      77,    99,    79,   123,    71,   126,    71,     4,   224,   177,
+      76,    70,   319,    70,   126,   322,   184,   306,   126,   431,
+      78,    70,   126,    29,   240,   126,   103,   104,   105,   106,
+     107,   108,   229,   249,   111,     4,   448,   114,   115,   116,
+     452,   537,   109,   307,   109,   135,   136,   215,   125,     4,
+     117,   118,   117,   118,    75,    61,   363,   119,     4,   366,
+      81,    82,    95,   125,   232,   233,   234,   100,    74,   102,
+      17,   111,   288,     7,    21,   123,   109,    24,    50,    51,
+      52,    53,   107,   173,   117,   118,     4,   102,   100,   305,
+     306,    25,     4,   111,   124,     1,   114,    31,     4,    50,
+      51,    52,    53,   271,    10,   273,    12,    13,    14,   325,
+     326,   121,   111,   329,   535,   422,   111,   424,   111,   112,
+     113,   114,     4,    29,    30,    31,    14,    33,   115,   111,
+     346,    10,   114,   111,   111,   107,   114,   114,   306,   111,
+     308,   103,   104,   105,   106,   409,   108,     4,   111,   111,
+     122,   114,   320,    70,   116,   323,    62,    63,    64,    65,
+     125,    95,   111,   111,   380,   381,   100,    73,   102,   337,
+     338,    77,   125,    79,   100,   109,    55,    56,    57,    58,
+      59,    60,   350,   117,   118,   125,   125,   125,   125,   125,
+     121,    70,   108,   122,   100,    70,   126,   103,   104,   105,
+     106,   107,   108,   126,   126,   111,   126,   126,   114,   115,
+     116,   126,   126,    14,   123,   103,   104,   105,   106,   125,
+     108,   123,   123,   111,   112,   113,   114,   124,   116,     4,
+     446,   428,   429,   534,     4,   111,     4,     7,     8,     9,
+      71,   103,   104,   105,   106,   107,   108,    70,   107,   111,
+     418,     4,   114,   469,   116,    25,   111,    27,    14,     4,
+     476,    31,     4,   431,   432,     4,     4,   125,   436,   119,
+      70,    70,   440,   125,   125,    10,    10,   107,   107,   447,
+     448,   107,    22,   451,   452,   125,   454,   125,   123,   457,
+      10,   125,    10,    99,    70,    22,   121,   121,    22,   467,
+     468,   121,   103,   104,   105,   106,   107,   108,    22,   525,
+     111,   112,   113,   114,   115,   116,   121,   470,     4,   103,
+     104,   105,   106,     4,   108,    95,   127,   128,   129,     4,
+      22,   101,   116,   123,   126,   503,   504,   126,   506,   109,
+     508,   126,     4,   511,   125,   513,    22,   103,   104,   105,
+     106,   125,   108,    22,   126,   111,   112,   113,   114,    42,
+     116,     4,     4,     4,     4,    48,    49,     4,     4,    59,
+     224,    54,    55,    56,    57,    58,    59,    60,    12,   346,
+     126,   185,   108,    66,    67,    68,    69,    34,    35,    36,
+      37,    38,    39,    40,    41,   212,    43,    44,    45,    46,
+      47,   103,   104,   105,   106,   107,   108,   446,   503,   111,
+     112,   113,   114,   115,   116,   213,   329,   381,   274,   179,
+     122,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,   274,    96,    97,    98,   249,   120,   305,   122,
+     111,   184,   215,    -1,    -1,   128,   129,   130,   131,   132,
+     133,   134,   135,   103,   104,   105,   106,   107,   108,    -1,
+      -1,   111,   112,   113,   114,   115,   116,    -1,   103,   104,
+     105,   106,   119,   108,   121,   122,   111,   112,   113,   114,
+      -1,   116,   103,   104,   105,   106,   107,   108,    -1,    -1,
+     111,    -1,    -1,   114,   115,   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,    -1,   108,    -1,    -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,
-     103,   104,   105,   106,   116,   108,    -1,    -1,   111,   103,
-     104,   105,   106,   116,   108,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   116
+      -1,    -1,    -1,    -1,   116
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -2375,60 +2272,59 @@
 static const yytype_uint16 yystos[] =
 {
        0,     4,     7,     8,     9,    25,    27,    31,    95,   101,
-     109,   137,   138,   139,   140,   141,   143,   144,   156,   159,
-     164,   111,   112,   111,   122,   160,   165,   145,   111,   157,
-       4,     0,   139,     4,    70,     4,   123,   161,   162,     4,
-     107,   111,   114,   115,   251,   252,    50,    51,    52,    53,
-     223,     4,    31,   100,   109,   117,   118,   140,   146,   150,
-     151,   158,   159,   212,   213,   214,   111,   123,   111,   114,
-     163,   263,   166,   107,   147,   148,     4,   151,   102,    14,
-      30,    76,   152,   153,   214,     4,   124,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    96,    97,
-      98,   172,   173,   174,   175,   176,   177,   178,   186,   187,
-     188,   121,   112,   111,   103,   104,   105,   106,   108,   112,
-     113,   116,   247,   255,   262,   263,   264,   111,   154,     4,
-     115,   263,   125,   125,   125,   125,   125,   125,   125,     4,
-     188,   264,   107,   115,   253,   254,   255,   254,    70,   186,
-     122,   155,   247,   248,   249,   250,   254,   111,   114,   149,
-     107,   111,    50,    51,    52,    53,   107,   111,   122,   179,
-     180,   111,   111,   149,   149,   167,   121,   121,   108,   100,
-     258,   259,   122,    70,   126,   126,   126,   256,   257,    70,
-     126,   126,   126,   126,   126,   168,   149,   149,   123,   255,
-     260,   261,   256,   250,   123,   260,   180,     4,     5,    32,
-     109,   117,   118,   141,   142,   169,   181,   209,   210,   211,
-     124,   123,   170,   111,     4,     4,    71,   211,     1,   212,
-     215,   261,   171,   223,    70,     4,    10,    12,    13,    14,
-      29,    30,    31,    33,    62,    63,    64,    65,    73,    77,
-      79,   107,   111,   114,   115,   125,   146,   182,   197,   199,
-     205,   207,   219,   224,   228,   230,   232,   233,   234,   242,
-     243,   244,   247,   107,   264,   253,    14,   255,    14,   255,
-     255,   220,   111,   114,   221,   222,   234,   247,   229,     4,
-       4,     4,   248,   225,   125,     4,   235,    34,    35,    36,
-      37,    38,    39,    40,    41,    43,    44,    45,    46,    47,
-     119,   121,   122,   231,   195,   255,    10,    55,    56,    57,
-      58,    59,    60,    70,   245,   246,   255,   245,   246,   223,
-      70,    70,   223,   223,   125,   183,   198,   200,   111,   240,
-     241,   247,   206,   125,   111,   114,   247,   252,    14,   111,
-     114,   115,   127,   128,   129,   226,   234,   247,   255,   256,
-     255,    18,    19,    20,    21,    24,    99,   196,    10,   253,
-     255,    10,   253,   255,   107,   216,   217,   247,   247,   107,
-     107,   241,   190,   201,   202,    22,    70,   126,   195,   111,
-     208,   237,   255,   111,   236,   237,   255,   155,   255,    42,
-      48,    49,    54,    55,    56,    57,    58,    59,    60,    66,
-      67,    68,    69,   120,   122,   128,   129,   130,   131,   132,
-     133,   134,   135,   227,   123,   125,   253,    10,   253,    10,
-      99,   218,    70,   121,   121,   126,    11,    83,   185,   191,
-       4,    15,    78,   203,     4,    16,    80,   204,   247,   111,
-     240,   121,    22,    70,   126,   238,    22,    70,   126,    22,
-     256,   255,   121,   111,   114,   253,   253,   217,   264,   264,
-     237,   255,    75,    81,    82,   189,     4,   255,     4,   255,
-       4,    22,   233,   255,   111,   237,    17,    21,    24,   239,
-     255,   111,   237,   255,   123,   255,   126,   126,     4,   255,
-     255,   111,   247,   184,   214,   238,   238,   247,   125,    22,
-     125,    22,     4,    70,     4,     4,    70,     4,    70,   192,
-       4,   236,   255,   111,   114,   255,   255,   255,   255,    29,
-      61,    74,   193,   126,   126,   126,     4,     4,     4,   194,
-     247,     4,   223,   195,   217
+     109,   137,   138,   139,   140,   141,   143,   144,   155,   158,
+     163,   111,   112,   111,   122,   159,   164,   145,   111,   156,
+       4,     0,   139,     4,    70,     4,   123,   160,   161,     4,
+     107,   111,   114,   115,   250,   251,    50,    51,    52,    53,
+     222,     4,    31,   100,   109,   117,   118,   140,   146,   149,
+     150,   157,   158,   211,   212,   213,   111,   123,   111,   114,
+     162,   262,   165,   107,   147,     4,   150,   102,    14,    30,
+      76,   151,   152,   213,     4,   124,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    96,    97,    98,
+     171,   172,   173,   174,   175,   176,   177,   185,   186,   187,
+     121,   111,   103,   104,   105,   106,   108,   112,   113,   116,
+     246,   254,   261,   262,   263,   111,   153,     4,   115,   262,
+     125,   125,   125,   125,   125,   125,   125,     4,   187,   263,
+     107,   115,   252,   253,   254,    70,   185,   122,   154,   246,
+     247,   248,   249,   253,   111,   114,   148,   107,   111,    50,
+      51,    52,    53,   107,   111,   122,   178,   179,   111,   111,
+     148,   148,   166,   121,   108,   100,   257,   258,   122,    70,
+     126,   126,   126,   255,   256,    70,   126,   126,   126,   126,
+     126,   167,   148,   123,   254,   259,   260,   255,   249,   123,
+     259,   179,     4,     5,    32,   109,   117,   118,   141,   142,
+     168,   180,   208,   209,   210,   124,   123,   169,   111,     4,
+       4,    71,   210,     1,   211,   214,   260,   170,   222,    70,
+       4,    10,    12,    13,    14,    29,    30,    31,    33,    62,
+      63,    64,    65,    73,    77,    79,   107,   111,   114,   115,
+     125,   146,   181,   196,   198,   204,   206,   218,   223,   227,
+     229,   231,   232,   233,   241,   242,   243,   246,   107,   263,
+     252,    14,   254,    14,   254,   254,   219,   111,   114,   220,
+     221,   233,   246,   228,     4,     4,     4,   247,   224,   125,
+       4,   234,    34,    35,    36,    37,    38,    39,    40,    41,
+      43,    44,    45,    46,    47,   119,   121,   122,   230,   194,
+     254,    10,    55,    56,    57,    58,    59,    60,    70,   244,
+     245,   254,   244,   245,   222,    70,    70,   222,   222,   125,
+     182,   197,   199,   111,   239,   240,   246,   205,   125,   111,
+     114,   246,   251,    14,   111,   114,   115,   127,   128,   129,
+     225,   233,   246,   254,   255,   254,    18,    19,    20,    21,
+      24,    99,   195,    10,   252,   254,    10,   252,   254,   107,
+     215,   216,   246,   246,   107,   107,   240,   189,   200,   201,
+      22,    70,   126,   194,   111,   207,   236,   254,   111,   235,
+     236,   254,   154,   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,
+     125,   252,    10,   252,    10,    99,   217,    70,   121,   121,
+     126,    11,    83,   184,   190,     4,    15,    78,   202,     4,
+      16,    80,   203,   246,   111,   239,   121,    22,    70,   126,
+     237,    22,    70,   126,    22,   255,   254,   121,   111,   114,
+     252,   252,   216,   263,   263,   236,   254,    75,    81,    82,
+     188,     4,   254,     4,   254,     4,    22,   232,   254,   111,
+     236,    17,    21,    24,   238,   254,   111,   236,   254,   123,
+     254,   126,   126,     4,   254,   254,   111,   246,   183,   213,
+     237,   237,   246,   125,    22,   125,    22,     4,    70,     4,
+       4,    70,     4,    70,   191,     4,   235,   254,   111,   114,
+     254,   254,   254,   254,    29,    61,    74,   192,   126,   126,
+     126,     4,     4,     4,   193,   246,     4,   222,   194,   216
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2443,18 +2339,9 @@
 
 /* Like YYERROR except do call yyerror.  This remains here temporarily
    to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  However,
-   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
-   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
-   discussed.  */
+   Once GCC version 2 has supplanted version 1, this can go.  */
 
 #define YYFAIL		goto yyerrlab
-#if defined YYFAIL
-  /* This is here to suppress warnings from the GCC cpp's
-     -Wunused-macros.  Normally we don't worry about that warning, but
-     some users do, and we want to make it easy for users to remove
-     YYFAIL uses, which will produce warnings from Bison 2.5.  */
-#endif
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -2511,7 +2398,7 @@
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+# if YYLTYPE_IS_TRIVIAL
 #  define YY_LOCATION_PRINT(File, Loc)			\
      fprintf (File, "%d.%d-%d.%d",			\
 	      (Loc).first_line, (Loc).first_column,	\
@@ -2628,20 +2515,17 @@
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
 #else
 static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
+yy_stack_print (bottom, top)
+    yytype_int16 *bottom;
+    yytype_int16 *top;
 #endif
 {
   YYFPRINTF (stderr, "Stack now");
-  for (; yybottom <= yytop; yybottom++)
-    {
-      int yybot = *yybottom;
-      YYFPRINTF (stderr, " %d", yybot);
-    }
+  for (; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
   YYFPRINTF (stderr, "\n");
 }
 
@@ -2677,11 +2561,11 @@
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
-      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
+      fprintf (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
 		       &(yyvsp[(yyi + 1) - (yynrhs)])
 		       		       , yyscanner, interp);
-      YYFPRINTF (stderr, "\n");
+      fprintf (stderr, "\n");
     }
 }
 
@@ -2965,8 +2849,10 @@
 	break;
     }
 }
+
 
 /* Prevent warnings from -Wmissing-prototypes.  */
+
 #ifdef YYPARSE_PARAM
 #if defined __STDC__ || defined __cplusplus
 int yyparse (void *YYPARSE_PARAM);
@@ -2985,9 +2871,10 @@
 
 
 
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
+
+/*----------.
+| yyparse.  |
+`----------*/
 
 #ifdef YYPARSE_PARAM
 #if (defined __STDC__ || defined __C99__FUNC__ \
@@ -3012,46 +2899,22 @@
 #endif
 #endif
 {
-/* The lookahead symbol.  */
+  /* The look-ahead symbol.  */
 int yychar;
 
-/* The semantic value of the lookahead symbol.  */
+/* The semantic value of the look-ahead symbol.  */
 YYSTYPE yylval;
 
-    /* Number of syntax errors so far.  */
-    int yynerrs;
-
-    int yystate;
-    /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus;
-
-    /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
-
-       Refer to the stacks thru separate pointers, to allow yyoverflow
-       to reallocate them elsewhere.  */
-
-    /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
-
-    /* The semantic value stack.  */
-    YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs;
-    YYSTYPE *yyvsp;
-
-    YYSIZE_T yystacksize;
+/* Number of syntax errors so far.  */
+int yynerrs;
 
+  int yystate;
   int yyn;
   int yyresult;
-  /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
-
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
 #if YYERROR_VERBOSE
   /* Buffer for error messages, and its allocated size.  */
   char yymsgbuf[128];
@@ -3059,28 +2922,51 @@
   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
 #endif
 
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  yytype_int16 yyssa[YYINITDEPTH];
+  yytype_int16 *yyss = yyssa;
+  yytype_int16 *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
   /* The number of symbols on the RHS of the reduced rule.
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
-  yystacksize = YYINITDEPTH;
-
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
   yynerrs = 0;
-  yychar = YYEMPTY; /* Cause a token to be read.  */
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
 
   /* Initialize stack pointers.
      Waste one element of value and location stack
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
+
   yyssp = yyss;
   yyvsp = yyvs;
 
@@ -3110,6 +2996,7 @@
 	YYSTYPE *yyvs1 = yyvs;
 	yytype_int16 *yyss1 = yyss;
 
+
 	/* Each stack pointer address is followed by the size of the
 	   data in use in that stack, in bytes.  This used to be a
 	   conditional around just the two extra args, but that might
@@ -3117,6 +3004,7 @@
 	yyoverflow (YY_("memory exhausted"),
 		    &yyss1, yysize * sizeof (*yyssp),
 		    &yyvs1, yysize * sizeof (*yyvsp),
+
 		    &yystacksize);
 
 	yyss = yyss1;
@@ -3139,8 +3027,9 @@
 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
 	if (! yyptr)
 	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
 #  undef YYSTACK_RELOCATE
 	if (yyss1 != yyssa)
 	  YYSTACK_FREE (yyss1);
@@ -3151,6 +3040,7 @@
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
+
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
 		  (unsigned long int) yystacksize));
 
@@ -3160,9 +3050,6 @@
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
-  if (yystate == YYFINAL)
-    YYACCEPT;
-
   goto yybackup;
 
 /*-----------.
@@ -3171,16 +3058,16 @@
 yybackup:
 
   /* Do appropriate processing given the current state.  Read a
-     lookahead token if we need one and don't already have one.  */
+     look-ahead token if we need one and don't already have one.  */
 
-  /* First try to decide what to do without reference to lookahead token.  */
+  /* First try to decide what to do without reference to look-ahead token.  */
   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a lookahead token if don't already have one.  */
+  /* Not known => get a look-ahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
@@ -3212,16 +3099,20 @@
       goto yyreduce;
     }
 
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
   /* Count tokens shifted since error; after three, turn off error
      status.  */
   if (yyerrstatus)
     yyerrstatus--;
 
-  /* Shift the lookahead token.  */
+  /* Shift the look-ahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
+  /* Discard the shifted token unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
 
   yystate = yyn;
   *++yyvsp = yylval;
@@ -3261,30 +3152,22 @@
   switch (yyn)
     {
         case 2:
-
-/* Line 1464 of yacc.c  */
-#line 1166 "compilers/imcc/imcc.y"
+#line 1081 "compilers/imcc/imcc.y"
     { if (yynerrs) YYABORT; (yyval.i) = 0; }
     break;
 
   case 5:
-
-/* Line 1464 of yacc.c  */
-#line 1175 "compilers/imcc/imcc.y"
+#line 1090 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 6:
-
-/* Line 1464 of yacc.c  */
-#line 1176 "compilers/imcc/imcc.y"
+#line 1091 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 7:
-
-/* Line 1464 of yacc.c  */
-#line 1178 "compilers/imcc/imcc.y"
+#line 1093 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3293,9 +3176,7 @@
     break;
 
   case 8:
-
-/* Line 1464 of yacc.c  */
-#line 1184 "compilers/imcc/imcc.y"
+#line 1099 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3304,44 +3185,32 @@
     break;
 
   case 9:
-
-/* Line 1464 of yacc.c  */
-#line 1189 "compilers/imcc/imcc.y"
+#line 1104 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 10:
-
-/* Line 1464 of yacc.c  */
-#line 1190 "compilers/imcc/imcc.y"
+#line 1105 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 11:
-
-/* Line 1464 of yacc.c  */
-#line 1191 "compilers/imcc/imcc.y"
+#line 1106 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 12:
-
-/* Line 1464 of yacc.c  */
-#line 1192 "compilers/imcc/imcc.y"
+#line 1107 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 13:
-
-/* Line 1464 of yacc.c  */
-#line 1196 "compilers/imcc/imcc.y"
+#line 1111 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 14:
-
-/* Line 1464 of yacc.c  */
-#line 1198 "compilers/imcc/imcc.y"
+#line 1113 "compilers/imcc/imcc.y"
     {
            (yyval.i) = 0;
            do_loadlib(interp, (yyvsp[(2) - (3)].s));
@@ -3350,9 +3219,7 @@
     break;
 
   case 15:
-
-/* Line 1464 of yacc.c  */
-#line 1207 "compilers/imcc/imcc.y"
+#line 1122 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
            /* set_filename() frees the STRINGC */
@@ -3361,9 +3228,7 @@
     break;
 
   case 16:
-
-/* Line 1464 of yacc.c  */
-#line 1213 "compilers/imcc/imcc.y"
+#line 1128 "compilers/imcc/imcc.y"
     {
            /* set_filename() frees the STRINGC */
            set_filename(interp, (yyvsp[(2) - (3)].s));
@@ -3371,9 +3236,7 @@
     break;
 
   case 17:
-
-/* Line 1464 of yacc.c  */
-#line 1221 "compilers/imcc/imcc.y"
+#line 1136 "compilers/imcc/imcc.y"
     {
           /* We'll want to store an entry while emitting instructions, so just
            * store annotation like it's an instruction. */
@@ -3384,9 +3247,7 @@
     break;
 
   case 18:
-
-/* Line 1464 of yacc.c  */
-#line 1233 "compilers/imcc/imcc.y"
+#line 1148 "compilers/imcc/imcc.y"
     {
             STRING * const hll_name = Parrot_str_unescape(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
             Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp),
@@ -3399,16 +3260,12 @@
     break;
 
   case 19:
-
-/* Line 1464 of yacc.c  */
-#line 1245 "compilers/imcc/imcc.y"
+#line 1160 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 20:
-
-/* Line 1464 of yacc.c  */
-#line 1246 "compilers/imcc/imcc.y"
+#line 1161 "compilers/imcc/imcc.y"
     {
              mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
              mem_sys_free((yyvsp[(4) - (6)].s));
@@ -3417,34 +3274,12 @@
     break;
 
   case 21:
-
-/* Line 1464 of yacc.c  */
-#line 1254 "compilers/imcc/imcc.y"
+#line 1169 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 22:
-
-/* Line 1464 of yacc.c  */
-#line 1255 "compilers/imcc/imcc.y"
-    {
-           (yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
-           mem_sys_free((yyvsp[(6) - (6)].s));
-           IMCC_INFO(interp)->is_def = 0;
-         }
-    break;
-
-  case 23:
-
-/* Line 1464 of yacc.c  */
-#line 1261 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->is_def = 1; }
-    break;
-
-  case 24:
-
-/* Line 1464 of yacc.c  */
-#line 1262 "compilers/imcc/imcc.y"
+#line 1170 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
            mem_sys_free((yyvsp[(3) - (6)].s));
@@ -3453,52 +3288,38 @@
          }
     break;
 
-  case 29:
-
-/* Line 1464 of yacc.c  */
-#line 1280 "compilers/imcc/imcc.y"
+  case 27:
+#line 1188 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
-  case 30:
-
-/* Line 1464 of yacc.c  */
-#line 1281 "compilers/imcc/imcc.y"
+  case 28:
+#line 1189 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
-  case 31:
-
-/* Line 1464 of yacc.c  */
-#line 1282 "compilers/imcc/imcc.y"
+  case 29:
+#line 1190 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
-  case 32:
-
-/* Line 1464 of yacc.c  */
-#line 1283 "compilers/imcc/imcc.y"
+  case 30:
+#line 1191 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
-  case 33:
-
-/* Line 1464 of yacc.c  */
-#line 1284 "compilers/imcc/imcc.y"
+  case 31:
+#line 1192 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 36:
-
-/* Line 1464 of yacc.c  */
-#line 1289 "compilers/imcc/imcc.y"
+  case 34:
+#line 1197 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
-  case 37:
-
-/* Line 1464 of yacc.c  */
-#line 1291 "compilers/imcc/imcc.y"
+  case 35:
+#line 1199 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
                     (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs,
@@ -3507,20 +3328,16 @@
          }
     break;
 
-  case 38:
-
-/* Line 1464 of yacc.c  */
-#line 1298 "compilers/imcc/imcc.y"
+  case 36:
+#line 1206 "compilers/imcc/imcc.y"
     {
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
          }
     break;
 
-  case 39:
-
-/* Line 1464 of yacc.c  */
-#line 1303 "compilers/imcc/imcc.y"
+  case 37:
+#line 1211 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iSUBROUTINE(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -3530,19 +3347,15 @@
          }
     break;
 
-  case 40:
-
-/* Line 1464 of yacc.c  */
-#line 1311 "compilers/imcc/imcc.y"
+  case 38:
+#line 1219 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
          }
     break;
 
-  case 41:
-
-/* Line 1464 of yacc.c  */
-#line 1315 "compilers/imcc/imcc.y"
+  case 39:
+#line 1223 "compilers/imcc/imcc.y"
     {
            char   *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1);
            SymReg *r    = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s));
@@ -3557,24 +3370,18 @@
          }
     break;
 
-  case 42:
-
-/* Line 1464 of yacc.c  */
-#line 1327 "compilers/imcc/imcc.y"
+  case 40:
+#line 1235 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
-  case 44:
-
-/* Line 1464 of yacc.c  */
-#line 1335 "compilers/imcc/imcc.y"
+  case 42:
+#line 1243 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
     break;
 
-  case 45:
-
-/* Line 1464 of yacc.c  */
-#line 1338 "compilers/imcc/imcc.y"
+  case 43:
+#line 1246 "compilers/imcc/imcc.y"
     {
            /* if (optimizer_level & OPT_PASM)
                          imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3584,10 +3391,8 @@
          }
     break;
 
-  case 48:
-
-/* Line 1464 of yacc.c  */
-#line 1354 "compilers/imcc/imcc.y"
+  case 46:
+#line 1262 "compilers/imcc/imcc.y"
     {
            int re_open = 0;
            (yyval.i) = 0;
@@ -3601,33 +3406,25 @@
          }
     break;
 
-  case 49:
-
-/* Line 1464 of yacc.c  */
-#line 1368 "compilers/imcc/imcc.y"
+  case 47:
+#line 1276 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
-  case 50:
-
-/* Line 1464 of yacc.c  */
-#line 1369 "compilers/imcc/imcc.y"
+  case 48:
+#line 1277 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
-  case 51:
-
-/* Line 1464 of yacc.c  */
-#line 1373 "compilers/imcc/imcc.y"
+  case 49:
+#line 1281 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
          }
     break;
 
-  case 52:
-
-/* Line 1464 of yacc.c  */
-#line 1377 "compilers/imcc/imcc.y"
+  case 50:
+#line 1285 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -3635,45 +3432,35 @@
          }
     break;
 
-  case 53:
-
-/* Line 1464 of yacc.c  */
-#line 1385 "compilers/imcc/imcc.y"
+  case 51:
+#line 1293 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 54:
-
-/* Line 1464 of yacc.c  */
-#line 1387 "compilers/imcc/imcc.y"
+  case 52:
+#line 1295 "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 55:
-
-/* Line 1464 of yacc.c  */
-#line 1395 "compilers/imcc/imcc.y"
+  case 53:
+#line 1303 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
          }
     break;
 
-  case 56:
-
-/* Line 1464 of yacc.c  */
-#line 1399 "compilers/imcc/imcc.y"
+  case 54:
+#line 1307 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
          }
     break;
 
-  case 57:
-
-/* Line 1464 of yacc.c  */
-#line 1403 "compilers/imcc/imcc.y"
+  case 55:
+#line 1311 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t);
           if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid) {
@@ -3683,31 +3470,23 @@
         }
     break;
 
-  case 58:
-
-/* Line 1464 of yacc.c  */
-#line 1411 "compilers/imcc/imcc.y"
+  case 56:
+#line 1319 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
-  case 59:
-
-/* Line 1464 of yacc.c  */
-#line 1415 "compilers/imcc/imcc.y"
+  case 57:
+#line 1323 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 60:
-
-/* Line 1464 of yacc.c  */
-#line 1416 "compilers/imcc/imcc.y"
+  case 58:
+#line 1324 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 61:
-
-/* Line 1464 of yacc.c  */
-#line 1418 "compilers/imcc/imcc.y"
+  case 59:
+#line 1326 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                  add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
@@ -3719,24 +3498,18 @@
          }
     break;
 
-  case 62:
-
-/* Line 1464 of yacc.c  */
-#line 1430 "compilers/imcc/imcc.y"
+  case 60:
+#line 1338 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
-  case 63:
-
-/* Line 1464 of yacc.c  */
-#line 1430 "compilers/imcc/imcc.y"
+  case 61:
+#line 1338 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(3) - (3)].sr); IMCC_INFO(interp)->is_def = 0; }
     break;
 
-  case 64:
-
-/* Line 1464 of yacc.c  */
-#line 1435 "compilers/imcc/imcc.y"
+  case 62:
+#line 1343 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(3) - (3)].t) & VT_OPT_FLAG && (yyvsp[(1) - (3)].t) != 'I') {
                const char *type;
@@ -3758,17 +3531,13 @@
           }
     break;
 
-  case 65:
-
-/* Line 1464 of yacc.c  */
-#line 1459 "compilers/imcc/imcc.y"
+  case 63:
+#line 1367 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 66:
-
-/* Line 1464 of yacc.c  */
-#line 1464 "compilers/imcc/imcc.y"
+  case 64:
+#line 1372 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
@@ -3776,10 +3545,8 @@
          }
     break;
 
-  case 67:
-
-/* Line 1464 of yacc.c  */
-#line 1470 "compilers/imcc/imcc.y"
+  case 65:
+#line 1378 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3787,10 +3554,8 @@
          }
     break;
 
-  case 68:
-
-/* Line 1464 of yacc.c  */
-#line 1479 "compilers/imcc/imcc.y"
+  case 66:
+#line 1387 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name      = NULL;
@@ -3798,10 +3563,8 @@
          }
     break;
 
-  case 69:
-
-/* Line 1464 of yacc.c  */
-#line 1485 "compilers/imcc/imcc.y"
+  case 67:
+#line 1393 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name      = (yyvsp[(3) - (4)].s);
@@ -3809,10 +3572,8 @@
          }
     break;
 
-  case 70:
-
-/* Line 1464 of yacc.c  */
-#line 1494 "compilers/imcc/imcc.y"
+  case 68:
+#line 1402 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = NULL;
@@ -3820,10 +3581,8 @@
          }
     break;
 
-  case 71:
-
-/* Line 1464 of yacc.c  */
-#line 1500 "compilers/imcc/imcc.y"
+  case 69:
+#line 1408 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
@@ -3831,10 +3590,8 @@
          }
     break;
 
-  case 72:
-
-/* Line 1464 of yacc.c  */
-#line 1509 "compilers/imcc/imcc.y"
+  case 70:
+#line 1417 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_NSENTRY;
            IMCC_INFO(interp)->cur_unit->ns_entry_name     = NULL;
@@ -3842,10 +3599,8 @@
          }
     break;
 
-  case 73:
-
-/* Line 1464 of yacc.c  */
-#line 1515 "compilers/imcc/imcc.y"
+  case 71:
+#line 1423 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_NSENTRY;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
@@ -3853,30 +3608,24 @@
          }
     break;
 
-  case 74:
-
-/* Line 1464 of yacc.c  */
-#line 1524 "compilers/imcc/imcc.y"
+  case 72:
+#line 1432 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
          }
     break;
 
-  case 75:
-
-/* Line 1464 of yacc.c  */
-#line 1532 "compilers/imcc/imcc.y"
+  case 73:
+#line 1440 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = NULL;
          }
     break;
 
-  case 76:
-
-/* Line 1464 of yacc.c  */
-#line 1537 "compilers/imcc/imcc.y"
+  case 74:
+#line 1445 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3885,67 +3634,51 @@
          }
     break;
 
-  case 77:
-
-/* Line 1464 of yacc.c  */
-#line 1547 "compilers/imcc/imcc.y"
+  case 75:
+#line 1455 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, NULL);
          }
     break;
 
-  case 78:
-
-/* Line 1464 of yacc.c  */
-#line 1551 "compilers/imcc/imcc.y"
+  case 76:
+#line 1459 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
          }
     break;
 
-  case 79:
-
-/* Line 1464 of yacc.c  */
-#line 1556 "compilers/imcc/imcc.y"
+  case 77:
+#line 1464 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
          }
     break;
 
-  case 80:
-
-/* Line 1464 of yacc.c  */
-#line 1563 "compilers/imcc/imcc.y"
+  case 78:
+#line 1471 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
     break;
 
-  case 81:
-
-/* Line 1464 of yacc.c  */
-#line 1564 "compilers/imcc/imcc.y"
+  case 79:
+#line 1472 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
     break;
 
-  case 82:
-
-/* Line 1464 of yacc.c  */
-#line 1565 "compilers/imcc/imcc.y"
+  case 80:
+#line 1473 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
     break;
 
-  case 83:
-
-/* Line 1464 of yacc.c  */
-#line 1566 "compilers/imcc/imcc.y"
+  case 81:
+#line 1474 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
     break;
 
-  case 84:
-
-/* Line 1464 of yacc.c  */
-#line 1568 "compilers/imcc/imcc.y"
+  case 82:
+#line 1476 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3958,10 +3691,8 @@
          }
     break;
 
-  case 85:
-
-/* Line 1464 of yacc.c  */
-#line 1579 "compilers/imcc/imcc.y"
+  case 83:
+#line 1487 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3974,17 +3705,13 @@
          }
     break;
 
-  case 86:
-
-/* Line 1464 of yacc.c  */
-#line 1589 "compilers/imcc/imcc.y"
+  case 84:
+#line 1497 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
-  case 89:
-
-/* Line 1464 of yacc.c  */
-#line 1599 "compilers/imcc/imcc.y"
+  case 87:
+#line 1507 "compilers/imcc/imcc.y"
     {
            char name[128];
            SymReg *r, *r1;
@@ -4008,188 +3735,140 @@
          }
     break;
 
-  case 90:
-
-/* Line 1464 of yacc.c  */
-#line 1625 "compilers/imcc/imcc.y"
+  case 88:
+#line 1533 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
-  case 91:
-
-/* Line 1464 of yacc.c  */
-#line 1629 "compilers/imcc/imcc.y"
+  case 89:
+#line 1537 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
-  case 92:
-
-/* Line 1464 of yacc.c  */
-#line 1630 "compilers/imcc/imcc.y"
+  case 90:
+#line 1538 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
-  case 93:
-
-/* Line 1464 of yacc.c  */
-#line 1634 "compilers/imcc/imcc.y"
+  case 91:
+#line 1542 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
-  case 94:
-
-/* Line 1464 of yacc.c  */
-#line 1635 "compilers/imcc/imcc.y"
+  case 92:
+#line 1543 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
     break;
 
-  case 95:
-
-/* Line 1464 of yacc.c  */
-#line 1639 "compilers/imcc/imcc.y"
+  case 93:
+#line 1547 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 97:
-
-/* Line 1464 of yacc.c  */
-#line 1644 "compilers/imcc/imcc.y"
+  case 95:
+#line 1552 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
-  case 98:
-
-/* Line 1464 of yacc.c  */
-#line 1645 "compilers/imcc/imcc.y"
+  case 96:
+#line 1553 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
-  case 99:
-
-/* Line 1464 of yacc.c  */
-#line 1649 "compilers/imcc/imcc.y"
+  case 97:
+#line 1557 "compilers/imcc/imcc.y"
     { (yyval.t) = P_LOAD; }
     break;
 
-  case 100:
-
-/* Line 1464 of yacc.c  */
-#line 1650 "compilers/imcc/imcc.y"
+  case 98:
+#line 1558 "compilers/imcc/imcc.y"
     { (yyval.t) = P_INIT; }
     break;
 
-  case 101:
-
-/* Line 1464 of yacc.c  */
-#line 1651 "compilers/imcc/imcc.y"
+  case 99:
+#line 1559 "compilers/imcc/imcc.y"
     { (yyval.t) = P_MAIN; }
     break;
 
-  case 102:
-
-/* Line 1464 of yacc.c  */
-#line 1652 "compilers/imcc/imcc.y"
+  case 100:
+#line 1560 "compilers/imcc/imcc.y"
     { (yyval.t) = P_IMMEDIATE; }
     break;
 
-  case 103:
-
-/* Line 1464 of yacc.c  */
-#line 1653 "compilers/imcc/imcc.y"
+  case 101:
+#line 1561 "compilers/imcc/imcc.y"
     { (yyval.t) = P_POSTCOMP; }
     break;
 
-  case 104:
-
-/* Line 1464 of yacc.c  */
-#line 1654 "compilers/imcc/imcc.y"
+  case 102:
+#line 1562 "compilers/imcc/imcc.y"
     { (yyval.t) = P_ANON; }
     break;
 
-  case 105:
-
-/* Line 1464 of yacc.c  */
-#line 1655 "compilers/imcc/imcc.y"
+  case 103:
+#line 1563 "compilers/imcc/imcc.y"
     { (yyval.t) = P_NEED_LEX; }
     break;
 
-  case 113:
-
-/* Line 1464 of yacc.c  */
-#line 1667 "compilers/imcc/imcc.y"
+  case 111:
+#line 1575 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
          }
     break;
 
-  case 114:
-
-/* Line 1464 of yacc.c  */
-#line 1672 "compilers/imcc/imcc.y"
+  case 112:
+#line 1580 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
-  case 115:
-
-/* Line 1464 of yacc.c  */
-#line 1676 "compilers/imcc/imcc.y"
+  case 113:
+#line 1584 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
-  case 116:
-
-/* Line 1464 of yacc.c  */
-#line 1680 "compilers/imcc/imcc.y"
+  case 114:
+#line 1588 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
-  case 117:
-
-/* Line 1464 of yacc.c  */
-#line 1684 "compilers/imcc/imcc.y"
+  case 115:
+#line 1592 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
          }
     break;
 
-  case 118:
-
-/* Line 1464 of yacc.c  */
-#line 1688 "compilers/imcc/imcc.y"
+  case 116:
+#line 1596 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
          }
     break;
 
-  case 119:
-
-/* Line 1464 of yacc.c  */
-#line 1693 "compilers/imcc/imcc.y"
+  case 117:
+#line 1601 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
          }
     break;
 
-  case 120:
-
-/* Line 1464 of yacc.c  */
-#line 1701 "compilers/imcc/imcc.y"
+  case 118:
+#line 1609 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 121:
-
-/* Line 1464 of yacc.c  */
-#line 1702 "compilers/imcc/imcc.y"
+  case 119:
+#line 1610 "compilers/imcc/imcc.y"
     {
                                  if (IMCC_INFO(interp)->adv_named_id) {
                                      add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
@@ -4201,48 +3880,36 @@
                                }
     break;
 
-  case 122:
-
-/* Line 1464 of yacc.c  */
-#line 1714 "compilers/imcc/imcc.y"
+  case 120:
+#line 1622 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
-  case 123:
-
-/* Line 1464 of yacc.c  */
-#line 1719 "compilers/imcc/imcc.y"
+  case 121:
+#line 1627 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 124:
-
-/* Line 1464 of yacc.c  */
-#line 1721 "compilers/imcc/imcc.y"
+  case 122:
+#line 1629 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
-  case 125:
-
-/* Line 1464 of yacc.c  */
-#line 1728 "compilers/imcc/imcc.y"
+  case 123:
+#line 1636 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
-  case 126:
-
-/* Line 1464 of yacc.c  */
-#line 1729 "compilers/imcc/imcc.y"
+  case 124:
+#line 1637 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
-  case 127:
-
-/* Line 1464 of yacc.c  */
-#line 1730 "compilers/imcc/imcc.y"
+  case 125:
+#line 1638 "compilers/imcc/imcc.y"
     {
            IdList * const l = (yyvsp[(4) - (4)].idlist);
            SymReg *ignored;
@@ -4253,227 +3920,169 @@
          }
     break;
 
-  case 128:
-
-/* Line 1464 of yacc.c  */
-#line 1741 "compilers/imcc/imcc.y"
+  case 126:
+#line 1649 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 129:
-
-/* Line 1464 of yacc.c  */
-#line 1742 "compilers/imcc/imcc.y"
+  case 127:
+#line 1650 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
-  case 130:
-
-/* Line 1464 of yacc.c  */
-#line 1746 "compilers/imcc/imcc.y"
+  case 128:
+#line 1654 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;   }
     break;
 
-  case 131:
-
-/* Line 1464 of yacc.c  */
-#line 1747 "compilers/imcc/imcc.y"
+  case 129:
+#line 1655 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPTIONAL; }
     break;
 
-  case 132:
-
-/* Line 1464 of yacc.c  */
-#line 1748 "compilers/imcc/imcc.y"
+  case 130:
+#line 1656 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPT_FLAG; }
     break;
 
-  case 133:
-
-/* Line 1464 of yacc.c  */
-#line 1749 "compilers/imcc/imcc.y"
+  case 131:
+#line 1657 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
-  case 134:
-
-/* Line 1464 of yacc.c  */
-#line 1750 "compilers/imcc/imcc.y"
+  case 132:
+#line 1658 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = VT_NAMED; mem_sys_free((yyvsp[(3) - (4)].s)); }
     break;
 
-  case 135:
-
-/* Line 1464 of yacc.c  */
-#line 1751 "compilers/imcc/imcc.y"
+  case 133:
+#line 1659 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = VT_NAMED; mem_sys_free((yyvsp[(3) - (4)].s)); }
     break;
 
-  case 136:
-
-/* Line 1464 of yacc.c  */
-#line 1752 "compilers/imcc/imcc.y"
+  case 134:
+#line 1660 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 137:
-
-/* Line 1464 of yacc.c  */
-#line 1753 "compilers/imcc/imcc.y"
+  case 135:
+#line 1661 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_CALL_SIG; }
     break;
 
-  case 138:
-
-/* Line 1464 of yacc.c  */
-#line 1758 "compilers/imcc/imcc.y"
+  case 136:
+#line 1666 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 0); }
     break;
 
-  case 139:
-
-/* Line 1464 of yacc.c  */
-#line 1760 "compilers/imcc/imcc.y"
+  case 137:
+#line 1668 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
-  case 140:
-
-/* Line 1464 of yacc.c  */
-#line 1762 "compilers/imcc/imcc.y"
+  case 138:
+#line 1670 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
            (yyval.i) = 0;
          }
     break;
 
-  case 141:
-
-/* Line 1464 of yacc.c  */
-#line 1769 "compilers/imcc/imcc.y"
+  case 139:
+#line 1677 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); }
     break;
 
-  case 142:
-
-/* Line 1464 of yacc.c  */
-#line 1771 "compilers/imcc/imcc.y"
+  case 140:
+#line 1679 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
-  case 143:
-
-/* Line 1464 of yacc.c  */
-#line 1775 "compilers/imcc/imcc.y"
+  case 141:
+#line 1683 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 144:
-
-/* Line 1464 of yacc.c  */
-#line 1777 "compilers/imcc/imcc.y"
+  case 142:
+#line 1685 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
          }
     break;
 
-  case 145:
-
-/* Line 1464 of yacc.c  */
-#line 1782 "compilers/imcc/imcc.y"
+  case 143:
+#line 1690 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
          }
     break;
 
-  case 146:
-
-/* Line 1464 of yacc.c  */
-#line 1789 "compilers/imcc/imcc.y"
+  case 144:
+#line 1697 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 147:
-
-/* Line 1464 of yacc.c  */
-#line 1791 "compilers/imcc/imcc.y"
+  case 145:
+#line 1699 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
          }
     break;
 
-  case 148:
-
-/* Line 1464 of yacc.c  */
-#line 1796 "compilers/imcc/imcc.y"
+  case 146:
+#line 1704 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
          }
     break;
 
-  case 149:
-
-/* Line 1464 of yacc.c  */
-#line 1803 "compilers/imcc/imcc.y"
+  case 147:
+#line 1711 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
-  case 150:
-
-/* Line 1464 of yacc.c  */
-#line 1807 "compilers/imcc/imcc.y"
+  case 148:
+#line 1715 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
-  case 151:
-
-/* Line 1464 of yacc.c  */
-#line 1812 "compilers/imcc/imcc.y"
+  case 149:
+#line 1720 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
               begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
         }
     break;
 
-  case 152:
-
-/* Line 1464 of yacc.c  */
-#line 1817 "compilers/imcc/imcc.y"
+  case 150:
+#line 1725 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
           (yyval.t) = 0;
         }
     break;
 
-  case 153:
-
-/* Line 1464 of yacc.c  */
-#line 1824 "compilers/imcc/imcc.y"
+  case 151:
+#line 1732 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 154:
-
-/* Line 1464 of yacc.c  */
-#line 1825 "compilers/imcc/imcc.y"
+  case 152:
+#line 1733 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
-  case 155:
-
-/* Line 1464 of yacc.c  */
-#line 1829 "compilers/imcc/imcc.y"
+  case 153:
+#line 1737 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 156:
-
-/* Line 1464 of yacc.c  */
-#line 1831 "compilers/imcc/imcc.y"
+  case 154:
+#line 1739 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -4485,20 +4094,16 @@
          }
     break;
 
-  case 157:
-
-/* Line 1464 of yacc.c  */
-#line 1841 "compilers/imcc/imcc.y"
+  case 155:
+#line 1749 "compilers/imcc/imcc.y"
     {
             SymReg * const name = mk_const(interp, (yyvsp[(1) - (3)].s), 'S');
             add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, (yyvsp[(3) - (3)].sr));
          }
     break;
 
-  case 158:
-
-/* Line 1464 of yacc.c  */
-#line 1846 "compilers/imcc/imcc.y"
+  case 156:
+#line 1754 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -4510,76 +4115,56 @@
          }
     break;
 
-  case 159:
-
-/* Line 1464 of yacc.c  */
-#line 1856 "compilers/imcc/imcc.y"
+  case 157:
+#line 1764 "compilers/imcc/imcc.y"
     {
            SymReg * const name = mk_const(interp, (yyvsp[(3) - (5)].s), 'S');
            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, (yyvsp[(5) - (5)].sr));
          }
     break;
 
-  case 162:
-
-/* Line 1464 of yacc.c  */
-#line 1877 "compilers/imcc/imcc.y"
+  case 160:
+#line 1785 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
-  case 163:
-
-/* Line 1464 of yacc.c  */
-#line 1882 "compilers/imcc/imcc.y"
+  case 161:
+#line 1790 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (2)].i); }
-    break;
-
-  case 164:
+    break;
 
-/* Line 1464 of yacc.c  */
-#line 1883 "compilers/imcc/imcc.y"
+  case 162:
+#line 1791 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 165:
-
-/* Line 1464 of yacc.c  */
-#line 1884 "compilers/imcc/imcc.y"
+  case 163:
+#line 1792 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 166:
-
-/* Line 1464 of yacc.c  */
-#line 1885 "compilers/imcc/imcc.y"
+  case 164:
+#line 1793 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 167:
-
-/* Line 1464 of yacc.c  */
-#line 1886 "compilers/imcc/imcc.y"
+  case 165:
+#line 1794 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 168:
-
-/* Line 1464 of yacc.c  */
-#line 1887 "compilers/imcc/imcc.y"
+  case 166:
+#line 1795 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 169:
-
-/* Line 1464 of yacc.c  */
-#line 1891 "compilers/imcc/imcc.y"
+  case 167:
+#line 1799 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
-  case 173:
-
-/* Line 1464 of yacc.c  */
-#line 1902 "compilers/imcc/imcc.y"
+  case 171:
+#line 1810 "compilers/imcc/imcc.y"
     {
              Instruction * const i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
              mem_sys_free((yyvsp[(1) - (1)].s));
@@ -4587,17 +4172,13 @@
          }
     break;
 
-  case 174:
-
-/* Line 1464 of yacc.c  */
-#line 1912 "compilers/imcc/imcc.y"
+  case 172:
+#line 1820 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
-  case 175:
-
-/* Line 1464 of yacc.c  */
-#line 1914 "compilers/imcc/imcc.y"
+  case 173:
+#line 1822 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
                IMCC_warning(interp, "Too many errors. Correct some first.\n");
@@ -4607,10 +4188,8 @@
          }
     break;
 
-  case 176:
-
-/* Line 1464 of yacc.c  */
-#line 1925 "compilers/imcc/imcc.y"
+  case 174:
+#line 1833 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(1) - (1)].idlist);
            l->next = NULL;
@@ -4618,10 +4197,8 @@
          }
     break;
 
-  case 177:
-
-/* Line 1464 of yacc.c  */
-#line 1932 "compilers/imcc/imcc.y"
+  case 175:
+#line 1840 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(3) - (3)].idlist);
            l->next = (yyvsp[(1) - (3)].idlist);
@@ -4629,10 +4206,8 @@
          }
     break;
 
-  case 178:
-
-/* Line 1464 of yacc.c  */
-#line 1941 "compilers/imcc/imcc.y"
+  case 176:
+#line 1849 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_gc_allocate_n_zeroed_typed(interp, 1, IdList);
            l->id           = (yyvsp[(1) - (2)].s);
@@ -4640,17 +4215,13 @@
          }
     break;
 
-  case 183:
-
-/* Line 1464 of yacc.c  */
-#line 1957 "compilers/imcc/imcc.y"
+  case 181:
+#line 1865 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
-  case 184:
-
-/* Line 1464 of yacc.c  */
-#line 1958 "compilers/imcc/imcc.y"
+  case 182:
+#line 1866 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            while (l) {
@@ -4665,10 +4236,8 @@
          }
     break;
 
-  case 185:
-
-/* Line 1464 of yacc.c  */
-#line 1971 "compilers/imcc/imcc.y"
+  case 183:
+#line 1879 "compilers/imcc/imcc.y"
     {
             if ((yyvsp[(4) - (4)].sr)->set != 'P') {
                 mem_sys_free((yyvsp[(2) - (4)].s));
@@ -4687,10 +4256,8 @@
          }
     break;
 
-  case 186:
-
-/* Line 1464 of yacc.c  */
-#line 1988 "compilers/imcc/imcc.y"
+  case 184:
+#line 1896 "compilers/imcc/imcc.y"
     {
             if ((yyvsp[(4) - (4)].sr)->set != 'P') {
                 mem_sys_free((yyvsp[(2) - (4)].s));
@@ -4705,17 +4272,13 @@
          }
     break;
 
-  case 187:
-
-/* Line 1464 of yacc.c  */
-#line 2000 "compilers/imcc/imcc.y"
+  case 185:
+#line 1908 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
-  case 188:
-
-/* Line 1464 of yacc.c  */
-#line 2001 "compilers/imcc/imcc.y"
+  case 186:
+#line 1909 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
            IMCC_INFO(interp)->is_def = 0;
@@ -4723,17 +4286,13 @@
          }
     break;
 
-  case 190:
-
-/* Line 1464 of yacc.c  */
-#line 2008 "compilers/imcc/imcc.y"
+  case 188:
+#line 1916 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
-  case 191:
-
-/* Line 1464 of yacc.c  */
-#line 2009 "compilers/imcc/imcc.y"
+  case 189:
+#line 1917 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
            IMCC_INFO(interp)->is_def = 0;
@@ -4741,10 +4300,8 @@
          }
     break;
 
-  case 192:
-
-/* Line 1464 of yacc.c  */
-#line 2015 "compilers/imcc/imcc.y"
+  case 190:
+#line 1923 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
            IMCC_INFO(interp)->cur_call->pcc_sub->tailcall = 1;
@@ -4752,19 +4309,15 @@
          }
     break;
 
-  case 193:
-
-/* Line 1464 of yacc.c  */
-#line 2021 "compilers/imcc/imcc.y"
+  case 191:
+#line 1929 "compilers/imcc/imcc.y"
     {
             (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
          }
     break;
 
-  case 194:
-
-/* Line 1464 of yacc.c  */
-#line 2025 "compilers/imcc/imcc.y"
+  case 192:
+#line 1933 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -4778,101 +4331,73 @@
          }
     break;
 
-  case 195:
-
-/* Line 1464 of yacc.c  */
-#line 2036 "compilers/imcc/imcc.y"
+  case 193:
+#line 1944 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
-  case 196:
-
-/* Line 1464 of yacc.c  */
-#line 2037 "compilers/imcc/imcc.y"
+  case 194:
+#line 1945 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
-  case 197:
-
-/* Line 1464 of yacc.c  */
-#line 2038 "compilers/imcc/imcc.y"
+  case 195:
+#line 1946 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 200:
-
-/* Line 1464 of yacc.c  */
-#line 2041 "compilers/imcc/imcc.y"
+  case 198:
+#line 1949 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
-  case 201:
-
-/* Line 1464 of yacc.c  */
-#line 2045 "compilers/imcc/imcc.y"
+  case 199:
+#line 1953 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; }
     break;
 
-  case 202:
-
-/* Line 1464 of yacc.c  */
-#line 2046 "compilers/imcc/imcc.y"
+  case 200:
+#line 1954 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; }
     break;
 
-  case 203:
-
-/* Line 1464 of yacc.c  */
-#line 2047 "compilers/imcc/imcc.y"
+  case 201:
+#line 1955 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; }
     break;
 
-  case 204:
-
-/* Line 1464 of yacc.c  */
-#line 2048 "compilers/imcc/imcc.y"
+  case 202:
+#line 1956 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; }
     break;
 
-  case 205:
-
-/* Line 1464 of yacc.c  */
-#line 2053 "compilers/imcc/imcc.y"
+  case 203:
+#line 1961 "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 206:
-
-/* Line 1464 of yacc.c  */
-#line 2055 "compilers/imcc/imcc.y"
+  case 204:
+#line 1963 "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 207:
-
-/* Line 1464 of yacc.c  */
-#line 2057 "compilers/imcc/imcc.y"
+  case 205:
+#line 1965 "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 208:
-
-/* Line 1464 of yacc.c  */
-#line 2059 "compilers/imcc/imcc.y"
+  case 206:
+#line 1967 "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 209:
-
-/* Line 1464 of yacc.c  */
-#line 2061 "compilers/imcc/imcc.y"
+  case 207:
+#line 1969 "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 210:
-
-/* Line 1464 of yacc.c  */
-#line 2064 "compilers/imcc/imcc.y"
+  case 208:
+#line 1972 "compilers/imcc/imcc.y"
     {
            add_pcc_result(interp, (yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4880,220 +4405,160 @@
          }
     break;
 
-  case 211:
-
-/* Line 1464 of yacc.c  */
-#line 2070 "compilers/imcc/imcc.y"
+  case 209:
+#line 1978 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
          }
     break;
 
-  case 212:
-
-/* Line 1464 of yacc.c  */
-#line 2074 "compilers/imcc/imcc.y"
+  case 210:
+#line 1982 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
          }
     break;
 
-  case 216:
-
-/* Line 1464 of yacc.c  */
-#line 2082 "compilers/imcc/imcc.y"
+  case 214:
+#line 1990 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
          }
     break;
 
-  case 217:
-
-/* Line 1464 of yacc.c  */
-#line 2089 "compilers/imcc/imcc.y"
+  case 215:
+#line 1997 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
-  case 218:
-
-/* Line 1464 of yacc.c  */
-#line 2090 "compilers/imcc/imcc.y"
+  case 216:
+#line 1998 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
-  case 219:
-
-/* Line 1464 of yacc.c  */
-#line 2091 "compilers/imcc/imcc.y"
+  case 217:
+#line 1999 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
-  case 220:
-
-/* Line 1464 of yacc.c  */
-#line 2095 "compilers/imcc/imcc.y"
+  case 218:
+#line 2003 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 221:
-
-/* Line 1464 of yacc.c  */
-#line 2096 "compilers/imcc/imcc.y"
+  case 219:
+#line 2004 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
-  case 222:
-
-/* Line 1464 of yacc.c  */
-#line 2097 "compilers/imcc/imcc.y"
+  case 220:
+#line 2005 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 223:
-
-/* Line 1464 of yacc.c  */
-#line 2098 "compilers/imcc/imcc.y"
+  case 221:
+#line 2006 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
-  case 224:
-
-/* Line 1464 of yacc.c  */
-#line 2099 "compilers/imcc/imcc.y"
+  case 222:
+#line 2007 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 225:
-
-/* Line 1464 of yacc.c  */
-#line 2100 "compilers/imcc/imcc.y"
+  case 223:
+#line 2008 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 226:
-
-/* Line 1464 of yacc.c  */
-#line 2101 "compilers/imcc/imcc.y"
+  case 224:
+#line 2009 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
-  case 227:
-
-/* Line 1464 of yacc.c  */
-#line 2102 "compilers/imcc/imcc.y"
+  case 225:
+#line 2010 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 228:
-
-/* Line 1464 of yacc.c  */
-#line 2103 "compilers/imcc/imcc.y"
+  case 226:
+#line 2011 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
-  case 229:
-
-/* Line 1464 of yacc.c  */
-#line 2104 "compilers/imcc/imcc.y"
+  case 227:
+#line 2012 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
-  case 230:
-
-/* Line 1464 of yacc.c  */
-#line 2105 "compilers/imcc/imcc.y"
+  case 228:
+#line 2013 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
-  case 231:
-
-/* Line 1464 of yacc.c  */
-#line 2106 "compilers/imcc/imcc.y"
+  case 229:
+#line 2014 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
-  case 232:
-
-/* Line 1464 of yacc.c  */
-#line 2107 "compilers/imcc/imcc.y"
+  case 230:
+#line 2015 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
-  case 233:
-
-/* Line 1464 of yacc.c  */
-#line 2108 "compilers/imcc/imcc.y"
+  case 231:
+#line 2016 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
-  case 234:
-
-/* Line 1464 of yacc.c  */
-#line 2109 "compilers/imcc/imcc.y"
+  case 232:
+#line 2017 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 235:
-
-/* Line 1464 of yacc.c  */
-#line 2110 "compilers/imcc/imcc.y"
+  case 233:
+#line 2018 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 236:
-
-/* Line 1464 of yacc.c  */
-#line 2111 "compilers/imcc/imcc.y"
+  case 234:
+#line 2019 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 237:
-
-/* Line 1464 of yacc.c  */
-#line 2112 "compilers/imcc/imcc.y"
+  case 235:
+#line 2020 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
-  case 238:
-
-/* Line 1464 of yacc.c  */
-#line 2113 "compilers/imcc/imcc.y"
+  case 236:
+#line 2021 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
-  case 239:
-
-/* Line 1464 of yacc.c  */
-#line 2114 "compilers/imcc/imcc.y"
+  case 237:
+#line 2022 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
-  case 240:
-
-/* Line 1464 of yacc.c  */
-#line 2115 "compilers/imcc/imcc.y"
+  case 238:
+#line 2023 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
-  case 241:
-
-/* Line 1464 of yacc.c  */
-#line 2116 "compilers/imcc/imcc.y"
+  case 239:
+#line 2024 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 242:
-
-/* Line 1464 of yacc.c  */
-#line 2117 "compilers/imcc/imcc.y"
+  case 240:
+#line 2025 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 243:
-
-/* Line 1464 of yacc.c  */
-#line 2123 "compilers/imcc/imcc.y"
+  case 241:
+#line 2031 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
@@ -5101,115 +4566,83 @@
          }
     break;
 
-  case 244:
-
-/* Line 1464 of yacc.c  */
-#line 2128 "compilers/imcc/imcc.y"
+  case 242:
+#line 2036 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
-  case 245:
-
-/* Line 1464 of yacc.c  */
-#line 2135 "compilers/imcc/imcc.y"
+  case 243:
+#line 2043 "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 246:
-
-/* Line 1464 of yacc.c  */
-#line 2139 "compilers/imcc/imcc.y"
+  case 244:
+#line 2047 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
-  case 247:
-
-/* Line 1464 of yacc.c  */
-#line 2140 "compilers/imcc/imcc.y"
+  case 245:
+#line 2048 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 248:
-
-/* Line 1464 of yacc.c  */
-#line 2141 "compilers/imcc/imcc.y"
+  case 246:
+#line 2049 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 249:
-
-/* Line 1464 of yacc.c  */
-#line 2142 "compilers/imcc/imcc.y"
+  case 247:
+#line 2050 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
-  case 250:
-
-/* Line 1464 of yacc.c  */
-#line 2143 "compilers/imcc/imcc.y"
+  case 248:
+#line 2051 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 251:
-
-/* Line 1464 of yacc.c  */
-#line 2144 "compilers/imcc/imcc.y"
+  case 249:
+#line 2052 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 252:
-
-/* Line 1464 of yacc.c  */
-#line 2145 "compilers/imcc/imcc.y"
+  case 250:
+#line 2053 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 253:
-
-/* Line 1464 of yacc.c  */
-#line 2146 "compilers/imcc/imcc.y"
+  case 251:
+#line 2054 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
-  case 254:
-
-/* Line 1464 of yacc.c  */
-#line 2147 "compilers/imcc/imcc.y"
+  case 252:
+#line 2055 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 255:
-
-/* Line 1464 of yacc.c  */
-#line 2148 "compilers/imcc/imcc.y"
+  case 253:
+#line 2056 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 256:
-
-/* Line 1464 of yacc.c  */
-#line 2149 "compilers/imcc/imcc.y"
+  case 254:
+#line 2057 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 257:
-
-/* Line 1464 of yacc.c  */
-#line 2150 "compilers/imcc/imcc.y"
+  case 255:
+#line 2058 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 258:
-
-/* Line 1464 of yacc.c  */
-#line 2151 "compilers/imcc/imcc.y"
+  case 256:
+#line 2059 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 259:
-
-/* Line 1464 of yacc.c  */
-#line 2157 "compilers/imcc/imcc.y"
+  case 257:
+#line 2065 "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,
@@ -5219,31 +4652,23 @@
        }
     break;
 
-  case 260:
-
-/* Line 1464 of yacc.c  */
-#line 2167 "compilers/imcc/imcc.y"
+  case 258:
+#line 2075 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));       mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 261:
-
-/* Line 1464 of yacc.c  */
-#line 2168 "compilers/imcc/imcc.y"
+  case 259:
+#line 2076 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 262:
-
-/* Line 1464 of yacc.c  */
-#line 2169 "compilers/imcc/imcc.y"
+  case 260:
+#line 2077 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));     mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 263:
-
-/* Line 1464 of yacc.c  */
-#line 2171 "compilers/imcc/imcc.y"
+  case 261:
+#line 2079 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -5251,10 +4676,8 @@
          }
     break;
 
-  case 264:
-
-/* Line 1464 of yacc.c  */
-#line 2177 "compilers/imcc/imcc.y"
+  case 262:
+#line 2085 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
             const char * const name = (yyvsp[(3) - (3)].sr)->name;
@@ -5270,10 +4693,8 @@
         }
     break;
 
-  case 265:
-
-/* Line 1464 of yacc.c  */
-#line 2191 "compilers/imcc/imcc.y"
+  case 263:
+#line 2099 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'U');
@@ -5281,10 +4702,8 @@
          }
     break;
 
-  case 266:
-
-/* Line 1464 of yacc.c  */
-#line 2197 "compilers/imcc/imcc.y"
+  case 264:
+#line 2105 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -5292,41 +4711,31 @@
          }
     break;
 
-  case 267:
-
-/* Line 1464 of yacc.c  */
-#line 2202 "compilers/imcc/imcc.y"
+  case 265:
+#line 2110 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
-  case 268:
-
-/* Line 1464 of yacc.c  */
-#line 2208 "compilers/imcc/imcc.y"
+  case 266:
+#line 2116 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
          }
     break;
 
-  case 269:
-
-/* Line 1464 of yacc.c  */
-#line 2212 "compilers/imcc/imcc.y"
+  case 267:
+#line 2120 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
-  case 270:
-
-/* Line 1464 of yacc.c  */
-#line 2216 "compilers/imcc/imcc.y"
+  case 268:
+#line 2124 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 271:
-
-/* Line 1464 of yacc.c  */
-#line 2218 "compilers/imcc/imcc.y"
+  case 269:
+#line 2126 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -5338,10 +4747,8 @@
          }
     break;
 
-  case 272:
-
-/* Line 1464 of yacc.c  */
-#line 2228 "compilers/imcc/imcc.y"
+  case 270:
+#line 2136 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -5353,10 +4760,8 @@
          }
     break;
 
-  case 273:
-
-/* Line 1464 of yacc.c  */
-#line 2238 "compilers/imcc/imcc.y"
+  case 271:
+#line 2146 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call,
@@ -5365,20 +4770,16 @@
          }
     break;
 
-  case 274:
-
-/* Line 1464 of yacc.c  */
-#line 2245 "compilers/imcc/imcc.y"
+  case 272:
+#line 2153 "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 275:
-
-/* Line 1464 of yacc.c  */
-#line 2250 "compilers/imcc/imcc.y"
+  case 273:
+#line 2158 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call,
@@ -5387,73 +4788,53 @@
          }
     break;
 
-  case 276:
-
-/* Line 1464 of yacc.c  */
-#line 2259 "compilers/imcc/imcc.y"
+  case 274:
+#line 2167 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 277:
-
-/* Line 1464 of yacc.c  */
-#line 2263 "compilers/imcc/imcc.y"
+  case 275:
+#line 2171 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 278:
-
-/* Line 1464 of yacc.c  */
-#line 2264 "compilers/imcc/imcc.y"
+  case 276:
+#line 2172 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
-  case 279:
-
-/* Line 1464 of yacc.c  */
-#line 2268 "compilers/imcc/imcc.y"
+  case 277:
+#line 2176 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;     }
     break;
 
-  case 280:
-
-/* Line 1464 of yacc.c  */
-#line 2269 "compilers/imcc/imcc.y"
+  case 278:
+#line 2177 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED;    }
     break;
 
-  case 281:
-
-/* Line 1464 of yacc.c  */
-#line 2270 "compilers/imcc/imcc.y"
+  case 279:
+#line 2178 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_CALL_SIG; }
     break;
 
-  case 282:
-
-/* Line 1464 of yacc.c  */
-#line 2272 "compilers/imcc/imcc.y"
+  case 280:
+#line 2180 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); mem_sys_free((yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
-  case 283:
-
-/* Line 1464 of yacc.c  */
-#line 2273 "compilers/imcc/imcc.y"
+  case 281:
+#line 2181 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   mem_sys_free((yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
-  case 284:
-
-/* Line 1464 of yacc.c  */
-#line 2277 "compilers/imcc/imcc.y"
+  case 282:
+#line 2185 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 285:
-
-/* Line 1464 of yacc.c  */
-#line 2282 "compilers/imcc/imcc.y"
+  case 283:
+#line 2190 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -5465,10 +4846,8 @@
          }
     break;
 
-  case 286:
-
-/* Line 1464 of yacc.c  */
-#line 2292 "compilers/imcc/imcc.y"
+  case 284:
+#line 2200 "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));
@@ -5476,10 +4855,8 @@
          }
     break;
 
-  case 287:
-
-/* Line 1464 of yacc.c  */
-#line 2298 "compilers/imcc/imcc.y"
+  case 285:
+#line 2206 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -5491,179 +4868,133 @@
          }
     break;
 
-  case 288:
-
-/* Line 1464 of yacc.c  */
-#line 2308 "compilers/imcc/imcc.y"
+  case 286:
+#line 2216 "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 289:
-
-/* Line 1464 of yacc.c  */
-#line 2312 "compilers/imcc/imcc.y"
+  case 287:
+#line 2220 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 290:
-
-/* Line 1464 of yacc.c  */
-#line 2316 "compilers/imcc/imcc.y"
+  case 288:
+#line 2224 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 291:
-
-/* Line 1464 of yacc.c  */
-#line 2317 "compilers/imcc/imcc.y"
+  case 289:
+#line 2225 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 292:
-
-/* Line 1464 of yacc.c  */
-#line 2322 "compilers/imcc/imcc.y"
+  case 290:
+#line 2230 "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 293:
-
-/* Line 1464 of yacc.c  */
-#line 2326 "compilers/imcc/imcc.y"
+  case 291:
+#line 2234 "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 294:
-
-/* Line 1464 of yacc.c  */
-#line 2330 "compilers/imcc/imcc.y"
+  case 292:
+#line 2238 "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 295:
-
-/* Line 1464 of yacc.c  */
-#line 2337 "compilers/imcc/imcc.y"
+  case 293:
+#line 2245 "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 296:
-
-/* Line 1464 of yacc.c  */
-#line 2341 "compilers/imcc/imcc.y"
+  case 294:
+#line 2249 "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 297:
-
-/* Line 1464 of yacc.c  */
-#line 2345 "compilers/imcc/imcc.y"
+  case 295:
+#line 2253 "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 298:
-
-/* Line 1464 of yacc.c  */
-#line 2351 "compilers/imcc/imcc.y"
+  case 296:
+#line 2259 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 299:
-
-/* Line 1464 of yacc.c  */
-#line 2352 "compilers/imcc/imcc.y"
+  case 297:
+#line 2260 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 300:
-
-/* Line 1464 of yacc.c  */
-#line 2356 "compilers/imcc/imcc.y"
+  case 298:
+#line 2264 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
-  case 301:
-
-/* Line 1464 of yacc.c  */
-#line 2357 "compilers/imcc/imcc.y"
+  case 299:
+#line 2265 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
-  case 302:
-
-/* Line 1464 of yacc.c  */
-#line 2358 "compilers/imcc/imcc.y"
+  case 300:
+#line 2266 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
-  case 303:
-
-/* Line 1464 of yacc.c  */
-#line 2359 "compilers/imcc/imcc.y"
+  case 301:
+#line 2267 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
-  case 304:
-
-/* Line 1464 of yacc.c  */
-#line 2360 "compilers/imcc/imcc.y"
+  case 302:
+#line 2268 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
-  case 305:
-
-/* Line 1464 of yacc.c  */
-#line 2361 "compilers/imcc/imcc.y"
+  case 303:
+#line 2269 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
-  case 308:
-
-/* Line 1464 of yacc.c  */
-#line 2370 "compilers/imcc/imcc.y"
+  case 306:
+#line 2278 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
-  case 309:
-
-/* Line 1464 of yacc.c  */
-#line 2371 "compilers/imcc/imcc.y"
+  case 307:
+#line 2279 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 310:
-
-/* Line 1464 of yacc.c  */
-#line 2375 "compilers/imcc/imcc.y"
+  case 308:
+#line 2283 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
-  case 312:
-
-/* Line 1464 of yacc.c  */
-#line 2380 "compilers/imcc/imcc.y"
+  case 310:
+#line 2288 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 313:
-
-/* Line 1464 of yacc.c  */
-#line 2382 "compilers/imcc/imcc.y"
+  case 311:
+#line 2290 "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);
@@ -5672,71 +5003,53 @@
          }
     break;
 
-  case 314:
-
-/* Line 1464 of yacc.c  */
-#line 2389 "compilers/imcc/imcc.y"
+  case 312:
+#line 2297 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
          }
     break;
 
-  case 316:
-
-/* Line 1464 of yacc.c  */
-#line 2396 "compilers/imcc/imcc.y"
+  case 314:
+#line 2304 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 317:
-
-/* Line 1464 of yacc.c  */
-#line 2397 "compilers/imcc/imcc.y"
+  case 315:
+#line 2305 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 318:
-
-/* Line 1464 of yacc.c  */
-#line 2401 "compilers/imcc/imcc.y"
+  case 316:
+#line 2309 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 319:
-
-/* Line 1464 of yacc.c  */
-#line 2402 "compilers/imcc/imcc.y"
+  case 317:
+#line 2310 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 320:
-
-/* Line 1464 of yacc.c  */
-#line 2406 "compilers/imcc/imcc.y"
+  case 318:
+#line 2314 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 321:
-
-/* Line 1464 of yacc.c  */
-#line 2407 "compilers/imcc/imcc.y"
+  case 319:
+#line 2315 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 326:
-
-/* Line 1464 of yacc.c  */
-#line 2421 "compilers/imcc/imcc.y"
+  case 324:
+#line 2329 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
          }
     break;
 
-  case 327:
-
-/* Line 1464 of yacc.c  */
-#line 2425 "compilers/imcc/imcc.y"
+  case 325:
+#line 2333 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5744,19 +5057,15 @@
          }
     break;
 
-  case 328:
-
-/* Line 1464 of yacc.c  */
-#line 2433 "compilers/imcc/imcc.y"
+  case 326:
+#line 2341 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
          }
     break;
 
-  case 329:
-
-/* Line 1464 of yacc.c  */
-#line 2437 "compilers/imcc/imcc.y"
+  case 327:
+#line 2345 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5764,106 +5073,79 @@
          }
     break;
 
-  case 330:
-
-/* Line 1464 of yacc.c  */
-#line 2445 "compilers/imcc/imcc.y"
+  case 328:
+#line 2353 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 331:
-
-/* Line 1464 of yacc.c  */
-#line 2447 "compilers/imcc/imcc.y"
+  case 329:
+#line 2355 "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 332:
-
-/* Line 1464 of yacc.c  */
-#line 2455 "compilers/imcc/imcc.y"
+  case 330:
+#line 2363 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
          }
     break;
 
-  case 333:
-
-/* Line 1464 of yacc.c  */
-#line 2461 "compilers/imcc/imcc.y"
+  case 331:
+#line 2369 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
-  case 334:
-
-/* Line 1464 of yacc.c  */
-#line 2462 "compilers/imcc/imcc.y"
+  case 332:
+#line 2370 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
-  case 335:
-
-/* Line 1464 of yacc.c  */
-#line 2463 "compilers/imcc/imcc.y"
+  case 333:
+#line 2371 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
-  case 336:
-
-/* Line 1464 of yacc.c  */
-#line 2464 "compilers/imcc/imcc.y"
+  case 334:
+#line 2372 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
-  case 337:
-
-/* Line 1464 of yacc.c  */
-#line 2465 "compilers/imcc/imcc.y"
+  case 335:
+#line 2373 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 338:
-
-/* Line 1464 of yacc.c  */
-#line 2469 "compilers/imcc/imcc.y"
+  case 336:
+#line 2377 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 339:
-
-/* Line 1464 of yacc.c  */
-#line 2470 "compilers/imcc/imcc.y"
+  case 337:
+#line 2378 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 340:
-
-/* Line 1464 of yacc.c  */
-#line 2474 "compilers/imcc/imcc.y"
+  case 338:
+#line 2382 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 341:
-
-/* Line 1464 of yacc.c  */
-#line 2475 "compilers/imcc/imcc.y"
+  case 339:
+#line 2383 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 342:
-
-/* Line 1464 of yacc.c  */
-#line 2476 "compilers/imcc/imcc.y"
+  case 340:
+#line 2384 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
 
-
-/* Line 1464 of yacc.c  */
-#line 5856 "compilers/imcc/imcparser.c"
+/* Line 1267 of yacc.c.  */
+#line 5138 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5874,6 +5156,7 @@
 
   *++yyvsp = yyval;
 
+
   /* Now `shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
@@ -5938,7 +5221,7 @@
 
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse lookahead token after an
+      /* If just tried and failed to reuse look-ahead token after an
 	 error, discard it.  */
 
       if (yychar <= YYEOF)
@@ -5955,7 +5238,7 @@
 	}
     }
 
-  /* Else will try to reuse lookahead token after shifting the error
+  /* Else will try to reuse look-ahead token after shifting the error
      token.  */
   goto yyerrlab1;
 
@@ -6012,6 +5295,9 @@
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
   *++yyvsp = yylval;
 
 
@@ -6036,7 +5322,7 @@
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#ifndef yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -6047,7 +5333,7 @@
 #endif
 
 yyreturn:
-  if (yychar != YYEMPTY)
+  if (yychar != YYEOF && yychar != YYEMPTY)
      yydestruct ("Cleanup: discarding lookahead",
 		 yytoken, &yylval, yyscanner, interp);
   /* Do not reclaim the symbols of the rule which action triggered
@@ -6073,9 +5359,7 @@
 }
 
 
-
-/* Line 1684 of yacc.c  */
-#line 2482 "compilers/imcc/imcc.y"
+#line 2390 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */

Modified: trunk/compilers/imcc/imcparser.h
==============================================================================
--- trunk/compilers/imcc/imcparser.h	Sat Sep 11 21:59:33 2010	(r48941)
+++ trunk/compilers/imcc/imcparser.h	Sat Sep 11 22:53:19 2010	(r48942)
@@ -9,25 +9,27 @@
  */
 /* HEADERIZER HFILE: none */
 /* HEADERIZER STOP */
-/* A Bison parser, made by GNU Bison 2.4.3.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-   2009, 2010 Free Software Foundation, Inc.
-   
-   This program is free software: you can redistribute it and/or modify
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-   
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -38,11 +40,10 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
@@ -292,27 +293,21 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
+#line 986 "compilers/imcc/imcc.y"
 {
-
-/* Line 1685 of yacc.c  */
-#line 1071 "compilers/imcc/imcc.y"
-
     IdList * idlist;
     int t;
     char * s;
     SymReg * sr;
     Instruction *i;
-
-
-
-/* Line 1685 of yacc.c  */
-#line 299 "compilers/imcc/imcparser.h"
-} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
+}
+/* Line 1489 of yacc.c.  */
+#line 295 "compilers/imcc/imcparser.h"
+	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
 
-


More information about the parrot-commits mailing list