develooper Front page | perl.cvs.parrot | Postings from January 2009

[svn:parrot] r35837 - trunk/compilers/pirc/src

From:
kjs
Date:
January 20, 2009 11:04
Subject:
[svn:parrot] r35837 - trunk/compilers/pirc/src
Message ID:
20090120190351.AA36ECB9AE@x12.develooper.com
Author: kjs
Date: Tue Jan 20 11:03:50 2009
New Revision: 35837

Modified:
   trunk/compilers/pirc/src/bcgen.c
   trunk/compilers/pirc/src/pir.y
   trunk/compilers/pirc/src/pircompiler.c
   trunk/compilers/pirc/src/piremit.c
   trunk/compilers/pirc/src/pirparser.c

Log:
[pirc] some slight refactoring of the grammar to allow a new line counting scheme. + other support stuff.

Modified: trunk/compilers/pirc/src/bcgen.c
==============================================================================
--- trunk/compilers/pirc/src/bcgen.c	(original)
+++ trunk/compilers/pirc/src/bcgen.c	Tue Jan 20 11:03:50 2009
@@ -440,8 +440,8 @@
 create_debugsegment(bytecode * const bc, size_t size, int sourceline, char const * const file) {
     bc->debug_seg = Parrot_new_debug_seg(bc->interp, bc->interp->code, size);
 
-    /* XXX why is the +1 needed? FIX! */
-    Parrot_debug_add_mapping(bc->interp, bc->debug_seg, sourceline + 1, file);
+
+    Parrot_debug_add_mapping(bc->interp, bc->debug_seg, sourceline, file);
 }
 
 /*

Modified: trunk/compilers/pirc/src/pir.y
==============================================================================
--- trunk/compilers/pirc/src/pir.y	(original)
+++ trunk/compilers/pirc/src/pir.y	Tue Jan 20 11:03:50 2009
@@ -573,11 +573,15 @@
                   ;
 
 opt_nl            : /* empty */
-                  | "\n"
+                  | newline
+                  ;
+
+newline           : "\n"
+                        { lexer->linenr += $1; }
                   ;
 
 pir_chunks        : pir_chunk
-                  | pir_chunks "\n" pir_chunk
+                  | pir_chunks newline pir_chunk
                   ;
 
 pir_chunk         : sub_def
@@ -698,7 +702,7 @@
                         { $$ = expr_from_string(lexer, $1); }
                   ;
 
-sub_def           : sub_head sub_flags "\n"
+sub_def           : sub_head sub_flags newline
                     parameter_list
                     instructions
                     sub_end
@@ -814,7 +818,7 @@
                         }
                   ;
 
-parameter         : ".param" param param_flags "\n"
+parameter         : ".param" param param_flags newline
                          { $$ = set_param_flag(lexer, $2, $3); }
                   ;
 
@@ -888,7 +892,7 @@
                   | error_stat
                   ;
 
-annotation        : ".annotate" TK_STRINGC ',' constant "\n"
+annotation        : ".annotate" TK_STRINGC ',' constant newline
                         { annotate(lexer, $2, $4); }
                   ;
 
@@ -898,7 +902,7 @@
 expansion_stat    : macro_expansion
                   ;
 
-macro_expansion   : TK_MACRO_IDENT opt_macro_args "\n"
+macro_expansion   : TK_MACRO_IDENT opt_macro_args newline
                         { $$ = expand_macro(yyscanner, $1, $2); }
                   ;
 
@@ -965,15 +969,15 @@
 
 
 /* make sure a new instruction node is created; call set_instr() for that. */
-empty_stat        : "\n"
+empty_stat        : newline
                         { set_instr(lexer, NULL); }
                   ;
 
-location_stat     : location_directive "\n"
+location_stat     : location_directive newline
                   ;
 
 /* "error" is a built-in rule; used for trying to recover. */
-error_stat        : error "\n"
+error_stat        : error newline
                          {
                            if (lexer->parse_errors > MAX_NUM_ERRORS)
                                panic(lexer, "Too many errors. Compilation aborted.\n");
@@ -982,20 +986,20 @@
                          }
                   ;
 
-null_stat         : "null" target "\n"
+null_stat         : "null" target newline
                          {
                            set_instrf(lexer, "null", "%T", $2);
                            get_opinfo(lexer);
                          }
                   ;
 
-getresults_stat   : ".get_results" opt_target_list "\n"
+getresults_stat   : ".get_results" opt_target_list newline
                          {
                            generate_getresults_instr(lexer, $2);
                          }
                   ;
 
-parrot_stat       : parrot_instruction "\n"
+parrot_stat       : parrot_instruction newline
                   ;
 
 parrot_instruction: parrot_op opt_op_args
@@ -1155,7 +1159,7 @@
                         }
                   ;
 
-assignment_stat   : assignment "\n"
+assignment_stat   : assignment newline
                   ;
 
 rhs_ident         : TK_IDENT
@@ -1168,7 +1172,7 @@
                               set_instrf(lexer, "null", "%T", $1);
                           else
                               set_instrf(lexer, "set", "%T%i", $1, $3);
-
+                          CURRENT_INSTRUCTION(lexer)->sourceline = lexer->linenr;
                           get_opinfo(lexer);
                         }
                   | target '=' TK_NUMC
@@ -1428,7 +1432,7 @@
                   ;
 
 
-conditional_stat  : conditional_instr "\n"
+conditional_stat  : conditional_instr newline
                         { get_opinfo(lexer); }
                   ;
 
@@ -1621,7 +1625,7 @@
                   | ','    /* PASM mode*/
                   ;
 
-goto_stat         : "goto" identifier "\n"
+goto_stat         : "goto" identifier newline
                         {
                           set_instrf(lexer, "branch", "%I", $2);
                           set_op_labelflag(lexer, BIT(0)); /* bit 0 means: "1 << 0" */
@@ -1629,7 +1633,7 @@
                         }
                   ;
 
-local_decl        : ".local" type local_id_list "\n"
+local_decl        : ".local" type local_id_list newline
                         { declare_local(lexer, $2, $3); }
                   ;
 
@@ -1647,7 +1651,7 @@
                   | ":unique_reg"   { $$ = 1; }
                   ;
 
-lex_decl          : ".lex" TK_STRINGC ',' pmc_object "\n"
+lex_decl          : ".lex" TK_STRINGC ',' pmc_object newline
                         { /* if $4 is not a register, it must be a declared symbol */
                           if (!TEST_FLAG($4->flags, TARGET_FLAG_IS_REG)) {
 
@@ -1670,11 +1674,11 @@
                      | short_invocation_stat
                      ;
 
-long_invocation_stat : ".begin_call" "\n"
+long_invocation_stat : ".begin_call" newline
                        opt_long_arguments
-                       long_invocation "\n"
+                       long_invocation newline
                        opt_long_results
-                       ".end_call" "\n"
+                       ".end_call" newline
                             { /* $4 contains an invocation object */
                               set_invocation_args(lexer, $4, $3);
                               $$ = set_invocation_results(lexer, $4, $6);
@@ -1693,7 +1697,7 @@
                             { $$ = add_arg($1, $2); }
                      ;
 
-long_argument        : ".set_arg" short_arg "\n"
+long_argument        : ".set_arg" short_arg newline
                             { $$ = $2; }
                      ;
 
@@ -1729,13 +1733,13 @@
                            }
                      ;
 
-long_result          : ".get_result" result_target "\n"
+long_result          : ".get_result" result_target newline
                            { $$ = $2; }
                      | local_decl
                            { $$ = NULL; }
                      ;
 
-short_invocation_stat: short_invocation "\n"
+short_invocation_stat: short_invocation newline
                      ;
 
 
@@ -1885,12 +1889,12 @@
                      | long_yield_stat
                      ;
 
-short_return_stat    : ".return" arguments "\n"
+short_return_stat    : ".return" arguments newline
                             {
                               $$ = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, $$, $2);
                             }
-                     | ".tailcall" simple_invocation "\n"
+                     | ".tailcall" simple_invocation newline
                             { /* was the invocation a method call? then it becomes a method tail
                                * call, otherwise it's just a normal (sub) tail call.
                                */
@@ -1901,7 +1905,7 @@
                             }
                      ;
 
-short_yield_stat     : ".yield" arguments "\n"
+short_yield_stat     : ".yield" arguments newline
                             {
                               $$ = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, $$, $2);
@@ -1940,18 +1944,18 @@
                             { $$ = set_curarg(lexer, new_argument(lexer, $1));  }
                      ;
 
-long_return_stat     : ".begin_return" "\n"
+long_return_stat     : ".begin_return" newline
                        opt_return_expressions
-                       ".end_return" "\n"
+                       ".end_return" newline
                             {
                               $$ = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, $$, $3);
                             }
                      ;
 
-long_yield_stat      : ".begin_yield" "\n"
+long_yield_stat      : ".begin_yield" newline
                        opt_yield_expressions
-                       ".end_yield" "\n"
+                       ".end_yield" newline
                             {
                               $$ = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, $$, $3);
@@ -1972,7 +1976,7 @@
                       ;
 
 
-yield_expression      : ".set_yield" short_arg "\n"
+yield_expression      : ".set_yield" short_arg newline
                             { $$ = $2; }
                       ;
 
@@ -1988,7 +1992,7 @@
                             { $$ = add_arg($1, $2); }
                       ;
 
-return_expression     : ".set_return" short_arg "\n"
+return_expression     : ".set_return" short_arg newline
                             { $$ = $2; }
                       ;
 
@@ -2018,7 +2022,7 @@
                              { $$ = $2; }
                       ;
 
-const_decl_stat       : const_stat "\n"
+const_decl_stat       : const_stat newline
                       ;
 
 const_decl_chunk      : ".const" basic_const_tail

Modified: trunk/compilers/pirc/src/pircompiler.c
==============================================================================
--- trunk/compilers/pirc/src/pircompiler.c	(original)
+++ trunk/compilers/pirc/src/pircompiler.c	Tue Jan 20 11:03:50 2009
@@ -175,6 +175,12 @@
      */
     lexer->pir_reg_generator = -1;
 
+    /* Flex' built-in line counting mechanism doesn't work properly,
+     * because PIRC handles newlines as 'logical' newlines, which is
+     * one or more newlines. Therefore, PIRC keeps track of lines itself.
+     */
+    lexer->linenr = 1;
+
 
     /* create a hashtable to store all strings */
     init_hashtable(lexer, &lexer->strings, HASHTABLE_SIZE_INIT);

Modified: trunk/compilers/pirc/src/piremit.c
==============================================================================
--- trunk/compilers/pirc/src/piremit.c	(original)
+++ trunk/compilers/pirc/src/piremit.c	Tue Jan 20 11:03:50 2009
@@ -878,6 +878,7 @@
     /* XXX is this the right size? */
     create_debugsegment(lexer->bc, lexer->codesize, iter->sourceline, lexer->filename);
 
+
     do {
         emit_pbc_instr(lexer, iter);
         iter = iter->next;

Modified: trunk/compilers/pirc/src/pirparser.c
==============================================================================
--- trunk/compilers/pirc/src/pirparser.c	(original)
+++ trunk/compilers/pirc/src/pirparser.c	Tue Jan 20 11:03:50 2009
@@ -815,18 +815,18 @@
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  10
+#define YYFINAL  11
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1094
+#define YYLAST   1162
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  140
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  172
+#define YYNNTS  173
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  432
+#define YYNRULES  433
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  673
+#define YYNSTATES  674
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -883,228 +883,228 @@
    YYRHS.  */
 static const yytype_uint16 yyprhs[] =
 {
-       0,     0,     3,     6,     9,    13,    14,    16,    18,    22,
+       0,     0,     3,     6,     9,    13,    14,    16,    18,    20,
       24,    26,    28,    30,    32,    34,    36,    38,    40,    42,
-      44,    48,    56,    59,    60,    62,    64,    68,    70,    71,
-      73,    75,    78,    81,    83,    85,    88,    92,    95,    98,
-     101,   104,   109,   114,   115,   117,   119,   123,   125,   132,
-     134,   137,   139,   141,   142,   145,   147,   149,   151,   153,
-     155,   157,   159,   162,   167,   170,   173,   176,   179,   182,
-     186,   187,   189,   191,   195,   197,   199,   201,   203,   204,
-     207,   212,   215,   216,   219,   221,   223,   225,   227,   230,
-     235,   237,   238,   241,   244,   246,   248,   250,   252,   254,
+      44,    46,    50,    58,    61,    62,    64,    66,    70,    72,
+      73,    75,    77,    80,    83,    85,    87,    90,    94,    97,
+     100,   103,   106,   111,   116,   117,   119,   121,   125,   127,
+     134,   136,   139,   141,   143,   144,   147,   149,   151,   153,
+     155,   157,   159,   161,   164,   169,   172,   175,   178,   181,
+     184,   188,   189,   191,   193,   197,   199,   201,   203,   205,
+     206,   209,   214,   217,   218,   221,   223,   225,   227,   229,
+     232,   237,   239,   240,   243,   246,   248,   250,   252,   254,
      256,   258,   260,   262,   264,   266,   268,   270,   272,   274,
-     276,   278,   284,   286,   290,   291,   295,   296,   298,   300,
-     304,   306,   308,   311,   313,   317,   318,   321,   323,   325,
-     327,   330,   332,   335,   338,   342,   346,   349,   352,   354,
-     356,   358,   360,   361,   363,   365,   369,   373,   375,   377,
-     379,   381,   383,   385,   388,   392,   394,   398,   405,   410,
-     417,   420,   422,   424,   428,   432,   436,   440,   444,   448,
-     453,   458,   463,   467,   471,   475,   479,   483,   487,   491,
-     496,   502,   507,   512,   516,   520,   524,   528,   532,   536,
-     540,   544,   547,   553,   559,   565,   571,   577,   583,   589,
-     595,   601,   606,   612,   617,   622,   627,   632,   637,   642,
-     647,   652,   657,   662,   667,   672,   677,   681,   685,   689,
-     693,   697,   701,   705,   709,   713,   717,   721,   725,   727,
-     729,   731,   733,   735,   737,   741,   746,   748,   752,   755,
-     756,   758,   764,   766,   768,   770,   779,   780,   782,   784,
-     787,   791,   795,   798,   804,   805,   808,   809,   811,   813,
-     816,   820,   822,   825,   829,   833,   835,   837,   839,   844,
-     847,   849,   851,   853,   855,   857,   859,   861,   863,   867,
-     868,   870,   872,   876,   879,   883,   884,   887,   889,   891,
-     893,   896,   898,   900,   902,   904,   906,   910,   914,   918,
-     922,   923,   925,   927,   931,   933,   935,   939,   942,   944,
-     950,   956,   957,   959,   961,   964,   968,   969,   971,   973,
-     976,   980,   981,   984,   986,   989,   990,   992,   996,   999,
-    1002,  1004,  1006,  1009,  1011,  1013,  1016,  1021,  1026,  1031,
-    1036,  1041,  1043,  1045,  1047,  1049,  1051,  1053,  1055,  1057,
+     276,   278,   280,   286,   288,   292,   293,   297,   298,   300,
+     302,   306,   308,   310,   313,   315,   319,   320,   323,   325,
+     327,   329,   332,   334,   337,   340,   344,   348,   351,   354,
+     356,   358,   360,   362,   363,   365,   367,   371,   375,   377,
+     379,   381,   383,   385,   387,   390,   394,   396,   400,   407,
+     412,   419,   422,   424,   426,   430,   434,   438,   442,   446,
+     450,   455,   460,   465,   469,   473,   477,   481,   485,   489,
+     493,   498,   504,   509,   514,   518,   522,   526,   530,   534,
+     538,   542,   546,   549,   555,   561,   567,   573,   579,   585,
+     591,   597,   603,   608,   614,   619,   624,   629,   634,   639,
+     644,   649,   654,   659,   664,   669,   674,   679,   683,   687,
+     691,   695,   699,   703,   707,   711,   715,   719,   723,   727,
+     729,   731,   733,   735,   737,   739,   743,   748,   750,   754,
+     757,   758,   760,   766,   768,   770,   772,   781,   782,   784,
+     786,   789,   793,   797,   800,   806,   807,   810,   811,   813,
+     815,   818,   822,   824,   827,   831,   835,   837,   839,   841,
+     846,   849,   851,   853,   855,   857,   859,   861,   863,   865,
+     869,   870,   872,   874,   878,   881,   885,   886,   889,   891,
+     893,   895,   898,   900,   902,   904,   906,   908,   912,   916,
+     920,   924,   925,   927,   929,   933,   935,   937,   941,   944,
+     946,   952,   958,   959,   961,   963,   966,   970,   971,   973,
+     975,   978,   982,   983,   986,   988,   991,   992,   994,   998,
+    1001,  1004,  1006,  1008,  1011,  1013,  1015,  1018,  1023,  1028,
+    1033,  1038,  1043,  1045,  1047,  1049,  1051,  1053,  1055,  1057,
     1059,  1061,  1063,  1065,  1067,  1069,  1071,  1073,  1075,  1077,
     1079,  1081,  1083,  1085,  1087,  1089,  1091,  1093,  1095,  1097,
     1099,  1101,  1103,  1105,  1107,  1109,  1111,  1113,  1115,  1117,
     1119,  1121,  1123,  1125,  1127,  1129,  1131,  1133,  1135,  1137,
     1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,  1157,
     1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,  1177,
-    1179,  1181,  1183,  1185,  1187,  1189,  1192,  1194,  1196,  1199,
-    1201,  1204,  1206,  1209,  1212,  1214,  1217,  1220,  1222,  1224,
-    1226,  1230,  1232
+    1179,  1181,  1183,  1185,  1187,  1189,  1191,  1194,  1196,  1198,
+    1201,  1203,  1206,  1208,  1211,  1214,  1216,  1219,  1222,  1224,
+    1226,  1228,  1232,  1234
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     141,     0,    -1,   117,   142,    -1,   116,   303,    -1,   143,
-     144,   143,    -1,    -1,    35,    -1,   145,    -1,   144,    35,
-     145,    -1,   167,    -1,   282,    -1,   163,    -1,   161,    -1,
-     162,    -1,   159,    -1,   160,    -1,   146,    -1,   201,    -1,
-     147,    -1,   148,    -1,   109,    37,   115,    -1,   149,   120,
-     150,   121,    35,   153,   106,    -1,   105,   298,    -1,    -1,
-     151,    -1,   152,    -1,   151,   122,   152,    -1,   298,    -1,
-      -1,   154,    -1,   155,    -1,   154,   155,    -1,   156,    35,
-      -1,   157,    -1,   158,    -1,   108,   110,    -1,   107,   294,
-     111,    -1,     5,    46,    -1,    10,    48,    -1,    11,    46,
-      -1,     3,    46,    -1,     4,    46,   123,    46,    -1,    13,
-     124,   164,   125,    -1,    -1,   165,    -1,   166,    -1,   165,
-     126,   166,    -1,    46,    -1,   169,   171,    35,   177,   186,
-     168,    -1,     7,    -1,     6,   170,    -1,   298,    -1,    46,
-      -1,    -1,   171,   172,    -1,    86,    -1,    83,    -1,    84,
-      -1,    85,    -1,    90,    -1,    92,    -1,    93,    -1,    91,
-     173,    -1,    88,   120,   170,   121,    -1,    87,   279,    -1,
-      89,   279,    -1,    94,   280,    -1,    95,   280,    -1,    96,
-     280,    -1,   120,   174,   121,    -1,    -1,   175,    -1,   176,
-      -1,   175,   122,   176,    -1,   298,    -1,    46,    -1,   214,
-      -1,   178,    -1,    -1,   178,   179,    -1,     8,   180,   181,
-      35,    -1,   294,   298,    -1,    -1,   181,   182,    -1,   257,
-      -1,   184,    -1,   183,    -1,   185,    -1,   104,   280,    -1,
-     103,   120,   176,   121,    -1,    97,    -1,    -1,   186,   187,
-      -1,    36,   188,    -1,   188,    -1,   204,    -1,   221,    -1,
-     227,    -1,   228,    -1,   232,    -1,   281,    -1,   258,    -1,
-     233,    -1,   217,    -1,   203,    -1,   202,    -1,   199,    -1,
-     200,    -1,   190,    -1,   189,    -1,   201,    -1,    34,    46,
-     122,   291,    35,    -1,   191,    -1,   112,   192,    35,    -1,
-      -1,   120,   193,   121,    -1,    -1,   194,    -1,   195,    -1,
-     194,   122,   195,    -1,   113,    -1,   114,    -1,   112,   192,
-      -1,   196,    -1,   127,   197,   128,    -1,    -1,   197,   198,
-      -1,    35,    -1,   114,    -1,   113,    -1,   112,   192,    -1,
-      35,    -1,   160,    35,    -1,     1,    35,    -1,    44,   295,
-      35,    -1,    28,   252,    35,    -1,   205,    35,    -1,   206,
-     207,    -1,   216,    -1,    37,    -1,   208,    -1,   210,    -1,
-      -1,   209,    -1,   211,    -1,   209,   122,   211,    -1,   214,
-     123,   290,    -1,   212,    -1,   214,    -1,   291,    -1,   298,
-      -1,   297,    -1,   213,    -1,   251,   214,    -1,   124,   215,
-     125,    -1,   290,    -1,   215,   126,   290,    -1,   295,   123,
-     206,   212,   122,   209,    -1,   295,   123,   206,   212,    -1,
-     295,   123,   206,   214,   122,   209,    -1,   219,    35,    -1,
-      37,    -1,   299,    -1,   295,   123,    48,    -1,   295,   123,
-      49,    -1,   295,   123,   292,    -1,   295,   123,   297,    -1,
-     295,   123,   218,    -1,   295,   123,   220,    -1,   295,   123,
-     206,   214,    -1,   295,   123,   299,   214,    -1,   295,   123,
-      50,   214,    -1,   295,   302,   290,    -1,   295,    72,    48,
-      -1,   295,    72,    49,    -1,   295,    73,    48,    -1,   295,
-      73,    49,    -1,   295,    72,   295,    -1,   295,    73,   295,
-      -1,   295,   123,   300,   290,    -1,   295,   123,   295,   301,
-     290,    -1,   299,   214,   123,   290,    -1,    50,   214,   123,
-     290,    -1,    48,   301,   295,    -1,    49,   301,   295,    -1,
-      46,   301,   295,    -1,    46,   301,    46,    -1,    48,   301,
-      48,    -1,    49,   301,    49,    -1,    48,   301,    49,    -1,
-      49,   301,    48,    -1,   222,    35,    -1,   225,    44,    37,
-      45,   298,    -1,   225,    44,    38,    45,   298,    -1,   225,
-      44,    39,    45,   298,    -1,   225,    44,    40,    45,   298,
-      -1,   225,    44,    41,    45,   298,    -1,   225,    44,    42,
-      45,   298,    -1,   225,    44,    43,    45,   298,    -1,   225,
-      44,    45,    45,   298,    -1,   225,    44,    44,    45,   298,
-      -1,   225,   291,   226,   298,    -1,   225,    44,    50,   226,
-     298,    -1,   225,    37,   226,   298,    -1,   225,   297,   226,
-     298,    -1,   225,    38,   226,   298,    -1,   225,    39,   226,
-     298,    -1,   225,    40,   226,   298,    -1,   225,    41,   226,
-     298,    -1,   225,    42,   226,   298,    -1,   225,    43,   226,
-     298,    -1,   225,    45,    45,   298,    -1,   225,    45,   122,
-     298,    -1,   225,    44,    45,   298,    -1,   225,    44,   122,
-     298,    -1,   225,   223,    45,   298,    -1,   295,   293,   290,
-      -1,    48,   293,   295,    -1,    49,   293,   295,    -1,    46,
-     293,   295,    -1,    48,   293,    48,    -1,    48,   293,    49,
-      -1,    49,   293,    48,    -1,    49,   293,    49,    -1,    46,
-     293,    46,    -1,    46,   293,   224,    -1,    48,   293,    46,
-      -1,    49,   293,    46,    -1,    48,    -1,    49,    -1,    42,
-      -1,    43,    -1,    45,    -1,   122,    -1,    45,   298,    35,
-      -1,    12,   294,   229,    35,    -1,   230,    -1,   229,   122,
-     230,    -1,   298,   231,    -1,    -1,    97,    -1,     9,    46,
-     122,   251,    35,    -1,   234,    -1,   235,    -1,   244,    -1,
-      26,    35,   236,   239,    35,   241,    27,    35,    -1,    -1,
-     237,    -1,   238,    -1,   237,   238,    -1,    30,   267,    35,
-      -1,    29,   249,   240,    -1,    32,   251,    -1,    14,   251,
-      35,    15,   250,    -1,    -1,   122,   251,    -1,    -1,   242,
-      -1,   243,    -1,   242,   243,    -1,    31,   255,    35,    -1,
-     228,    -1,   245,    35,    -1,   252,   123,   246,    -1,   295,
-     123,   246,    -1,   246,    -1,   248,    -1,   247,    -1,   251,
-     129,   250,   262,    -1,   249,   262,    -1,   251,    -1,    46,
-      -1,   298,    -1,    50,    -1,    52,    -1,    46,    -1,   298,
-      -1,    50,    -1,   120,   253,   121,    -1,    -1,   254,    -1,
-     255,    -1,   254,   122,   255,    -1,   295,   256,    -1,    46,
-      54,   295,    -1,    -1,   256,   257,    -1,   101,    -1,   102,
-      -1,    99,    -1,    98,   279,    -1,   259,    -1,   260,    -1,
-     269,    -1,   261,    -1,   270,    -1,    18,   262,    35,    -1,
-      33,   246,    35,    -1,    19,   262,    35,    -1,   120,   263,
-     121,    -1,    -1,   264,    -1,   265,    -1,   264,   122,   265,
-      -1,   267,    -1,   266,    -1,    46,    54,   268,    -1,   268,
-     277,    -1,   290,    -1,    24,    35,   274,    25,    35,    -1,
-      22,    35,   271,    23,    35,    -1,    -1,   272,    -1,   273,
-      -1,   272,   273,    -1,    20,   267,    35,    -1,    -1,   275,
-      -1,   276,    -1,   275,   276,    -1,    21,   267,    35,    -1,
-      -1,   277,   278,    -1,   100,    -1,    98,   279,    -1,    -1,
-     280,    -1,   120,    46,   121,    -1,   283,    35,    -1,    17,
-     287,    -1,   284,    -1,   286,    -1,    17,   285,    -1,   287,
-      -1,   288,    -1,    16,   287,    -1,    38,   298,   123,    48,
-      -1,    39,   298,   123,    49,    -1,    41,   298,   123,    46,
-      -1,    41,   298,   123,    47,    -1,    46,   298,   123,   289,
-      -1,   291,    -1,   298,    -1,   295,    -1,   291,    -1,    48,
-      -1,    49,    -1,   292,    -1,    46,    -1,    47,    -1,    55,
-      -1,    56,    -1,    57,    -1,    58,    -1,    60,    -1,    59,
-      -1,    38,    -1,    39,    -1,    40,    -1,    41,    -1,   296,
-      -1,   297,    -1,   298,    -1,    50,    -1,    51,    -1,    53,
-      -1,    52,    -1,    37,    -1,   299,    -1,    42,    -1,    43,
-      -1,    45,    -1,    38,    -1,    39,    -1,    41,    -1,    40,
-      -1,    44,    -1,   130,    -1,   131,    -1,   132,    -1,   133,
-      -1,   130,    -1,   134,    -1,   135,    -1,   136,    -1,   137,
-      -1,   138,    -1,   132,    -1,   139,    -1,    68,    -1,    61,
-      -1,    62,    -1,    63,    -1,    65,    -1,    66,    -1,    64,
-      -1,    67,    -1,    56,    -1,    58,    -1,    57,    -1,    60,
-      -1,    59,    -1,    55,    -1,    74,    -1,    75,    -1,    76,
-      -1,    77,    -1,    80,    -1,    78,    -1,    79,    -1,    81,
-      -1,    82,    -1,    70,    -1,    71,    -1,    69,    -1,   304,
-     305,    -1,   143,    -1,   306,    -1,   305,   306,    -1,   307,
-      -1,   163,    35,    -1,   232,    -1,   160,    35,    -1,   146,
-      35,    -1,   191,    -1,    36,   308,    -1,   309,   308,    -1,
-     311,    -1,   199,    -1,   311,    -1,   310,   171,    36,    -1,
-     118,    -1,   206,   208,    35,    -1
+     141,     0,    -1,   117,   142,    -1,   116,   304,    -1,   143,
+     145,   143,    -1,    -1,   144,    -1,    35,    -1,   146,    -1,
+     145,   144,   146,    -1,   168,    -1,   283,    -1,   164,    -1,
+     162,    -1,   163,    -1,   160,    -1,   161,    -1,   147,    -1,
+     202,    -1,   148,    -1,   149,    -1,   109,    37,   115,    -1,
+     150,   120,   151,   121,    35,   154,   106,    -1,   105,   299,
+      -1,    -1,   152,    -1,   153,    -1,   152,   122,   153,    -1,
+     299,    -1,    -1,   155,    -1,   156,    -1,   155,   156,    -1,
+     157,    35,    -1,   158,    -1,   159,    -1,   108,   110,    -1,
+     107,   295,   111,    -1,     5,    46,    -1,    10,    48,    -1,
+      11,    46,    -1,     3,    46,    -1,     4,    46,   123,    46,
+      -1,    13,   124,   165,   125,    -1,    -1,   166,    -1,   167,
+      -1,   166,   126,   167,    -1,    46,    -1,   170,   172,   144,
+     178,   187,   169,    -1,     7,    -1,     6,   171,    -1,   299,
+      -1,    46,    -1,    -1,   172,   173,    -1,    86,    -1,    83,
+      -1,    84,    -1,    85,    -1,    90,    -1,    92,    -1,    93,
+      -1,    91,   174,    -1,    88,   120,   171,   121,    -1,    87,
+     280,    -1,    89,   280,    -1,    94,   281,    -1,    95,   281,
+      -1,    96,   281,    -1,   120,   175,   121,    -1,    -1,   176,
+      -1,   177,    -1,   176,   122,   177,    -1,   299,    -1,    46,
+      -1,   215,    -1,   179,    -1,    -1,   179,   180,    -1,     8,
+     181,   182,   144,    -1,   295,   299,    -1,    -1,   182,   183,
+      -1,   258,    -1,   185,    -1,   184,    -1,   186,    -1,   104,
+     281,    -1,   103,   120,   177,   121,    -1,    97,    -1,    -1,
+     187,   188,    -1,    36,   189,    -1,   189,    -1,   205,    -1,
+     222,    -1,   228,    -1,   229,    -1,   233,    -1,   282,    -1,
+     259,    -1,   234,    -1,   218,    -1,   204,    -1,   203,    -1,
+     200,    -1,   201,    -1,   191,    -1,   190,    -1,   202,    -1,
+      34,    46,   122,   292,   144,    -1,   192,    -1,   112,   193,
+     144,    -1,    -1,   120,   194,   121,    -1,    -1,   195,    -1,
+     196,    -1,   195,   122,   196,    -1,   113,    -1,   114,    -1,
+     112,   193,    -1,   197,    -1,   127,   198,   128,    -1,    -1,
+     198,   199,    -1,    35,    -1,   114,    -1,   113,    -1,   112,
+     193,    -1,   144,    -1,   161,   144,    -1,     1,   144,    -1,
+      44,   296,   144,    -1,    28,   253,   144,    -1,   206,   144,
+      -1,   207,   208,    -1,   217,    -1,    37,    -1,   209,    -1,
+     211,    -1,    -1,   210,    -1,   212,    -1,   210,   122,   212,
+      -1,   215,   123,   291,    -1,   213,    -1,   215,    -1,   292,
+      -1,   299,    -1,   298,    -1,   214,    -1,   252,   215,    -1,
+     124,   216,   125,    -1,   291,    -1,   216,   126,   291,    -1,
+     296,   123,   207,   213,   122,   210,    -1,   296,   123,   207,
+     213,    -1,   296,   123,   207,   215,   122,   210,    -1,   220,
+     144,    -1,    37,    -1,   300,    -1,   296,   123,    48,    -1,
+     296,   123,    49,    -1,   296,   123,   293,    -1,   296,   123,
+     298,    -1,   296,   123,   219,    -1,   296,   123,   221,    -1,
+     296,   123,   207,   215,    -1,   296,   123,   300,   215,    -1,
+     296,   123,    50,   215,    -1,   296,   303,   291,    -1,   296,
+      72,    48,    -1,   296,    72,    49,    -1,   296,    73,    48,
+      -1,   296,    73,    49,    -1,   296,    72,   296,    -1,   296,
+      73,   296,    -1,   296,   123,   301,   291,    -1,   296,   123,
+     296,   302,   291,    -1,   300,   215,   123,   291,    -1,    50,
+     215,   123,   291,    -1,    48,   302,   296,    -1,    49,   302,
+     296,    -1,    46,   302,   296,    -1,    46,   302,    46,    -1,
+      48,   302,    48,    -1,    49,   302,    49,    -1,    48,   302,
+      49,    -1,    49,   302,    48,    -1,   223,   144,    -1,   226,
+      44,    37,    45,   299,    -1,   226,    44,    38,    45,   299,
+      -1,   226,    44,    39,    45,   299,    -1,   226,    44,    40,
+      45,   299,    -1,   226,    44,    41,    45,   299,    -1,   226,
+      44,    42,    45,   299,    -1,   226,    44,    43,    45,   299,
+      -1,   226,    44,    45,    45,   299,    -1,   226,    44,    44,
+      45,   299,    -1,   226,   292,   227,   299,    -1,   226,    44,
+      50,   227,   299,    -1,   226,    37,   227,   299,    -1,   226,
+     298,   227,   299,    -1,   226,    38,   227,   299,    -1,   226,
+      39,   227,   299,    -1,   226,    40,   227,   299,    -1,   226,
+      41,   227,   299,    -1,   226,    42,   227,   299,    -1,   226,
+      43,   227,   299,    -1,   226,    45,    45,   299,    -1,   226,
+      45,   122,   299,    -1,   226,    44,    45,   299,    -1,   226,
+      44,   122,   299,    -1,   226,   224,    45,   299,    -1,   296,
+     294,   291,    -1,    48,   294,   296,    -1,    49,   294,   296,
+      -1,    46,   294,   296,    -1,    48,   294,    48,    -1,    48,
+     294,    49,    -1,    49,   294,    48,    -1,    49,   294,    49,
+      -1,    46,   294,    46,    -1,    46,   294,   225,    -1,    48,
+     294,    46,    -1,    49,   294,    46,    -1,    48,    -1,    49,
+      -1,    42,    -1,    43,    -1,    45,    -1,   122,    -1,    45,
+     299,   144,    -1,    12,   295,   230,   144,    -1,   231,    -1,
+     230,   122,   231,    -1,   299,   232,    -1,    -1,    97,    -1,
+       9,    46,   122,   252,   144,    -1,   235,    -1,   236,    -1,
+     245,    -1,    26,   144,   237,   240,   144,   242,    27,   144,
+      -1,    -1,   238,    -1,   239,    -1,   238,   239,    -1,    30,
+     268,   144,    -1,    29,   250,   241,    -1,    32,   252,    -1,
+      14,   252,    35,    15,   251,    -1,    -1,   122,   252,    -1,
+      -1,   243,    -1,   244,    -1,   243,   244,    -1,    31,   256,
+     144,    -1,   229,    -1,   246,   144,    -1,   253,   123,   247,
+      -1,   296,   123,   247,    -1,   247,    -1,   249,    -1,   248,
+      -1,   252,   129,   251,   263,    -1,   250,   263,    -1,   252,
+      -1,    46,    -1,   299,    -1,    50,    -1,    52,    -1,    46,
+      -1,   299,    -1,    50,    -1,   120,   254,   121,    -1,    -1,
+     255,    -1,   256,    -1,   255,   122,   256,    -1,   296,   257,
+      -1,    46,    54,   296,    -1,    -1,   257,   258,    -1,   101,
+      -1,   102,    -1,    99,    -1,    98,   280,    -1,   260,    -1,
+     261,    -1,   270,    -1,   262,    -1,   271,    -1,    18,   263,
+     144,    -1,    33,   247,   144,    -1,    19,   263,   144,    -1,
+     120,   264,   121,    -1,    -1,   265,    -1,   266,    -1,   265,
+     122,   266,    -1,   268,    -1,   267,    -1,    46,    54,   269,
+      -1,   269,   278,    -1,   291,    -1,    24,   144,   275,    25,
+     144,    -1,    22,   144,   272,    23,   144,    -1,    -1,   273,
+      -1,   274,    -1,   273,   274,    -1,    20,   268,   144,    -1,
+      -1,   276,    -1,   277,    -1,   276,   277,    -1,    21,   268,
+     144,    -1,    -1,   278,   279,    -1,   100,    -1,    98,   280,
+      -1,    -1,   281,    -1,   120,    46,   121,    -1,   284,   144,
+      -1,    17,   288,    -1,   285,    -1,   287,    -1,    17,   286,
+      -1,   288,    -1,   289,    -1,    16,   288,    -1,    38,   299,
+     123,    48,    -1,    39,   299,   123,    49,    -1,    41,   299,
+     123,    46,    -1,    41,   299,   123,    47,    -1,    46,   299,
+     123,   290,    -1,   292,    -1,   299,    -1,   296,    -1,   292,
+      -1,    48,    -1,    49,    -1,   293,    -1,    46,    -1,    47,
+      -1,    55,    -1,    56,    -1,    57,    -1,    58,    -1,    60,
+      -1,    59,    -1,    38,    -1,    39,    -1,    40,    -1,    41,
+      -1,   297,    -1,   298,    -1,   299,    -1,    50,    -1,    51,
+      -1,    53,    -1,    52,    -1,    37,    -1,   300,    -1,    42,
+      -1,    43,    -1,    45,    -1,    38,    -1,    39,    -1,    41,
+      -1,    40,    -1,    44,    -1,   130,    -1,   131,    -1,   132,
+      -1,   133,    -1,   130,    -1,   134,    -1,   135,    -1,   136,
+      -1,   137,    -1,   138,    -1,   132,    -1,   139,    -1,    68,
+      -1,    61,    -1,    62,    -1,    63,    -1,    65,    -1,    66,
+      -1,    64,    -1,    67,    -1,    56,    -1,    58,    -1,    57,
+      -1,    60,    -1,    59,    -1,    55,    -1,    74,    -1,    75,
+      -1,    76,    -1,    77,    -1,    80,    -1,    78,    -1,    79,
+      -1,    81,    -1,    82,    -1,    70,    -1,    71,    -1,    69,
+      -1,   305,   306,    -1,   143,    -1,   307,    -1,   306,   307,
+      -1,   308,    -1,   164,    35,    -1,   233,    -1,   161,    35,
+      -1,   147,    35,    -1,   192,    -1,    36,   309,    -1,   310,
+     309,    -1,   312,    -1,   200,    -1,   312,    -1,   311,   172,
+      36,    -1,   118,    -1,   207,   209,    35,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   563,   563,   564,   569,   575,   576,   579,   580,   583,
-     584,   585,   586,   587,   588,   589,   590,   591,   598,   599,
-     602,   606,   612,   619,   620,   623,   624,   627,   631,   632,
-     635,   636,   639,   642,   643,   646,   650,   661,   665,   667,
-     673,   677,   681,   686,   687,   691,   693,   697,   701,   707,
-     711,   715,   716,   719,   720,   723,   725,   727,   729,   731,
-     733,   735,   737,   739,   741,   743,   745,   747,   749,   753,
-     758,   762,   766,   775,   786,   788,   790,   794,   803,   804,
-     817,   821,   826,   827,   831,   832,   833,   834,   837,   844,
-     851,   857,   858,   868,   870,   873,   874,   875,   876,   877,
-     878,   879,   880,   881,   882,   883,   884,   885,   886,   887,
-     888,   891,   898,   901,   906,   907,   912,   913,   916,   918,
-     926,   934,   935,   937,   940,   946,   947,   956,   958,   959,
-     960,   968,   972,   976,   985,   992,   998,  1001,  1002,  1005,
-    1014,  1021,  1024,  1025,  1028,  1029,  1032,  1068,  1070,  1074,
-    1076,  1081,  1083,  1087,  1110,  1114,  1116,  1125,  1136,  1148,
-    1158,  1161,  1162,  1165,  1174,  1183,  1188,  1193,  1214,  1219,
-    1260,  1278,  1285,  1290,  1301,  1312,  1323,  1334,  1339,  1344,
-    1349,  1359,  1378,  1412,  1414,  1416,  1418,  1420,  1422,  1424,
-    1426,  1431,  1440,  1442,  1444,  1446,  1448,  1450,  1452,  1454,
-    1456,  1458,  1470,  1477,  1479,  1485,  1487,  1489,  1491,  1493,
-    1495,  1497,  1499,  1501,  1503,  1505,  1536,  1562,  1570,  1579,
-    1588,  1590,  1592,  1594,  1596,  1600,  1605,  1607,  1612,  1613,
-    1616,  1617,  1620,  1621,  1624,  1632,  1636,  1638,  1642,  1646,
-    1647,  1650,  1665,  1669,  1670,  1673,  1685,  1686,  1690,  1692,
-    1696,  1700,  1702,  1704,  1710,  1711,  1716,  1717,  1721,  1723,
-    1732,  1734,  1738,  1742,  1744,  1746,  1750,  1751,  1754,  1774,
-    1781,  1783,  1793,  1810,  1812,  1814,  1818,  1827,  1832,  1839,
-    1840,  1844,  1846,  1850,  1852,  1857,  1858,  1862,  1864,  1866,
-    1868,  1878,  1882,  1883,  1884,  1885,  1888,  1893,  1904,  1911,
-    1916,  1917,  1921,  1923,  1927,  1928,  1931,  1935,  1939,  1943,
-    1952,  1962,  1963,  1968,  1970,  1975,  1980,  1981,  1985,  1987,
-    1991,  1997,  1998,  2002,  2004,  2012,  2013,  2017,  2021,  2024,
-    2028,  2029,  2032,  2036,  2037,  2040,  2044,  2046,  2048,  2050,
-    2054,  2058,  2059,  2072,  2073,  2077,  2078,  2079,  2082,  2083,
-    2086,  2087,  2088,  2089,  2090,  2091,  2094,  2095,  2096,  2097,
-    2105,  2108,  2109,  2122,  2123,  2124,  2125,  2129,  2130,  2133,
-    2134,  2135,  2136,  2137,  2138,  2139,  2140,  2143,  2144,  2145,
-    2148,  2149,  2150,  2151,  2152,  2153,  2154,  2155,  2156,  2157,
-    2158,  2159,  2160,  2161,  2162,  2163,  2164,  2165,  2166,  2167,
-    2168,  2169,  2170,  2176,  2177,  2178,  2179,  2180,  2181,  2182,
-    2183,  2184,  2185,  2186,  2187,  2199,  2207,  2211,  2212,  2215,
-    2216,  2217,  2218,  2219,  2220,  2223,  2225,  2226,  2229,  2230,
-    2233,  2237,  2242
+       0,   563,   563,   564,   569,   575,   576,   579,   583,   584,
+     587,   588,   589,   590,   591,   592,   593,   594,   595,   602,
+     603,   606,   610,   616,   623,   624,   627,   628,   631,   635,
+     636,   639,   640,   643,   646,   647,   650,   654,   665,   669,
+     671,   677,   681,   685,   690,   691,   695,   697,   701,   705,
+     711,   715,   719,   720,   723,   724,   727,   729,   731,   733,
+     735,   737,   739,   741,   743,   745,   747,   749,   751,   753,
+     757,   762,   766,   770,   779,   790,   792,   794,   798,   807,
+     808,   821,   825,   830,   831,   835,   836,   837,   838,   841,
+     848,   855,   861,   862,   872,   874,   877,   878,   879,   880,
+     881,   882,   883,   884,   885,   886,   887,   888,   889,   890,
+     891,   892,   895,   902,   905,   910,   911,   916,   917,   920,
+     922,   930,   938,   939,   941,   944,   950,   951,   960,   962,
+     963,   964,   972,   976,   980,   989,   996,  1002,  1005,  1006,
+    1009,  1018,  1025,  1028,  1029,  1032,  1033,  1036,  1072,  1074,
+    1078,  1080,  1085,  1087,  1091,  1114,  1118,  1120,  1129,  1140,
+    1152,  1162,  1165,  1166,  1169,  1178,  1187,  1192,  1197,  1218,
+    1223,  1264,  1282,  1289,  1294,  1305,  1316,  1327,  1338,  1343,
+    1348,  1353,  1363,  1382,  1416,  1418,  1420,  1422,  1424,  1426,
+    1428,  1430,  1435,  1444,  1446,  1448,  1450,  1452,  1454,  1456,
+    1458,  1460,  1462,  1474,  1481,  1483,  1489,  1491,  1493,  1495,
+    1497,  1499,  1501,  1503,  1505,  1507,  1509,  1540,  1566,  1574,
+    1583,  1592,  1594,  1596,  1598,  1600,  1604,  1609,  1611,  1616,
+    1617,  1620,  1621,  1624,  1625,  1628,  1636,  1640,  1642,  1646,
+    1650,  1651,  1654,  1669,  1673,  1674,  1677,  1689,  1690,  1694,
+    1696,  1700,  1704,  1706,  1708,  1714,  1715,  1720,  1721,  1725,
+    1727,  1736,  1738,  1742,  1746,  1748,  1750,  1754,  1755,  1758,
+    1778,  1785,  1787,  1797,  1814,  1816,  1818,  1822,  1831,  1836,
+    1843,  1844,  1848,  1850,  1854,  1856,  1861,  1862,  1866,  1868,
+    1870,  1872,  1882,  1886,  1887,  1888,  1889,  1892,  1897,  1908,
+    1915,  1920,  1921,  1925,  1927,  1931,  1932,  1935,  1939,  1943,
+    1947,  1956,  1966,  1967,  1972,  1974,  1979,  1984,  1985,  1989,
+    1991,  1995,  2001,  2002,  2006,  2008,  2016,  2017,  2021,  2025,
+    2028,  2032,  2033,  2036,  2040,  2041,  2044,  2048,  2050,  2052,
+    2054,  2058,  2062,  2063,  2076,  2077,  2081,  2082,  2083,  2086,
+    2087,  2090,  2091,  2092,  2093,  2094,  2095,  2098,  2099,  2100,
+    2101,  2109,  2112,  2113,  2126,  2127,  2128,  2129,  2133,  2134,
+    2137,  2138,  2139,  2140,  2141,  2142,  2143,  2144,  2147,  2148,
+    2149,  2152,  2153,  2154,  2155,  2156,  2157,  2158,  2159,  2160,
+    2161,  2162,  2163,  2164,  2165,  2166,  2167,  2168,  2169,  2170,
+    2171,  2172,  2173,  2174,  2180,  2181,  2182,  2183,  2184,  2185,
+    2186,  2187,  2188,  2189,  2190,  2191,  2203,  2211,  2215,  2216,
+    2219,  2220,  2221,  2222,  2223,  2224,  2227,  2229,  2230,  2233,
+    2234,  2237,  2241,  2246
 };
 #endif
 
@@ -1143,20 +1143,20 @@
   "\".pcc_sub\"", "\"parrot-op\"", "'('", "')'", "','", "'='", "'['",
   "']'", "';'", "'{'", "'}'", "'.'", "'-'", "'!'", "'~'", "'+'", "'/'",
   "'*'", "'%'", "'|'", "'&'", "\"**\"", "$accept", "TOP", "pir_contents",
-  "opt_nl", "pir_chunks", "pir_chunk", "macro_definition", "macro_const",
-  "macro", "macro_header", "macro_parameters", "macro_params",
-  "macro_param", "macro_body", "macro_statements", "macro_statement",
-  "macro_instr", "macro_label_decl", "macro_local_decl", "loadlib",
-  "location_directive", "hll_specifier", "hll_mapping", "namespace_decl",
-  "opt_namespace", "namespace", "namespace_slice", "sub_def", "sub_end",
-  "sub_head", "sub_id", "sub_flags", "sub_flag", "multi_type_list",
-  "opt_multi_types", "multi_types", "multi_type", "parameter_list",
-  "parameters", "parameter", "param", "param_flags", "param_flag",
-  "lookahead_flag", "invocant_flag", "unique_reg_flag", "instructions",
-  "instruction", "statement", "annotation", "expansion_stat",
-  "macro_expansion", "opt_macro_args", "macro_args", "macro_arg_list",
-  "macro_arg", "braced_arg", "braced_contents", "braced_item",
-  "empty_stat", "location_stat", "error_stat", "null_stat",
+  "opt_nl", "newline", "pir_chunks", "pir_chunk", "macro_definition",
+  "macro_const", "macro", "macro_header", "macro_parameters",
+  "macro_params", "macro_param", "macro_body", "macro_statements",
+  "macro_statement", "macro_instr", "macro_label_decl", "macro_local_decl",
+  "loadlib", "location_directive", "hll_specifier", "hll_mapping",
+  "namespace_decl", "opt_namespace", "namespace", "namespace_slice",
+  "sub_def", "sub_end", "sub_head", "sub_id", "sub_flags", "sub_flag",
+  "multi_type_list", "opt_multi_types", "multi_types", "multi_type",
+  "parameter_list", "parameters", "parameter", "param", "param_flags",
+  "param_flag", "lookahead_flag", "invocant_flag", "unique_reg_flag",
+  "instructions", "instruction", "statement", "annotation",
+  "expansion_stat", "macro_expansion", "opt_macro_args", "macro_args",
+  "macro_arg_list", "macro_arg", "braced_arg", "braced_contents",
+  "braced_item", "empty_stat", "location_stat", "error_stat", "null_stat",
   "getresults_stat", "parrot_stat", "parrot_instruction", "parrot_op",
   "opt_op_args", "op_args", "parrot_op_args", "keylist_assignment",
   "op_arg", "op_arg_expr", "keyaccess", "keylist", "keys",
@@ -1212,99 +1212,99 @@
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   140,   141,   141,   142,   143,   143,   144,   144,   145,
-     145,   145,   145,   145,   145,   145,   145,   145,   146,   146,
-     147,   148,   149,   150,   150,   151,   151,   152,   153,   153,
-     154,   154,   155,   156,   156,   157,   158,   159,   160,   160,
-     161,   162,   163,   164,   164,   165,   165,   166,   167,   168,
-     169,   170,   170,   171,   171,   172,   172,   172,   172,   172,
-     172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
-     174,   174,   175,   175,   176,   176,   176,   177,   178,   178,
-     179,   180,   181,   181,   182,   182,   182,   182,   183,   184,
-     185,   186,   186,   187,   187,   188,   188,   188,   188,   188,
-     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
-     188,   189,   190,   191,   192,   192,   193,   193,   194,   194,
-     195,   195,   195,   195,   196,   197,   197,   198,   198,   198,
-     198,   199,   200,   201,   202,   203,   204,   205,   205,   206,
-     207,   207,   208,   208,   209,   209,   210,   211,   211,   212,
-     212,   212,   212,   213,   214,   215,   215,   216,   216,   216,
-     217,   218,   218,   219,   219,   219,   219,   219,   219,   219,
-     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
-     219,   219,   219,   220,   220,   220,   220,   220,   220,   220,
-     220,   221,   222,   222,   222,   222,   222,   222,   222,   222,
-     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
-     222,   222,   222,   222,   222,   222,   223,   223,   223,   223,
-     223,   223,   223,   223,   223,   223,   223,   223,   224,   224,
-     225,   225,   226,   226,   227,   228,   229,   229,   230,   231,
-     231,   232,   233,   234,   234,   235,   236,   236,   237,   237,
-     238,   239,   239,   239,   240,   240,   241,   241,   242,   242,
-     243,   243,   244,   245,   245,   245,   246,   246,   247,   248,
-     249,   249,   250,   250,   250,   250,   251,   251,   252,   253,
-     253,   254,   254,   255,   255,   256,   256,   257,   257,   257,
-     257,   258,   259,   259,   259,   259,   260,   260,   261,   262,
-     263,   263,   264,   264,   265,   265,   266,   267,   268,   269,
-     270,   271,   271,   272,   272,   273,   274,   274,   275,   275,
-     276,   277,   277,   278,   278,   279,   279,   280,   281,   282,
-     283,   283,   284,   285,   285,   286,   287,   287,   287,   287,
-     288,   289,   289,   290,   290,   291,   291,   291,   292,   292,
-     293,   293,   293,   293,   293,   293,   294,   294,   294,   294,
-     295,   296,   296,   297,   297,   297,   297,   298,   298,   299,
-     299,   299,   299,   299,   299,   299,   299,   300,   300,   300,
-     301,   301,   301,   301,   301,   301,   301,   301,   301,   301,
-     301,   301,   301,   301,   301,   301,   301,   301,   301,   301,
-     301,   301,   301,   302,   302,   302,   302,   302,   302,   302,
-     302,   302,   302,   302,   302,   303,   304,   305,   305,   306,
-     306,   306,   306,   306,   306,   307,   307,   307,   308,   308,
-     309,   310,   311
+       0,   140,   141,   141,   142,   143,   143,   144,   145,   145,
+     146,   146,   146,   146,   146,   146,   146,   146,   146,   147,
+     147,   148,   149,   150,   151,   151,   152,   152,   153,   154,
+     154,   155,   155,   156,   157,   157,   158,   159,   160,   161,
+     161,   162,   163,   164,   165,   165,   166,   166,   167,   168,
+     169,   170,   171,   171,   172,   172,   173,   173,   173,   173,
+     173,   173,   173,   173,   173,   173,   173,   173,   173,   173,
+     174,   175,   175,   176,   176,   177,   177,   177,   178,   179,
+     179,   180,   181,   182,   182,   183,   183,   183,   183,   184,
+     185,   186,   187,   187,   188,   188,   189,   189,   189,   189,
+     189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
+     189,   189,   190,   191,   192,   193,   193,   194,   194,   195,
+     195,   196,   196,   196,   196,   197,   198,   198,   199,   199,
+     199,   199,   200,   201,   202,   203,   204,   205,   206,   206,
+     207,   208,   208,   209,   209,   210,   210,   211,   212,   212,
+     213,   213,   213,   213,   214,   215,   216,   216,   217,   217,
+     217,   218,   219,   219,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   221,   221,   221,   221,   221,   221,
+     221,   221,   222,   223,   223,   223,   223,   223,   223,   223,
+     223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
+     223,   223,   223,   223,   223,   223,   223,   224,   224,   224,
+     224,   224,   224,   224,   224,   224,   224,   224,   224,   225,
+     225,   226,   226,   227,   227,   228,   229,   230,   230,   231,
+     232,   232,   233,   234,   235,   235,   236,   237,   237,   238,
+     238,   239,   240,   240,   240,   241,   241,   242,   242,   243,
+     243,   244,   244,   245,   246,   246,   246,   247,   247,   248,
+     249,   250,   250,   251,   251,   251,   251,   252,   252,   253,
+     254,   254,   255,   255,   256,   256,   257,   257,   258,   258,
+     258,   258,   259,   260,   260,   260,   260,   261,   261,   262,
+     263,   264,   264,   265,   265,   266,   266,   267,   268,   269,
+     270,   271,   272,   272,   273,   273,   274,   275,   275,   276,
+     276,   277,   278,   278,   279,   279,   280,   280,   281,   282,
+     283,   284,   284,   285,   286,   286,   287,   288,   288,   288,
+     288,   289,   290,   290,   291,   291,   292,   292,   292,   293,
+     293,   294,   294,   294,   294,   294,   294,   295,   295,   295,
+     295,   296,   297,   297,   298,   298,   298,   298,   299,   299,
+     300,   300,   300,   300,   300,   300,   300,   300,   301,   301,
+     301,   302,   302,   302,   302,   302,   302,   302,   302,   302,
+     302,   302,   302,   302,   302,   302,   302,   302,   302,   302,
+     302,   302,   302,   302,   303,   303,   303,   303,   303,   303,
+     303,   303,   303,   303,   303,   303,   304,   305,   306,   306,
+     307,   307,   307,   307,   307,   307,   308,   308,   308,   309,
+     309,   310,   311,   312
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
-       0,     2,     2,     2,     3,     0,     1,     1,     3,     1,
+       0,     2,     2,     2,     3,     0,     1,     1,     1,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     7,     2,     0,     1,     1,     3,     1,     0,     1,
-       1,     2,     2,     1,     1,     2,     3,     2,     2,     2,
-       2,     4,     4,     0,     1,     1,     3,     1,     6,     1,
-       2,     1,     1,     0,     2,     1,     1,     1,     1,     1,
-       1,     1,     2,     4,     2,     2,     2,     2,     2,     3,
-       0,     1,     1,     3,     1,     1,     1,     1,     0,     2,
-       4,     2,     0,     2,     1,     1,     1,     1,     2,     4,
-       1,     0,     2,     2,     1,     1,     1,     1,     1,     1,
+       1,     3,     7,     2,     0,     1,     1,     3,     1,     0,
+       1,     1,     2,     2,     1,     1,     2,     3,     2,     2,
+       2,     2,     4,     4,     0,     1,     1,     3,     1,     6,
+       1,     2,     1,     1,     0,     2,     1,     1,     1,     1,
+       1,     1,     1,     2,     4,     2,     2,     2,     2,     2,
+       3,     0,     1,     1,     3,     1,     1,     1,     1,     0,
+       2,     4,     2,     0,     2,     1,     1,     1,     1,     2,
+       4,     1,     0,     2,     2,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     5,     1,     3,     0,     3,     0,     1,     1,     3,
-       1,     1,     2,     1,     3,     0,     2,     1,     1,     1,
-       2,     1,     2,     2,     3,     3,     2,     2,     1,     1,
-       1,     1,     0,     1,     1,     3,     3,     1,     1,     1,
-       1,     1,     1,     2,     3,     1,     3,     6,     4,     6,
-       2,     1,     1,     3,     3,     3,     3,     3,     3,     4,
-       4,     4,     3,     3,     3,     3,     3,     3,     3,     4,
-       5,     4,     4,     3,     3,     3,     3,     3,     3,     3,
-       3,     2,     5,     5,     5,     5,     5,     5,     5,     5,
-       5,     4,     5,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     1,     1,
-       1,     1,     1,     1,     3,     4,     1,     3,     2,     0,
-       1,     5,     1,     1,     1,     8,     0,     1,     1,     2,
-       3,     3,     2,     5,     0,     2,     0,     1,     1,     2,
-       3,     1,     2,     3,     3,     1,     1,     1,     4,     2,
-       1,     1,     1,     1,     1,     1,     1,     1,     3,     0,
-       1,     1,     3,     2,     3,     0,     2,     1,     1,     1,
-       2,     1,     1,     1,     1,     1,     3,     3,     3,     3,
-       0,     1,     1,     3,     1,     1,     3,     2,     1,     5,
-       5,     0,     1,     1,     2,     3,     0,     1,     1,     2,
-       3,     0,     2,     1,     2,     0,     1,     3,     2,     2,
-       1,     1,     2,     1,     1,     2,     4,     4,     4,     4,
-       4,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     5,     1,     3,     0,     3,     0,     1,     1,
+       3,     1,     1,     2,     1,     3,     0,     2,     1,     1,
+       1,     2,     1,     2,     2,     3,     3,     2,     2,     1,
+       1,     1,     1,     0,     1,     1,     3,     3,     1,     1,
+       1,     1,     1,     1,     2,     3,     1,     3,     6,     4,
+       6,     2,     1,     1,     3,     3,     3,     3,     3,     3,
+       4,     4,     4,     3,     3,     3,     3,     3,     3,     3,
+       4,     5,     4,     4,     3,     3,     3,     3,     3,     3,
+       3,     3,     2,     5,     5,     5,     5,     5,     5,     5,
+       5,     5,     4,     5,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     1,
+       1,     1,     1,     1,     1,     3,     4,     1,     3,     2,
+       0,     1,     5,     1,     1,     1,     8,     0,     1,     1,
+       2,     3,     3,     2,     5,     0,     2,     0,     1,     1,
+       2,     3,     1,     2,     3,     3,     1,     1,     1,     4,
+       2,     1,     1,     1,     1,     1,     1,     1,     1,     3,
+       0,     1,     1,     3,     2,     3,     0,     2,     1,     1,
+       1,     2,     1,     1,     1,     1,     1,     3,     3,     3,
+       3,     0,     1,     1,     3,     1,     1,     3,     2,     1,
+       5,     5,     0,     1,     1,     2,     3,     0,     1,     1,
+       2,     3,     0,     2,     1,     2,     0,     1,     3,     2,
+       2,     1,     1,     2,     1,     1,     2,     4,     4,     4,
+       4,     4,     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,
        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,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     1,     1,     2,     1,
-       2,     1,     2,     2,     1,     2,     2,     1,     1,     1,
-       3,     1,     3
+       1,     1,     1,     1,     1,     1,     2,     1,     1,     2,
+       1,     2,     1,     2,     2,     1,     2,     2,     1,     1,
+       1,     3,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1312,502 +1312,516 @@
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     5,     5,     0,     6,   416,     3,     0,     2,     0,
-       1,     0,     0,     0,     0,     0,   139,     0,     0,   114,
-     431,     0,    18,    19,     0,     0,     0,   424,   142,   421,
-     415,   417,   419,     0,    53,   427,     0,     0,     0,     0,
-       0,     0,     5,     7,    16,    14,    15,    12,    13,    11,
-       9,    53,    17,    10,     0,    38,    39,    43,   131,   428,
-     425,   429,   367,   372,   373,   375,   374,   369,   370,   376,
-     371,    22,   368,     0,   116,     0,   423,    23,   422,   420,
-     348,   349,   345,   346,   363,   364,   366,   365,     0,     0,
-     143,   144,   147,   152,   148,     0,   149,   347,   151,   150,
-     418,   426,     0,   133,    40,     0,    37,    52,    50,    51,
-       0,     0,     0,   329,     0,     4,     0,     0,    47,     0,
-      44,    45,    20,   114,   120,   121,   125,     0,   117,   118,
-     123,   113,     0,    24,    25,    27,   363,     0,   155,   344,
-     343,   360,   361,   362,   432,     0,   153,   430,    56,    57,
-      58,    55,   325,     0,   325,    59,     0,    60,    61,     0,
-       0,     0,    54,     0,     0,     0,     0,     8,    78,   277,
-       0,   276,    42,     0,   122,     0,   115,     0,     0,     0,
-     154,     0,   145,     0,    64,   326,     0,    65,    70,    62,
-      66,    67,    68,    41,     0,     0,     0,    91,    77,   241,
-      46,   127,   114,   129,   128,   124,   126,   119,    28,    26,
-     156,     0,     0,    75,     0,    71,    72,    76,    74,   336,
-     337,   338,   339,     0,     0,    79,   130,     0,     0,     0,
-      29,    30,     0,    33,    34,   327,    63,    69,     0,    49,
+       0,     5,     5,     0,     7,   417,     6,     3,     0,     2,
+       0,     1,     0,     0,     0,     0,     0,   140,     0,     0,
+     115,   432,     0,    19,    20,     0,     0,     0,   425,   143,
+     422,   416,   418,   420,     0,    54,   428,     0,     0,     0,
+       0,     0,     0,     5,     8,    17,    15,    16,    13,    14,
+      12,    10,    54,    18,    11,     0,    39,    40,    44,   132,
+     429,   426,   430,   368,   373,   374,   376,   375,   370,   371,
+     377,   372,    23,   369,     0,   117,     0,   424,    24,   423,
+     421,   349,   350,   346,   347,   364,   365,   367,   366,     0,
+       0,   144,   145,   148,   153,   149,     0,   150,   348,   152,
+     151,   419,   427,     0,   134,    41,     0,    38,    53,    51,
+      52,     0,     0,     0,   330,     4,     0,     0,     0,    48,
+       0,    45,    46,    21,   115,   121,   122,   126,     0,   118,
+     119,   124,   114,     0,    25,    26,    28,   364,     0,   156,
+     345,   344,   361,   362,   363,   433,     0,   154,   431,    57,
+      58,    59,    56,   326,     0,   326,    60,     0,    61,    62,
+       0,     0,     0,    55,     0,     0,     0,     0,     9,    79,
+     278,     0,   277,    43,     0,   123,     0,   116,     0,     0,
+       0,   155,     0,   146,     0,    65,   327,     0,    66,    71,
+      63,    67,    68,    69,    42,     0,     0,     0,    92,    78,
+     242,    47,   128,   115,   130,   129,   125,   127,   120,    29,
+      27,   157,     0,     0,    76,     0,    72,    73,    77,    75,
+     337,   338,   339,   340,     0,     0,    80,   131,     0,     0,
+       0,    30,    31,     0,    34,    35,   328,    64,    70,     0,
+      50,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   140,   370,   371,   377,   372,   272,   364,
+     280,     0,    49,    93,    95,   110,   109,   113,   107,   108,
+     111,   106,   105,    96,     0,   143,   139,   104,     0,    97,
+       0,     0,    98,    99,   100,   103,   243,   244,   245,     0,
+     266,   268,   267,     0,   271,     0,   102,   292,   293,   295,
+     294,   296,   101,     0,   331,   332,     0,   363,   369,   357,
+     358,   359,   360,    83,     0,     0,    36,    22,    32,    33,
+      74,     0,   336,     0,   333,   334,   335,   301,     0,     0,
+     312,   317,   247,     0,     0,     0,    94,     0,     0,     0,
+       0,     0,   281,   282,   286,   133,   137,   138,   141,   142,
+     149,   161,   192,   368,   373,   374,   376,   375,   370,   371,
+     377,   372,   349,   346,   347,     0,     0,     0,   362,   263,
+     270,     0,     0,   329,   415,   413,   414,     0,     0,   404,
+     405,   406,   407,   409,   410,   408,   411,   412,     0,     0,
+       0,     0,    82,    37,     0,   237,   240,     0,   349,     0,
+     302,   303,   306,   305,   322,   309,   297,   299,     0,     0,
+     313,   314,     0,     0,   318,   319,     0,     0,   248,   249,
+     136,   298,     0,   135,   235,     0,     0,   279,     0,   284,
+       0,   233,   234,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   139,   369,   370,   376,   371,   271,   363,   279,
-       0,    48,    92,    94,   109,   108,   112,   106,   107,   110,
-     105,   104,    95,     0,   142,   138,   103,     0,    96,     0,
-       0,    97,    98,    99,   102,   242,   243,   244,     0,   265,
-     267,   266,     0,   270,     0,   101,   291,   292,   294,   293,
-     295,   100,     0,   330,   331,     0,   362,   368,   356,   357,
-     358,   359,    82,     0,     0,    35,    21,    31,    32,    73,
-       0,   335,     0,   332,   333,   334,   300,     0,     0,   311,
-     316,   246,     0,     0,     0,    93,     0,     0,     0,     0,
-       0,   280,   281,   285,   132,   136,   137,   140,   141,   148,
-     160,   191,   367,   372,   373,   375,   374,   369,   370,   376,
-     371,   348,   345,   346,     0,     0,     0,   361,   262,   269,
-       0,     0,   328,   414,   412,   413,     0,     0,   403,   404,
-     405,   406,   408,   409,   407,   410,   411,     0,     0,     0,
-       0,    81,    36,     0,   236,   239,     0,   348,     0,   301,
-     302,   305,   304,   321,   308,   296,   298,     0,     0,   312,
-     313,     0,     0,   317,   318,     0,     0,   247,   248,   135,
-     297,     0,   134,   234,     0,     0,   278,     0,   283,     0,
-     232,   233,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   350,   351,   352,   353,   355,   354,     0,     0,
-       0,     0,     0,     0,     0,   275,   273,   274,     0,   272,
-     263,   173,   174,   177,   175,   176,   178,   367,   271,   163,
-     164,   363,   377,   378,   379,     0,   167,   168,   264,   165,
-       0,   361,   368,     0,   172,     0,    80,    90,   325,   289,
-     287,   288,     0,     0,    83,    86,    85,    87,    84,   235,
-       0,   240,   238,     0,     0,   299,     0,   307,     0,     0,
-     314,     0,     0,   319,     0,     0,     0,     0,     0,   249,
-       0,   182,   284,   282,   286,   146,   203,   205,   206,   207,
-     208,   209,   210,     0,     0,     0,     0,     0,     0,     0,
-       0,   371,   213,     0,   214,   211,   212,   224,   228,   229,
-     225,   219,   226,   220,   221,   217,   227,   222,   223,   218,
-     215,   201,   216,   204,   268,   402,   397,   399,   398,   401,
-     400,   390,   391,   392,   395,   393,   394,   396,   389,   381,
-     387,   380,   382,   383,   384,   385,   386,   388,     0,     0,
-       0,   171,   158,   169,     0,   170,   179,   181,   290,     0,
-      88,   237,   340,   341,   342,   306,   303,   325,   323,   322,
-     315,   310,   320,   309,   250,     0,   254,   270,   252,   256,
-     111,   192,   193,   194,   195,   196,   197,   198,   200,   199,
-     202,   186,   185,   187,   189,   183,   190,   188,   184,     0,
-       0,   180,     0,   324,     0,     0,   251,     0,   261,     0,
-     257,   258,   157,   159,    89,     0,   255,     0,     0,   259,
-     253,   260,   245
+       0,     0,     0,   351,   352,   353,   354,   356,   355,     0,
+       0,     0,     0,     0,     0,     0,   276,   274,   275,     0,
+     273,   264,   174,   175,   178,   176,   177,   179,   368,   272,
+     164,   165,   364,   378,   379,   380,     0,   168,   169,   265,
+     166,     0,   362,   369,     0,   173,     0,    91,   326,   290,
+     288,   289,     0,     0,    81,    84,    87,    86,    88,    85,
+       0,   236,   241,   239,     0,     0,   300,     0,   308,     0,
+       0,   315,     0,     0,   320,     0,     0,     0,     0,     0,
+     250,     0,   183,   285,   283,   287,   147,   204,   206,   207,
+     208,   209,   210,   211,     0,     0,     0,     0,     0,     0,
+       0,     0,   372,   214,     0,   215,   212,   213,   225,   229,
+     230,   226,   220,   227,   221,   222,   218,   228,   223,   224,
+     219,   216,   202,   217,   205,   269,   403,   398,   400,   399,
+     402,   401,   391,   392,   393,   396,   394,   395,   397,   390,
+     382,   388,   381,   383,   384,   385,   386,   387,   389,     0,
+       0,     0,   172,   159,   170,     0,   171,   180,   182,   291,
+       0,    89,   238,   341,   342,   343,   307,   304,   326,   324,
+     323,   316,   311,   321,   310,   251,     0,   255,   271,   253,
+     257,   112,   193,   194,   195,   196,   197,   198,   199,   201,
+     200,   203,   187,   186,   188,   190,   184,   191,   189,   185,
+       0,     0,   181,     0,   325,     0,     0,   252,     0,   262,
+       0,   258,   259,   158,   160,    90,     0,   256,     0,     0,
+     260,   254,   261,   246
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     3,     8,     5,    42,    43,    21,    22,    23,    24,
-     132,   133,   134,   229,   230,   231,   232,   233,   234,    45,
-      25,    47,    48,    26,   119,   120,   121,    50,   261,    51,
-     108,   102,   162,   189,   214,   215,   216,   197,   198,   225,
-     312,   390,   504,   505,   506,   507,   223,   262,   263,   264,
-     265,    27,    75,   127,   128,   129,   130,   175,   206,    59,
-     268,    52,   270,   271,   272,   273,    28,   346,    89,    90,
-     348,    91,    92,    93,    94,   137,   275,   276,   486,   277,
-     487,   278,   279,   364,   560,   280,   432,   281,   282,   393,
-     394,   512,    29,   284,   285,   286,   416,   417,   418,   528,
-     656,   659,   660,   661,   287,   288,   289,   290,   291,   292,
-     468,    95,   294,   340,   341,   342,   428,   508,   295,   296,
-     297,   298,   327,   398,   399,   400,   401,   402,   403,   299,
-     300,   408,   409,   410,   412,   413,   414,   517,   619,   184,
-     185,   301,    53,   302,   303,   323,   304,   113,   325,   612,
-     404,   139,    97,   458,   313,   140,   141,   142,   143,    72,
-     493,   598,   388,     6,     7,    30,    31,    32,    60,    33,
-      34,    35
+      -1,     3,     9,     5,    59,    43,    44,    22,    23,    24,
+      25,   133,   134,   135,   230,   231,   232,   233,   234,   235,
+      46,    26,    48,    49,    27,   120,   121,   122,    51,   262,
+      52,   109,   103,   163,   190,   215,   216,   217,   198,   199,
+     226,   313,   391,   505,   506,   507,   508,   224,   263,   264,
+     265,   266,    28,    76,   128,   129,   130,   131,   176,   207,
+      60,   269,    53,   271,   272,   273,   274,    29,   347,    90,
+      91,   349,    92,    93,    94,    95,   138,   276,   277,   487,
+     278,   488,   279,   280,   365,   561,   281,   433,   282,   283,
+     394,   395,   513,    30,   285,   286,   287,   417,   418,   419,
+     529,   657,   660,   661,   662,   288,   289,   290,   291,   292,
+     293,   469,    96,   295,   341,   342,   343,   429,   509,   296,
+     297,   298,   299,   328,   399,   400,   401,   402,   403,   404,
+     300,   301,   409,   410,   411,   413,   414,   415,   518,   620,
+     185,   186,   302,    54,   303,   304,   324,   305,   114,   326,
+     613,   405,   140,    98,   459,   314,   141,   142,   143,   144,
+      73,   494,   599,   389,     7,     8,    31,    32,    33,    61,
+      34,    35,    36
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -609
+#define YYPACT_NINF -602
 static const yytype_int16 yypact[] =
 {
-       5,    -6,    -6,    36,  -609,  -609,  -609,    69,  -609,    86,
-    -609,    16,    54,    19,     8,   103,  -609,  1040,    98,    21,
-    -609,   119,  -609,  -609,    41,   128,   132,  -609,   652,  -609,
-      69,  -609,  -609,   103,  -609,  -609,   141,   142,   161,   185,
-     673,   151,   170,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
-    -609,  -609,  -609,  -609,   111,  -609,  -609,   190,  -609,  -609,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
-    -609,  -609,  -609,   120,    17,   202,  -609,  1040,  -609,  -609,
-    -609,  -609,  -609,  -609,   122,  -609,  -609,  -609,   772,   210,
-     126,  -609,  -609,  -609,  -609,   127,  -609,  -609,  -609,   149,
-    -609,  -609,   698,  -609,  -609,   129,  -609,  -609,  -609,  -609,
-    1040,  1040,  1040,  -609,    44,  -609,   674,  1013,  -609,   125,
-     153,  -609,  -609,    21,  -609,  -609,  -609,   165,   166,  -609,
-    -609,  -609,   172,   176,  -609,  -609,  -609,     1,  -609,  -609,
-    -609,  -609,  -609,  -609,  -609,   652,  -609,  -609,  -609,  -609,
-    -609,  -609,   167,   174,   167,  -609,   180,  -609,  -609,   167,
-     167,   167,  -609,   256,   181,   197,   198,  -609,  -609,  -609,
-     292,  -609,  -609,   190,  -609,    -3,  -609,    17,   293,  1040,
-    -609,   772,  -609,   283,  -609,  -609,   673,  -609,   433,  -609,
-    -609,  -609,  -609,  -609,   282,   285,    99,  -609,   323,  -609,
-    -609,  -609,    21,  -609,  -609,  -609,  -609,  -609,    50,  -609,
-    -609,   211,   222,  -609,   223,   224,  -609,  -609,  -609,  -609,
-    -609,  -609,  -609,   273,   189,  -609,  -609,   189,   235,   241,
-      50,  -609,   314,  -609,  -609,  -609,  -609,  -609,   433,  -609,
-     189,   151,   134,   230,   230,   316,   320,   321,   237,   999,
-     313,   534,   651,   789,   813,   576,  1040,  -609,    13,   411,
-     325,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
-    -609,  -609,  -609,   326,   652,  -609,  -609,   329,  -609,   330,
-     830,  -609,  -609,  -609,  -609,  -609,  -609,  -609,   331,  -609,
-    -609,  -609,   230,   238,   245,  -609,  -609,  -609,  -609,  -609,
-    -609,  -609,   334,  -609,  -609,   726,   -52,   127,  -609,  -609,
-    -609,  -609,  -609,  1040,   260,  -609,  -609,  -609,  -609,  -609,
-    1040,  -609,  1040,  -609,  -609,  -609,   847,   337,   338,   354,
-     355,   345,   342,   344,   258,  -609,   349,   351,   264,   335,
-     267,   268,  -609,  -609,  -609,  -609,  -609,  -609,  -609,   269,
-    -609,  -609,   -10,   -10,   -10,   -10,   -10,   -10,   -10,   159,
-      -8,   156,   156,   156,   353,   -10,   156,   -10,  -609,  -609,
-     983,   999,  -609,  -609,  -609,  -609,   915,   932,  -609,  -609,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,   556,   772,   276,
-     121,  -609,  -609,   -15,  -609,   299,   277,   347,   284,   281,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,   772,   381,   354,
-    -609,   772,   382,   355,  -609,   772,    87,   345,  -609,  -609,
-    -609,   229,  -609,  -609,   772,   576,  -609,   411,    84,   772,
-    -609,  -609,  1040,  1040,  1040,  1040,  1040,  1040,  1040,   361,
-     363,   364,   368,   369,   377,   378,   379,  1049,   -10,  1040,
-    1040,  1040,  -609,  -609,  -609,  -609,  -609,  -609,   864,   881,
-     898,  1040,  1040,   772,  1040,  -609,  -609,  -609,   230,  -609,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,   618,   203,   617,
-     617,    13,  -609,  -609,  -609,   652,  -609,  -609,  -609,  -609,
-     617,   390,   -11,   772,  -609,   772,  -609,  -609,   167,  -609,
-    -609,  -609,   306,   167,  -609,  -609,  -609,  -609,  -609,  -609,
-    1040,  -609,  -609,  1027,   772,  -609,   847,    52,   393,   396,
-    -609,   400,   401,  -609,   402,  1013,   999,  1013,   403,  -609,
-     404,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
-    -609,  -609,  -609,  1040,  1040,  1040,  1040,  1040,  1040,  1040,
-    1040,  1040,  -609,  1040,  -609,  -609,  -609,  -609,  -609,  -609,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,   461,   949,
-     966,  -609,   319,   324,   772,  -609,  -609,  -609,  -609,   433,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,   167,  -609,  -609,
-    -609,  -609,  -609,  -609,  -609,   407,   343,  -609,  -609,    15,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,   652,
-     652,  -609,   322,  -609,   444,  1013,  -609,   411,  -609,   439,
-      15,  -609,   126,   126,  -609,   983,  -609,   434,   445,  -609,
-    -609,  -609,  -609
+      33,     8,     8,    32,  -602,  -602,  -602,  -602,    13,  -602,
+     186,  -602,    -7,    -2,    36,   -33,    55,  -602,  1108,    60,
+     -17,  -602,    74,  -602,  -602,    10,    89,    99,  -602,   710,
+    -602,    13,  -602,  -602,    55,  -602,  -602,     8,   107,   109,
+     113,   828,   141,     8,  -602,  -602,  -602,  -602,  -602,  -602,
+    -602,  -602,  -602,  -602,  -602,    53,  -602,  -602,   137,  -602,
+    -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,
+    -602,  -602,  -602,  -602,    78,    34,     8,  -602,  1108,  -602,
+    -602,  -602,  -602,  -602,  -602,    76,  -602,  -602,  -602,   904,
+     189,   110,  -602,  -602,  -602,  -602,    86,  -602,  -602,  -602,
+     112,  -602,  -602,   827,  -602,  -602,    75,  -602,  -602,  -602,
+    -602,  1108,  1108,  1108,  -602,  -602,    51,   752,   607,  -602,
+     118,   108,  -602,  -602,   -17,  -602,  -602,  -602,   132,   139,
+    -602,  -602,  -602,   134,   142,  -602,  -602,  -602,    46,  -602,
+    -602,  -602,  -602,  -602,  -602,  -602,   710,  -602,  -602,  -602,
+    -602,  -602,  -602,   143,   145,   143,  -602,   149,  -602,  -602,
+     143,   143,   143,  -602,   213,   147,   148,   152,  -602,  -602,
+    -602,     8,  -602,  -602,   137,  -602,    23,  -602,    34,   237,
+    1108,  -602,   904,  -602,   230,  -602,  -602,   828,  -602,   274,
+    -602,  -602,  -602,  -602,  -602,   238,   229,   176,  -602,   279,
+    -602,  -602,  -602,   -17,  -602,  -602,  -602,  -602,  -602,   133,
+    -602,  -602,   168,   171,  -602,   172,   174,  -602,  -602,  -602,
+    -602,  -602,  -602,  -602,   543,   167,  -602,  -602,   167,   184,
+     192,   133,  -602,   264,  -602,  -602,  -602,  -602,  -602,   274,
+    -602,   167,   141,   163,   180,   180,     8,     8,     8,   183,
+     466,   258,   660,   780,   921,   938,   403,  1108,  -602,   -35,
+     328,     8,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,
+    -602,  -602,  -602,  -602,     8,   710,  -602,  -602,     8,  -602,
+       8,   955,  -602,  -602,  -602,  -602,  -602,  -602,  -602,     8,
+    -602,  -602,  -602,   180,   177,   198,  -602,  -602,  -602,  -602,
+    -602,  -602,  -602,     8,  -602,  -602,   817,   -82,    86,  -602,
+    -602,  -602,  -602,  -602,  1108,   194,  -602,  -602,  -602,  -602,
+    -602,  1108,  -602,  1108,  -602,  -602,  -602,   972,     8,     8,
+     287,   301,   293,     8,     8,   202,  -602,     8,     8,   203,
+     271,   208,   209,  -602,  -602,  -602,  -602,  -602,  -602,  -602,
+     207,  -602,  -602,   -12,   -12,   -12,   -12,   -12,   -12,   -12,
+     175,   -11,   225,   225,   225,   289,   -12,   225,   -12,  -602,
+    -602,   590,   466,  -602,  -602,  -602,  -602,  1023,  1040,  -602,
+    -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,   693,   904,
+     212,    41,  -602,  -602,    -5,  -602,   241,   216,   286,   220,
+     221,  -602,  -602,  -602,  -602,  -602,  -602,  -602,   904,   319,
+     287,  -602,   904,   322,   301,  -602,   904,    72,   293,  -602,
+    -602,  -602,   182,  -602,  -602,   904,   403,  -602,   328,    67,
+     904,  -602,  -602,  1108,  1108,  1108,  1108,  1108,  1108,  1108,
+     299,   303,   304,   306,   307,   309,   310,   311,  1117,   -12,
+    1108,  1108,  1108,  -602,  -602,  -602,  -602,  -602,  -602,   440,
+     989,  1006,  1108,  1108,   904,  1108,  -602,  -602,  -602,   180,
+    -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,   563,   661,
+     746,   746,   -35,  -602,  -602,  -602,   710,  -602,  -602,  -602,
+    -602,   746,   325,   -10,   904,  -602,   904,  -602,   143,  -602,
+    -602,  -602,   242,   143,  -602,  -602,  -602,  -602,  -602,  -602,
+    1108,  -602,  -602,  -602,   887,   904,  -602,   972,    88,     8,
+       8,  -602,     8,     8,  -602,     8,   607,   466,   607,     8,
+    -602,     8,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,
+    -602,  -602,  -602,  -602,  1108,  1108,  1108,  1108,  1108,  1108,
+    1108,  1108,  1108,  -602,  1108,  -602,  -602,  -602,  -602,  -602,
+    -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,
+    -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,
+    -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,
+    -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  1091,
+    1057,  1074,  -602,   235,   239,   904,  -602,  -602,  -602,  -602,
+     274,  -602,  -602,  -602,  -602,  -602,  -602,  -602,   143,  -602,
+    -602,  -602,  -602,  -602,  -602,  -602,   329,   254,  -602,  -602,
+      65,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,
+    -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,
+     710,   710,  -602,   261,  -602,   368,   607,  -602,   328,  -602,
+     358,    65,  -602,   110,   110,  -602,   590,  -602,     8,     8,
+    -602,  -602,  -602,  -602
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -609,  -609,  -609,    24,  -609,   367,     9,  -609,  -609,  -609,
-    -609,  -609,   303,  -609,  -609,   253,  -609,  -609,  -609,  -609,
-       3,  -609,  -609,    10,  -609,  -609,   311,  -609,  -609,  -609,
-     301,   437,  -609,  -609,  -609,  -609,  -231,  -609,  -609,  -609,
-    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,   234,  -609,
-    -609,  -195,   -98,  -609,  -609,   312,  -609,  -609,  -609,  -193,
-    -609,  -192,  -609,  -609,  -609,  -609,  -210,  -609,   216,  -484,
-    -609,   346,     7,  -609,   -90,  -609,  -609,  -609,  -609,  -609,
-    -609,  -609,  -609,  -609,  -609,  -609,  -284,  -609,  -608,  -609,
-     -16,  -609,  -184,  -609,  -609,  -609,  -609,  -609,    78,  -609,
-    -609,  -609,  -609,  -163,  -609,  -609,  -232,  -609,  -609,    -9,
-    -149,  -115,   270,  -609,  -609,  -413,  -609,    92,  -609,  -609,
-    -609,  -609,  -228,  -609,  -609,    -1,  -609,  -264,    11,  -609,
-    -609,  -609,  -609,   112,  -609,  -609,   109,  -609,  -609,  -150,
-    -151,  -609,  -609,  -609,  -609,  -609,  -609,   -48,  -609,  -609,
-     -66,   -27,   136,  -278,  -187,  -217,  -609,   -25,   -17,  -208,
-    -609,  -404,  -609,  -609,  -609,  -609,   494,  -609,   504,  -609,
-    -609,    18
+    -602,  -602,  -602,    35,    -1,  -602,   270,     4,  -602,  -602,
+    -602,  -602,  -602,   211,  -602,  -602,   156,  -602,  -602,  -602,
+    -602,    -3,  -602,  -602,    11,  -602,  -602,   214,  -602,  -602,
+    -602,   205,   337,  -602,  -602,  -602,  -602,  -233,  -602,  -602,
+    -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,  -602,   144,
+    -602,  -602,  -145,   -97,  -602,  -602,   219,  -602,  -602,  -602,
+    -140,  -602,  -137,  -602,  -602,  -602,  -602,  -211,  -602,   119,
+    -399,  -602,   253,   -86,  -602,   -81,  -602,  -602,  -602,  -602,
+    -602,  -602,  -602,  -602,  -602,  -602,  -602,  -285,  -602,  -601,
+    -602,  -108,  -602,  -129,  -602,  -602,  -602,  -602,  -602,   -15,
+    -602,  -602,  -602,  -602,  -257,  -602,  -602,  -231,  -602,  -602,
+    -118,  -256,   -98,   162,  -602,  -602,  -420,  -602,   -16,  -602,
+    -602,  -602,  -602,  -227,  -602,  -602,  -102,  -602,  -368,   -96,
+    -602,  -602,  -602,  -602,     7,  -602,  -602,    17,  -602,  -602,
+    -152,  -150,  -602,  -602,  -602,  -602,  -602,  -602,    15,  -602,
+    -602,   -80,   -27,    30,  -235,  -148,  -193,  -602,   -25,   -13,
+    -207,  -602,  -318,  -602,  -602,  -602,  -602,   396,  -602,   398,
+    -602,  -602,    19
 };
 
 /* 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 -368
+#define YYTABLE_NINF -369
 static const yytype_int16 yytable[] =
 {
-      71,    96,   170,    98,   187,   146,   305,   319,   190,   191,
-     192,    99,    46,   274,   533,   307,   328,   333,    44,    49,
-     509,   658,   138,   109,  -162,   174,     9,   240,   266,     4,
-     267,   269,   201,    61,   305,   430,    10,   450,   336,   283,
-     314,   274,   343,   307,    -6,    36,   657,    37,    38,    39,
-      40,    61,   658,   320,    12,    13,   266,    14,   267,   269,
-     135,    41,    54,   366,   369,    56,   115,   283,  -276,   433,
-     434,   435,   436,   437,   438,   599,   600,  -276,    11,    12,
-      13,   462,    14,   464,   459,   460,   604,    36,   463,    37,
-      38,    39,    40,   164,   165,   166,    12,    13,   217,    14,
-     171,   525,    55,    41,   226,    15,    16,   510,   293,   202,
-     203,   204,   431,    88,   451,   210,   526,    46,    96,   527,
-      98,     1,     2,    44,    49,   205,   180,   181,    99,   123,
-     124,   125,    57,  -277,   293,    73,   293,    88,    58,   470,
-      16,    74,  -277,   518,   126,   221,   222,   521,   217,    17,
-     617,   524,   618,    18,    76,   488,   496,   227,   228,   473,
-     476,    77,   135,    78,   553,   662,   663,    79,   338,   109,
-     490,   218,   110,   111,    17,   112,   103,   485,    18,   492,
-     322,    19,   498,   499,   349,   500,   501,    20,   104,   110,
-     111,    17,   112,   321,   324,    18,   439,   440,   441,   442,
-     443,   444,   445,   446,   447,   114,   306,   105,   532,   448,
-     343,   452,   453,   454,   455,   456,   457,   389,   497,   498,
-     499,   218,   500,   501,   502,   503,   260,   308,   309,   310,
-     311,   106,   171,   117,   306,   122,   118,   131,  -348,   337,
-     574,   561,   565,   569,   667,   144,  -277,    96,   145,    98,
-     172,    88,   163,   365,   260,   367,   293,    99,   575,   576,
-     577,   578,   579,   580,   581,   582,   583,   584,   585,   586,
-     587,   588,   293,  -276,    36,    80,    81,    82,    83,   173,
-     239,   449,    11,    12,    13,   240,   176,   183,   177,   241,
-     242,   243,   244,   178,   186,   245,   391,   246,   179,   247,
-     188,   248,   193,   395,   194,   396,   249,   250,    58,   251,
-     252,    63,    64,    65,    66,   253,   254,   255,   256,   257,
-     195,   196,   494,   258,    85,    86,    87,   199,   208,   211,
-     219,   224,   235,   589,   220,   590,   591,   592,   593,   594,
-     595,   596,   597,   236,   237,   315,   238,   316,   608,   318,
-     326,   329,   610,   469,   171,   330,   331,   259,   531,   334,
-     344,   345,   491,   535,   350,   351,   368,   370,   371,   372,
-     306,   392,   405,   406,   407,   415,   411,   419,   652,   420,
-     421,   642,   645,   648,   422,    19,   423,   424,   426,   425,
-     427,   601,   429,   259,   530,   603,   511,   572,   461,   495,
-     513,   514,   605,   516,   519,   515,   543,   522,   544,   545,
-     625,   627,   628,   546,   547,   536,   537,   538,   539,   540,
-     541,   542,   548,   549,   550,  -166,   609,   606,   620,   607,
-     552,   621,   554,   555,   556,   622,   623,   624,   629,   630,
-     343,   649,   654,   664,   570,   571,   650,   573,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,   339,    96,   665,
-      98,   136,    85,    86,    87,   655,   668,   653,    99,   671,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,   213,
-     672,   167,   209,   317,   200,   335,   613,   212,   116,   207,
-     347,   182,   602,   395,   611,   529,   614,   669,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,   641,   171,   171,
-     171,   136,    85,    86,    87,   616,   670,   626,   332,   217,
-     534,   520,   523,   489,   100,   615,   631,   632,   633,   634,
-     635,   636,   637,   638,   639,    36,   640,   101,   651,     0,
-     666,     0,     0,    11,    12,    13,   240,     0,     0,     0,
-     241,   242,   243,   244,     0,     0,   245,    88,   246,     0,
-     247,     0,   248,     0,     0,     0,     0,   249,   250,    58,
-       0,   252,    63,    64,    65,    66,   253,   254,   255,   256,
-     257,     0,     0,     0,   258,    85,    86,    87,     0,     0,
-       0,     0,   218,   477,    63,    64,    65,    66,    67,    68,
-      69,    70,   478,    81,   479,   480,   481,    85,    86,    87,
-       0,     0,     0,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    96,    96,    98,    98,   136,    85,    86,    87,
-       0,     0,    99,    99,     0,     0,     0,     0,   171,     0,
-       0,     0,     0,     0,     0,     0,    19,     0,   469,     0,
-       0,     0,     0,  -161,   259,  -139,  -139,  -139,  -139,  -139,
-    -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,
-    -139,  -139,   575,   576,   577,   578,   579,   580,   581,   582,
-     583,   584,   585,   586,   587,   588,   482,   483,   484,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    80,    81,
-      82,    83,    84,    85,    86,    87,     0,     0,     0,   168,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,   107,
-    -367,  -367,  -367,  -367,  -367,  -367,  -367,  -367,  -367,  -367,
-    -367,  -367,  -367,  -367,   147,     0,     0,     0,     0,     0,
-       0,     0,  -139,     0,     0,     0,     0,   589,     0,   590,
-     591,   592,   593,   594,   595,   596,   597,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,  -367,     0,     0,  -367,     0,    88,     0,     0,     0,
-    -367,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,   373,   374,   375,   376,   377,
-     378,   379,   380,   381,   382,   383,   384,   385,   386,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    80,    81,
-      82,    83,   136,    85,    86,    87,  -230,  -230,  -230,  -230,
-    -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,
-    -230,  -230,  -230,     0,     0,     0,     0,     0,     0,   387,
+       6,     6,    97,   188,    99,    72,   320,    47,   534,   139,
+     191,   192,   193,   275,    45,   147,   100,   308,   329,   334,
+     171,    50,    12,    13,    14,  -163,    15,   175,   110,   659,
+       4,   306,    11,   431,   451,    62,   104,    10,  -277,    55,
+     519,   275,   116,     4,   522,   308,    56,  -277,   525,    16,
+      17,    -6,    37,    62,    38,    39,    40,    41,   202,   306,
+     659,    13,    14,   337,    15,   136,   370,   344,    42,   434,
+     435,   436,   437,   438,   439,   132,     4,   241,   115,   267,
+     315,   463,    57,   465,   268,  -278,   526,   270,   367,    89,
+       4,    58,    17,   321,  -278,   284,   658,    74,   165,   166,
+     167,   527,   211,    75,   528,   172,   227,   267,   218,    77,
+     432,   452,   268,    47,    89,   270,   169,   510,    18,    97,
+      45,    99,    19,   284,    79,    20,   294,    50,   460,   461,
+      78,    21,   464,   100,    80,   203,   204,   205,   497,   498,
+     499,   471,   500,   501,   502,   503,   124,   125,   126,     1,
+       2,   206,   294,   105,   294,   106,    18,   489,   218,   107,
+      19,   127,   600,   601,   554,   498,   499,   136,   500,   501,
+     200,   181,   182,   605,   110,   118,   219,   486,   339,   111,
+     112,   493,   113,   119,   474,   477,   618,    37,   619,    38,
+      39,    40,    41,   123,   350,   491,    13,    14,   164,    15,
+    -278,   111,   112,    42,   113,   309,   310,   311,   312,   323,
+      89,   307,   440,   441,   442,   443,   444,   445,   446,   447,
+     448,   261,   222,   223,   145,   449,   219,   390,    81,    82,
+      83,    84,   146,   533,   174,   344,  -277,   172,   668,   307,
+     228,   229,   575,   173,   338,   330,   331,   332,    97,   261,
+      99,   663,   664,   177,   366,   179,   368,   322,   325,   194,
+     345,   178,   100,   184,   180,   187,   562,   566,   570,   189,
+     195,   196,   209,   346,   294,   197,   212,   351,   221,   352,
+     453,   454,   455,   456,   457,   458,   220,   225,   369,   236,
+     294,    18,   237,   238,   316,    19,   239,   450,   317,   319,
+     327,   392,   373,   260,   335,   393,   371,   408,   396,   495,
+     397,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+     214,   372,   412,   416,   422,   426,   425,   406,   407,   427,
+     430,   428,   420,   421,   462,   496,   423,   424,   512,   514,
+     515,   516,   520,   517,   544,   532,   609,   523,   545,   546,
+     536,   547,   548,   611,   549,   550,   551,   650,   470,   172,
+    -167,   651,   610,   492,   655,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,   340,   307,   656,   653,   137,    86,
+      87,    88,   665,   666,   573,   669,   168,   318,   201,   117,
+     504,   210,   213,   511,   348,   531,   336,   208,    89,   183,
+     603,   602,   612,   530,   670,   604,   643,   646,   649,   627,
+     671,   333,   606,   535,   607,   617,   608,   521,   490,   616,
+     537,   538,   539,   540,   541,   542,   543,   101,   626,   628,
+     629,   524,   102,     0,     0,   553,     0,   555,   556,   557,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,   571,
+     572,     0,   574,   137,    86,    87,    88,     0,     0,    97,
+       0,    99,     0,     0,     0,   344,   654,     0,     0,     0,
+       0,     0,     0,   100,     0,     0,     0,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,   558,   614,   559,   560,
+     137,    86,    87,    88,     0,     0,     0,   396,     0,     0,
+       0,   615,     0,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,   258,   172,   172,   172,   170,     0,   621,   622,
+       0,   623,   624,     0,   625,   652,     0,     0,   630,   218,
+     631,   632,   633,   634,   635,   636,   637,   638,   639,   640,
+       0,   641,     0,     0,    37,     0,     0,     0,     0,     0,
+     240,     0,    12,    13,    14,   241,     0,     0,   667,   242,
+     243,   244,   245,     0,     0,   246,     0,   247,     0,   248,
+       0,   249,     0,     0,     0,     0,   250,   251,     4,   252,
+     253,    64,    65,    66,    67,   254,   255,   256,   257,   258,
+       0,     0,     0,   259,    86,    87,    88,   219,  -162,     0,
+    -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,
+    -140,  -140,  -140,  -140,  -140,  -140,  -140,     0,     0,     0,
+       0,     0,     0,    97,    97,    99,    99,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,   466,   100,   100,     0,
+     467,     0,   468,   172,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,   470,     0,    20,     0,   170,     0,     0,
+       0,    37,     0,   260,     0,     0,     0,   672,   673,    12,
+      13,    14,   241,     0,     0,     0,   242,   243,   244,   245,
+       0,     0,   246,     0,   247,     0,   248,  -140,   249,     0,
+       0,     0,     0,   250,   251,     4,  -349,   253,    64,    65,
+      66,    67,   254,   255,   256,   257,   258,     0,     0,     0,
+     259,    86,    87,    88,     0,     0,   576,   577,   578,   579,
+     580,   581,   582,   583,   584,   585,   586,   587,   588,   589,
+     478,    64,    65,    66,    67,    68,    69,    70,    71,   479,
+      82,   480,   481,   482,    86,    87,    88,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    81,    82,    83,    84,
+      85,    86,    87,    88,     0,     0,     0,     0,     0,     0,
+       0,     0,    20,     0,     0,     0,     0,     0,     0,     0,
+     260,     0,     0,     0,     0,     0,     0,     4,     0,     0,
+       0,   590,     0,   591,   592,   593,   594,   595,   596,   597,
+     598,   576,   577,   578,   579,   580,   581,   582,   583,   584,
+     585,   586,   587,   588,   589,     0,     0,     0,     0,     0,
+       0,     0,     0,   483,   484,   485,     0,     0,     0,     0,
+       0,     0,     0,     0,    89,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,  -368,
+    -368,  -368,  -368,  -368,  -368,  -368,  -368,  -368,  -368,  -368,
+    -368,  -368,  -368,   148,     0,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,   108,     0,   590,     0,   591,   592,
+     593,   594,   595,   596,   597,   598,   374,   375,   376,   377,
+     378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
+    -368,     0,     0,  -368,     0,     0,     0,     0,     0,  -368,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    81,    82,    83,    84,     0,     0,     0,
+     388,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      81,    82,    83,    84,   137,    86,    87,    88,  -231,  -231,
     -231,  -231,  -231,  -231,  -231,  -231,  -231,  -231,  -231,  -231,
-    -231,  -231,  -231,  -231,  -231,  -231,  -231,   352,   353,   354,
-     355,   356,   357,   358,   359,   360,   361,    81,   362,   363,
-     136,    85,    86,    87,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,   397,    81,    82,    83,   136,    85,    86,
-      87,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-     557,     0,   558,   559,   136,    85,    86,    87,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,   562,     0,   563,
-     564,   136,    85,    86,    87,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,   566,     0,   567,   568,   136,    85,
-      86,    87,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,     0,     0,   471,   472,   136,    85,    86,    87,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,     0,     0,
-     474,   475,   136,    85,    86,    87,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,     0,     0,   643,   644,   136,
-      85,    86,    87,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,     0,     0,   646,   647,   136,    85,    86,    87,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,   465,
-       0,     0,     0,   466,     0,   467,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,   257,     0,     0,     0,   169,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,     0,
-       0,     0,     0,   169,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    80,    81,    82,    83,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    62,    63,    64,    65,
-      66,    67,    68,    69,   551
+    -231,  -231,  -231,  -231,  -231,  -232,  -232,  -232,  -232,  -232,
+    -232,  -232,  -232,  -232,  -232,  -232,  -232,  -232,  -232,  -232,
+    -232,  -232,   353,   354,   355,   356,   357,   358,   359,   360,
+     361,   362,    82,   363,   364,   137,    86,    87,    88,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,   398,    82,
+      83,    84,   137,    86,    87,    88,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,   563,     0,   564,   565,   137,
+      86,    87,    88,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,   567,     0,   568,   569,   137,    86,    87,    88,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,     0,
+       0,   472,   473,   137,    86,    87,    88,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,     0,     0,   475,   476,
+     137,    86,    87,    88,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,     0,     0,   644,   645,   137,    86,    87,
+      88,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+       0,     0,   647,   648,   137,    86,    87,    88,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,   642,     0,     0,
+       0,   137,    86,    87,    88,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    63,    64,    65,    66,    67,    68,
+      69,    70,   552
 };
 
 static const yytype_int16 yycheck[] =
 {
-      17,    28,   117,    28,   154,    95,   223,   238,   159,   160,
-     161,    28,     9,   223,   427,   223,   244,   249,     9,     9,
-      35,   629,    88,    40,    35,   123,     2,    12,   223,    35,
-     223,   223,    35,    15,   251,    45,     0,    45,   255,   223,
-     227,   251,   259,   251,     0,     1,    31,     3,     4,     5,
-       6,    33,   660,   240,    10,    11,   251,    13,   251,   251,
-      77,    17,    46,   280,   292,    46,    42,   251,   120,   353,
-     354,   355,   356,   357,   358,   479,   480,   129,     9,    10,
-      11,   365,    13,   367,   362,   363,   490,     1,   366,     3,
-       4,     5,     6,   110,   111,   112,    10,    11,   188,    13,
-     117,    14,    48,    17,   202,    36,    37,   122,   223,   112,
-     113,   114,   122,   124,   122,   181,    29,   114,   145,    32,
-     145,   116,   117,   114,   114,   128,   125,   126,   145,   112,
-     113,   114,   124,   120,   249,    37,   251,   124,    35,   371,
-      37,   120,   129,   407,   127,    46,    47,   411,   238,   105,
-      98,   415,   100,   109,    35,   387,    35,   107,   108,   376,
-     377,   120,   179,    35,   448,   649,   650,    35,   258,   186,
-     387,   188,    38,    39,   105,    41,    35,   387,   109,   387,
-      46,   112,    98,    99,   274,   101,   102,   118,    46,    38,
-      39,   105,    41,   241,   242,   109,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    35,   223,    46,   425,    50,
-     427,    55,    56,    57,    58,    59,    60,   307,    97,    98,
-      99,   238,   101,   102,   103,   104,   223,    38,    39,    40,
-      41,    46,   249,   122,   251,   115,    46,    35,    35,   256,
-     468,   458,   459,   460,   657,    35,   124,   274,   122,   274,
-     125,   124,   123,   280,   251,   280,   371,   274,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,   387,   124,     1,    46,    47,    48,    49,   126,
-       7,   122,     9,    10,    11,    12,   121,   120,   122,    16,
-      17,    18,    19,   121,   120,    22,   313,    24,   122,    26,
-     120,    28,    46,   320,   123,   322,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-     123,   123,   388,    50,    51,    52,    53,    35,    35,    46,
-      48,     8,   121,   130,    49,   132,   133,   134,   135,   136,
-     137,   138,   139,   121,   121,   110,   122,   106,   498,    35,
-     120,    35,   503,   370,   371,    35,    35,   120,   424,    46,
-      35,    35,   387,   429,    35,    35,    35,   129,   123,    35,
-     387,   111,    35,    35,    20,    30,    21,    35,   609,    35,
-     122,   598,   599,   600,    35,   112,    35,   123,   121,    54,
-     122,   481,   123,   120,   421,   485,    97,   463,    45,   123,
-     123,    54,   492,   122,    23,   121,    45,    25,    45,    45,
-     525,   526,   527,    45,    45,   432,   433,   434,   435,   436,
-     437,   438,    45,    45,    45,    35,   120,   493,    35,   495,
-     447,    35,   449,   450,   451,    35,    35,    35,    35,    35,
-     657,   122,    35,   121,   461,   462,   122,   464,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,   485,    15,
-     485,    50,    51,    52,    53,   122,    27,   617,   485,    35,
+       1,     2,    29,   155,    29,    18,   239,    10,   428,    89,
+     160,   161,   162,   224,    10,    96,    29,   224,   245,   250,
+     118,    10,     9,    10,    11,    35,    13,   124,    41,   630,
+      35,   224,     0,    45,    45,    16,    37,     2,   120,    46,
+     408,   252,    43,    35,   412,   252,    48,   129,   416,    36,
+      37,     0,     1,    34,     3,     4,     5,     6,    35,   252,
+     661,    10,    11,   256,    13,    78,   293,   260,    17,   354,
+     355,   356,   357,   358,   359,    76,    35,    12,    43,   224,
+     228,   366,    46,   368,   224,   120,    14,   224,   281,   124,
+      35,   124,    37,   241,   129,   224,    31,    37,   111,   112,
+     113,    29,   182,   120,    32,   118,   203,   252,   189,    35,
+     122,   122,   252,   116,   124,   252,   117,   122,   105,   146,
+     116,   146,   109,   252,    35,   112,   224,   116,   363,   364,
+     120,   118,   367,   146,    35,   112,   113,   114,    97,    98,
+      99,   372,   101,   102,   103,   104,   112,   113,   114,   116,
+     117,   128,   250,    46,   252,    46,   105,   388,   239,    46,
+     109,   127,   480,   481,   449,    98,    99,   180,   101,   102,
+     171,   125,   126,   491,   187,   122,   189,   388,   259,    38,
+      39,   388,    41,    46,   377,   378,    98,     1,   100,     3,
+       4,     5,     6,   115,   275,   388,    10,    11,   123,    13,
+     124,    38,    39,    17,    41,    38,    39,    40,    41,    46,
+     124,   224,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,   224,    46,    47,    35,    50,   239,   308,    46,    47,
+      48,    49,   122,   426,   126,   428,   124,   250,   658,   252,
+     107,   108,   469,   125,   257,   246,   247,   248,   275,   252,
+     275,   650,   651,   121,   281,   121,   281,   242,   243,    46,
+     261,   122,   275,   120,   122,   120,   459,   460,   461,   120,
+     123,   123,    35,   274,   372,   123,    46,   278,    49,   280,
+      55,    56,    57,    58,    59,    60,    48,     8,   289,   121,
+     388,   105,   121,   121,   110,   109,   122,   122,   106,    35,
+     120,   314,   303,   120,    46,   111,   129,    20,   321,   389,
+     323,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,   123,    21,    30,   122,    54,   123,   328,   329,   121,
+     123,   122,   333,   334,    45,   123,   337,   338,    97,   123,
+      54,   121,    23,   122,    45,   425,   498,    25,    45,    45,
+     430,    45,    45,   503,    45,    45,    45,   122,   371,   372,
+      35,   122,   120,   388,    35,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,   388,   122,   610,    50,    51,
+      52,    53,   121,    15,   464,    27,   116,   231,   174,    52,
+     391,   180,   187,   394,   275,   422,   252,   178,   124,   146,
+     486,   482,   510,   418,   661,   486,   599,   600,   601,   527,
+     666,   249,   493,   429,   494,   517,   496,   410,   388,   515,
+     433,   434,   435,   436,   437,   438,   439,    31,   526,   527,
+     528,   414,    34,    -1,    -1,   448,    -1,   450,   451,   452,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,   462,
+     463,    -1,   465,    50,    51,    52,    53,    -1,    -1,   486,
+      -1,   486,    -1,    -1,    -1,   658,   618,    -1,    -1,    -1,
+      -1,    -1,    -1,   486,    -1,    -1,    -1,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,   514,    48,    49,
+      50,    51,    52,    53,    -1,    -1,    -1,   510,    -1,    -1,
+      -1,   514,    -1,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,   526,   527,   528,    50,    -1,   519,   520,
+      -1,   522,   523,    -1,   525,   605,    -1,    -1,   529,   610,
+     531,   544,   545,   546,   547,   548,   549,   550,   551,   552,
+      -1,   554,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,
+       7,    -1,     9,    10,    11,    12,    -1,    -1,   656,    16,
+      17,    18,    19,    -1,    -1,    22,    -1,    24,    -1,    26,
+      -1,    28,    -1,    -1,    -1,    -1,    33,    34,    35,    36,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      35,   114,   179,   230,   173,   251,   513,   186,    51,   177,
-     274,   145,   485,   510,   510,   417,   513,   660,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,   525,   526,
-     527,    50,    51,    52,    53,   516,   665,   526,   248,   609,
-     428,   409,   413,   387,    30,   514,   543,   544,   545,   546,
-     547,   548,   549,   550,   551,     1,   553,    33,   604,    -1,
-     655,    -1,    -1,     9,    10,    11,    12,    -1,    -1,    -1,
-      16,    17,    18,    19,    -1,    -1,    22,   124,    24,    -1,
-      26,    -1,    28,    -1,    -1,    -1,    -1,    33,    34,    35,
-      -1,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    -1,    -1,    -1,    50,    51,    52,    53,    -1,    -1,
-      -1,    -1,   609,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      -1,    -1,    -1,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,   649,   650,   649,   650,    50,    51,    52,    53,
-      -1,    -1,   649,   650,    -1,    -1,    -1,    -1,   655,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,   665,    -1,
-      -1,    -1,    -1,    35,   120,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,   130,   131,   132,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    35,
+      -1,    -1,    -1,    50,    51,    52,    53,   610,    35,    -1,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    36,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   124,    -1,    -1,    -1,    -1,   130,    -1,   132,
-     133,   134,   135,   136,   137,   138,   139,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,   120,    -1,    -1,   123,    -1,   124,    -1,    -1,    -1,
-     129,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    -1,    -1,    -1,    -1,    -1,    -1,   123,
+      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
+      -1,    -1,    -1,   650,   651,   650,   651,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,   650,   651,    -1,
+      50,    -1,    52,   656,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,   666,    -1,   112,    -1,    50,    -1,    -1,
+      -1,     1,    -1,   120,    -1,    -1,    -1,   668,   669,     9,
+      10,    11,    12,    -1,    -1,    -1,    16,    17,    18,    19,
+      -1,    -1,    22,    -1,    24,    -1,    26,   124,    28,    -1,
+      -1,    -1,    -1,    33,    34,    35,    35,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    -1,    -1,    -1,
+      50,    51,    52,    53,    -1,    -1,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
       47,    48,    49,    50,    51,    52,    53,    37,    38,    39,
       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    -1,    48,    49,    50,    51,    52,    53,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    -1,    48,
+      50,    51,    52,    53,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     120,    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,    -1,
+      -1,   130,    -1,   132,   133,   134,   135,   136,   137,   138,
+     139,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   130,   131,   132,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   124,    83,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    36,    -1,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    -1,   130,    -1,   132,   133,
+     134,   135,   136,   137,   138,   139,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+     120,    -1,    -1,   123,    -1,    -1,    -1,    -1,    -1,   129,
+      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    96,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    -1,    -1,    -1,
+     123,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
       49,    50,    51,    52,    53,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    -1,    48,    49,    50,    51,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
       52,    53,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    -1,    -1,    48,    49,    50,    51,    52,    53,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    -1,    -1,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
       48,    49,    50,    51,    52,    53,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    -1,    -1,    48,    49,    50,
+      41,    42,    43,    44,    45,    46,    -1,    48,    49,    50,
       51,    52,    53,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    -1,    -1,    48,    49,    50,    51,    52,    53,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      -1,    -1,    -1,    50,    -1,    52,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    -1,    -1,    -1,    50,
+      44,    45,    46,    -1,    48,    49,    50,    51,    52,    53,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    -1,
-      -1,    -1,    -1,    50,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    37,    38,    39,    40,
-      41,    42,    43,    44,    45
+      -1,    48,    49,    50,    51,    52,    53,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    -1,    -1,    48,    49,
+      50,    51,    52,    53,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    -1,    -1,    48,    49,    50,    51,    52,
+      53,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      -1,    -1,    48,    49,    50,    51,    52,    53,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    -1,    -1,
+      -1,    50,    51,    52,    53,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    37,    38,    39,    40,    41,    42,
+      43,    44,    45
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   116,   117,   141,    35,   143,   303,   304,   142,   143,
-       0,     9,    10,    11,    13,    36,    37,   105,   109,   112,
-     118,   146,   147,   148,   149,   160,   163,   191,   206,   232,
-     305,   306,   307,   309,   310,   311,     1,     3,     4,     5,
-       6,    17,   144,   145,   146,   159,   160,   161,   162,   163,
-     167,   169,   201,   282,    46,    48,    46,   124,    35,   199,
-     308,   311,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,   298,   299,    37,   120,   192,    35,   120,    35,    35,
-      46,    47,    48,    49,    50,    51,    52,    53,   124,   208,
-     209,   211,   212,   213,   214,   251,   291,   292,   297,   298,
-     306,   308,   171,    35,    46,    46,    46,    46,   170,   298,
-      38,    39,    41,   287,    35,   143,   171,   122,    46,   164,
-     165,   166,   115,   112,   113,   114,   127,   193,   194,   195,
-     196,    35,   150,   151,   152,   298,    50,   215,   290,   291,
-     295,   296,   297,   298,    35,   122,   214,    36,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,   172,   123,   298,   298,   298,   145,    35,    50,
-     251,   298,   125,   126,   192,   197,   121,   122,   121,   122,
-     125,   126,   211,   120,   279,   280,   120,   279,   120,   173,
-     280,   280,   280,    46,   123,   123,   123,   177,   178,    35,
-     166,    35,   112,   113,   114,   128,   198,   195,    35,   152,
-     290,    46,   170,    46,   174,   175,   176,   214,   298,    48,
-      49,    46,    47,   186,     8,   179,   192,   107,   108,   153,
-     154,   155,   156,   157,   158,   121,   121,   121,   122,     7,
-      12,    16,    17,    18,    19,    22,    24,    26,    28,    33,
-      34,    36,    37,    42,    43,    44,    45,    46,    50,   120,
-     160,   168,   187,   188,   189,   190,   191,   199,   200,   201,
-     202,   203,   204,   205,   206,   216,   217,   219,   221,   222,
-     225,   227,   228,   232,   233,   234,   235,   244,   245,   246,
-     247,   248,   249,   251,   252,   258,   259,   260,   261,   269,
-     270,   281,   283,   284,   286,   295,   298,   299,    38,    39,
-      40,    41,   180,   294,   294,   110,   106,   155,    35,   176,
-     294,   287,    46,   285,   287,   288,   120,   262,   262,    35,
-      35,    35,   252,   246,    46,   188,   295,   298,   214,    46,
-     253,   254,   255,   295,    35,    35,   207,   208,   210,   214,
-      35,    35,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    48,    49,   223,   291,   295,   297,    35,   262,
-     129,   123,    35,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,   123,   302,   214,
-     181,   298,   111,   229,   230,   298,   298,    46,   263,   264,
-     265,   266,   267,   268,   290,    35,    35,    20,   271,   272,
-     273,    21,   274,   275,   276,    30,   236,   237,   238,    35,
-      35,   122,    35,    35,   123,    54,   121,   122,   256,   123,
-      45,   122,   226,   226,   226,   226,   226,   226,   226,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    50,   122,
-      45,   122,    55,    56,    57,    58,    59,    60,   293,   293,
-     293,    45,   226,   293,   226,    46,    50,    52,   250,   298,
-     246,    48,    49,   295,    48,    49,   295,    37,    46,    48,
-      49,    50,   130,   131,   132,   206,   218,   220,   246,   292,
-     295,   297,   299,   300,   290,   123,    35,    97,    98,    99,
-     101,   102,   103,   104,   182,   183,   184,   185,   257,    35,
-     122,    97,   231,   123,    54,   121,   122,   277,   267,    23,
-     273,   267,    25,   276,   267,    14,    29,    32,   239,   238,
-     291,   290,   295,   255,   257,   290,   298,   298,   298,   298,
-     298,   298,   298,    45,    45,    45,    45,    45,    45,    45,
-      45,    45,   298,   226,   298,   298,   298,    46,    48,    49,
-     224,   295,    46,    48,    49,   295,    46,    48,    49,   295,
-     298,   298,   290,   298,   262,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,   130,
-     132,   133,   134,   135,   136,   137,   138,   139,   301,   301,
-     301,   214,   212,   214,   301,   214,   290,   290,   279,   120,
-     280,   230,   289,   291,   298,   268,   265,    98,   100,   278,
-      35,    35,    35,    35,    35,   251,   249,   251,   251,    35,
-      35,   298,   298,   298,   298,   298,   298,   298,   298,   298,
-     298,    46,   295,    48,    49,   295,    48,    49,   295,   122,
-     122,   290,   176,   279,    35,   122,   240,    31,   228,   241,
-     242,   243,   209,   209,   121,    15,   251,   255,    27,   243,
-     250,    35,    35
+       0,   116,   117,   141,    35,   143,   144,   304,   305,   142,
+     143,     0,     9,    10,    11,    13,    36,    37,   105,   109,
+     112,   118,   147,   148,   149,   150,   161,   164,   192,   207,
+     233,   306,   307,   308,   310,   311,   312,     1,     3,     4,
+       5,     6,    17,   145,   146,   147,   160,   161,   162,   163,
+     164,   168,   170,   202,   283,    46,    48,    46,   124,   144,
+     200,   309,   312,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,   299,   300,    37,   120,   193,    35,   120,    35,
+      35,    46,    47,    48,    49,    50,    51,    52,    53,   124,
+     209,   210,   212,   213,   214,   215,   252,   292,   293,   298,
+     299,   307,   309,   172,   144,    46,    46,    46,    46,   171,
+     299,    38,    39,    41,   288,   143,   144,   172,   122,    46,
+     165,   166,   167,   115,   112,   113,   114,   127,   194,   195,
+     196,   197,   144,   151,   152,   153,   299,    50,   216,   291,
+     292,   296,   297,   298,   299,    35,   122,   215,    36,    83,
+      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    95,    96,   173,   123,   299,   299,   299,   146,   144,
+      50,   252,   299,   125,   126,   193,   198,   121,   122,   121,
+     122,   125,   126,   212,   120,   280,   281,   120,   280,   120,
+     174,   281,   281,   281,    46,   123,   123,   123,   178,   179,
+     144,   167,    35,   112,   113,   114,   128,   199,   196,    35,
+     153,   291,    46,   171,    46,   175,   176,   177,   215,   299,
+      48,    49,    46,    47,   187,     8,   180,   193,   107,   108,
+     154,   155,   156,   157,   158,   159,   121,   121,   121,   122,
+       7,    12,    16,    17,    18,    19,    22,    24,    26,    28,
+      33,    34,    36,    37,    42,    43,    44,    45,    46,    50,
+     120,   161,   169,   188,   189,   190,   191,   192,   200,   201,
+     202,   203,   204,   205,   206,   207,   217,   218,   220,   222,
+     223,   226,   228,   229,   233,   234,   235,   236,   245,   246,
+     247,   248,   249,   250,   252,   253,   259,   260,   261,   262,
+     270,   271,   282,   284,   285,   287,   296,   299,   300,    38,
+      39,    40,    41,   181,   295,   295,   110,   106,   156,    35,
+     177,   295,   288,    46,   286,   288,   289,   120,   263,   263,
+     144,   144,   144,   253,   247,    46,   189,   296,   299,   215,
+      46,   254,   255,   256,   296,   144,   144,   208,   209,   211,
+     215,   144,   144,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    48,    49,   224,   292,   296,   298,   144,
+     263,   129,   123,   144,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,   123,   303,
+     215,   182,   299,   111,   230,   231,   299,   299,    46,   264,
+     265,   266,   267,   268,   269,   291,   144,   144,    20,   272,
+     273,   274,    21,   275,   276,   277,    30,   237,   238,   239,
+     144,   144,   122,   144,   144,   123,    54,   121,   122,   257,
+     123,    45,   122,   227,   227,   227,   227,   227,   227,   227,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    50,
+     122,    45,   122,    55,    56,    57,    58,    59,    60,   294,
+     294,   294,    45,   227,   294,   227,    46,    50,    52,   251,
+     299,   247,    48,    49,   296,    48,    49,   296,    37,    46,
+      48,    49,    50,   130,   131,   132,   207,   219,   221,   247,
+     293,   296,   298,   300,   301,   291,   123,    97,    98,    99,
+     101,   102,   103,   104,   144,   183,   184,   185,   186,   258,
+     122,   144,    97,   232,   123,    54,   121,   122,   278,   268,
+      23,   274,   268,    25,   277,   268,    14,    29,    32,   240,
+     239,   292,   291,   296,   256,   258,   291,   299,   299,   299,
+     299,   299,   299,   299,    45,    45,    45,    45,    45,    45,
+      45,    45,    45,   299,   227,   299,   299,   299,    46,    48,
+      49,   225,   296,    46,    48,    49,   296,    46,    48,    49,
+     296,   299,   299,   291,   299,   263,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+     130,   132,   133,   134,   135,   136,   137,   138,   139,   302,
+     302,   302,   215,   213,   215,   302,   215,   291,   291,   280,
+     120,   281,   231,   290,   292,   299,   269,   266,    98,   100,
+     279,   144,   144,   144,   144,   144,   252,   250,   252,   252,
+     144,   144,   299,   299,   299,   299,   299,   299,   299,   299,
+     299,   299,    46,   296,    48,    49,   296,    48,    49,   296,
+     122,   122,   291,   177,   280,    35,   122,   241,    31,   229,
+     242,   243,   244,   210,   210,   121,    15,   252,   256,    27,
+     244,   251,   144,   144
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2639,197 +2653,202 @@
     { fixup_global_labels(lexer); ;}
     break;
 
-  case 20:
-#line 603 "pir.y"
-    { new_macro_const(lexer->macros, (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].sval), yypirget_lineno(yyscanner)); ;}
+  case 7:
+#line 580 "pir.y"
+    { lexer->linenr += (yyvsp[(1) - (1)].ival); ;}
     break;
 
   case 21:
-#line 609 "pir.y"
-    { /* fprintf(stderr, "macro body: [%s]\n", CURRENT_MACRO(lexer)->body);*/ ;}
+#line 607 "pir.y"
+    { new_macro_const(lexer->macros, (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].sval), yypirget_lineno(yyscanner)); ;}
     break;
 
   case 22:
 #line 613 "pir.y"
+    { /* fprintf(stderr, "macro body: [%s]\n", CURRENT_MACRO(lexer)->body);*/ ;}
+    break;
+
+  case 23:
+#line 617 "pir.y"
     {
                           new_macro(lexer->macros, (yyvsp[(2) - (2)].sval), yypirget_lineno(yyscanner), TRUE,
                                     lexer->macro_size);
                         ;}
     break;
 
-  case 27:
-#line 628 "pir.y"
+  case 28:
+#line 632 "pir.y"
     { add_macro_param(CURRENT_MACRO(lexer), (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 35:
-#line 647 "pir.y"
+  case 36:
+#line 651 "pir.y"
     { store_macro_string(CURRENT_MACRO(lexer), "%s\n", (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 36:
-#line 651 "pir.y"
+  case 37:
+#line 655 "pir.y"
     {
                           store_macro_string(CURRENT_MACRO(lexer), ".local %s %s\n",
                                              pir_type_names[(yyvsp[(2) - (3)].ival)], (yyvsp[(3) - (3)].sval));
                         ;}
     break;
 
-  case 37:
-#line 662 "pir.y"
-    { load_library(lexer, (yyvsp[(2) - (2)].sval)); ;}
-    break;
-
   case 38:
 #line 666 "pir.y"
-    { yypirset_lineno ((yyvsp[(2) - (2)].ival), yyscanner); ;}
+    { load_library(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 39:
-#line 668 "pir.y"
-    { lexer->filename = (yyvsp[(2) - (2)].sval); ;}
+#line 670 "pir.y"
+    { yypirset_lineno ((yyvsp[(2) - (2)].ival), yyscanner); ;}
     break;
 
   case 40:
-#line 674 "pir.y"
-    { set_hll(lexer, (yyvsp[(2) - (2)].sval)); ;}
+#line 672 "pir.y"
+    { lexer->filename = (yyvsp[(2) - (2)].sval); ;}
     break;
 
   case 41:
 #line 678 "pir.y"
-    { set_hll_map(lexer, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
+    { set_hll(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 42:
 #line 682 "pir.y"
-    { set_namespace(lexer, (yyvsp[(3) - (4)].key)); ;}
+    { set_hll_map(lexer, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 43:
 #line 686 "pir.y"
-    { (yyval.key) = NULL; ;}
+    { set_namespace(lexer, (yyvsp[(3) - (4)].key)); ;}
     break;
 
   case 44:
-#line 688 "pir.y"
-    { (yyval.key) = (yyvsp[(1) - (1)].key); ;}
+#line 690 "pir.y"
+    { (yyval.key) = NULL; ;}
     break;
 
   case 45:
 #line 692 "pir.y"
-    { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
+    { (yyval.key) = (yyvsp[(1) - (1)].key); ;}
     break;
 
   case 46:
-#line 694 "pir.y"
-    { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
+#line 696 "pir.y"
+    { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 47:
 #line 698 "pir.y"
-    { (yyval.expr) = expr_from_string(lexer, (yyvsp[(1) - (1)].sval)); ;}
+    { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
-  case 49:
-#line 708 "pir.y"
-    { close_sub(lexer); ;}
+  case 48:
+#line 702 "pir.y"
+    { (yyval.expr) = expr_from_string(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 50:
 #line 712 "pir.y"
-    { new_subr(lexer, (yyvsp[(2) - (2)].sval)); ;}
+    { close_sub(lexer); ;}
     break;
 
-  case 55:
-#line 724 "pir.y"
-    { set_sub_flag(lexer, PIRC_SUB_FLAG_ANON);;}
+  case 51:
+#line 716 "pir.y"
+    { new_subr(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 56:
-#line 726 "pir.y"
-    { set_sub_flag(lexer, PIRC_SUB_FLAG_INIT); ;}
+#line 728 "pir.y"
+    { set_sub_flag(lexer, PIRC_SUB_FLAG_ANON);;}
     break;
 
   case 57:
-#line 728 "pir.y"
-    { set_sub_flag(lexer, PIRC_SUB_FLAG_LOAD); ;}
+#line 730 "pir.y"
+    { set_sub_flag(lexer, PIRC_SUB_FLAG_INIT); ;}
     break;
 
   case 58:
-#line 730 "pir.y"
-    { set_sub_flag(lexer, PIRC_SUB_FLAG_MAIN); ;}
+#line 732 "pir.y"
+    { set_sub_flag(lexer, PIRC_SUB_FLAG_LOAD); ;}
     break;
 
   case 59:
-#line 732 "pir.y"
-    { set_sub_flag(lexer, PIRC_SUB_FLAG_LEX); ;}
+#line 734 "pir.y"
+    { set_sub_flag(lexer, PIRC_SUB_FLAG_MAIN); ;}
     break;
 
   case 60:
-#line 734 "pir.y"
-    { set_sub_flag(lexer, PIRC_SUB_FLAG_POSTCOMP); ;}
+#line 736 "pir.y"
+    { set_sub_flag(lexer, PIRC_SUB_FLAG_LEX); ;}
     break;
 
   case 61:
-#line 736 "pir.y"
-    { set_sub_flag(lexer, PIRC_SUB_FLAG_IMMEDIATE); ;}
+#line 738 "pir.y"
+    { set_sub_flag(lexer, PIRC_SUB_FLAG_POSTCOMP); ;}
     break;
 
   case 62:
-#line 738 "pir.y"
-    { set_sub_flag(lexer, PIRC_SUB_FLAG_MULTI); ;}
+#line 740 "pir.y"
+    { set_sub_flag(lexer, PIRC_SUB_FLAG_IMMEDIATE); ;}
     break;
 
   case 63:
-#line 740 "pir.y"
-    { set_sub_outer(lexer, (yyvsp[(3) - (4)].sval)); ;}
+#line 742 "pir.y"
+    { set_sub_flag(lexer, PIRC_SUB_FLAG_MULTI); ;}
     break;
 
   case 64:
-#line 742 "pir.y"
-    { set_sub_methodname(lexer, (yyvsp[(2) - (2)].sval)); ;}
+#line 744 "pir.y"
+    { set_sub_outer(lexer, (yyvsp[(3) - (4)].sval)); ;}
     break;
 
   case 65:
-#line 744 "pir.y"
-    { set_sub_vtable(lexer, (yyvsp[(2) - (2)].sval)); ;}
+#line 746 "pir.y"
+    { set_sub_methodname(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 66:
-#line 746 "pir.y"
-    { set_sub_subid(lexer, (yyvsp[(2) - (2)].sval)); ;}
+#line 748 "pir.y"
+    { set_sub_vtable(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 67:
-#line 748 "pir.y"
-    { set_sub_instanceof(lexer, (yyvsp[(2) - (2)].sval)); ;}
+#line 750 "pir.y"
+    { set_sub_subid(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 68:
-#line 750 "pir.y"
-    { set_sub_nsentry(lexer, (yyvsp[(2) - (2)].sval)); ;}
+#line 752 "pir.y"
+    { set_sub_instanceof(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 69:
 #line 754 "pir.y"
-    { set_sub_multi_types(lexer, (yyvsp[(2) - (3)].expr)); ;}
+    { set_sub_nsentry(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 70:
 #line 758 "pir.y"
+    { set_sub_multi_types(lexer, (yyvsp[(2) - (3)].expr)); ;}
+    break;
+
+  case 71:
+#line 762 "pir.y"
     {
                           CURRENT_SUB(lexer)->info.num_multi_types = 1;
                           /* n=1 means :multi() -- without any types. */
                         ;}
     break;
 
-  case 71:
-#line 763 "pir.y"
+  case 72:
+#line 767 "pir.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
-  case 72:
-#line 767 "pir.y"
+  case 73:
+#line 771 "pir.y"
     {
                           CURRENT_SUB(lexer)->info.num_multi_types = 2;
                           /* start counting multi types; always 1 higher than actual number
@@ -2840,8 +2859,8 @@
                         ;}
     break;
 
-  case 73:
-#line 776 "pir.y"
+  case 74:
+#line 780 "pir.y"
     {
                           ++CURRENT_SUB(lexer)->info.num_multi_types;
                           /* link the multi types in reverse other. That's fine,
@@ -2852,23 +2871,23 @@
                         ;}
     break;
 
-  case 74:
-#line 787 "pir.y"
+  case 75:
+#line 791 "pir.y"
     { (yyval.expr) = expr_from_ident(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 75:
-#line 789 "pir.y"
+  case 76:
+#line 793 "pir.y"
     { (yyval.expr) = expr_from_string(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 76:
-#line 791 "pir.y"
+  case 77:
+#line 795 "pir.y"
     { (yyval.expr) = expr_from_key(lexer, (yyvsp[(1) - (1)].key)); ;}
     break;
 
-  case 77:
-#line 795 "pir.y"
+  case 78:
+#line 799 "pir.y"
     {
                            /* if there are parameters, then emit a get_params instruction. */
                            if ((yyvsp[(1) - (1)].uval) > 0)
@@ -2876,13 +2895,13 @@
                          ;}
     break;
 
-  case 78:
-#line 803 "pir.y"
+  case 79:
+#line 807 "pir.y"
     { (yyval.uval) = 0; ;}
     break;
 
-  case 79:
-#line 805 "pir.y"
+  case 80:
+#line 809 "pir.y"
     {
                           /* if the :named flag was set, there's an extra
                            * constant string argument for the name. count that too.
@@ -2895,49 +2914,49 @@
                         ;}
     break;
 
-  case 80:
-#line 818 "pir.y"
-    { (yyval.targ) = set_param_flag(lexer, (yyvsp[(2) - (4)].targ), (yyvsp[(3) - (4)].ival)); ;}
-    break;
-
   case 81:
 #line 822 "pir.y"
-    { (yyval.targ) = add_param(lexer, (yyvsp[(1) - (2)].ival), (yyvsp[(2) - (2)].sval)); ;}
+    { (yyval.targ) = set_param_flag(lexer, (yyvsp[(2) - (4)].targ), (yyvsp[(3) - (4)].ival)); ;}
     break;
 
   case 82:
 #line 826 "pir.y"
-    { (yyval.ival) = 0; ;}
+    { (yyval.targ) = add_param(lexer, (yyvsp[(1) - (2)].ival), (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 83:
-#line 828 "pir.y"
+#line 830 "pir.y"
+    { (yyval.ival) = 0; ;}
+    break;
+
+  case 84:
+#line 832 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 88:
-#line 838 "pir.y"
+  case 89:
+#line 842 "pir.y"
     {
                            (yyval.ival) = TARGET_FLAG_LOOKAHEAD;
                            set_param_alias(lexer, (yyvsp[(2) - (2)].sval));
                          ;}
     break;
 
-  case 89:
-#line 845 "pir.y"
+  case 90:
+#line 849 "pir.y"
     { (yyval.ival) = TARGET_FLAG_INVOCANT;
                            /* XXX handle multi_type */
 
                          ;}
     break;
 
-  case 90:
-#line 852 "pir.y"
+  case 91:
+#line 856 "pir.y"
     { (yyval.ival) = TARGET_FLAG_UNIQUE_REG; ;}
     break;
 
-  case 92:
-#line 859 "pir.y"
+  case 93:
+#line 863 "pir.y"
     {
                          ++lexer->stmt_counter;
                          /* increment the logical statement counter; a statement can be
@@ -2947,43 +2966,43 @@
                         ;}
     break;
 
-  case 93:
-#line 869 "pir.y"
+  case 94:
+#line 873 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
-  case 111:
-#line 892 "pir.y"
+  case 112:
+#line 896 "pir.y"
     { annotate(lexer, (yyvsp[(2) - (5)].sval), (yyvsp[(4) - (5)].cval)); ;}
     break;
 
-  case 113:
-#line 902 "pir.y"
-    { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (3)].mval), (yyvsp[(2) - (3)].pval)); ;}
-    break;
-
   case 114:
 #line 906 "pir.y"
-    { (yyval.pval) = NULL; ;}
+    { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (3)].mval), (yyvsp[(2) - (3)].pval)); ;}
     break;
 
   case 115:
-#line 908 "pir.y"
-    { (yyval.pval) = (yyvsp[(2) - (3)].pval); ;}
+#line 910 "pir.y"
+    { (yyval.pval) = NULL; ;}
     break;
 
   case 116:
 #line 912 "pir.y"
+    { (yyval.pval) = (yyvsp[(2) - (3)].pval); ;}
+    break;
+
+  case 117:
+#line 916 "pir.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 118:
-#line 917 "pir.y"
+  case 119:
+#line 921 "pir.y"
     { (yyval.pval) = new_macro_param((yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 119:
-#line 919 "pir.y"
+  case 120:
+#line 923 "pir.y"
     {
                           macro_param *param = new_macro_param((yyvsp[(3) - (3)].sval));
                           param->next = (yyvsp[(1) - (3)].pval);
@@ -2991,8 +3010,8 @@
                         ;}
     break;
 
-  case 120:
-#line 927 "pir.y"
+  case 121:
+#line 931 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                           if (sym == NULL) {
@@ -3002,23 +3021,23 @@
                         ;}
     break;
 
-  case 122:
-#line 936 "pir.y"
+  case 123:
+#line 940 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 124:
-#line 941 "pir.y"
+  case 125:
+#line 945 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
-  case 125:
-#line 946 "pir.y"
+  case 126:
+#line 950 "pir.y"
     { (yyval.sval) = ""; ;}
     break;
 
-  case 126:
-#line 948 "pir.y"
+  case 127:
+#line 952 "pir.y"
     { /* XXX cleanup memory stuff */
                           char *newbuff = (char *)mem_sys_allocate((strlen((yyvsp[(1) - (2)].sval)) + strlen((yyvsp[(2) - (2)].sval)) + 2)
                                                                    * sizeof (char));
@@ -3027,23 +3046,23 @@
                         ;}
     break;
 
-  case 127:
-#line 957 "pir.y"
+  case 128:
+#line 961 "pir.y"
     { (yyval.sval) = "\n"; ;}
     break;
 
-  case 130:
-#line 961 "pir.y"
+  case 131:
+#line 965 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 131:
-#line 969 "pir.y"
+  case 132:
+#line 973 "pir.y"
     { set_instr(lexer, NULL); ;}
     break;
 
-  case 133:
-#line 977 "pir.y"
+  case 134:
+#line 981 "pir.y"
     {
                            if (lexer->parse_errors > MAX_NUM_ERRORS)
                                panic(lexer, "Too many errors. Compilation aborted.\n");
@@ -3052,23 +3071,23 @@
                          ;}
     break;
 
-  case 134:
-#line 986 "pir.y"
+  case 135:
+#line 990 "pir.y"
     {
                            set_instrf(lexer, "null", "%T", (yyvsp[(2) - (3)].targ));
                            get_opinfo(lexer);
                          ;}
     break;
 
-  case 135:
-#line 993 "pir.y"
+  case 136:
+#line 997 "pir.y"
     {
                            generate_getresults_instr(lexer, (yyvsp[(2) - (3)].targ));
                          ;}
     break;
 
-  case 139:
-#line 1006 "pir.y"
+  case 140:
+#line 1010 "pir.y"
     { /* at this point, TK_IDENT may in fact be a symbol identifier,
                             * not an op, so don't do any checks like is_parrot_op() just yet.
                             */
@@ -3077,8 +3096,8 @@
                          ;}
     break;
 
-  case 140:
-#line 1015 "pir.y"
+  case 141:
+#line 1019 "pir.y"
     { /* when this rule is activated, the initial identifier must
                            * be a parrot op.
                            */
@@ -3087,8 +3106,8 @@
                         ;}
     break;
 
-  case 146:
-#line 1033 "pir.y"
+  case 147:
+#line 1037 "pir.y"
     {
                          /* the "instruction" that was set now appears to be
                           * an identifier; get the name, and check its type.
@@ -3124,41 +3143,41 @@
                        ;}
     break;
 
-  case 147:
-#line 1069 "pir.y"
+  case 148:
+#line 1073 "pir.y"
     { push_operand(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 148:
-#line 1071 "pir.y"
+  case 149:
+#line 1075 "pir.y"
     { push_operand(lexer, expr_from_key(lexer, (yyvsp[(1) - (1)].key))); ;}
     break;
 
-  case 149:
-#line 1075 "pir.y"
+  case 150:
+#line 1079 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
-  case 150:
-#line 1077 "pir.y"
+  case 151:
+#line 1081 "pir.y"
     { /* this is either a LABEL or a symbol; in the latter case, the type
                             * will be filled in later. */
                            (yyval.expr) = expr_from_ident(lexer, (yyvsp[(1) - (1)].sval));
                          ;}
     break;
 
-  case 151:
-#line 1082 "pir.y"
-    { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
-    break;
-
   case 152:
-#line 1084 "pir.y"
+#line 1086 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 153:
 #line 1088 "pir.y"
+    { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
+    break;
+
+  case 154:
+#line 1092 "pir.y"
     {
                            /* if $1 is a register, just return that */
                            if (TEST_FLAG((yyvsp[(1) - (2)].targ)->flags, TARGET_FLAG_IS_REG))
@@ -3181,23 +3200,23 @@
                          ;}
     break;
 
-  case 154:
-#line 1111 "pir.y"
+  case 155:
+#line 1115 "pir.y"
     { (yyval.key) = (yyvsp[(2) - (3)].key); ;}
     break;
 
-  case 155:
-#line 1115 "pir.y"
+  case 156:
+#line 1119 "pir.y"
     { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 156:
-#line 1117 "pir.y"
+  case 157:
+#line 1121 "pir.y"
     { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
-  case 157:
-#line 1126 "pir.y"
+  case 158:
+#line 1130 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (6)].expr));
@@ -3210,8 +3229,8 @@
                         ;}
     break;
 
-  case 158:
-#line 1137 "pir.y"
+  case 159:
+#line 1141 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (4)].expr));
@@ -3225,8 +3244,8 @@
                         ;}
     break;
 
-  case 159:
-#line 1149 "pir.y"
+  case 160:
+#line 1153 "pir.y"
     {
                           unshift_operand(lexer, expr_from_key(lexer, (yyvsp[(4) - (6)].key)));
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (6)].targ)));
@@ -3236,20 +3255,20 @@
                         ;}
     break;
 
-  case 163:
-#line 1166 "pir.y"
+  case 164:
+#line 1170 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
                           else
                               set_instrf(lexer, "set", "%T%i", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].ival));
-
+                          CURRENT_INSTRUCTION(lexer)->sourceline = lexer->linenr;
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 164:
-#line 1175 "pir.y"
+  case 165:
+#line 1179 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 0.0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3260,24 +3279,24 @@
                         ;}
     break;
 
-  case 165:
-#line 1184 "pir.y"
+  case 166:
+#line 1188 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%C", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].cval));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 166:
-#line 1189 "pir.y"
+  case 167:
+#line 1193 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 167:
-#line 1194 "pir.y"
+  case 168:
+#line 1198 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (3)].sval));
                           if (sym) {
@@ -3300,16 +3319,16 @@
                         ;}
     break;
 
-  case 168:
-#line 1215 "pir.y"
+  case 169:
+#line 1219 "pir.y"
     {
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (3)].targ)));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 169:
-#line 1220 "pir.y"
+  case 170:
+#line 1224 "pir.y"
     {
                           /*   $P0 = foo ["bar"]    # PIR style
                            *
@@ -3352,8 +3371,8 @@
                         ;}
     break;
 
-  case 170:
-#line 1261 "pir.y"
+  case 171:
+#line 1265 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (4)].sval));
                           target *t;
@@ -3373,8 +3392,8 @@
                         ;}
     break;
 
-  case 171:
-#line 1279 "pir.y"
+  case 172:
+#line 1283 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(3) - (4)].ival));
                           set_target_key(preg, (yyvsp[(4) - (4)].key));
@@ -3383,16 +3402,16 @@
                         ;}
     break;
 
-  case 172:
-#line 1286 "pir.y"
+  case 173:
+#line 1290 "pir.y"
     {
                           set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%T%E", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].expr));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 173:
-#line 1291 "pir.y"
+  case 174:
+#line 1295 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3405,8 +3424,8 @@
                         ;}
     break;
 
-  case 174:
-#line 1302 "pir.y"
+  case 175:
+#line 1306 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3419,8 +3438,8 @@
                         ;}
     break;
 
-  case 175:
-#line 1313 "pir.y"
+  case 176:
+#line 1317 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3433,8 +3452,8 @@
                         ;}
     break;
 
-  case 176:
-#line 1324 "pir.y"
+  case 177:
+#line 1328 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3447,32 +3466,32 @@
                         ;}
     break;
 
-  case 177:
-#line 1335 "pir.y"
+  case 178:
+#line 1339 "pir.y"
     {
                           set_instrf(lexer, "add", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 178:
-#line 1340 "pir.y"
+  case 179:
+#line 1344 "pir.y"
     {
                           set_instrf(lexer, "sub", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 179:
-#line 1345 "pir.y"
+  case 180:
+#line 1349 "pir.y"
     {
                           set_instrf(lexer, (yyvsp[(3) - (4)].sval), "%T%E", (yyvsp[(1) - (4)].targ), (yyvsp[(4) - (4)].expr));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 180:
-#line 1350 "pir.y"
+  case 181:
+#line 1354 "pir.y"
     {
                           if (targets_equal((yyvsp[(1) - (5)].targ), (yyvsp[(3) - (5)].targ))) /* $P0 = $P0 + $P1 ==> $P0 += $P1 */
                               set_instrf(lexer, opnames[(yyvsp[(4) - (5)].ival)], "%T%E", (yyvsp[(1) - (5)].targ), (yyvsp[(5) - (5)].expr));
@@ -3484,8 +3503,8 @@
                         ;}
     break;
 
-  case 181:
-#line 1360 "pir.y"
+  case 182:
+#line 1364 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (4)].sval));
                           target *t;
@@ -3506,8 +3525,8 @@
                       ;}
     break;
 
-  case 182:
-#line 1379 "pir.y"
+  case 183:
+#line 1383 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (4)].ival));
                           set_target_key(preg, (yyvsp[(2) - (4)].key));
@@ -3516,98 +3535,98 @@
                         ;}
     break;
 
-  case 183:
-#line 1413 "pir.y"
-    { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%i%T", (yyvsp[(1) - (3)].ival), (yyvsp[(3) - (3)].targ)); ;}
+  case 184:
+#line 1417 "pir.y"
+    { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%i%T", (yyvsp[(1) - (3)].ival), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 184:
-#line 1415 "pir.y"
+  case 185:
+#line 1419 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%n%T", (yyvsp[(1) - (3)].dval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 185:
-#line 1417 "pir.y"
+  case 186:
+#line 1421 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%s%T", (yyvsp[(1) - (3)].sval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 186:
-#line 1419 "pir.y"
+  case 187:
+#line 1423 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_s_s(yyscanner, (yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval))); ;}
     break;
 
-  case 187:
-#line 1421 "pir.y"
+  case 188:
+#line 1425 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_i_i(yyscanner, (yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival))); ;}
     break;
 
-  case 188:
-#line 1423 "pir.y"
+  case 189:
+#line 1427 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_n_n(yyscanner, (yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval))); ;}
     break;
 
-  case 189:
-#line 1425 "pir.y"
+  case 190:
+#line 1429 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_i_n(yyscanner, (yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval))); ;}
     break;
 
-  case 190:
-#line 1427 "pir.y"
+  case 191:
+#line 1431 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_n_i(yyscanner, (yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival))); ;}
     break;
 
-  case 191:
-#line 1432 "pir.y"
+  case 192:
+#line 1436 "pir.y"
     { get_opinfo(lexer); ;}
     break;
 
-  case 192:
-#line 1441 "pir.y"
+  case 193:
+#line 1445 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, (yyvsp[(3) - (5)].sval), (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 193:
-#line 1443 "pir.y"
+  case 194:
+#line 1447 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "int", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 194:
-#line 1445 "pir.y"
+  case 195:
+#line 1449 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "num", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 195:
-#line 1447 "pir.y"
+  case 196:
+#line 1451 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "pmc", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 196:
-#line 1449 "pir.y"
+  case 197:
+#line 1453 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "string", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 197:
-#line 1451 "pir.y"
+  case 198:
+#line 1455 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "if", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 198:
-#line 1453 "pir.y"
+  case 199:
+#line 1457 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "unless", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 199:
-#line 1455 "pir.y"
+  case 200:
+#line 1459 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "goto", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 200:
-#line 1457 "pir.y"
+  case 201:
+#line 1461 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "null", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 201:
-#line 1459 "pir.y"
+  case 202:
+#line 1463 "pir.y"
     {
                           int istrue = evaluate_c(lexer, (yyvsp[(2) - (4)].cval));
                           /* if "unless", invert the true-ness */
@@ -3621,8 +3640,8 @@
                         ;}
     break;
 
-  case 202:
-#line 1471 "pir.y"
+  case 203:
+#line 1475 "pir.y"
     {
                           set_instrf(lexer, (yyvsp[(1) - (5)].ival) ? "unless_null" : "if_null", "%T%I",
                                      new_reg(lexer, PMC_TYPE, (yyvsp[(3) - (5)].ival)), (yyvsp[(5) - (5)].sval));
@@ -3631,13 +3650,13 @@
                         ;}
     break;
 
-  case 203:
-#line 1478 "pir.y"
+  case 204:
+#line 1482 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 204:
-#line 1480 "pir.y"
+  case 205:
+#line 1484 "pir.y"
     {
                           set_instrf(lexer, (yyvsp[(1) - (4)].ival) ? "unless" : "if", "%T%I", (yyvsp[(2) - (4)].targ), (yyvsp[(4) - (4)].sval));
                           /* set a flag indicating that the 2nd operand is a label */
@@ -3645,58 +3664,58 @@
                         ;}
     break;
 
-  case 205:
-#line 1486 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "int", (yyvsp[(4) - (4)].sval)); ;}
-    break;
-
   case 206:
-#line 1488 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "num", (yyvsp[(4) - (4)].sval)); ;}
+#line 1490 "pir.y"
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "int", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 207:
-#line 1490 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "pmc", (yyvsp[(4) - (4)].sval)); ;}
+#line 1492 "pir.y"
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "num", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 208:
-#line 1492 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "string", (yyvsp[(4) - (4)].sval)); ;}
+#line 1494 "pir.y"
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "pmc", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 209:
-#line 1494 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "if", (yyvsp[(4) - (4)].sval)); ;}
+#line 1496 "pir.y"
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "string", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 210:
-#line 1496 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "unless", (yyvsp[(4) - (4)].sval)); ;}
+#line 1498 "pir.y"
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "if", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 211:
-#line 1498 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
+#line 1500 "pir.y"
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "unless", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 212:
-#line 1500 "pir.y"
+#line 1502 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 213:
-#line 1502 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
+#line 1504 "pir.y"
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 214:
-#line 1504 "pir.y"
+#line 1506 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 215:
-#line 1506 "pir.y"
+#line 1508 "pir.y"
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
+    break;
+
+  case 216:
+#line 1510 "pir.y"
     {
                           if ((yyvsp[(2) - (4)].ival) == COMPUTE_DURING_RUNTIME) {
                              if ((yyvsp[(1) - (4)].ival) == NEED_INVERT_OPNAME) /* "unless" */
@@ -3723,8 +3742,8 @@
                         ;}
     break;
 
-  case 216:
-#line 1537 "pir.y"
+  case 217:
+#line 1541 "pir.y"
     {
                           /* the instructions "gt" and "ge" are converted to "lt" and "le".
                            * if so, then the arguments must be reversed as well. "lt" and
@@ -3752,8 +3771,8 @@
                         ;}
     break;
 
-  case 217:
-#line 1563 "pir.y"
+  case 218:
+#line 1567 "pir.y"
     {
                           if (((yyvsp[(0) - (3)].ival) != NEED_INVERT_OPNAME) && ((yyvsp[(2) - (3)].ival) == OP_GE || (yyvsp[(2) - (3)].ival) == OP_GT))
                               set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival) + 1], "%T%i", (yyvsp[(3) - (3)].targ), (yyvsp[(1) - (3)].ival));
@@ -3763,8 +3782,8 @@
                         ;}
     break;
 
-  case 218:
-#line 1571 "pir.y"
+  case 219:
+#line 1575 "pir.y"
     {
                           if (((yyvsp[(0) - (3)].ival) != NEED_INVERT_OPNAME) && ((yyvsp[(2) - (3)].ival) == OP_GE || (yyvsp[(2) - (3)].ival) == OP_GT))
                               set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival) + 1], "%T%n", (yyvsp[(3) - (3)].targ), (yyvsp[(1) - (3)].dval));
@@ -3775,8 +3794,8 @@
                         ;}
     break;
 
-  case 219:
-#line 1580 "pir.y"
+  case 220:
+#line 1584 "pir.y"
     {
                           if (((yyvsp[(0) - (3)].ival) != NEED_INVERT_OPNAME) && ((yyvsp[(2) - (3)].ival) == OP_GE || (yyvsp[(2) - (3)].ival) == OP_GT))
                               set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%T%s", (yyvsp[(3) - (3)].targ), (yyvsp[(1) - (3)].sval));
@@ -3787,71 +3806,71 @@
                         ;}
     break;
 
-  case 220:
-#line 1589 "pir.y"
+  case 221:
+#line 1593 "pir.y"
     { (yyval.ival) = evaluate_i_i((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
-  case 221:
-#line 1591 "pir.y"
+  case 222:
+#line 1595 "pir.y"
     { (yyval.ival) = evaluate_i_n((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
-  case 222:
-#line 1593 "pir.y"
+  case 223:
+#line 1597 "pir.y"
     { (yyval.ival) = evaluate_n_i((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
-  case 223:
-#line 1595 "pir.y"
+  case 224:
+#line 1599 "pir.y"
     { (yyval.ival) = evaluate_n_n((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
-  case 224:
-#line 1597 "pir.y"
+  case 225:
+#line 1601 "pir.y"
     { (yyval.ival) = evaluate_s_s((yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval)); ;}
     break;
 
-  case 225:
-#line 1601 "pir.y"
+  case 226:
+#line 1605 "pir.y"
     {
                           yypirerror(yyscanner, lexer, "cannot compare string to %s",
                                      (yyvsp[(3) - (3)].ival) == INT_TYPE ? "integer" : "number");
                         ;}
     break;
 
-  case 226:
-#line 1606 "pir.y"
+  case 227:
+#line 1610 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare integer to string"); ;}
     break;
 
-  case 227:
-#line 1608 "pir.y"
+  case 228:
+#line 1612 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare number to string"); ;}
     break;
 
-  case 228:
-#line 1612 "pir.y"
+  case 229:
+#line 1616 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
-  case 229:
-#line 1613 "pir.y"
+  case 230:
+#line 1617 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
-  case 230:
-#line 1616 "pir.y"
+  case 231:
+#line 1620 "pir.y"
     { (yyval.ival) = DONT_INVERT_OPNAME; /* no need to invert */ ;}
     break;
 
-  case 231:
-#line 1617 "pir.y"
+  case 232:
+#line 1621 "pir.y"
     { (yyval.ival) = NEED_INVERT_OPNAME; /* yes, invert opname */ ;}
     break;
 
-  case 234:
-#line 1625 "pir.y"
+  case 235:
+#line 1629 "pir.y"
     {
                           set_instrf(lexer, "branch", "%I", (yyvsp[(2) - (3)].sval));
                           set_op_labelflag(lexer, BIT(0)); /* bit 0 means: "1 << 0" */
@@ -3859,38 +3878,38 @@
                         ;}
     break;
 
-  case 235:
-#line 1633 "pir.y"
-    { declare_local(lexer, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].symb)); ;}
-    break;
-
   case 236:
 #line 1637 "pir.y"
-    { (yyval.symb) = (yyvsp[(1) - (1)].symb); ;}
+    { declare_local(lexer, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].symb)); ;}
     break;
 
   case 237:
-#line 1639 "pir.y"
-    { (yyval.symb) = add_local((yyvsp[(1) - (3)].symb), (yyvsp[(3) - (3)].symb)); ;}
+#line 1641 "pir.y"
+    { (yyval.symb) = (yyvsp[(1) - (1)].symb); ;}
     break;
 
   case 238:
 #line 1643 "pir.y"
-    { (yyval.symb) = new_local(lexer, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].ival)); ;}
+    { (yyval.symb) = add_local((yyvsp[(1) - (3)].symb), (yyvsp[(3) - (3)].symb)); ;}
     break;
 
   case 239:
-#line 1646 "pir.y"
-    { (yyval.ival) = 0; ;}
+#line 1647 "pir.y"
+    { (yyval.symb) = new_local(lexer, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 240:
-#line 1647 "pir.y"
-    { (yyval.ival) = 1; ;}
+#line 1650 "pir.y"
+    { (yyval.ival) = 0; ;}
     break;
 
   case 241:
 #line 1651 "pir.y"
+    { (yyval.ival) = 1; ;}
+    break;
+
+  case 242:
+#line 1655 "pir.y"
     { /* if $4 is not a register, it must be a declared symbol */
                           if (!TEST_FLAG((yyvsp[(4) - (5)].targ)->flags, TARGET_FLAG_IS_REG)) {
 
@@ -3902,27 +3921,22 @@
                         ;}
     break;
 
-  case 242:
-#line 1666 "pir.y"
+  case 243:
+#line 1670 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
-  case 245:
-#line 1678 "pir.y"
+  case 246:
+#line 1682 "pir.y"
     { /* $4 contains an invocation object */
                               set_invocation_args(lexer, (yyvsp[(4) - (8)].invo), (yyvsp[(3) - (8)].argm));
                               (yyval.invo) = set_invocation_results(lexer, (yyvsp[(4) - (8)].invo), (yyvsp[(6) - (8)].targ));
                             ;}
     break;
 
-  case 246:
-#line 1685 "pir.y"
-    { (yyval.argm) = NULL; ;}
-    break;
-
   case 247:
-#line 1687 "pir.y"
-    { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
+#line 1689 "pir.y"
+    { (yyval.argm) = NULL; ;}
     break;
 
   case 248:
@@ -3931,48 +3945,48 @@
     break;
 
   case 249:
-#line 1693 "pir.y"
-    { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
+#line 1695 "pir.y"
+    { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 250:
 #line 1697 "pir.y"
-    { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
+    { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 251:
 #line 1701 "pir.y"
-    { (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(2) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
+    { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 252:
-#line 1703 "pir.y"
-    { (yyval.invo) = invoke(lexer, CALL_NCI, (yyvsp[(2) - (2)].targ)); ;}
+#line 1705 "pir.y"
+    { (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(2) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 253:
-#line 1706 "pir.y"
-    { (yyval.invo) = invoke(lexer, CALL_METHOD, (yyvsp[(2) - (5)].targ), (yyvsp[(5) - (5)].expr)); ;}
+#line 1707 "pir.y"
+    { (yyval.invo) = invoke(lexer, CALL_NCI, (yyvsp[(2) - (2)].targ)); ;}
     break;
 
   case 254:
 #line 1710 "pir.y"
-    { (yyval.targ) = NULL; ;}
+    { (yyval.invo) = invoke(lexer, CALL_METHOD, (yyvsp[(2) - (5)].targ), (yyvsp[(5) - (5)].expr)); ;}
     break;
 
   case 255:
-#line 1712 "pir.y"
-    { (yyval.targ) = (yyvsp[(2) - (2)].targ); ;}
+#line 1714 "pir.y"
+    { (yyval.targ) = NULL; ;}
     break;
 
   case 256:
 #line 1716 "pir.y"
-    { (yyval.targ) = NULL; ;}
+    { (yyval.targ) = (yyvsp[(2) - (2)].targ); ;}
     break;
 
   case 257:
-#line 1718 "pir.y"
-    { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
+#line 1720 "pir.y"
+    { (yyval.targ) = NULL; ;}
     break;
 
   case 258:
@@ -3981,7 +3995,12 @@
     break;
 
   case 259:
-#line 1724 "pir.y"
+#line 1726 "pir.y"
+    { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
+    break;
+
+  case 260:
+#line 1728 "pir.y"
     {
                              if ((yyvsp[(2) - (2)].targ))
                                  (yyval.targ) = add_target(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].targ));
@@ -3990,33 +4009,33 @@
                            ;}
     break;
 
-  case 260:
-#line 1733 "pir.y"
+  case 261:
+#line 1737 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
-  case 261:
-#line 1735 "pir.y"
+  case 262:
+#line 1739 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 263:
-#line 1743 "pir.y"
+  case 264:
+#line 1747 "pir.y"
     { (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
-  case 264:
-#line 1745 "pir.y"
+  case 265:
+#line 1749 "pir.y"
     { (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
-  case 265:
-#line 1747 "pir.y"
+  case 266:
+#line 1751 "pir.y"
     {  (yyval.invo) = set_invocation_results(lexer, (yyvsp[(1) - (1)].invo), NULL); ;}
     break;
 
-  case 268:
-#line 1755 "pir.y"
+  case 269:
+#line 1759 "pir.y"
     {
                              /* if $1 is not a register, check whether the symbol was declared */
                              if (!TEST_FLAG((yyvsp[(1) - (4)].targ)->flags, TARGET_FLAG_IS_REG)) {
@@ -4036,21 +4055,21 @@
                            ;}
     break;
 
-  case 269:
-#line 1775 "pir.y"
+  case 270:
+#line 1779 "pir.y"
     {
                              (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(1) - (2)].targ), NULL);
                              set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (2)].argm));
                            ;}
     break;
 
-  case 270:
-#line 1782 "pir.y"
+  case 271:
+#line 1786 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 271:
-#line 1784 "pir.y"
+  case 272:
+#line 1788 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -4060,8 +4079,8 @@
                            ;}
     break;
 
-  case 272:
-#line 1794 "pir.y"
+  case 273:
+#line 1798 "pir.y"
     { /* check that this identifier was declared */
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
 
@@ -4080,23 +4099,23 @@
                            ;}
     break;
 
-  case 273:
-#line 1811 "pir.y"
+  case 274:
+#line 1815 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
-  case 274:
-#line 1813 "pir.y"
+  case 275:
+#line 1817 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
-  case 275:
-#line 1815 "pir.y"
+  case 276:
+#line 1819 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval))); ;}
     break;
 
-  case 276:
-#line 1819 "pir.y"
+  case 277:
+#line 1823 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -4107,26 +4126,21 @@
                            ;}
     break;
 
-  case 277:
-#line 1828 "pir.y"
+  case 278:
+#line 1832 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
-  case 278:
-#line 1833 "pir.y"
+  case 279:
+#line 1837 "pir.y"
     {
                              (yyval.targ) = (yyvsp[(2) - (3)].targ);
                            ;}
     break;
 
-  case 279:
-#line 1839 "pir.y"
-    { (yyval.targ) = NULL; ;}
-    break;
-
   case 280:
-#line 1841 "pir.y"
-    { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
+#line 1843 "pir.y"
+    { (yyval.targ) = NULL; ;}
     break;
 
   case 281:
@@ -4135,68 +4149,73 @@
     break;
 
   case 282:
-#line 1847 "pir.y"
-    { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
+#line 1849 "pir.y"
+    { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 283:
 #line 1851 "pir.y"
-    { (yyval.targ) = set_param_flag(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].ival)); ;}
+    { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 284:
-#line 1853 "pir.y"
-    { (yyval.targ) = set_param_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
+#line 1855 "pir.y"
+    { (yyval.targ) = set_param_flag(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 285:
 #line 1857 "pir.y"
-    { (yyval.ival) = 0; ;}
+    { (yyval.targ) = set_param_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
   case 286:
-#line 1859 "pir.y"
-    { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
+#line 1861 "pir.y"
+    { (yyval.ival) = 0; ;}
     break;
 
   case 287:
 #line 1863 "pir.y"
-    { (yyval.ival) = TARGET_FLAG_OPTIONAL; ;}
+    { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 288:
-#line 1865 "pir.y"
-    { (yyval.ival) = TARGET_FLAG_OPT_FLAG; ;}
+#line 1867 "pir.y"
+    { (yyval.ival) = TARGET_FLAG_OPTIONAL; ;}
     break;
 
   case 289:
-#line 1867 "pir.y"
-    { (yyval.ival) = TARGET_FLAG_SLURPY; ;}
+#line 1869 "pir.y"
+    { (yyval.ival) = TARGET_FLAG_OPT_FLAG; ;}
     break;
 
   case 290:
-#line 1869 "pir.y"
+#line 1871 "pir.y"
+    { (yyval.ival) = TARGET_FLAG_SLURPY; ;}
+    break;
+
+  case 291:
+#line 1873 "pir.y"
     {
                              (yyval.ival) = TARGET_FLAG_NAMED;
                              set_param_alias(lexer, (yyvsp[(2) - (2)].sval));
                            ;}
     break;
 
-  case 291:
-#line 1879 "pir.y"
+  case 292:
+#line 1883 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
-  case 296:
-#line 1889 "pir.y"
+  case 297:
+#line 1893 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
                             ;}
     break;
 
-  case 297:
-#line 1894 "pir.y"
+  case 298:
+#line 1898 "pir.y"
     { /* was the invocation a method call? then it becomes a method tail
                                * call, otherwise it's just a normal (sub) tail call.
                                */
@@ -4207,27 +4226,22 @@
                             ;}
     break;
 
-  case 298:
-#line 1905 "pir.y"
+  case 299:
+#line 1909 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
                             ;}
     break;
 
-  case 299:
-#line 1912 "pir.y"
-    { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
-    break;
-
   case 300:
 #line 1916 "pir.y"
-    { (yyval.argm) = NULL; ;}
+    { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 301:
-#line 1918 "pir.y"
-    { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
+#line 1920 "pir.y"
+    { (yyval.argm) = NULL; ;}
     break;
 
   case 302:
@@ -4236,74 +4250,74 @@
     break;
 
   case 303:
-#line 1924 "pir.y"
-    { (yyval.argm) = add_arg((yyvsp[(1) - (3)].argm), (yyvsp[(3) - (3)].argm)); ;}
+#line 1926 "pir.y"
+    { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 306:
-#line 1932 "pir.y"
-    { (yyval.argm) = set_arg_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
+  case 304:
+#line 1928 "pir.y"
+    { (yyval.argm) = add_arg((yyvsp[(1) - (3)].argm), (yyvsp[(3) - (3)].argm)); ;}
     break;
 
   case 307:
 #line 1936 "pir.y"
-    { (yyval.argm) = set_arg_flag((yyval.argm), (yyvsp[(2) - (2)].ival)); ;}
+    { (yyval.argm) = set_arg_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
   case 308:
 #line 1940 "pir.y"
-    { (yyval.argm) = set_curarg(lexer, new_argument(lexer, (yyvsp[(1) - (1)].expr)));  ;}
+    { (yyval.argm) = set_arg_flag((yyval.argm), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 309:
-#line 1946 "pir.y"
+#line 1944 "pir.y"
+    { (yyval.argm) = set_curarg(lexer, new_argument(lexer, (yyvsp[(1) - (1)].expr)));  ;}
+    break;
+
+  case 310:
+#line 1950 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
                             ;}
     break;
 
-  case 310:
-#line 1955 "pir.y"
+  case 311:
+#line 1959 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
                             ;}
     break;
 
-  case 311:
-#line 1962 "pir.y"
-    { (yyval.argm) = NULL; ;}
-    break;
-
   case 312:
-#line 1964 "pir.y"
-    { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
+#line 1966 "pir.y"
+    { (yyval.argm) = NULL; ;}
     break;
 
   case 313:
-#line 1969 "pir.y"
+#line 1968 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 314:
-#line 1971 "pir.y"
-    { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
+#line 1973 "pir.y"
+    { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 315:
-#line 1976 "pir.y"
-    { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
+#line 1975 "pir.y"
+    { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 316:
 #line 1980 "pir.y"
-    { (yyval.argm) = NULL; ;}
+    { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 317:
-#line 1982 "pir.y"
-    { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
+#line 1984 "pir.y"
+    { (yyval.argm) = NULL; ;}
     break;
 
   case 318:
@@ -4312,95 +4326,100 @@
     break;
 
   case 319:
-#line 1988 "pir.y"
-    { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
+#line 1990 "pir.y"
+    { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 320:
 #line 1992 "pir.y"
-    { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
+    { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 321:
-#line 1997 "pir.y"
-    { (yyval.ival) = 0; ;}
+#line 1996 "pir.y"
+    { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 322:
-#line 1999 "pir.y"
-    { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
+#line 2001 "pir.y"
+    { (yyval.ival) = 0; ;}
     break;
 
   case 323:
 #line 2003 "pir.y"
-    { (yyval.ival) = ARG_FLAG_FLAT; ;}
+    { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 324:
-#line 2005 "pir.y"
+#line 2007 "pir.y"
+    { (yyval.ival) = ARG_FLAG_FLAT; ;}
+    break;
+
+  case 325:
+#line 2009 "pir.y"
     {
                                (yyval.ival) = ARG_FLAG_NAMED;
                                set_arg_alias(lexer, (yyvsp[(2) - (2)].sval));
                              ;}
     break;
 
-  case 325:
-#line 2012 "pir.y"
+  case 326:
+#line 2016 "pir.y"
     { (yyval.sval) = NULL; ;}
     break;
 
-  case 326:
-#line 2014 "pir.y"
+  case 327:
+#line 2018 "pir.y"
     { (yyval.sval) = (yyvsp[(1) - (1)].sval); ;}
     break;
 
-  case 327:
-#line 2018 "pir.y"
+  case 328:
+#line 2022 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
-  case 329:
-#line 2025 "pir.y"
+  case 330:
+#line 2029 "pir.y"
     { store_global_constant(lexer, (yyvsp[(2) - (2)].cdec)); ;}
     break;
 
-  case 332:
-#line 2033 "pir.y"
+  case 333:
+#line 2037 "pir.y"
     { (yyval.cdec) = (yyvsp[(2) - (2)].cdec); ;}
     break;
 
-  case 335:
-#line 2041 "pir.y"
-    { store_global_constant(lexer, (yyvsp[(2) - (2)].cdec)); ;}
-    break;
-
   case 336:
 #line 2045 "pir.y"
-    { (yyval.cdec) = new_named_const(lexer, INT_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ival)); ;}
+    { store_global_constant(lexer, (yyvsp[(2) - (2)].cdec)); ;}
     break;
 
   case 337:
-#line 2047 "pir.y"
-    { (yyval.cdec) = new_named_const(lexer, NUM_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].dval)); ;}
+#line 2049 "pir.y"
+    { (yyval.cdec) = new_named_const(lexer, INT_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ival)); ;}
     break;
 
   case 338:
-#line 2049 "pir.y"
-    { (yyval.cdec) = new_named_const(lexer, STRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
+#line 2051 "pir.y"
+    { (yyval.cdec) = new_named_const(lexer, NUM_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].dval)); ;}
     break;
 
   case 339:
-#line 2051 "pir.y"
-    { (yyval.cdec) = new_named_const(lexer, USTRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ustr)); ;}
+#line 2053 "pir.y"
+    { (yyval.cdec) = new_named_const(lexer, STRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 340:
 #line 2055 "pir.y"
+    { (yyval.cdec) = new_named_const(lexer, USTRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ustr)); ;}
+    break;
+
+  case 341:
+#line 2059 "pir.y"
     { (yyval.cdec) = new_pmc_const(lexer, (yyvsp[(1) - (4)].sval), (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
     break;
 
-  case 342:
-#line 2060 "pir.y"
+  case 343:
+#line 2064 "pir.y"
     { /* this alternative is necessary, otherwise the parser
                                * just stops when assigning an identifier to a pmc
                                * const, without an error message. That may be
@@ -4410,98 +4429,98 @@
                             ;}
     break;
 
-  case 343:
-#line 2072 "pir.y"
+  case 344:
+#line 2076 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
-  case 344:
-#line 2073 "pir.y"
+  case 345:
+#line 2077 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
-  case 345:
-#line 2077 "pir.y"
+  case 346:
+#line 2081 "pir.y"
     { (yyval.cval) = new_const(lexer, INT_VAL, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
-  case 346:
-#line 2078 "pir.y"
+  case 347:
+#line 2082 "pir.y"
     { (yyval.cval) = new_const(lexer, NUM_VAL, (yyvsp[(1) - (1)].dval)); ;}
     break;
 
-  case 347:
-#line 2079 "pir.y"
+  case 348:
+#line 2083 "pir.y"
     { (yyval.cval) = (yyvsp[(1) - (1)].cval); ;}
     break;
 
-  case 348:
-#line 2082 "pir.y"
+  case 349:
+#line 2086 "pir.y"
     { (yyval.cval) = new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 349:
-#line 2083 "pir.y"
+  case 350:
+#line 2087 "pir.y"
     { (yyval.cval) = new_const(lexer, USTRING_VAL, (yyvsp[(1) - (1)].ustr)); ;}
     break;
 
-  case 350:
-#line 2086 "pir.y"
+  case 351:
+#line 2090 "pir.y"
     { (yyval.ival) = OP_NE; ;}
     break;
 
-  case 351:
-#line 2087 "pir.y"
+  case 352:
+#line 2091 "pir.y"
     { (yyval.ival) = OP_EQ; ;}
     break;
 
-  case 352:
-#line 2088 "pir.y"
+  case 353:
+#line 2092 "pir.y"
     { (yyval.ival) = OP_LT; ;}
     break;
 
-  case 353:
-#line 2089 "pir.y"
+  case 354:
+#line 2093 "pir.y"
     { (yyval.ival) = OP_LE; ;}
     break;
 
-  case 354:
-#line 2090 "pir.y"
+  case 355:
+#line 2094 "pir.y"
     { (yyval.ival) = OP_GE; ;}
     break;
 
-  case 355:
-#line 2091 "pir.y"
+  case 356:
+#line 2095 "pir.y"
     { (yyval.ival) = OP_GT; ;}
     break;
 
-  case 356:
-#line 2094 "pir.y"
+  case 357:
+#line 2098 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
-  case 357:
-#line 2095 "pir.y"
+  case 358:
+#line 2099 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
-  case 358:
-#line 2096 "pir.y"
+  case 359:
+#line 2100 "pir.y"
     { (yyval.ival) = PMC_TYPE; ;}
     break;
 
-  case 359:
-#line 2097 "pir.y"
+  case 360:
+#line 2101 "pir.y"
     { (yyval.ival) = STRING_TYPE; ;}
     break;
 
-  case 360:
-#line 2105 "pir.y"
+  case 361:
+#line 2109 "pir.y"
     { set_curtarget(lexer, (yyvsp[(1) - (1)].targ));  ;}
     break;
 
-  case 362:
-#line 2109 "pir.y"
+  case 363:
+#line 2113 "pir.y"
     { /* a symbol must have been declared; check that at this point. */
                            symbol * sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                            if (sym == NULL) {
@@ -4515,278 +4534,278 @@
                          ;}
     break;
 
-  case 363:
-#line 2122 "pir.y"
+  case 364:
+#line 2126 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
-  case 364:
-#line 2123 "pir.y"
+  case 365:
+#line 2127 "pir.y"
     { (yyval.targ) = new_reg(lexer, NUM_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
-  case 365:
-#line 2124 "pir.y"
+  case 366:
+#line 2128 "pir.y"
     { (yyval.targ) = new_reg(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
-  case 366:
-#line 2125 "pir.y"
+  case 367:
+#line 2129 "pir.y"
     { (yyval.targ) = new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
-  case 369:
-#line 2133 "pir.y"
+  case 370:
+#line 2137 "pir.y"
     { (yyval.sval) = "if"; ;}
     break;
 
-  case 370:
-#line 2134 "pir.y"
+  case 371:
+#line 2138 "pir.y"
     { (yyval.sval) = "unless"; ;}
     break;
 
-  case 371:
-#line 2135 "pir.y"
+  case 372:
+#line 2139 "pir.y"
     { (yyval.sval) = "goto"; ;}
     break;
 
-  case 372:
-#line 2136 "pir.y"
+  case 373:
+#line 2140 "pir.y"
     { (yyval.sval) = "int"; ;}
     break;
 
-  case 373:
-#line 2137 "pir.y"
+  case 374:
+#line 2141 "pir.y"
     { (yyval.sval) = "num"; ;}
     break;
 
-  case 374:
-#line 2138 "pir.y"
+  case 375:
+#line 2142 "pir.y"
     { (yyval.sval) = "string"; ;}
     break;
 
-  case 375:
-#line 2139 "pir.y"
+  case 376:
+#line 2143 "pir.y"
     { (yyval.sval) = "pmc"; ;}
     break;
 
-  case 376:
-#line 2140 "pir.y"
+  case 377:
+#line 2144 "pir.y"
     { (yyval.sval) = "null"; ;}
     break;
 
-  case 377:
-#line 2143 "pir.y"
+  case 378:
+#line 2147 "pir.y"
     { (yyval.sval) = "neg"; ;}
     break;
 
-  case 378:
-#line 2144 "pir.y"
+  case 379:
+#line 2148 "pir.y"
     { (yyval.sval) = "not"; ;}
     break;
 
-  case 379:
-#line 2145 "pir.y"
+  case 380:
+#line 2149 "pir.y"
     { (yyval.sval) = "bnot"; ;}
     break;
 
-  case 380:
-#line 2148 "pir.y"
+  case 381:
+#line 2152 "pir.y"
     { (yyval.ival) = OP_ADD; ;}
     break;
 
-  case 381:
-#line 2149 "pir.y"
+  case 382:
+#line 2153 "pir.y"
     { (yyval.ival) = OP_SUB; ;}
     break;
 
-  case 382:
-#line 2150 "pir.y"
+  case 383:
+#line 2154 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
-  case 383:
-#line 2151 "pir.y"
+  case 384:
+#line 2155 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
-  case 384:
-#line 2152 "pir.y"
+  case 385:
+#line 2156 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
-  case 385:
-#line 2153 "pir.y"
+  case 386:
+#line 2157 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
-  case 386:
-#line 2154 "pir.y"
+  case 387:
+#line 2158 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
-  case 387:
-#line 2155 "pir.y"
+  case 388:
+#line 2159 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
-  case 388:
-#line 2156 "pir.y"
+  case 389:
+#line 2160 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
-  case 389:
-#line 2157 "pir.y"
+  case 390:
+#line 2161 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
-  case 390:
-#line 2158 "pir.y"
+  case 391:
+#line 2162 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
-  case 391:
-#line 2159 "pir.y"
+  case 392:
+#line 2163 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
-  case 392:
-#line 2160 "pir.y"
+  case 393:
+#line 2164 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
-  case 393:
-#line 2161 "pir.y"
+  case 394:
+#line 2165 "pir.y"
     { (yyval.ival) = OP_OR; ;}
     break;
 
-  case 394:
-#line 2162 "pir.y"
+  case 395:
+#line 2166 "pir.y"
     { (yyval.ival) = OP_AND; ;}
     break;
 
-  case 395:
-#line 2163 "pir.y"
+  case 396:
+#line 2167 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
-  case 396:
-#line 2164 "pir.y"
+  case 397:
+#line 2168 "pir.y"
     { (yyval.ival) = OP_XOR; ;}
     break;
 
-  case 397:
-#line 2165 "pir.y"
+  case 398:
+#line 2169 "pir.y"
     { (yyval.ival) = OP_ISEQ; ;}
     break;
 
-  case 398:
-#line 2166 "pir.y"
+  case 399:
+#line 2170 "pir.y"
     { (yyval.ival) = OP_ISLE; ;}
     break;
 
-  case 399:
-#line 2167 "pir.y"
+  case 400:
+#line 2171 "pir.y"
     { (yyval.ival) = OP_ISLT; ;}
     break;
 
-  case 400:
-#line 2168 "pir.y"
+  case 401:
+#line 2172 "pir.y"
     { (yyval.ival) = OP_ISGE; ;}
     break;
 
-  case 401:
-#line 2169 "pir.y"
+  case 402:
+#line 2173 "pir.y"
     { (yyval.ival) = OP_ISGT; ;}
     break;
 
-  case 402:
-#line 2170 "pir.y"
+  case 403:
+#line 2174 "pir.y"
     { (yyval.ival) = OP_ISNE; ;}
     break;
 
-  case 403:
-#line 2176 "pir.y"
+  case 404:
+#line 2180 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
-  case 404:
-#line 2177 "pir.y"
+  case 405:
+#line 2181 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
-  case 405:
-#line 2178 "pir.y"
+  case 406:
+#line 2182 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
-  case 406:
-#line 2179 "pir.y"
+  case 407:
+#line 2183 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
-  case 407:
-#line 2180 "pir.y"
+  case 408:
+#line 2184 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
-  case 408:
-#line 2181 "pir.y"
+  case 409:
+#line 2185 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
-  case 409:
-#line 2182 "pir.y"
+  case 410:
+#line 2186 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
-  case 410:
-#line 2183 "pir.y"
+  case 411:
+#line 2187 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
-  case 411:
-#line 2184 "pir.y"
+  case 412:
+#line 2188 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
-  case 412:
-#line 2185 "pir.y"
+  case 413:
+#line 2189 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
-  case 413:
-#line 2186 "pir.y"
+  case 414:
+#line 2190 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
-  case 414:
-#line 2187 "pir.y"
+  case 415:
+#line 2191 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
-  case 416:
-#line 2208 "pir.y"
+  case 417:
+#line 2212 "pir.y"
     { new_subr(lexer, "@start"); ;}
     break;
 
-  case 425:
-#line 2224 "pir.y"
+  case 426:
+#line 2228 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
-  case 430:
-#line 2234 "pir.y"
+  case 431:
+#line 2238 "pir.y"
     { set_sub_name(lexer, (yyvsp[(3) - (3)].sval)); ;}
     break;
 
-  case 431:
-#line 2238 "pir.y"
+  case 432:
+#line 2242 "pir.y"
     { new_subr(lexer, NULL); ;}
     break;
 
-  case 432:
-#line 2243 "pir.y"
+  case 433:
+#line 2247 "pir.y"
     {
 
                                   if (is_parrot_op(lexer, (yyvsp[(1) - (3)].sval))) {
@@ -4801,7 +4820,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 4805 "pirparser.c"
+#line 4824 "pirparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5015,7 +5034,7 @@
 }
 
 
-#line 2257 "pir.y"
+#line 2261 "pir.y"
 
 
 



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