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

[svn:parrot] r34561 - trunk/compilers/pirc/new

From:
kjs
Date:
December 29, 2008 01:39
Subject:
[svn:parrot] r34561 - trunk/compilers/pirc/new
Message ID:
20081229093826.296F1CB9FA@x12.develooper.com
Author: kjs
Date: Mon Dec 29 01:38:23 2008
New Revision: 34561

Modified:
   trunk/compilers/pirc/new/bcgen.h
   trunk/compilers/pirc/new/pir.y
   trunk/compilers/pirc/new/pircompunit.c
   trunk/compilers/pirc/new/pircompunit.h
   trunk/compilers/pirc/new/pirparser.c

Log:
[pirc] for now, stick to current :multi syntax; not sure whether :invocant will be 1.0 feature.
+ Count the number of :multi types during parsing.

Modified: trunk/compilers/pirc/new/bcgen.h
==============================================================================
--- trunk/compilers/pirc/new/bcgen.h	(original)
+++ trunk/compilers/pirc/new/bcgen.h	Mon Dec 29 01:38:23 2008
@@ -26,6 +26,7 @@
     unsigned     regs_used[NUM_PARROT_TYPES];
     int          startoffset;
     int          endoffset;
+    unsigned     num_multi_types;
 
 } sub_info;
 

Modified: trunk/compilers/pirc/new/pir.y
==============================================================================
--- trunk/compilers/pirc/new/pir.y	(original)
+++ trunk/compilers/pirc/new/pir.y	Mon Dec 29 01:38:23 2008
@@ -467,6 +467,8 @@
              int_or_num
 
 %type <uval> parameters
+             opt_multi_types
+             multi_types
 
 %type <invo> long_invocation
              long_invocation_stat
@@ -716,7 +718,7 @@
                          { set_sub_flag(lexer, SUB_FLAG_POSTCOMP); }
                   | ":immediate"
                          { set_sub_flag(lexer, SUB_FLAG_IMMEDIATE); }
-                  | ":multi"
+                  | ":multi" multi_type_list
                          { set_sub_flag(lexer, SUB_FLAG_MULTI); }
                   | ":outer" '(' sub_id ')'
                          { set_sub_outer(lexer, $3); }
@@ -732,6 +734,22 @@
                          { set_sub_nsentry(lexer, $2); }
                   ;
 
+multi_type_list   : '(' opt_multi_types ')'
+                        { set_sub_multi_arity(lexer, $2); }
+                  ;
+
+opt_multi_types   : /* empty */
+                        { $$ = 0; }
+                  | multi_types
+                        { $$ = $1; }
+                  ;
+
+multi_types       : multi_type
+                        { $$ = 1; /* start counting multi types */ }
+                  | multi_types ',' multi_type
+                        { ++$$; }
+                  ;
+
 multi_type        : identifier
                   | TK_STRINGC
                   | keylist

Modified: trunk/compilers/pirc/new/pircompunit.c
==============================================================================
--- trunk/compilers/pirc/new/pircompunit.c	(original)
+++ trunk/compilers/pirc/new/pircompunit.c	Mon Dec 29 01:38:23 2008
@@ -127,6 +127,20 @@
     SET_FLAG(lexer->subs->flags, SUB_FLAG_OUTER);
 }
 
+/*
+
+=item C<void
+set_sub_multi_arity(lexer_state * const lexer, unsigned num_multi_types)>
+
+Set the number of :multi types on the current sub.
+
+=cut
+
+*/
+void
+set_sub_multi_arity(lexer_state * const lexer, unsigned num_multi_types) {
+    CURRENT_SUB(lexer)->info.num_multi_types = num_multi_types;
+}
 
 /*
 

Modified: trunk/compilers/pirc/new/pircompunit.h
==============================================================================
--- trunk/compilers/pirc/new/pircompunit.h	(original)
+++ trunk/compilers/pirc/new/pircompunit.h	Mon Dec 29 01:38:23 2008
@@ -343,6 +343,8 @@
 void set_sub_nsentry(struct lexer_state * const lexer, char const * const nsentry);
 void set_sub_methodname(struct lexer_state * const lexer, char const * const methodname);
 
+void set_sub_multi_arity(struct lexer_state * const lexer, unsigned num_multi_types) ;
+
 /* install a new subroutine node */
 void new_subr(struct lexer_state * const lexer, char const * const subname);
 

Modified: trunk/compilers/pirc/new/pirparser.c
==============================================================================
--- trunk/compilers/pirc/new/pirparser.c	(original)
+++ trunk/compilers/pirc/new/pirparser.c	Mon Dec 29 01:38:23 2008
@@ -809,16 +809,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  10
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1007
+#define YYLAST   1073
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  139
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  163
+#define YYNNTS  166
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  416
+#define YYNRULES  421
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  648
+#define YYNSTATES  656
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -881,214 +881,217 @@
       73,    75,    78,    81,    83,    85,    88,    92,    95,    98,
      101,   106,   109,   114,   119,   120,   122,   124,   128,   130,
      137,   139,   142,   144,   146,   147,   150,   152,   154,   156,
-     158,   160,   162,   164,   166,   171,   174,   177,   180,   183,
-     186,   188,   190,   192,   194,   195,   198,   203,   206,   207,
-     210,   212,   214,   216,   221,   223,   224,   227,   230,   232,
-     234,   236,   238,   240,   242,   244,   246,   248,   250,   252,
-     254,   256,   258,   260,   262,   264,   268,   269,   273,   274,
-     276,   278,   282,   284,   286,   289,   291,   295,   296,   299,
-     301,   303,   305,   308,   310,   313,   316,   320,   324,   327,
-     330,   332,   334,   336,   338,   339,   341,   343,   347,   351,
-     353,   355,   357,   359,   361,   363,   366,   370,   372,   376,
-     383,   388,   395,   398,   400,   402,   406,   410,   414,   418,
-     422,   426,   431,   436,   441,   445,   449,   453,   457,   461,
-     465,   469,   474,   480,   485,   490,   494,   498,   502,   506,
-     510,   514,   518,   522,   525,   531,   537,   543,   549,   555,
-     561,   567,   573,   579,   584,   590,   595,   600,   605,   610,
-     615,   620,   625,   630,   635,   640,   645,   650,   655,   659,
-     663,   667,   671,   675,   679,   683,   687,   691,   695,   699,
-     703,   705,   707,   709,   711,   713,   715,   719,   724,   726,
-     730,   733,   734,   736,   742,   744,   746,   748,   757,   758,
-     760,   762,   765,   769,   773,   776,   782,   783,   786,   787,
-     789,   791,   794,   798,   800,   803,   807,   811,   813,   815,
-     817,   822,   825,   827,   829,   831,   833,   835,   837,   839,
-     841,   845,   846,   848,   850,   854,   857,   858,   861,   863,
-     865,   867,   870,   872,   874,   876,   878,   880,   884,   888,
-     892,   896,   897,   899,   901,   905,   907,   909,   913,   916,
-     918,   924,   930,   931,   933,   935,   938,   942,   943,   945,
-     947,   950,   954,   955,   958,   960,   963,   964,   966,   970,
-     973,   975,   977,   980,   983,   988,   993,   998,  1003,  1005,
-    1007,  1009,  1011,  1013,  1015,  1017,  1019,  1021,  1023,  1025,
-    1027,  1029,  1031,  1033,  1035,  1037,  1039,  1041,  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,
-    1148,  1150,  1152,  1155,  1157,  1160,  1162,  1165,  1168,  1170,
-    1173,  1176,  1178,  1180,  1182,  1186,  1188
+     158,   160,   162,   164,   167,   172,   175,   178,   181,   184,
+     187,   191,   192,   194,   196,   200,   202,   204,   206,   208,
+     209,   212,   217,   220,   221,   224,   226,   228,   230,   235,
+     237,   238,   241,   244,   246,   248,   250,   252,   254,   256,
+     258,   260,   262,   264,   266,   268,   270,   272,   274,   276,
+     278,   282,   283,   287,   288,   290,   292,   296,   298,   300,
+     303,   305,   309,   310,   313,   315,   317,   319,   322,   324,
+     327,   330,   334,   338,   341,   344,   346,   348,   350,   352,
+     353,   355,   357,   361,   365,   367,   369,   371,   373,   375,
+     377,   380,   384,   386,   390,   397,   402,   409,   412,   414,
+     416,   420,   424,   428,   432,   436,   440,   445,   450,   455,
+     459,   463,   467,   471,   475,   479,   483,   488,   494,   499,
+     504,   508,   512,   516,   520,   524,   528,   532,   536,   539,
+     545,   551,   557,   563,   569,   575,   581,   587,   593,   598,
+     604,   609,   614,   619,   624,   629,   634,   639,   644,   649,
+     654,   659,   664,   669,   673,   677,   681,   685,   689,   693,
+     697,   701,   705,   709,   713,   717,   719,   721,   723,   725,
+     727,   729,   733,   738,   740,   744,   747,   748,   750,   756,
+     758,   760,   762,   771,   772,   774,   776,   779,   783,   787,
+     790,   796,   797,   800,   801,   803,   805,   808,   812,   814,
+     817,   821,   825,   827,   829,   831,   836,   839,   841,   843,
+     845,   847,   849,   851,   853,   855,   859,   860,   862,   864,
+     868,   871,   872,   875,   877,   879,   881,   884,   886,   888,
+     890,   892,   894,   898,   902,   906,   910,   911,   913,   915,
+     919,   921,   923,   927,   930,   932,   938,   944,   945,   947,
+     949,   952,   956,   957,   959,   961,   964,   968,   969,   972,
+     974,   977,   978,   980,   984,   987,   989,   991,   994,   997,
+    1002,  1007,  1012,  1017,  1019,  1021,  1023,  1025,  1027,  1029,
+    1031,  1033,  1035,  1037,  1039,  1041,  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,  1162,  1164,  1166,  1169,  1171,
+    1174,  1176,  1179,  1182,  1184,  1187,  1190,  1192,  1194,  1196,
+    1200,  1202
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     140,     0,    -1,   116,   141,    -1,   115,   293,    -1,   142,
+     140,     0,    -1,   116,   141,    -1,   115,   296,    -1,   142,
      143,   142,    -1,    -1,    35,    -1,   144,    -1,   143,    35,
-     144,    -1,   167,    -1,   278,    -1,   163,    -1,   161,    -1,
+     144,    -1,   167,    -1,   281,    -1,   163,    -1,   161,    -1,
      162,    -1,   158,    -1,   159,    -1,   160,    -1,   145,    -1,
      146,    -1,   147,    -1,   108,    37,   114,    -1,   148,   119,
-     149,   120,    35,   152,   105,    -1,   104,   288,    -1,    -1,
-     150,    -1,   151,    -1,   150,   121,   151,    -1,   288,    -1,
+     149,   120,    35,   152,   105,    -1,   104,   291,    -1,    -1,
+     150,    -1,   151,    -1,   150,   121,   151,    -1,   291,    -1,
       -1,   153,    -1,   154,    -1,   153,   154,    -1,   155,    35,
-      -1,   156,    -1,   157,    -1,   107,   109,    -1,   106,   284,
+      -1,   156,    -1,   157,    -1,   107,   109,    -1,   106,   287,
      110,    -1,     5,    46,    -1,    10,    47,    -1,    11,    46,
       -1,    34,    46,   121,    46,    -1,     3,    46,    -1,     4,
       46,   122,    46,    -1,    13,   123,   164,   124,    -1,    -1,
      165,    -1,   166,    -1,   165,   125,   166,    -1,    46,    -1,
-     169,   171,    35,   174,   182,   168,    -1,     7,    -1,     6,
-     170,    -1,   288,    -1,    46,    -1,    -1,   171,   172,    -1,
+     169,   171,    35,   177,   185,   168,    -1,     7,    -1,     6,
+     170,    -1,   291,    -1,    46,    -1,    -1,   171,   172,    -1,
       86,    -1,    83,    -1,    84,    -1,    85,    -1,    90,    -1,
-      92,    -1,    93,    -1,    91,    -1,    88,   119,   170,   120,
-      -1,    87,   274,    -1,    89,   274,    -1,    94,   275,    -1,
-      95,   275,    -1,    96,   275,    -1,   288,    -1,    46,    -1,
-     209,    -1,   175,    -1,    -1,   175,   176,    -1,     8,   177,
-     178,    35,    -1,   284,   288,    -1,    -1,   178,   179,    -1,
-     252,    -1,   180,    -1,   181,    -1,   103,   119,   173,   120,
-      -1,    97,    -1,    -1,   182,   183,    -1,    36,   184,    -1,
-     184,    -1,   199,    -1,   216,    -1,   222,    -1,   223,    -1,
-     227,    -1,   276,    -1,   253,    -1,   228,    -1,   212,    -1,
-     198,    -1,   197,    -1,   194,    -1,   195,    -1,   185,    -1,
-     196,    -1,   186,    -1,   111,   187,    35,    -1,    -1,   119,
-     188,   120,    -1,    -1,   189,    -1,   190,    -1,   189,   121,
-     190,    -1,   112,    -1,   113,    -1,   111,   187,    -1,   191,
-      -1,   126,   192,   127,    -1,    -1,   192,   193,    -1,    35,
-      -1,   113,    -1,   112,    -1,   111,   187,    -1,    35,    -1,
-     159,    35,    -1,     1,    35,    -1,    44,   285,    35,    -1,
-      28,   247,    35,    -1,   200,    35,    -1,   201,   202,    -1,
-     211,    -1,    37,    -1,   203,    -1,   205,    -1,    -1,   204,
-      -1,   206,    -1,   204,   121,   206,    -1,   209,   122,   281,
-      -1,   207,    -1,   209,    -1,   282,    -1,   288,    -1,   287,
-      -1,   208,    -1,   246,   209,    -1,   123,   210,   124,    -1,
-     281,    -1,   210,   125,   281,    -1,   285,   122,   201,   207,
-     121,   204,    -1,   285,   122,   201,   207,    -1,   285,   122,
-     201,   209,   121,   204,    -1,   214,    35,    -1,    37,    -1,
-     289,    -1,   285,   122,    47,    -1,   285,   122,    48,    -1,
-     285,   122,    46,    -1,   285,   122,   287,    -1,   285,   122,
-     213,    -1,   285,   122,   215,    -1,   285,   122,   201,   209,
-      -1,   285,   122,   289,   209,    -1,   285,   122,    49,   209,
-      -1,   285,   292,   281,    -1,   285,    72,    47,    -1,   285,
-      72,    48,    -1,   285,    73,    47,    -1,   285,    73,    48,
-      -1,   285,    72,   285,    -1,   285,    73,   285,    -1,   285,
-     122,   290,   281,    -1,   285,   122,   285,   291,   281,    -1,
-     289,   209,   122,   281,    -1,    49,   209,   122,   281,    -1,
-      47,   291,   285,    -1,    48,   291,   285,    -1,    46,   291,
-     285,    -1,    46,   291,    46,    -1,    47,   291,    47,    -1,
-      48,   291,    48,    -1,    47,   291,    48,    -1,    48,   291,
-      47,    -1,   217,    35,    -1,   220,    44,    37,    45,   288,
-      -1,   220,    44,    38,    45,   288,    -1,   220,    44,    39,
-      45,   288,    -1,   220,    44,    40,    45,   288,    -1,   220,
-      44,    41,    45,   288,    -1,   220,    44,    42,    45,   288,
-      -1,   220,    44,    43,    45,   288,    -1,   220,    44,    45,
-      45,   288,    -1,   220,    44,    44,    45,   288,    -1,   220,
-     282,   221,   288,    -1,   220,    44,    49,   221,   288,    -1,
-     220,    37,   221,   288,    -1,   220,   287,   221,   288,    -1,
-     220,    38,   221,   288,    -1,   220,    39,   221,   288,    -1,
-     220,    40,   221,   288,    -1,   220,    41,   221,   288,    -1,
-     220,    42,   221,   288,    -1,   220,    43,   221,   288,    -1,
-     220,    45,    45,   288,    -1,   220,    45,   121,   288,    -1,
-     220,    44,    45,   288,    -1,   220,    44,   121,   288,    -1,
-     220,   218,    45,   288,    -1,   285,   283,   281,    -1,    47,
-     283,   285,    -1,    48,   283,   285,    -1,    46,   283,   285,
-      -1,    47,   283,    47,    -1,    47,   283,    48,    -1,    48,
-     283,    47,    -1,    48,   283,    48,    -1,    46,   283,    46,
-      -1,    46,   283,   219,    -1,    47,   283,    46,    -1,    48,
-     283,    46,    -1,    47,    -1,    48,    -1,    42,    -1,    43,
-      -1,    45,    -1,   121,    -1,    45,   288,    35,    -1,    12,
-     284,   224,    35,    -1,   225,    -1,   224,   121,   225,    -1,
-     288,   226,    -1,    -1,    97,    -1,     9,    46,   121,   246,
-      35,    -1,   229,    -1,   230,    -1,   239,    -1,    26,    35,
-     231,   234,    35,   236,    27,    35,    -1,    -1,   232,    -1,
-     233,    -1,   232,   233,    -1,    30,   262,    35,    -1,    29,
-     244,   235,    -1,    32,   246,    -1,    14,   246,    35,    15,
-     245,    -1,    -1,   121,   246,    -1,    -1,   237,    -1,   238,
-      -1,   237,   238,    -1,    31,   250,    35,    -1,   223,    -1,
-     240,    35,    -1,   247,   122,   241,    -1,   285,   122,   241,
-      -1,   241,    -1,   243,    -1,   242,    -1,   246,   128,   245,
-     257,    -1,   244,   257,    -1,   246,    -1,    46,    -1,   288,
-      -1,    49,    -1,    51,    -1,    46,    -1,   288,    -1,    49,
-      -1,   119,   248,   120,    -1,    -1,   249,    -1,   250,    -1,
-     249,   121,   250,    -1,   285,   251,    -1,    -1,   251,   252,
-      -1,   101,    -1,   102,    -1,    99,    -1,    98,   274,    -1,
-     254,    -1,   255,    -1,   264,    -1,   256,    -1,   265,    -1,
-      18,   257,    35,    -1,    33,   241,    35,    -1,    19,   257,
-      35,    -1,   119,   258,   120,    -1,    -1,   259,    -1,   260,
-      -1,   259,   121,   260,    -1,   262,    -1,   261,    -1,    46,
-      54,   263,    -1,   263,   272,    -1,   281,    -1,    24,    35,
-     269,    25,    35,    -1,    22,    35,   266,    23,    35,    -1,
-      -1,   267,    -1,   268,    -1,   267,   268,    -1,    20,   262,
-      35,    -1,    -1,   270,    -1,   271,    -1,   270,   271,    -1,
-      21,   262,    35,    -1,    -1,   272,   273,    -1,   100,    -1,
-      98,   274,    -1,    -1,   275,    -1,   119,    46,   120,    -1,
-     277,    35,    -1,   278,    -1,   279,    -1,    17,   280,    -1,
-      16,   280,    -1,    38,   288,   122,    47,    -1,    39,   288,
-     122,    48,    -1,    41,   288,   122,    46,    -1,    46,   288,
-     122,   282,    -1,   285,    -1,   282,    -1,    46,    -1,    47,
-      -1,    48,    -1,    53,    -1,    55,    -1,    56,    -1,    57,
-      -1,    58,    -1,    60,    -1,    59,    -1,    38,    -1,    39,
-      -1,    40,    -1,    41,    -1,   286,    -1,   287,    -1,   288,
-      -1,    49,    -1,    50,    -1,    52,    -1,    51,    -1,    37,
-      -1,   289,    -1,    42,    -1,    43,    -1,    45,    -1,    38,
-      -1,    39,    -1,    41,    -1,    40,    -1,    44,    -1,   129,
-      -1,   130,    -1,   131,    -1,   132,    -1,   129,    -1,   133,
-      -1,   134,    -1,   135,    -1,   136,    -1,   137,    -1,   131,
-      -1,   138,    -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,   294,   295,    -1,   142,    -1,
-     296,    -1,   295,   296,    -1,   297,    -1,   163,    35,    -1,
-     227,    -1,   159,    35,    -1,   145,    35,    -1,   186,    -1,
-      36,   298,    -1,   299,   298,    -1,   301,    -1,   194,    -1,
-     301,    -1,   300,   171,    36,    -1,   117,    -1,   201,   203,
-      35,    -1
+      92,    -1,    93,    -1,    91,   173,    -1,    88,   119,   170,
+     120,    -1,    87,   277,    -1,    89,   277,    -1,    94,   278,
+      -1,    95,   278,    -1,    96,   278,    -1,   119,   174,   120,
+      -1,    -1,   175,    -1,   176,    -1,   175,   121,   176,    -1,
+     291,    -1,    46,    -1,   212,    -1,   178,    -1,    -1,   178,
+     179,    -1,     8,   180,   181,    35,    -1,   287,   291,    -1,
+      -1,   181,   182,    -1,   255,    -1,   183,    -1,   184,    -1,
+     103,   119,   176,   120,    -1,    97,    -1,    -1,   185,   186,
+      -1,    36,   187,    -1,   187,    -1,   202,    -1,   219,    -1,
+     225,    -1,   226,    -1,   230,    -1,   279,    -1,   256,    -1,
+     231,    -1,   215,    -1,   201,    -1,   200,    -1,   197,    -1,
+     198,    -1,   188,    -1,   199,    -1,   189,    -1,   111,   190,
+      35,    -1,    -1,   119,   191,   120,    -1,    -1,   192,    -1,
+     193,    -1,   192,   121,   193,    -1,   112,    -1,   113,    -1,
+     111,   190,    -1,   194,    -1,   126,   195,   127,    -1,    -1,
+     195,   196,    -1,    35,    -1,   113,    -1,   112,    -1,   111,
+     190,    -1,    35,    -1,   159,    35,    -1,     1,    35,    -1,
+      44,   288,    35,    -1,    28,   250,    35,    -1,   203,    35,
+      -1,   204,   205,    -1,   214,    -1,    37,    -1,   206,    -1,
+     208,    -1,    -1,   207,    -1,   209,    -1,   207,   121,   209,
+      -1,   212,   122,   284,    -1,   210,    -1,   212,    -1,   285,
+      -1,   291,    -1,   290,    -1,   211,    -1,   249,   212,    -1,
+     123,   213,   124,    -1,   284,    -1,   213,   125,   284,    -1,
+     288,   122,   204,   210,   121,   207,    -1,   288,   122,   204,
+     210,    -1,   288,   122,   204,   212,   121,   207,    -1,   217,
+      35,    -1,    37,    -1,   292,    -1,   288,   122,    47,    -1,
+     288,   122,    48,    -1,   288,   122,    46,    -1,   288,   122,
+     290,    -1,   288,   122,   216,    -1,   288,   122,   218,    -1,
+     288,   122,   204,   212,    -1,   288,   122,   292,   212,    -1,
+     288,   122,    49,   212,    -1,   288,   295,   284,    -1,   288,
+      72,    47,    -1,   288,    72,    48,    -1,   288,    73,    47,
+      -1,   288,    73,    48,    -1,   288,    72,   288,    -1,   288,
+      73,   288,    -1,   288,   122,   293,   284,    -1,   288,   122,
+     288,   294,   284,    -1,   292,   212,   122,   284,    -1,    49,
+     212,   122,   284,    -1,    47,   294,   288,    -1,    48,   294,
+     288,    -1,    46,   294,   288,    -1,    46,   294,    46,    -1,
+      47,   294,    47,    -1,    48,   294,    48,    -1,    47,   294,
+      48,    -1,    48,   294,    47,    -1,   220,    35,    -1,   223,
+      44,    37,    45,   291,    -1,   223,    44,    38,    45,   291,
+      -1,   223,    44,    39,    45,   291,    -1,   223,    44,    40,
+      45,   291,    -1,   223,    44,    41,    45,   291,    -1,   223,
+      44,    42,    45,   291,    -1,   223,    44,    43,    45,   291,
+      -1,   223,    44,    45,    45,   291,    -1,   223,    44,    44,
+      45,   291,    -1,   223,   285,   224,   291,    -1,   223,    44,
+      49,   224,   291,    -1,   223,    37,   224,   291,    -1,   223,
+     290,   224,   291,    -1,   223,    38,   224,   291,    -1,   223,
+      39,   224,   291,    -1,   223,    40,   224,   291,    -1,   223,
+      41,   224,   291,    -1,   223,    42,   224,   291,    -1,   223,
+      43,   224,   291,    -1,   223,    45,    45,   291,    -1,   223,
+      45,   121,   291,    -1,   223,    44,    45,   291,    -1,   223,
+      44,   121,   291,    -1,   223,   221,    45,   291,    -1,   288,
+     286,   284,    -1,    47,   286,   288,    -1,    48,   286,   288,
+      -1,    46,   286,   288,    -1,    47,   286,    47,    -1,    47,
+     286,    48,    -1,    48,   286,    47,    -1,    48,   286,    48,
+      -1,    46,   286,    46,    -1,    46,   286,   222,    -1,    47,
+     286,    46,    -1,    48,   286,    46,    -1,    47,    -1,    48,
+      -1,    42,    -1,    43,    -1,    45,    -1,   121,    -1,    45,
+     291,    35,    -1,    12,   287,   227,    35,    -1,   228,    -1,
+     227,   121,   228,    -1,   291,   229,    -1,    -1,    97,    -1,
+       9,    46,   121,   249,    35,    -1,   232,    -1,   233,    -1,
+     242,    -1,    26,    35,   234,   237,    35,   239,    27,    35,
+      -1,    -1,   235,    -1,   236,    -1,   235,   236,    -1,    30,
+     265,    35,    -1,    29,   247,   238,    -1,    32,   249,    -1,
+      14,   249,    35,    15,   248,    -1,    -1,   121,   249,    -1,
+      -1,   240,    -1,   241,    -1,   240,   241,    -1,    31,   253,
+      35,    -1,   226,    -1,   243,    35,    -1,   250,   122,   244,
+      -1,   288,   122,   244,    -1,   244,    -1,   246,    -1,   245,
+      -1,   249,   128,   248,   260,    -1,   247,   260,    -1,   249,
+      -1,    46,    -1,   291,    -1,    49,    -1,    51,    -1,    46,
+      -1,   291,    -1,    49,    -1,   119,   251,   120,    -1,    -1,
+     252,    -1,   253,    -1,   252,   121,   253,    -1,   288,   254,
+      -1,    -1,   254,   255,    -1,   101,    -1,   102,    -1,    99,
+      -1,    98,   277,    -1,   257,    -1,   258,    -1,   267,    -1,
+     259,    -1,   268,    -1,    18,   260,    35,    -1,    33,   244,
+      35,    -1,    19,   260,    35,    -1,   119,   261,   120,    -1,
+      -1,   262,    -1,   263,    -1,   262,   121,   263,    -1,   265,
+      -1,   264,    -1,    46,    54,   266,    -1,   266,   275,    -1,
+     284,    -1,    24,    35,   272,    25,    35,    -1,    22,    35,
+     269,    23,    35,    -1,    -1,   270,    -1,   271,    -1,   270,
+     271,    -1,    20,   265,    35,    -1,    -1,   273,    -1,   274,
+      -1,   273,   274,    -1,    21,   265,    35,    -1,    -1,   275,
+     276,    -1,   100,    -1,    98,   277,    -1,    -1,   278,    -1,
+     119,    46,   120,    -1,   280,    35,    -1,   281,    -1,   282,
+      -1,    17,   283,    -1,    16,   283,    -1,    38,   291,   122,
+      47,    -1,    39,   291,   122,    48,    -1,    41,   291,   122,
+      46,    -1,    46,   291,   122,   285,    -1,   288,    -1,   285,
+      -1,    46,    -1,    47,    -1,    48,    -1,    53,    -1,    55,
+      -1,    56,    -1,    57,    -1,    58,    -1,    60,    -1,    59,
+      -1,    38,    -1,    39,    -1,    40,    -1,    41,    -1,   289,
+      -1,   290,    -1,   291,    -1,    49,    -1,    50,    -1,    52,
+      -1,    51,    -1,    37,    -1,   292,    -1,    42,    -1,    43,
+      -1,    45,    -1,    38,    -1,    39,    -1,    41,    -1,    40,
+      -1,    44,    -1,   129,    -1,   130,    -1,   131,    -1,   132,
+      -1,   129,    -1,   133,    -1,   134,    -1,   135,    -1,   136,
+      -1,   137,    -1,   131,    -1,   138,    -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,   297,
+     298,    -1,   142,    -1,   299,    -1,   298,   299,    -1,   300,
+      -1,   163,    35,    -1,   230,    -1,   159,    35,    -1,   145,
+      35,    -1,   189,    -1,    36,   301,    -1,   302,   301,    -1,
+     304,    -1,   197,    -1,   304,    -1,   303,   171,    36,    -1,
+     117,    -1,   204,   206,    35,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   542,   542,   543,   548,   554,   555,   558,   559,   562,
-     563,   564,   565,   566,   567,   568,   569,   570,   577,   578,
-     581,   585,   591,   598,   599,   602,   603,   606,   610,   611,
-     614,   615,   618,   621,   622,   625,   629,   640,   644,   646,
-     650,   655,   659,   663,   668,   669,   673,   675,   679,   683,
-     689,   693,   697,   698,   701,   702,   705,   707,   709,   711,
-     713,   715,   717,   719,   721,   723,   725,   727,   729,   731,
-     735,   736,   737,   740,   749,   750,   754,   758,   763,   764,
-     768,   769,   770,   773,   780,   786,   787,   797,   799,   802,
-     803,   804,   805,   806,   807,   808,   809,   810,   811,   812,
-     813,   814,   815,   816,   822,   825,   830,   831,   836,   837,
-     840,   842,   850,   858,   859,   861,   864,   870,   871,   880,
-     881,   882,   883,   891,   895,   899,   908,   915,   922,   925,
-     926,   929,   938,   945,   948,   949,   952,   953,   956,   992,
-     994,  1001,  1003,  1008,  1010,  1014,  1037,  1041,  1043,  1052,
-    1063,  1075,  1085,  1088,  1089,  1092,  1101,  1110,  1115,  1120,
-    1141,  1146,  1187,  1205,  1212,  1217,  1228,  1239,  1250,  1261,
-    1266,  1271,  1276,  1286,  1305,  1339,  1341,  1343,  1345,  1347,
-    1349,  1351,  1353,  1358,  1367,  1369,  1371,  1373,  1375,  1377,
-    1379,  1381,  1383,  1385,  1397,  1402,  1404,  1406,  1408,  1410,
-    1412,  1414,  1416,  1418,  1420,  1422,  1424,  1426,  1457,  1483,
-    1491,  1500,  1509,  1511,  1513,  1515,  1517,  1521,  1526,  1528,
-    1533,  1534,  1537,  1538,  1541,  1542,  1545,  1553,  1557,  1559,
-    1563,  1567,  1568,  1571,  1586,  1590,  1591,  1594,  1606,  1607,
-    1611,  1613,  1617,  1621,  1623,  1625,  1631,  1632,  1637,  1638,
-    1642,  1644,  1653,  1655,  1659,  1663,  1665,  1667,  1671,  1672,
-    1675,  1695,  1702,  1704,  1714,  1731,  1733,  1735,  1739,  1748,
-    1753,  1758,  1759,  1763,  1765,  1769,  1774,  1775,  1779,  1781,
-    1783,  1785,  1795,  1799,  1800,  1801,  1802,  1805,  1810,  1821,
-    1828,  1833,  1834,  1838,  1840,  1844,  1845,  1848,  1852,  1856,
-    1860,  1869,  1879,  1880,  1885,  1887,  1892,  1897,  1898,  1902,
-    1904,  1908,  1914,  1915,  1919,  1921,  1929,  1930,  1934,  1938,
-    1941,  1942,  1945,  1949,  1953,  1955,  1957,  1959,  1967,  1968,
-    1972,  1973,  1974,  1975,  1978,  1979,  1980,  1981,  1982,  1983,
-    1986,  1987,  1988,  1989,  1997,  2000,  2001,  2012,  2013,  2014,
-    2015,  2019,  2020,  2023,  2024,  2025,  2026,  2027,  2028,  2029,
-    2030,  2033,  2034,  2035,  2038,  2039,  2040,  2041,  2042,  2043,
-    2044,  2045,  2046,  2047,  2048,  2049,  2050,  2051,  2052,  2053,
-    2054,  2055,  2056,  2057,  2058,  2059,  2060,  2066,  2067,  2068,
-    2069,  2070,  2071,  2072,  2073,  2074,  2075,  2076,  2077,  2089,
-    2097,  2101,  2102,  2105,  2106,  2107,  2108,  2109,  2110,  2113,
-    2115,  2116,  2119,  2120,  2123,  2127,  2132
+       0,   544,   544,   545,   550,   556,   557,   560,   561,   564,
+     565,   566,   567,   568,   569,   570,   571,   572,   579,   580,
+     583,   587,   593,   600,   601,   604,   605,   608,   612,   613,
+     616,   617,   620,   623,   624,   627,   631,   642,   646,   648,
+     652,   657,   661,   665,   670,   671,   675,   677,   681,   685,
+     691,   695,   699,   700,   703,   704,   707,   709,   711,   713,
+     715,   717,   719,   721,   723,   725,   727,   729,   731,   733,
+     737,   742,   743,   747,   749,   753,   754,   755,   758,   767,
+     768,   772,   776,   781,   782,   786,   787,   788,   791,   798,
+     804,   805,   815,   817,   820,   821,   822,   823,   824,   825,
+     826,   827,   828,   829,   830,   831,   832,   833,   834,   840,
+     843,   848,   849,   854,   855,   858,   860,   868,   876,   877,
+     879,   882,   888,   889,   898,   899,   900,   901,   909,   913,
+     917,   926,   933,   940,   943,   944,   947,   956,   963,   966,
+     967,   970,   971,   974,  1010,  1012,  1019,  1021,  1026,  1028,
+    1032,  1055,  1059,  1061,  1070,  1081,  1093,  1103,  1106,  1107,
+    1110,  1119,  1128,  1133,  1138,  1159,  1164,  1205,  1223,  1230,
+    1235,  1246,  1257,  1268,  1279,  1284,  1289,  1294,  1304,  1323,
+    1357,  1359,  1361,  1363,  1365,  1367,  1369,  1371,  1376,  1385,
+    1387,  1389,  1391,  1393,  1395,  1397,  1399,  1401,  1403,  1415,
+    1420,  1422,  1424,  1426,  1428,  1430,  1432,  1434,  1436,  1438,
+    1440,  1442,  1444,  1475,  1501,  1509,  1518,  1527,  1529,  1531,
+    1533,  1535,  1539,  1544,  1546,  1551,  1552,  1555,  1556,  1559,
+    1560,  1563,  1571,  1575,  1577,  1581,  1585,  1586,  1589,  1604,
+    1608,  1609,  1612,  1624,  1625,  1629,  1631,  1635,  1639,  1641,
+    1643,  1649,  1650,  1655,  1656,  1660,  1662,  1671,  1673,  1677,
+    1681,  1683,  1685,  1689,  1690,  1693,  1713,  1720,  1722,  1732,
+    1749,  1751,  1753,  1757,  1766,  1771,  1776,  1777,  1781,  1783,
+    1787,  1792,  1793,  1797,  1799,  1801,  1803,  1813,  1817,  1818,
+    1819,  1820,  1823,  1828,  1839,  1846,  1851,  1852,  1856,  1858,
+    1862,  1863,  1866,  1870,  1874,  1878,  1887,  1897,  1898,  1903,
+    1905,  1910,  1915,  1916,  1920,  1922,  1926,  1932,  1933,  1937,
+    1939,  1947,  1948,  1952,  1956,  1959,  1960,  1963,  1967,  1971,
+    1973,  1975,  1977,  1985,  1986,  1990,  1991,  1992,  1993,  1996,
+    1997,  1998,  1999,  2000,  2001,  2004,  2005,  2006,  2007,  2015,
+    2018,  2019,  2030,  2031,  2032,  2033,  2037,  2038,  2041,  2042,
+    2043,  2044,  2045,  2046,  2047,  2048,  2051,  2052,  2053,  2056,
+    2057,  2058,  2059,  2060,  2061,  2062,  2063,  2064,  2065,  2066,
+    2067,  2068,  2069,  2070,  2071,  2072,  2073,  2074,  2075,  2076,
+    2077,  2078,  2084,  2085,  2086,  2087,  2088,  2089,  2090,  2091,
+    2092,  2093,  2094,  2095,  2107,  2115,  2119,  2120,  2123,  2124,
+    2125,  2126,  2127,  2128,  2131,  2133,  2134,  2137,  2138,  2141,
+    2145,  2150
 };
 #endif
 
@@ -1133,20 +1136,21 @@
   "macro_local_decl", "loadlib", "location_directive", "annotation",
   "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", "parameter_list",
-  "parameters", "parameter", "param", "param_flags", "param_flag",
-  "invocant_param", "unique_reg_flag", "instructions", "instruction",
-  "statement", "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", "parrot_op_assign", "assignment_stat",
-  "rhs_ident", "assignment", "binary_expr", "conditional_stat",
-  "conditional_instr", "condition", "int_or_num", "if_unless", "then",
-  "goto_stat", "local_decl", "local_id_list", "local_id", "has_unique_reg",
-  "lex_decl", "invocation_stat", "invocation", "long_invocation_stat",
+  "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", "invocant_param",
+  "unique_reg_flag", "instructions", "instruction", "statement",
+  "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",
+  "parrot_op_assign", "assignment_stat", "rhs_ident", "assignment",
+  "binary_expr", "conditional_stat", "conditional_instr", "condition",
+  "int_or_num", "if_unless", "then", "goto_stat", "local_decl",
+  "local_id_list", "local_id", "has_unique_reg", "lex_decl",
+  "invocation_stat", "invocation", "long_invocation_stat",
   "opt_long_arguments", "long_arguments", "long_argument",
   "long_invocation", "opt_ret_cont", "opt_long_results", "long_results",
   "long_result", "short_invocation_stat", "short_invocation",
@@ -1200,41 +1204,42 @@
      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,   173,   173,   174,   175,   175,   176,   177,   178,   178,
-     179,   179,   179,   180,   181,   182,   182,   183,   183,   184,
-     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
-     184,   184,   184,   184,   185,   186,   187,   187,   188,   188,
-     189,   189,   190,   190,   190,   190,   191,   192,   192,   193,
-     193,   193,   193,   194,   195,   196,   197,   198,   199,   200,
-     200,   201,   202,   202,   203,   203,   204,   204,   205,   206,
-     206,   207,   207,   207,   207,   208,   209,   210,   210,   211,
-     211,   211,   212,   213,   213,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   215,   215,   215,   215,   215,
-     215,   215,   215,   216,   217,   217,   217,   217,   217,   217,
+     173,   174,   174,   175,   175,   176,   176,   176,   177,   178,
+     178,   179,   180,   181,   181,   182,   182,   182,   183,   184,
+     185,   185,   186,   186,   187,   187,   187,   187,   187,   187,
+     187,   187,   187,   187,   187,   187,   187,   187,   187,   188,
+     189,   190,   190,   191,   191,   192,   192,   193,   193,   193,
+     193,   194,   195,   195,   196,   196,   196,   196,   197,   198,
+     199,   200,   201,   202,   203,   203,   204,   205,   205,   206,
+     206,   207,   207,   208,   209,   209,   210,   210,   210,   210,
+     211,   212,   213,   213,   214,   214,   214,   215,   216,   216,
      217,   217,   217,   217,   217,   217,   217,   217,   217,   217,
-     217,   217,   217,   217,   217,   217,   217,   217,   218,   218,
-     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
-     219,   219,   220,   220,   221,   221,   222,   223,   224,   224,
-     225,   226,   226,   227,   228,   229,   229,   230,   231,   231,
-     232,   232,   233,   234,   234,   234,   235,   235,   236,   236,
-     237,   237,   238,   238,   239,   240,   240,   240,   241,   241,
-     242,   243,   244,   244,   245,   245,   245,   245,   246,   246,
-     247,   248,   248,   249,   249,   250,   251,   251,   252,   252,
-     252,   252,   253,   254,   254,   254,   254,   255,   255,   256,
-     257,   258,   258,   259,   259,   260,   260,   261,   262,   263,
-     264,   265,   266,   266,   267,   267,   268,   269,   269,   270,
-     270,   271,   272,   272,   273,   273,   274,   274,   275,   276,
-     277,   277,   278,   279,   280,   280,   280,   280,   281,   281,
-     282,   282,   282,   282,   283,   283,   283,   283,   283,   283,
-     284,   284,   284,   284,   285,   286,   286,   287,   287,   287,
-     287,   288,   288,   289,   289,   289,   289,   289,   289,   289,
-     289,   290,   290,   290,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   292,   292,   292,
-     292,   292,   292,   292,   292,   292,   292,   292,   292,   293,
-     294,   295,   295,   296,   296,   296,   296,   296,   296,   297,
-     297,   297,   298,   298,   299,   300,   301
+     217,   217,   217,   217,   217,   217,   217,   217,   217,   217,
+     218,   218,   218,   218,   218,   218,   218,   218,   219,   220,
+     220,   220,   220,   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,   221,   221,   221,   221,   222,   222,   223,   223,   224,
+     224,   225,   226,   227,   227,   228,   229,   229,   230,   231,
+     232,   232,   233,   234,   234,   235,   235,   236,   237,   237,
+     237,   238,   238,   239,   239,   240,   240,   241,   241,   242,
+     243,   243,   243,   244,   244,   245,   246,   247,   247,   248,
+     248,   248,   248,   249,   249,   250,   251,   251,   252,   252,
+     253,   254,   254,   255,   255,   255,   255,   256,   257,   257,
+     257,   257,   258,   258,   259,   260,   261,   261,   262,   262,
+     263,   263,   264,   265,   266,   267,   268,   269,   269,   270,
+     270,   271,   272,   272,   273,   273,   274,   275,   275,   276,
+     276,   277,   277,   278,   279,   280,   280,   281,   282,   283,
+     283,   283,   283,   284,   284,   285,   285,   285,   285,   286,
+     286,   286,   286,   286,   286,   287,   287,   287,   287,   288,
+     289,   289,   290,   290,   290,   290,   291,   291,   292,   292,
+     292,   292,   292,   292,   292,   292,   293,   293,   293,   294,
+     294,   294,   294,   294,   294,   294,   294,   294,   294,   294,
+     294,   294,   294,   294,   294,   294,   294,   294,   294,   294,
+     294,   294,   295,   295,   295,   295,   295,   295,   295,   295,
+     295,   295,   295,   295,   296,   297,   298,   298,   299,   299,
+     299,   299,   299,   299,   300,   300,   300,   301,   301,   302,
+     303,   304
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1246,42 +1251,43 @@
        1,     2,     2,     1,     1,     2,     3,     2,     2,     2,
        4,     2,     4,     4,     0,     1,     1,     3,     1,     6,
        1,     2,     1,     1,     0,     2,     1,     1,     1,     1,
-       1,     1,     1,     1,     4,     2,     2,     2,     2,     2,
-       1,     1,     1,     1,     0,     2,     4,     2,     0,     2,
-       1,     1,     1,     4,     1,     0,     2,     2,     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,     4,     1,
+       0,     2,     2,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     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,     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,
-       1,     1,     2,     2,     4,     4,     4,     4,     1,     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,     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,     1,     1,     2,     2,     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,     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,     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
@@ -1289,473 +1295,490 @@
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     5,     5,     0,     6,   400,     3,     0,     2,     0,
-       1,     0,     0,     0,     0,     0,   131,     0,     0,   106,
-     415,     0,    18,    19,     0,     0,     0,   408,   134,   405,
-     399,   401,   403,     0,    54,   411,     0,     0,     0,     0,
+       0,     5,     5,     0,     6,   405,     3,     0,     2,     0,
+       1,     0,     0,     0,     0,     0,   136,     0,     0,   111,
+     420,     0,    18,    19,     0,     0,     0,   413,   139,   410,
+     404,   406,   408,     0,    54,   416,     0,     0,     0,     0,
        0,     0,     5,     7,    17,    14,    15,    16,    12,    13,
-      11,     9,    54,    10,     0,    38,    39,    44,   123,   412,
-     409,   413,   351,   356,   357,   359,   358,   353,   354,   360,
-     355,    22,   352,     0,   108,     0,   407,    23,   406,   404,
-     330,   331,   332,   347,   348,   350,   349,   333,     0,     0,
-     135,   136,   139,   144,   140,     0,   141,   143,   142,   402,
-     410,     0,    41,     0,    37,    53,    51,    52,     0,     0,
-       0,     0,   322,     0,     6,     4,     0,     0,    48,     0,
-      45,    46,    20,   106,   112,   113,   117,     0,   109,   110,
-     115,   105,     0,    24,    25,    27,   347,     0,   147,   329,
-     328,   344,   345,   346,   416,     0,   145,   414,    57,    58,
-      59,    56,   316,     0,   316,    60,    63,    61,    62,     0,
+      11,     9,    54,    10,     0,    38,    39,    44,   128,   417,
+     414,   418,   356,   361,   362,   364,   363,   358,   359,   365,
+     360,    22,   357,     0,   113,     0,   412,    23,   411,   409,
+     335,   336,   337,   352,   353,   355,   354,   338,     0,     0,
+     140,   141,   144,   149,   145,     0,   146,   148,   147,   407,
+     415,     0,    41,     0,    37,    53,    51,    52,     0,     0,
+       0,     0,   327,     0,     6,     4,     0,     0,    48,     0,
+      45,    46,    20,   111,   117,   118,   122,     0,   114,   115,
+     120,   110,     0,    24,    25,    27,   352,     0,   152,   334,
+     333,   349,   350,   351,   421,     0,   150,   419,    57,    58,
+      59,    56,   321,     0,   321,    60,     0,    61,    62,     0,
        0,     0,    55,     0,     0,     0,     0,     0,     0,     8,
-      74,   269,     0,   268,    43,     0,   114,     0,   107,     0,
-       0,     0,   146,     0,   137,     0,    65,   317,     0,    66,
-      67,    68,    69,    42,     0,     0,     0,     0,    40,    85,
-      73,   233,    47,   119,   106,   121,   120,   116,   118,   111,
-      28,    26,   148,     0,     0,   324,   325,   326,   327,     0,
-       0,    75,   122,     0,     0,     0,    29,    30,     0,    33,
-      34,   318,    64,     0,    50,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   131,   353,   354,   360,   355,
-     263,   347,   271,     0,    49,    86,    88,   102,   104,   100,
-     101,   103,    99,    98,    89,     0,   134,   130,    97,     0,
-      90,     0,     0,    91,    92,    93,    96,   234,   235,   236,
-       0,   257,   259,   258,     0,   262,     0,    95,   282,   283,
-     285,   284,   286,    94,     0,   320,   321,     0,   346,   352,
-     340,   341,   342,   343,    78,     0,     0,    35,    21,    31,
-      32,   125,     0,   323,   291,     0,     0,   302,   307,   238,
-       0,     0,    87,     0,     0,     0,     0,   272,   273,   276,
-     124,   128,   129,   132,   133,   140,   152,   183,   351,   356,
-     357,   359,   358,   353,   354,   360,   355,   330,   331,   332,
-       0,     0,     0,   345,   254,   261,     0,     0,   319,   398,
-     396,   397,     0,     0,   387,   388,   389,   390,   392,   393,
-     391,   394,   395,     0,     0,     0,     0,    77,    36,     0,
-     228,   231,   330,     0,   292,   293,   296,   295,   312,   299,
-     287,   289,     0,     0,   303,   304,     0,     0,   308,   309,
-       0,     0,   239,   240,   127,   288,   126,   226,     0,   270,
-       0,   275,     0,   224,   225,     0,     0,     0,     0,     0,
+      79,   274,     0,   273,    43,     0,   119,     0,   112,     0,
+       0,     0,   151,     0,   142,     0,    65,   322,     0,    66,
+      71,    63,    67,    68,    69,    42,     0,     0,     0,     0,
+      40,    90,    78,   238,    47,   124,   111,   126,   125,   121,
+     123,   116,    28,    26,   153,     0,     0,    76,     0,    72,
+      73,    77,    75,   329,   330,   331,   332,     0,     0,    80,
+     127,     0,     0,     0,    29,    30,     0,    33,    34,   323,
+      64,    70,     0,     0,    50,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   136,   358,   359,   365,   360,
+     268,   352,   276,     0,    49,    91,    93,   107,   109,   105,
+     106,   108,   104,   103,    94,     0,   139,   135,   102,     0,
+      95,     0,     0,    96,    97,    98,   101,   239,   240,   241,
+       0,   262,   264,   263,     0,   267,     0,   100,   287,   288,
+     290,   289,   291,    99,     0,   325,   326,     0,   351,   357,
+     345,   346,   347,   348,    83,     0,     0,    35,    21,    31,
+      32,    74,   130,     0,   328,   296,     0,     0,   307,   312,
+     243,     0,     0,    92,     0,     0,     0,     0,   277,   278,
+     281,   129,   133,   134,   137,   138,   145,   157,   188,   356,
+     361,   362,   364,   363,   358,   359,   365,   360,   335,   336,
+     337,     0,     0,     0,   350,   259,   266,     0,     0,   324,
+     403,   401,   402,     0,     0,   392,   393,   394,   395,   397,
+     398,   396,   399,   400,     0,     0,     0,     0,    82,    36,
+       0,   233,   236,   335,     0,   297,   298,   301,   300,   317,
+     304,   292,   294,     0,     0,   308,   309,     0,     0,   313,
+     314,     0,     0,   244,   245,   132,   293,   131,   231,     0,
+     275,     0,   280,     0,   229,   230,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   334,   335,   336,   337,   339,
-     338,     0,     0,     0,     0,     0,     0,     0,   267,   265,
-     266,     0,   264,   255,   165,   166,   169,   167,   168,   170,
-     351,   157,   155,   156,   347,   361,   362,   363,     0,   159,
-     160,   256,     0,   345,   352,     0,   164,     0,    76,    84,
-     316,   280,   278,   279,     0,    79,    81,    82,    80,   227,
-       0,   232,   230,     0,   290,     0,   298,     0,     0,   305,
-       0,     0,   310,     0,     0,     0,     0,     0,   241,   174,
-     274,   277,   138,   195,   197,   198,   199,   200,   201,   202,
-       0,     0,     0,     0,     0,     0,     0,     0,   355,   205,
-       0,   206,   203,   204,   216,   220,   221,   217,   211,   218,
-     212,   213,   209,   219,   214,   215,   210,   207,   193,   208,
-     196,   260,   386,   381,   383,   382,   385,   384,   374,   375,
-     376,   379,   377,   378,   380,   373,   365,   371,   364,   366,
-     367,   368,   369,   370,   372,     0,     0,     0,   163,   150,
-     161,     0,   162,   171,   173,   281,     0,   229,   297,   294,
-     316,   314,   313,   306,   301,   311,   300,   242,     0,   246,
-     262,   244,   248,   184,   185,   186,   187,   188,   189,   190,
-     192,   191,   194,   178,   177,   179,   181,   175,   182,   180,
-     176,     0,     0,   172,    71,     0,    72,    70,   315,     0,
-       0,   243,     0,   253,     0,   249,   250,   149,   151,    83,
-       0,   247,     0,     0,   251,   245,   252,   237
+       0,     0,     0,     0,     0,     0,   339,   340,   341,   342,
+     344,   343,     0,     0,     0,     0,     0,     0,     0,   272,
+     270,   271,     0,   269,   260,   170,   171,   174,   172,   173,
+     175,   356,   162,   160,   161,   352,   366,   367,   368,     0,
+     164,   165,   261,     0,   350,   357,     0,   169,     0,    81,
+      89,   321,   285,   283,   284,     0,    84,    86,    87,    85,
+     232,     0,   237,   235,     0,   295,     0,   303,     0,     0,
+     310,     0,     0,   315,     0,     0,     0,     0,     0,   246,
+     179,   279,   282,   143,   200,   202,   203,   204,   205,   206,
+     207,     0,     0,     0,     0,     0,     0,     0,     0,   360,
+     210,     0,   211,   208,   209,   221,   225,   226,   222,   216,
+     223,   217,   218,   214,   224,   219,   220,   215,   212,   198,
+     213,   201,   265,   391,   386,   388,   387,   390,   389,   379,
+     380,   381,   384,   382,   383,   385,   378,   370,   376,   369,
+     371,   372,   373,   374,   375,   377,     0,     0,     0,   168,
+     155,   166,     0,   167,   176,   178,   286,     0,   234,   302,
+     299,   321,   319,   318,   311,   306,   316,   305,   247,     0,
+     251,   267,   249,   253,   189,   190,   191,   192,   193,   194,
+     195,   197,   196,   199,   183,   182,   184,   186,   180,   187,
+     185,   181,     0,     0,   177,     0,   320,     0,     0,   248,
+       0,   258,     0,   254,   255,   154,   156,    88,     0,   252,
+       0,     0,   256,   250,   257,   242
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,     3,     8,     5,    42,    43,    21,    22,    23,    24,
-     132,   133,   134,   225,   226,   227,   228,   229,   230,    45,
-      25,    47,    48,    49,    26,   119,   120,   121,    51,   254,
-      52,   106,   101,   162,   625,   199,   200,   221,   304,   376,
-     485,   486,   487,   219,   255,   256,   257,    27,    75,   127,
-     128,   129,   130,   177,   208,    59,   260,   261,   262,   263,
-     264,   265,    28,   332,    89,    90,   334,    91,    92,    93,
-      94,   137,   267,   268,   469,   269,   470,   270,   271,   350,
-     537,   272,   415,   273,   274,   379,   380,   492,    29,   276,
-     277,   278,   401,   402,   403,   507,   631,   634,   635,   636,
-     279,   280,   281,   282,   283,   284,   451,    95,   286,   326,
-     327,   328,   411,   488,   287,   288,   289,   290,   315,   383,
-     384,   385,   386,   387,   388,   291,   292,   393,   394,   395,
-     397,   398,   399,   496,   592,   186,   187,   293,   294,    53,
-     296,   112,   389,   139,   441,   305,   140,   141,   142,   143,
-      72,   475,   575,   374,     6,     7,    30,    31,    32,    60,
-      33,    34,    35
+     132,   133,   134,   233,   234,   235,   236,   237,   238,    45,
+      25,    47,    48,    49,    26,   119,   120,   121,    51,   264,
+      52,   106,   101,   162,   191,   218,   219,   220,   201,   202,
+     229,   314,   387,   496,   497,   498,   227,   265,   266,   267,
+      27,    75,   127,   128,   129,   130,   177,   210,    59,   270,
+     271,   272,   273,   274,   275,    28,   343,    89,    90,   345,
+      91,    92,    93,    94,   137,   277,   278,   480,   279,   481,
+     280,   281,   361,   548,   282,   426,   283,   284,   390,   391,
+     503,    29,   286,   287,   288,   412,   413,   414,   518,   639,
+     642,   643,   644,   289,   290,   291,   292,   293,   294,   462,
+      95,   296,   337,   338,   339,   422,   499,   297,   298,   299,
+     300,   326,   394,   395,   396,   397,   398,   399,   301,   302,
+     404,   405,   406,   408,   409,   410,   507,   603,   186,   187,
+     303,   304,    53,   306,   112,   400,   139,   452,   315,   140,
+     141,   142,   143,    72,   486,   586,   385,     6,     7,    30,
+      31,    32,    60,    33,    34,    35
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -583
+#define YYPACT_NINF -587
 static const yytype_int16 yypact[] =
 {
-      83,    12,    12,    50,  -583,  -583,  -583,    15,  -583,    53,
-    -583,    23,    42,    52,   -18,    47,  -583,   345,    64,    -6,
-    -583,    82,  -583,  -583,     6,    92,   100,  -583,   533,  -583,
-      15,  -583,  -583,    47,  -583,  -583,   114,   116,   119,   608,
-      95,   123,   137,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,  -583,  -583,    56,  -583,  -583,   135,  -583,  -583,
-    -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,  -583,    87,     3,   170,  -583,   345,  -583,  -583,
-    -583,  -583,  -583,    84,  -583,  -583,  -583,  -583,   752,   183,
-     104,  -583,  -583,  -583,  -583,    98,  -583,  -583,   108,  -583,
-    -583,   658,  -583,   107,  -583,  -583,  -583,  -583,   345,   345,
-     345,   345,  -583,   112,    53,  -583,   589,   718,  -583,   124,
-     125,  -583,  -583,    -6,  -583,  -583,  -583,   141,   148,  -583,
-    -583,  -583,   164,   165,  -583,  -583,  -583,    99,  -583,  -583,
-    -583,  -583,  -583,  -583,  -583,   533,  -583,  -583,  -583,  -583,
-    -583,  -583,   171,   172,   171,  -583,  -583,  -583,  -583,   171,
-     171,   171,  -583,   246,   186,   187,   202,   203,   283,  -583,
-    -583,  -583,   295,  -583,  -583,   135,  -583,   -16,  -583,     3,
-     298,   345,  -583,   752,  -583,   288,  -583,  -583,   608,  -583,
-    -583,  -583,  -583,  -583,   289,   290,   291,   106,  -583,  -583,
-     333,  -583,  -583,  -583,    -6,  -583,  -583,  -583,  -583,  -583,
-     131,  -583,  -583,   222,   223,  -583,  -583,  -583,  -583,   261,
-     226,  -583,  -583,   226,   235,   240,   131,  -583,   311,  -583,
-    -583,  -583,  -583,   312,  -583,   226,    95,   230,   230,   315,
-     316,   317,   234,   437,   511,   646,   769,   792,   395,   345,
-    -583,   -88,   395,   319,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,  -583,  -583,  -583,   320,   533,  -583,  -583,   322,
-    -583,   323,   809,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-     324,  -583,  -583,  -583,   230,   232,   239,  -583,  -583,  -583,
-    -583,  -583,  -583,  -583,   327,  -583,  -583,   706,   -38,    98,
-    -583,  -583,  -583,  -583,  -583,   345,   253,  -583,  -583,  -583,
-    -583,  -583,   345,  -583,   826,   329,   331,   347,   352,   344,
-     341,   342,  -583,   343,   360,   257,   285,   276,  -583,  -583,
-    -583,  -583,  -583,  -583,  -583,   284,  -583,  -583,   -13,   -13,
-     -13,   -13,   -13,   -13,   -13,   214,   -12,   154,   154,   154,
-     362,   -13,   154,   -13,  -583,  -583,   277,   437,  -583,  -583,
-    -583,  -583,   891,   907,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,  -583,   145,   752,   286,    77,  -583,  -583,   -14,
-    -583,   313,   355,   292,   293,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,   752,   388,   347,  -583,   752,   393,   352,  -583,
-     752,    48,   344,  -583,  -583,  -583,  -583,  -583,   752,  -583,
-     395,   118,   752,  -583,  -583,   345,   345,   345,   345,   345,
-     345,   345,   374,   375,   376,   377,   378,   379,   381,   384,
-     659,   -13,   345,   345,   345,  -583,  -583,  -583,  -583,  -583,
-    -583,   843,   859,   875,   345,   345,   752,   345,  -583,  -583,
-    -583,   230,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-     415,   576,   602,   602,   -88,  -583,  -583,  -583,   533,  -583,
-    -583,  -583,   602,   396,   -20,   752,  -583,   752,  -583,  -583,
-     171,  -583,  -583,  -583,   330,  -583,  -583,  -583,  -583,  -583,
-     345,  -583,  -583,   752,  -583,   826,   -56,   413,   434,  -583,
-     435,   436,  -583,   449,   718,   437,   718,   450,  -583,  -583,
-    -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-     345,   345,   345,   345,   345,   345,   345,   345,   345,  -583,
-     345,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,  -583,  -583,  -583,   955,   923,   939,  -583,   351,
-     369,   752,  -583,  -583,  -583,  -583,   105,  -583,  -583,  -583,
-     171,  -583,  -583,  -583,  -583,  -583,  -583,  -583,   456,   371,
-    -583,  -583,    18,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,   533,   533,  -583,  -583,   382,  -583,  -583,  -583,   479,
-     718,  -583,   395,  -583,   468,    18,  -583,   104,   104,  -583,
-     277,  -583,   461,   462,  -583,  -583,  -583,  -583
+      99,    -2,    -2,    53,  -587,  -587,  -587,    15,  -587,    32,
+    -587,    17,    -6,    44,   -21,    41,  -587,  1019,    67,    -9,
+    -587,    89,  -587,  -587,    22,   115,   117,  -587,   426,  -587,
+      15,  -587,  -587,    41,  -587,  -587,   129,   173,   174,   405,
+     116,   175,   121,  -587,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,  -587,  -587,  -587,    42,  -587,  -587,   176,  -587,  -587,
+    -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,  -587,  -587,   109,     4,   193,  -587,  1019,  -587,  -587,
+    -587,  -587,  -587,   106,  -587,  -587,  -587,  -587,   770,   195,
+     111,  -587,  -587,  -587,  -587,   108,  -587,  -587,   112,  -587,
+    -587,   639,  -587,   118,  -587,  -587,  -587,  -587,  1019,  1019,
+    1019,  1019,  -587,   113,    32,  -587,   502,  1006,  -587,   114,
+     122,  -587,  -587,    -9,  -587,  -587,  -587,   119,   120,  -587,
+    -587,  -587,   123,   127,  -587,  -587,  -587,    36,  -587,  -587,
+    -587,  -587,  -587,  -587,  -587,   426,  -587,  -587,  -587,  -587,
+    -587,  -587,   133,   137,   133,  -587,   139,  -587,  -587,   133,
+     133,   133,  -587,   187,   128,   148,   151,   152,   225,  -587,
+    -587,  -587,   240,  -587,  -587,   176,  -587,    -5,  -587,     4,
+     241,  1019,  -587,   770,  -587,   231,  -587,  -587,   405,  -587,
+     245,  -587,  -587,  -587,  -587,  -587,   234,   244,   247,   131,
+    -587,  -587,   286,  -587,  -587,  -587,    -9,  -587,  -587,  -587,
+    -587,  -587,    61,  -587,  -587,   177,   179,  -587,   180,   181,
+    -587,  -587,  -587,  -587,  -587,  -587,  -587,   524,   142,  -587,
+    -587,   142,   186,   191,    61,  -587,   266,  -587,  -587,  -587,
+    -587,  -587,   245,   269,  -587,   142,   116,   215,   215,   300,
+     304,   305,   224,   672,   628,   710,   810,   827,   452,  1019,
+    -587,    30,   452,   307,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,  -587,  -587,  -587,  -587,   311,   426,  -587,  -587,   312,
+    -587,   313,   844,  -587,  -587,  -587,  -587,  -587,  -587,  -587,
+     314,  -587,  -587,  -587,   215,   226,   230,  -587,  -587,  -587,
+    -587,  -587,  -587,  -587,   318,  -587,  -587,   724,   -88,   108,
+    -587,  -587,  -587,  -587,  -587,  1019,   246,  -587,  -587,  -587,
+    -587,  -587,  -587,  1019,  -587,   861,   320,   322,   338,   340,
+     332,   328,   329,  -587,   330,   331,   248,   249,   250,  -587,
+    -587,  -587,  -587,  -587,  -587,  -587,   251,  -587,  -587,   -24,
+     -24,   -24,   -24,   -24,   -24,   -24,   223,   -16,   147,   147,
+     147,   327,   -24,   147,   -24,  -587,  -587,   287,   672,  -587,
+    -587,  -587,  -587,   926,   942,  -587,  -587,  -587,  -587,  -587,
+    -587,  -587,  -587,  -587,   149,   770,   252,    45,  -587,  -587,
+     -12,  -587,   279,   323,   261,   262,  -587,  -587,  -587,  -587,
+    -587,  -587,  -587,   770,   359,   338,  -587,   770,   360,   340,
+    -587,   770,    33,   332,  -587,  -587,  -587,  -587,  -587,   770,
+    -587,   452,   110,   770,  -587,  -587,  1019,  1019,  1019,  1019,
+    1019,  1019,  1019,   341,   342,   344,   345,   346,   347,   350,
+     351,  1028,   -24,  1019,  1019,  1019,  -587,  -587,  -587,  -587,
+    -587,  -587,   878,   894,   910,  1019,  1019,   770,  1019,  -587,
+    -587,  -587,   215,  -587,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,   270,   626,   640,   640,    30,  -587,  -587,  -587,   426,
+    -587,  -587,  -587,   640,   362,   -20,   770,  -587,   770,  -587,
+    -587,   133,  -587,  -587,  -587,   280,  -587,  -587,  -587,  -587,
+    -587,  1019,  -587,  -587,   770,  -587,   861,    13,   363,   368,
+    -587,   370,   372,  -587,   373,  1006,   672,  1006,   381,  -587,
+    -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,  1019,  1019,  1019,  1019,  1019,  1019,  1019,  1019,  1019,
+    -587,  1019,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,  -587,  -587,  -587,  -587,  -587,   990,   958,   974,  -587,
+     296,   297,   770,  -587,  -587,  -587,  -587,   245,  -587,  -587,
+    -587,   133,  -587,  -587,  -587,  -587,  -587,  -587,  -587,   384,
+     299,  -587,  -587,    52,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,  -587,   426,   426,  -587,   301,  -587,   407,  1006,  -587,
+     452,  -587,   396,    52,  -587,   111,   111,  -587,   287,  -587,
+     390,   394,  -587,  -587,  -587,  -587
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -583,  -583,  -583,    25,  -583,   385,     7,  -583,  -583,  -583,
-    -583,  -583,   334,  -583,  -583,   272,  -583,  -583,  -583,  -583,
-      -4,  -583,  -583,  -583,     8,  -583,  -583,   326,  -583,  -583,
-    -583,   328,   466,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,  -583,  -583,  -583,   270,  -583,  -196,  -105,  -583,
-    -583,   340,  -583,  -583,  -583,  -190,  -583,  -583,  -583,  -583,
-    -583,  -583,  -206,  -583,   258,  -340,  -583,   380,    58,  -583,
-     -93,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,  -583,
-    -583,  -583,  -268,  -583,  -582,  -583,    41,  -583,  -183,  -583,
-    -583,  -583,  -583,  -583,   130,  -583,  -583,  -583,  -583,  -101,
-    -583,  -583,  -233,  -583,  -583,    31,  -100,  -113,   299,  -583,
-    -583,  -402,  -583,   132,  -583,  -583,  -583,  -583,  -229,  -583,
-    -583,    63,  -583,  -192,    49,  -583,  -583,  -583,  -583,   151,
-    -583,  -583,   149,  -583,  -583,  -148,   -22,  -583,  -583,  -176,
-    -583,   332,   -81,   -27,  -106,  -189,  -207,  -583,   -25,   -17,
-    -205,  -583,  -384,  -583,  -583,  -583,  -583,   529,  -583,   531,
-    -583,  -583,    71
+    -587,  -587,  -587,    16,  -587,   316,     7,  -587,  -587,  -587,
+    -587,  -587,   253,  -587,  -587,   197,  -587,  -587,  -587,  -587,
+       0,  -587,  -587,  -587,    11,  -587,  -587,   258,  -587,  -587,
+    -587,   265,   383,  -587,  -587,  -587,  -587,  -237,  -587,  -587,
+    -587,  -587,  -587,  -587,  -587,  -587,  -587,  -587,   182,  -587,
+    -195,  -110,  -587,  -587,   277,  -587,  -587,  -587,  -193,  -587,
+    -587,  -587,  -587,  -587,  -587,  -215,  -587,   161,  -416,  -587,
+     295,   -22,  -587,   -91,  -587,  -587,  -587,  -587,  -587,  -587,
+    -587,  -587,  -587,  -587,  -587,  -283,  -587,  -586,  -587,   -43,
+    -587,  -179,  -587,  -587,  -587,  -587,  -587,    46,  -587,  -587,
+    -587,  -587,  -183,  -587,  -587,  -239,  -587,  -587,   -55,  -168,
+    -115,   229,  -587,  -587,  -414,  -587,    60,  -587,  -587,  -587,
+    -587,  -238,  -587,  -587,   -23,  -587,  -276,   -19,  -587,  -587,
+    -587,  -587,    81,  -587,  -587,    78,  -587,  -587,  -146,   -75,
+    -587,  -587,  -172,  -587,   242,   -82,   -27,  -226,  -158,  -208,
+    -587,   -25,   -17,  -210,  -587,  -385,  -587,  -587,  -587,  -587,
+     475,  -587,   474,  -587,  -587,    62
 };
 
 /* 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 -352
+#define YYTABLE_NINF -357
 static const yytype_int16 yytable[] =
 {
-      71,    96,   146,    97,   172,    46,   189,   138,   510,   316,
-     321,    98,   297,   266,   299,  -154,    44,    50,   176,   203,
-     633,   489,   107,   258,    11,    12,    13,     9,    14,   259,
-     235,  -269,   413,   433,   306,    88,   275,   297,   266,   299,
-    -269,   323,   590,   295,   591,   329,   312,     4,   258,   632,
-      10,    15,    16,   633,   259,   355,    36,    37,    38,    39,
-     135,   275,   504,    12,    13,   352,    14,   115,   295,    54,
-      40,   416,   417,   418,   419,   420,   421,   505,   576,   577,
-     506,  -268,    58,   445,    16,   447,    61,    41,   581,    55,
-    -268,   164,   165,   166,   167,   204,   205,   206,    56,   222,
-     173,    73,   212,    88,    61,    57,   285,   490,   414,   434,
-      46,   207,   478,    74,   123,   124,   125,    76,    96,    17,
-      97,    44,    50,    18,   453,    77,    19,    78,    98,   126,
-     285,   285,    20,   108,   109,    79,   110,   190,   191,   192,
-     471,   111,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,   624,    80,    81,    82,   456,   459,    17,   325,    87,
-     102,    18,   103,   530,   135,   104,   472,   468,   474,   113,
-     218,   107,   114,   335,   479,   480,   481,   117,   482,   483,
-     484,   118,   460,    63,    64,    65,    66,    67,    68,    69,
-      70,   461,   462,   463,   464,    84,    85,    86,     1,     2,
-     497,   122,   298,   329,   500,   131,   375,  -269,   503,   435,
-     436,   437,   438,   439,   440,   253,   480,   481,   144,   482,
-     483,    88,   551,   182,   183,   145,   173,   298,    88,   163,
-     642,  -268,   324,   168,   538,   542,   546,   223,   224,    96,
-     253,    97,   442,   443,   285,   351,   446,   353,   174,    98,
-     175,   422,   423,   424,   425,   426,   427,   428,   429,   430,
-     285,   178,   233,   431,   300,   301,   302,   303,   234,   179,
-      11,    12,    13,   235,   465,   466,   467,   236,    40,   237,
-     238,   637,   638,   239,   180,   240,   181,   241,   377,   242,
-     185,   188,   193,   476,   243,   381,    58,   244,   245,    63,
-      64,    65,    66,   246,   247,   248,   249,   250,   194,   195,
-     251,    84,    85,    86,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,   448,   196,   197,   449,   509,   450,   198,
-     201,   512,   585,   210,   213,   432,   215,   217,   216,   452,
-     173,   220,   231,   232,   307,   308,   310,   311,   473,   314,
-     317,   318,   319,   252,   330,   331,   298,   336,   337,   354,
-     356,   357,   358,   378,   390,   549,   391,   392,   614,   617,
-     620,   578,    19,   396,   400,   580,   404,   405,   406,   408,
-     252,   582,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,   598,   600,   601,   583,   407,   584,   410,   513,   514,
-     515,   516,   517,   518,   519,   409,   412,   444,   477,   493,
-     491,   498,   494,   529,   495,   531,   532,   533,   501,   520,
-     521,   522,   523,   524,   525,   329,   526,   547,   548,   527,
-     550,  -158,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    96,   628,    97,   136,    84,    85,    86,   593,   586,
-    -153,    98,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,
-    -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,  -131,   594,
-     595,   596,   621,   381,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,   250,   597,   602,   171,   173,   173,   173,
-     622,   629,   630,   626,   640,   643,   646,   647,   309,   169,
-     623,   202,   639,   603,   604,   605,   606,   607,   608,   609,
-     610,   611,   233,   612,   322,   211,   214,   641,   116,   209,
-      11,    12,    13,   235,   333,   184,   579,   236,    40,   237,
-     238,   587,   508,   239,   644,   240,   599,   241,  -131,   242,
-     645,   320,   588,   511,   243,   499,    58,   502,   245,    63,
-      64,    65,    66,   246,   247,   248,   249,   250,   589,    99,
-     251,    84,    85,    86,   100,     0,     0,     0,   313,   627,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    80,
-      81,    82,    83,    84,    85,    86,    87,     0,     0,     0,
-       0,     0,     0,     0,    96,    96,    97,    97,     0,     0,
-       0,     0,     0,     0,    98,    98,     0,     0,     0,     0,
-       0,     0,     0,   173,     0,     0,     0,     0,     0,     0,
-       0,     0,    19,   452,   170,     0,     0,     0,     0,     0,
-     252,   552,   553,   554,   555,   556,   557,   558,   559,   560,
-     561,   562,   563,   564,   565,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,   105,     0,    88,   552,   553,   554,
-     555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
-     565,     0,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,     0,     0,     0,     0,
-       0,     0,     0,     0,   147,  -263,    62,    63,    64,    65,
-      66,    67,    68,    69,   528,   566,     0,   567,   568,   569,
-     570,   571,   572,   573,   574,  -351,  -351,  -351,  -351,  -351,
-    -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,  -351,     0,
-       0,   566,     0,   567,   568,   569,   570,   571,   572,   573,
-     574,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,     0,  -351,     0,   171,  -351,     0,
-       0,     0,     0,     0,  -351,   359,   360,   361,   362,   363,
-     364,   365,   366,   367,   368,   369,   370,   371,   372,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    80,    81,
-      82,   136,    84,    85,    86,    87,  -222,  -222,  -222,  -222,
-    -222,  -222,  -222,  -222,  -222,  -222,  -222,  -222,  -222,  -222,
-    -222,  -222,  -222,     0,     0,     0,     0,     0,   373,  -223,
-    -223,  -223,  -223,  -223,  -223,  -223,  -223,  -223,  -223,  -223,
-    -223,  -223,  -223,  -223,  -223,  -223,   338,   339,   340,   341,
-     342,   343,   344,   345,   346,   347,   348,   349,   136,    84,
-      85,    86,    87,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,   382,    81,    82,   136,    84,    85,    86,    87,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,   534,
-     535,   536,   136,    84,    85,    86,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,   539,   540,   541,   136,    84,
-      85,    86,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,   543,   544,   545,   136,    84,    85,    86,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,     0,   454,   455,
-     136,    84,    85,    86,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,     0,   457,   458,   136,    84,    85,    86,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,     0,
-     615,   616,   136,    84,    85,    86,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,     0,   618,   619,   136,    84,
-      85,    86,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,   613,     0,     0,   136,    84,    85,    86
+      71,    96,   172,    97,   146,   321,   138,   521,   189,    46,
+     327,    98,   276,   176,   332,  -159,    44,   309,     9,   307,
+      50,   424,   107,   500,    11,    12,    13,   641,    14,   444,
+     205,  -273,   268,     4,   269,    36,    37,    38,    39,   276,
+    -273,    55,    12,    13,   309,    14,   307,   515,   285,    40,
+     334,    15,    16,    10,   340,   305,   366,   641,   115,   268,
+     135,   269,   516,    54,   245,   517,    41,   427,   428,   429,
+     430,   431,   432,   316,   363,   285,    58,    61,    16,   456,
+     489,   458,   305,   640,   192,   193,   194,   323,   587,   588,
+      56,   164,   165,   166,   167,    61,   230,   425,   592,   221,
+     173,   214,    57,    88,    73,   445,   206,   207,   208,   501,
+      74,   601,   295,   602,    46,   123,   124,   125,    96,    17,
+      97,    44,   209,    18,    76,    50,    19,   508,    98,   464,
+     126,   511,    20,   453,   454,   514,    17,   457,   295,   295,
+      18,    77,   490,   491,   492,   482,   493,   494,   495,  -274,
+      78,   221,    79,    88,   108,   109,   114,   110,  -274,   541,
+     182,   183,   111,   117,   135,   467,   470,   231,   232,   479,
+     336,   107,   226,   222,   485,   102,   483,    80,    81,    82,
+     310,   311,   312,   313,    87,   346,   471,    63,    64,    65,
+      66,    67,    68,    69,    70,   472,   473,   474,   475,    84,
+      85,    86,   446,   447,   448,   449,   450,   451,   491,   492,
+     308,   493,   494,   340,     1,     2,   645,   646,   386,   103,
+     104,   113,   118,   122,   562,   222,   650,   263,   131,  -274,
+     144,    88,   145,   195,   168,  -273,   173,   308,   174,   178,
+     163,   179,   335,   180,   549,   553,   557,   175,   181,    96,
+     196,    97,   185,   295,   263,   362,   188,   364,   190,    98,
+     433,   434,   435,   436,   437,   438,   439,   440,   441,   295,
+     197,   200,   442,   198,   199,   203,   212,   215,   476,   477,
+     478,   223,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,   217,   224,   225,   228,   317,   318,   239,   388,   240,
+     241,   320,   242,   487,   322,  -158,   392,  -136,  -136,  -136,
+    -136,  -136,  -136,  -136,  -136,  -136,  -136,  -136,  -136,  -136,
+    -136,  -136,  -136,  -136,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,   459,   325,   328,   460,   520,   461,   329,
+     330,   523,   341,   262,   443,   596,   342,   347,   348,   365,
+     463,   173,   368,   369,   367,   401,   389,   402,   403,   484,
+     635,   407,   411,   415,   416,   417,   418,   308,    88,   420,
+     419,   421,   455,   423,   488,   560,   502,   504,   625,   628,
+     631,   505,   509,   506,   589,   512,   531,   532,   591,   533,
+     534,   535,   536,  -136,   593,   537,   538,  -163,   604,   597,
+     609,   611,   612,   605,   594,   606,   595,   607,   608,   524,
+     525,   526,   527,   528,   529,   530,   613,   632,   633,   637,
+     638,   647,   648,   651,   540,   654,   542,   543,   544,   655,
+     169,   319,   340,   204,   213,   116,   333,   344,   558,   559,
+     184,   561,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,   105,    96,   216,    97,   636,   211,   590,   598,   519,
+     652,   610,    98,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    80,    81,    82,    83,    84,    85,    86,    87,
+     653,   331,   522,   600,   392,   599,   510,   513,   324,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,   173,   173,
+     173,   136,    84,    85,    86,    99,   221,   100,     0,     0,
+     634,     0,     0,     0,   614,   615,   616,   617,   618,   619,
+     620,   621,   622,   649,   623,   243,     0,     0,     0,     0,
+       0,   244,     0,    11,    12,    13,   245,   170,     0,     0,
+     246,    40,   247,   248,     0,     0,   249,     0,   250,    88,
+     251,     0,   252,     0,     0,     0,     0,   253,     0,    58,
+     254,   255,    63,    64,    65,    66,   256,   257,   258,   259,
+     260,     0,     0,   261,    84,    85,    86,     0,     0,     0,
+     222,     0,     0,     0,     0,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,     0,
+       0,     0,     0,     0,     0,    96,    96,    97,    97,     0,
+       0,     0,     0,     0,     0,    98,    98,     0,     0,     0,
+       0,   173,     0,     0,     0,     0,     0,     0,     0,   243,
+       0,   463,     0,     0,     0,    19,     0,    11,    12,    13,
+     245,     0,     0,   262,   246,    40,   247,   248,     0,     0,
+     249,     0,   250,     0,   251,     0,   252,     0,     0,     0,
+       0,   253,     0,    58,     0,   255,    63,    64,    65,    66,
+     256,   257,   258,   259,   260,   147,     0,   261,    84,    85,
+      86,   563,   564,   565,   566,   567,   568,   569,   570,   571,
+     572,   573,   574,   575,   576,   563,   564,   565,   566,   567,
+     568,   569,   570,   571,   572,   573,   574,   575,   576,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,   260,     0,
+       0,   171,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,     0,     0,     0,    19,
+       0,     0,     0,     0,     0,  -268,     0,   262,     0,     0,
+       0,     0,     0,     0,     0,   577,     0,   578,   579,   580,
+     581,   582,   583,   584,   585,     0,     0,     0,     0,   577,
+       0,   578,   579,   580,   581,   582,   583,   584,   585,  -356,
+    -356,  -356,  -356,  -356,  -356,  -356,  -356,  -356,  -356,  -356,
+    -356,  -356,  -356,   370,   371,   372,   373,   374,   375,   376,
+     377,   378,   379,   380,   381,   382,   383,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    80,    81,    82,   136,
+      84,    85,    86,    87,     0,     0,     0,     0,     0,  -356,
+       0,     0,  -356,     0,     0,     0,     0,     0,  -356,     0,
+       0,     0,     0,     0,     0,     0,   384,  -227,  -227,  -227,
+    -227,  -227,  -227,  -227,  -227,  -227,  -227,  -227,  -227,  -227,
+    -227,  -227,  -227,  -227,  -228,  -228,  -228,  -228,  -228,  -228,
+    -228,  -228,  -228,  -228,  -228,  -228,  -228,  -228,  -228,  -228,
+    -228,   349,   350,   351,   352,   353,   354,   355,   356,   357,
+     358,   359,   360,   136,    84,    85,    86,    87,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,   393,    81,    82,
+     136,    84,    85,    86,    87,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,   545,   546,   547,   136,    84,    85,
+      86,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+     550,   551,   552,   136,    84,    85,    86,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,   554,   555,   556,   136,
+      84,    85,    86,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,     0,   465,   466,   136,    84,    85,    86,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,     0,   468,
+     469,   136,    84,    85,    86,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,     0,   626,   627,   136,    84,    85,
+      86,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+       0,   629,   630,   136,    84,    85,    86,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,   624,     0,     0,   136,
+      84,    85,    86,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,     0,     0,     0,   171,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    62,    63,    64,    65,    66,
+      67,    68,    69,   539
 };
 
 static const yytype_int16 yycheck[] =
 {
-      17,    28,    95,    28,   117,     9,   154,    88,   410,   238,
-     243,    28,   219,   219,   219,    35,     9,     9,   123,    35,
-     602,    35,    39,   219,     9,    10,    11,     2,    13,   219,
-      12,   119,    45,    45,   223,   123,   219,   244,   244,   244,
-     128,   248,    98,   219,   100,   252,   235,    35,   244,    31,
-       0,    36,    37,   635,   244,   284,     3,     4,     5,     6,
-      77,   244,    14,    10,    11,   272,    13,    42,   244,    46,
-      17,   339,   340,   341,   342,   343,   344,    29,   462,   463,
-      32,   119,    35,   351,    37,   353,    15,    34,   472,    47,
-     128,   108,   109,   110,   111,   111,   112,   113,    46,   204,
-     117,    37,   183,   123,    33,   123,   219,   121,   121,   121,
-     114,   127,    35,   119,   111,   112,   113,    35,   145,   104,
-     145,   114,   114,   108,   357,   119,   111,    35,   145,   126,
-     243,   244,   117,    38,    39,    35,    41,   159,   160,   161,
-     373,    46,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    46,    47,    48,   362,   363,   104,   251,    53,
-      46,   108,    46,   431,   181,    46,   373,   373,   373,    46,
-     197,   188,    35,   266,    97,    98,    99,   121,   101,   102,
-     103,    46,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,   115,   116,
-     392,   114,   219,   410,   396,    35,   299,   123,   400,    55,
-      56,    57,    58,    59,    60,   219,    98,    99,    35,   101,
-     102,   123,   451,   124,   125,   121,   243,   244,   123,   122,
-     632,   123,   249,   121,   441,   442,   443,   106,   107,   266,
-     244,   266,   348,   349,   357,   272,   352,   272,   124,   266,
-     125,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-     373,   120,     1,    49,    38,    39,    40,    41,     7,   121,
-       9,    10,    11,    12,   129,   130,   131,    16,    17,    18,
-      19,   621,   622,    22,   120,    24,   121,    26,   305,    28,
-     119,   119,    46,   374,    33,   312,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,   122,   122,
-      49,    50,    51,    52,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,   122,   122,    49,   408,    51,    46,
-      35,   412,   480,    35,    46,   121,    47,    46,    48,   356,
-     357,     8,   120,   120,   109,   105,    35,    35,   373,   119,
-      35,    35,    35,   119,    35,    35,   373,    35,    35,    35,
-     128,   122,    35,   110,    35,   446,    35,    20,   575,   576,
-     577,   464,   111,    21,    30,   468,    35,    35,    35,   122,
-     119,   474,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,   504,   505,   506,   475,    35,   477,   121,   415,   416,
-     417,   418,   419,   420,   421,   120,   122,    45,   122,    54,
-      97,    23,   120,   430,   121,   432,   433,   434,    25,    45,
-      45,    45,    45,    45,    45,   632,    45,   444,   445,    45,
-     447,    35,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,   468,   590,   468,    49,    50,    51,    52,    35,   119,
-      35,   468,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    35,
-      35,    35,   121,   490,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    35,    35,    49,   504,   505,   506,
-     121,    35,   121,   586,    15,    27,    35,    35,   226,   114,
-     581,   175,   120,   520,   521,   522,   523,   524,   525,   526,
-     527,   528,     1,   530,   244,   181,   188,   630,    52,   179,
-       9,    10,    11,    12,   266,   145,   468,    16,    17,    18,
-      19,   490,   402,    22,   635,    24,   505,    26,   123,    28,
-     640,   242,   493,   411,    33,   394,    35,   398,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,   495,    30,
-      49,    50,    51,    52,    33,    -1,    -1,    -1,   236,   586,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   621,   622,   621,   622,    -1,    -1,
-      -1,    -1,    -1,    -1,   621,   622,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   630,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   111,   640,    35,    -1,    -1,    -1,    -1,    -1,
-     119,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    -1,   123,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    -1,    83,    84,    85,    86,    87,    88,    89,    90,
-      91,    92,    93,    94,    95,    96,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    36,   119,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,   129,    -1,   131,   132,   133,
-     134,   135,   136,   137,   138,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    -1,
-      -1,   129,    -1,   131,   132,   133,   134,   135,   136,   137,
-     138,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    -1,   119,    -1,    49,   122,    -1,
-      -1,    -1,    -1,    -1,   128,    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,   122,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    37,    38,    39,    40,
+      17,    28,   117,    28,    95,   242,    88,   421,   154,     9,
+     248,    28,   227,   123,   253,    35,     9,   227,     2,   227,
+       9,    45,    39,    35,     9,    10,    11,   613,    13,    45,
+      35,   119,   227,    35,   227,     3,     4,     5,     6,   254,
+     128,    47,    10,    11,   254,    13,   254,    14,   227,    17,
+     258,    36,    37,     0,   262,   227,   294,   643,    42,   254,
+      77,   254,    29,    46,    12,    32,    34,   350,   351,   352,
+     353,   354,   355,   231,   282,   254,    35,    15,    37,   362,
+      35,   364,   254,    31,   159,   160,   161,   245,   473,   474,
+      46,   108,   109,   110,   111,    33,   206,   121,   483,   190,
+     117,   183,   123,   123,    37,   121,   111,   112,   113,   121,
+     119,    98,   227,   100,   114,   111,   112,   113,   145,   104,
+     145,   114,   127,   108,    35,   114,   111,   403,   145,   368,
+     126,   407,   117,   359,   360,   411,   104,   363,   253,   254,
+     108,   119,    97,    98,    99,   384,   101,   102,   103,   119,
+      35,   242,    35,   123,    38,    39,    35,    41,   128,   442,
+     124,   125,    46,   121,   181,   373,   374,   106,   107,   384,
+     261,   188,   199,   190,   384,    46,   384,    46,    47,    48,
+      38,    39,    40,    41,    53,   276,    37,    38,    39,    40,
       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    37,    38,    39,    40,    41,    42,    43,
+      51,    52,    55,    56,    57,    58,    59,    60,    98,    99,
+     227,   101,   102,   421,   115,   116,   632,   633,   309,    46,
+      46,    46,    46,   114,   462,   242,   640,   227,    35,   123,
+      35,   123,   121,    46,   121,   123,   253,   254,   124,   120,
+     122,   121,   259,   120,   452,   453,   454,   125,   121,   276,
+     122,   276,   119,   368,   254,   282,   119,   282,   119,   276,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,   384,
+     122,    46,    49,   122,   122,    35,    35,    46,   129,   130,
+     131,    47,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    48,    46,     8,   109,   105,   120,   315,   120,
+     120,    35,   121,   385,    35,    35,   323,    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,   119,    35,    49,   419,    51,    35,
+      35,   423,    35,   119,   121,   491,    35,    35,    35,    35,
+     367,   368,   122,    35,   128,    35,   110,    35,    20,   384,
+     597,    21,    30,    35,    35,    35,    35,   384,   123,   120,
+     122,   121,    45,   122,   122,   457,    97,    54,   586,   587,
+     588,   120,    23,   121,   475,    25,    45,    45,   479,    45,
+      45,    45,    45,   123,   485,    45,    45,    35,    35,   119,
+     515,   516,   517,    35,   486,    35,   488,    35,    35,   426,
+     427,   428,   429,   430,   431,   432,    35,   121,   121,    35,
+     121,   120,    15,    27,   441,    35,   443,   444,   445,    35,
+     114,   234,   640,   175,   181,    52,   254,   276,   455,   456,
+     145,   458,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,   479,   188,   479,   601,   179,   479,   501,   413,
+     643,   516,   479,    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,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    -1,    47,    48,
-      49,    50,    51,    52,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    -1,    47,    48,    49,    50,    51,    52,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    -1,
-      47,    48,    49,    50,    51,    52,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    -1,    47,    48,    49,    50,
-      51,    52,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    -1,    -1,    49,    50,    51,    52
+     648,   252,   422,   506,   501,   504,   405,   409,   246,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,   515,   516,
+     517,    49,    50,    51,    52,    30,   597,    33,    -1,    -1,
+     592,    -1,    -1,    -1,   531,   532,   533,   534,   535,   536,
+     537,   538,   539,   638,   541,     1,    -1,    -1,    -1,    -1,
+      -1,     7,    -1,     9,    10,    11,    12,    35,    -1,    -1,
+      16,    17,    18,    19,    -1,    -1,    22,    -1,    24,   123,
+      26,    -1,    28,    -1,    -1,    -1,    -1,    33,    -1,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    -1,    -1,    49,    50,    51,    52,    -1,    -1,    -1,
+     597,    -1,    -1,    -1,    -1,    83,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    -1,
+      -1,    -1,    -1,    -1,    -1,   632,   633,   632,   633,    -1,
+      -1,    -1,    -1,    -1,    -1,   632,   633,    -1,    -1,    -1,
+      -1,   638,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
+      -1,   648,    -1,    -1,    -1,   111,    -1,     9,    10,    11,
+      12,    -1,    -1,   119,    16,    17,    18,    19,    -1,    -1,
+      22,    -1,    24,    -1,    26,    -1,    28,    -1,    -1,    -1,
+      -1,    33,    -1,    35,    -1,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    36,    -1,    49,    50,    51,
+      52,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    -1,
+      -1,    49,    83,    84,    85,    86,    87,    88,    89,    90,
+      91,    92,    93,    94,    95,    96,    -1,    -1,    -1,   111,
+      -1,    -1,    -1,    -1,    -1,   119,    -1,   119,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   129,    -1,   131,   132,   133,
+     134,   135,   136,   137,   138,    -1,    -1,    -1,    -1,   129,
+      -1,   131,   132,   133,   134,   135,   136,   137,   138,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    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,    -1,    -1,    -1,    -1,    -1,   119,
+      -1,    -1,   122,    -1,    -1,    -1,    -1,    -1,   128,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   122,    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,    47,    48,
+      49,    50,    51,    52,    53,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    -1,    47,    48,    49,    50,    51,    52,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    -1,    47,
+      48,    49,    50,    51,    52,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    -1,    47,    48,    49,    50,    51,
+      52,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      -1,    47,    48,    49,    50,    51,    52,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    -1,    -1,    49,
+      50,    51,    52,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    -1,    -1,    -1,    49,    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,   115,   116,   140,    35,   142,   293,   294,   141,   142,
+       0,   115,   116,   140,    35,   142,   296,   297,   141,   142,
        0,     9,    10,    11,    13,    36,    37,   104,   108,   111,
-     117,   145,   146,   147,   148,   159,   163,   186,   201,   227,
-     295,   296,   297,   299,   300,   301,     3,     4,     5,     6,
+     117,   145,   146,   147,   148,   159,   163,   189,   204,   230,
+     298,   299,   300,   302,   303,   304,     3,     4,     5,     6,
       17,    34,   143,   144,   145,   158,   159,   160,   161,   162,
-     163,   167,   169,   278,    46,    47,    46,   123,    35,   194,
-     298,   301,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,   288,   289,    37,   119,   187,    35,   119,    35,    35,
-      46,    47,    48,    49,    50,    51,    52,    53,   123,   203,
-     204,   206,   207,   208,   209,   246,   282,   287,   288,   296,
-     298,   171,    46,    46,    46,    46,   170,   288,    38,    39,
-      41,    46,   280,    46,    35,   142,   171,   121,    46,   164,
-     165,   166,   114,   111,   112,   113,   126,   188,   189,   190,
-     191,    35,   149,   150,   151,   288,    49,   210,   281,   282,
-     285,   286,   287,   288,    35,   121,   209,    36,    83,    84,
+     163,   167,   169,   281,    46,    47,    46,   123,    35,   197,
+     301,   304,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,   291,   292,    37,   119,   190,    35,   119,    35,    35,
+      46,    47,    48,    49,    50,    51,    52,    53,   123,   206,
+     207,   209,   210,   211,   212,   249,   285,   290,   291,   299,
+     301,   171,    46,    46,    46,    46,   170,   291,    38,    39,
+      41,    46,   283,    46,    35,   142,   171,   121,    46,   164,
+     165,   166,   114,   111,   112,   113,   126,   191,   192,   193,
+     194,    35,   149,   150,   151,   291,    49,   213,   284,   285,
+     288,   289,   290,   291,    35,   121,   212,    36,    83,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,   172,   122,   288,   288,   288,   288,   121,   144,
-      35,    49,   246,   288,   124,   125,   187,   192,   120,   121,
-     120,   121,   124,   125,   206,   119,   274,   275,   119,   274,
-     275,   275,   275,    46,   122,   122,   122,   122,    46,   174,
-     175,    35,   166,    35,   111,   112,   113,   127,   193,   190,
-      35,   151,   281,    46,   170,    47,    48,    46,   282,   182,
-       8,   176,   187,   106,   107,   152,   153,   154,   155,   156,
-     157,   120,   120,     1,     7,    12,    16,    18,    19,    22,
+      95,    96,   172,   122,   291,   291,   291,   291,   121,   144,
+      35,    49,   249,   291,   124,   125,   190,   195,   120,   121,
+     120,   121,   124,   125,   209,   119,   277,   278,   119,   277,
+     119,   173,   278,   278,   278,    46,   122,   122,   122,   122,
+      46,   177,   178,    35,   166,    35,   111,   112,   113,   127,
+     196,   193,    35,   151,   284,    46,   170,    46,   174,   175,
+     176,   212,   291,    47,    48,    46,   285,   185,     8,   179,
+     190,   106,   107,   152,   153,   154,   155,   156,   157,   120,
+     120,   120,   121,     1,     7,    12,    16,    18,    19,    22,
       24,    26,    28,    33,    36,    37,    42,    43,    44,    45,
-      46,    49,   119,   159,   168,   183,   184,   185,   186,   194,
-     195,   196,   197,   198,   199,   200,   201,   211,   212,   214,
-     216,   217,   220,   222,   223,   227,   228,   229,   230,   239,
-     240,   241,   242,   243,   244,   246,   247,   253,   254,   255,
-     256,   264,   265,   276,   277,   278,   279,   285,   288,   289,
-      38,    39,    40,    41,   177,   284,   284,   109,   105,   154,
-      35,    35,   284,   280,   119,   257,   257,    35,    35,    35,
-     247,   241,   184,   285,   288,   209,   248,   249,   250,   285,
-      35,    35,   202,   203,   205,   209,    35,    35,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-     218,   282,   285,   287,    35,   257,   128,   122,    35,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,   122,   292,   209,   178,   288,   110,   224,
-     225,   288,    46,   258,   259,   260,   261,   262,   263,   281,
-      35,    35,    20,   266,   267,   268,    21,   269,   270,   271,
-      30,   231,   232,   233,    35,    35,    35,    35,   122,   120,
-     121,   251,   122,    45,   121,   221,   221,   221,   221,   221,
-     221,   221,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    49,   121,    45,   121,    55,    56,    57,    58,    59,
-      60,   283,   283,   283,    45,   221,   283,   221,    46,    49,
-      51,   245,   288,   241,    47,    48,   285,    47,    48,   285,
-      37,    46,    47,    48,    49,   129,   130,   131,   201,   213,
-     215,   241,   285,   287,   289,   290,   281,   122,    35,    97,
-      98,    99,   101,   102,   103,   179,   180,   181,   252,    35,
-     121,    97,   226,    54,   120,   121,   272,   262,    23,   268,
-     262,    25,   271,   262,    14,    29,    32,   234,   233,   281,
-     250,   252,   281,   288,   288,   288,   288,   288,   288,   288,
-      45,    45,    45,    45,    45,    45,    45,    45,    45,   288,
-     221,   288,   288,   288,    46,    47,    48,   219,   285,    46,
-      47,    48,   285,    46,    47,    48,   285,   288,   288,   281,
-     288,   257,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,   129,   131,   132,   133,
-     134,   135,   136,   137,   138,   291,   291,   291,   209,   207,
-     209,   291,   209,   281,   281,   274,   119,   225,   263,   260,
-      98,   100,   273,    35,    35,    35,    35,    35,   246,   244,
-     246,   246,    35,   288,   288,   288,   288,   288,   288,   288,
-     288,   288,   288,    46,   285,    47,    48,   285,    47,    48,
-     285,   121,   121,   281,    46,   173,   209,   288,   274,    35,
-     121,   235,    31,   223,   236,   237,   238,   204,   204,   120,
-      15,   246,   250,    27,   238,   245,    35,    35
+      46,    49,   119,   159,   168,   186,   187,   188,   189,   197,
+     198,   199,   200,   201,   202,   203,   204,   214,   215,   217,
+     219,   220,   223,   225,   226,   230,   231,   232,   233,   242,
+     243,   244,   245,   246,   247,   249,   250,   256,   257,   258,
+     259,   267,   268,   279,   280,   281,   282,   288,   291,   292,
+      38,    39,    40,    41,   180,   287,   287,   109,   105,   154,
+      35,   176,    35,   287,   283,   119,   260,   260,    35,    35,
+      35,   250,   244,   187,   288,   291,   212,   251,   252,   253,
+     288,    35,    35,   205,   206,   208,   212,    35,    35,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,   221,   285,   288,   290,    35,   260,   128,   122,    35,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,   122,   295,   212,   181,   291,   110,
+     227,   228,   291,    46,   261,   262,   263,   264,   265,   266,
+     284,    35,    35,    20,   269,   270,   271,    21,   272,   273,
+     274,    30,   234,   235,   236,    35,    35,    35,    35,   122,
+     120,   121,   254,   122,    45,   121,   224,   224,   224,   224,
+     224,   224,   224,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    49,   121,    45,   121,    55,    56,    57,    58,
+      59,    60,   286,   286,   286,    45,   224,   286,   224,    46,
+      49,    51,   248,   291,   244,    47,    48,   288,    47,    48,
+     288,    37,    46,    47,    48,    49,   129,   130,   131,   204,
+     216,   218,   244,   288,   290,   292,   293,   284,   122,    35,
+      97,    98,    99,   101,   102,   103,   182,   183,   184,   255,
+      35,   121,    97,   229,    54,   120,   121,   275,   265,    23,
+     271,   265,    25,   274,   265,    14,    29,    32,   237,   236,
+     284,   253,   255,   284,   291,   291,   291,   291,   291,   291,
+     291,    45,    45,    45,    45,    45,    45,    45,    45,    45,
+     291,   224,   291,   291,   291,    46,    47,    48,   222,   288,
+      46,    47,    48,   288,    46,    47,    48,   288,   291,   291,
+     284,   291,   260,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,   129,   131,   132,
+     133,   134,   135,   136,   137,   138,   294,   294,   294,   212,
+     210,   212,   294,   212,   284,   284,   277,   119,   228,   266,
+     263,    98,   100,   276,    35,    35,    35,    35,    35,   249,
+     247,   249,   249,    35,   291,   291,   291,   291,   291,   291,
+     291,   291,   291,   291,    46,   288,    47,    48,   288,    47,
+      48,   288,   121,   121,   284,   176,   277,    35,   121,   238,
+      31,   226,   239,   240,   241,   207,   207,   120,    15,   249,
+     253,    27,   241,   248,    35,    35
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2583,22 +2606,22 @@
   switch (yyn)
     {
         case 4:
-#line 551 "pir.y"
+#line 553 "pir.y"
     { fixup_global_labels(lexer); ;}
     break;
 
   case 20:
-#line 582 "pir.y"
+#line 584 "pir.y"
     { new_macro_const(lexer->macros, (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].sval), yypirget_lineno(yyscanner)); ;}
     break;
 
   case 21:
-#line 588 "pir.y"
+#line 590 "pir.y"
     { /* fprintf(stderr, "macro body: [%s]\n", CURRENT_MACRO(lexer)->body);*/ ;}
     break;
 
   case 22:
-#line 592 "pir.y"
+#line 594 "pir.y"
     {
                           new_macro(lexer->macros, (yyvsp[(2) - (2)].sval), yypirget_lineno(yyscanner), TRUE,
                                     lexer->macro_size);
@@ -2606,17 +2629,17 @@
     break;
 
   case 27:
-#line 607 "pir.y"
+#line 609 "pir.y"
     { add_macro_param(CURRENT_MACRO(lexer), (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 35:
-#line 626 "pir.y"
+#line 628 "pir.y"
     { store_macro_string(CURRENT_MACRO(lexer), "%s\n", (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 36:
-#line 630 "pir.y"
+#line 632 "pir.y"
     {
                           store_macro_string(CURRENT_MACRO(lexer), ".local %s %s\n",
                                              pir_type_names[(yyvsp[(2) - (3)].ival)], (yyvsp[(3) - (3)].sval));
@@ -2624,142 +2647,167 @@
     break;
 
   case 37:
-#line 641 "pir.y"
+#line 643 "pir.y"
     { load_library(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 38:
-#line 645 "pir.y"
+#line 647 "pir.y"
     { yypirset_lineno ((yyvsp[(2) - (2)].ival), yyscanner); ;}
     break;
 
   case 39:
-#line 647 "pir.y"
+#line 649 "pir.y"
     { lexer->filename = (yyvsp[(2) - (2)].sval); ;}
     break;
 
   case 41:
-#line 656 "pir.y"
+#line 658 "pir.y"
     { set_hll(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 42:
-#line 660 "pir.y"
+#line 662 "pir.y"
     { set_hll_map(lexer, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 43:
-#line 664 "pir.y"
+#line 666 "pir.y"
     { set_namespace(lexer, (yyvsp[(3) - (4)].key)); ;}
     break;
 
   case 44:
-#line 668 "pir.y"
+#line 670 "pir.y"
     { (yyval.key) = NULL; ;}
     break;
 
   case 45:
-#line 670 "pir.y"
+#line 672 "pir.y"
     { (yyval.key) = (yyvsp[(1) - (1)].key); ;}
     break;
 
   case 46:
-#line 674 "pir.y"
+#line 676 "pir.y"
     { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 47:
-#line 676 "pir.y"
+#line 678 "pir.y"
     { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 48:
-#line 680 "pir.y"
+#line 682 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, new_const(lexer, STRING_TYPE, (yyvsp[(1) - (1)].sval))); ;}
     break;
 
   case 50:
-#line 690 "pir.y"
+#line 692 "pir.y"
     { close_sub(lexer); ;}
     break;
 
   case 51:
-#line 694 "pir.y"
+#line 696 "pir.y"
     { new_subr(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 56:
-#line 706 "pir.y"
+#line 708 "pir.y"
     { set_sub_flag(lexer, SUB_FLAG_ANON);;}
     break;
 
   case 57:
-#line 708 "pir.y"
+#line 710 "pir.y"
     { set_sub_flag(lexer, SUB_FLAG_INIT); ;}
     break;
 
   case 58:
-#line 710 "pir.y"
+#line 712 "pir.y"
     { set_sub_flag(lexer, SUB_FLAG_LOAD); ;}
     break;
 
   case 59:
-#line 712 "pir.y"
+#line 714 "pir.y"
     { set_sub_flag(lexer, SUB_FLAG_MAIN); ;}
     break;
 
   case 60:
-#line 714 "pir.y"
+#line 716 "pir.y"
     { set_sub_flag(lexer, SUB_FLAG_LEX); ;}
     break;
 
   case 61:
-#line 716 "pir.y"
+#line 718 "pir.y"
     { set_sub_flag(lexer, SUB_FLAG_POSTCOMP); ;}
     break;
 
   case 62:
-#line 718 "pir.y"
+#line 720 "pir.y"
     { set_sub_flag(lexer, SUB_FLAG_IMMEDIATE); ;}
     break;
 
   case 63:
-#line 720 "pir.y"
+#line 722 "pir.y"
     { set_sub_flag(lexer, SUB_FLAG_MULTI); ;}
     break;
 
   case 64:
-#line 722 "pir.y"
+#line 724 "pir.y"
     { set_sub_outer(lexer, (yyvsp[(3) - (4)].sval)); ;}
     break;
 
   case 65:
-#line 724 "pir.y"
+#line 726 "pir.y"
     { set_sub_methodname(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 66:
-#line 726 "pir.y"
+#line 728 "pir.y"
     { set_sub_vtable(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 67:
-#line 728 "pir.y"
+#line 730 "pir.y"
     { set_sub_subid(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 68:
-#line 730 "pir.y"
+#line 732 "pir.y"
     { set_sub_instanceof(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 69:
-#line 732 "pir.y"
+#line 734 "pir.y"
     { set_sub_nsentry(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
+  case 70:
+#line 738 "pir.y"
+    { set_sub_multi_arity(lexer, (yyvsp[(2) - (3)].uval)); ;}
+    break;
+
+  case 71:
+#line 742 "pir.y"
+    { (yyval.uval) = 0; ;}
+    break;
+
+  case 72:
+#line 744 "pir.y"
+    { (yyval.uval) = (yyvsp[(1) - (1)].uval); ;}
+    break;
+
   case 73:
-#line 741 "pir.y"
+#line 748 "pir.y"
+    { (yyval.uval) = 1; /* start counting multi types */ ;}
+    break;
+
+  case 74:
+#line 750 "pir.y"
+    { ++(yyval.uval); ;}
+    break;
+
+  case 78:
+#line 759 "pir.y"
     {
                            /* if there are parameters, then emit a get_params instruction. */
                            if ((yyvsp[(1) - (1)].uval) > 0)
@@ -2767,51 +2815,51 @@
                          ;}
     break;
 
-  case 74:
-#line 749 "pir.y"
+  case 79:
+#line 767 "pir.y"
     { (yyval.uval) = 0; ;}
     break;
 
-  case 75:
-#line 751 "pir.y"
+  case 80:
+#line 769 "pir.y"
     { ++(yyval.uval); /* count number of parameters */ ;}
     break;
 
-  case 76:
-#line 755 "pir.y"
+  case 81:
+#line 773 "pir.y"
     { set_param_flag(lexer, (yyvsp[(2) - (4)].targ), (yyvsp[(3) - (4)].ival)); ;}
     break;
 
-  case 77:
-#line 759 "pir.y"
+  case 82:
+#line 777 "pir.y"
     { (yyval.targ) = add_param(lexer, (yyvsp[(1) - (2)].ival), (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 78:
-#line 763 "pir.y"
+  case 83:
+#line 781 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 79:
-#line 765 "pir.y"
+  case 84:
+#line 783 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 83:
-#line 774 "pir.y"
+  case 88:
+#line 792 "pir.y"
     { (yyval.ival) = TARGET_FLAG_INVOCANT;
                            /* XXX handle multi_type */
 
                          ;}
     break;
 
-  case 84:
-#line 781 "pir.y"
+  case 89:
+#line 799 "pir.y"
     { (yyval.ival) = TARGET_FLAG_UNIQUE_REG; ;}
     break;
 
-  case 86:
-#line 788 "pir.y"
+  case 91:
+#line 806 "pir.y"
     {
                          ++lexer->stmt_counter;
                          /* increment the logical statement counter; a statement can be
@@ -2821,38 +2869,38 @@
                         ;}
     break;
 
-  case 87:
-#line 798 "pir.y"
+  case 92:
+#line 816 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
-  case 105:
-#line 826 "pir.y"
+  case 110:
+#line 844 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (3)].mval), (yyvsp[(2) - (3)].pval)); ;}
     break;
 
-  case 106:
-#line 830 "pir.y"
+  case 111:
+#line 848 "pir.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 107:
-#line 832 "pir.y"
+  case 112:
+#line 850 "pir.y"
     { (yyval.pval) = (yyvsp[(2) - (3)].pval); ;}
     break;
 
-  case 108:
-#line 836 "pir.y"
+  case 113:
+#line 854 "pir.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 110:
-#line 841 "pir.y"
+  case 115:
+#line 859 "pir.y"
     { (yyval.pval) = new_macro_param((yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 111:
-#line 843 "pir.y"
+  case 116:
+#line 861 "pir.y"
     {
                           macro_param *param = new_macro_param((yyvsp[(3) - (3)].sval));
                           param->next = (yyvsp[(1) - (3)].pval);
@@ -2860,8 +2908,8 @@
                         ;}
     break;
 
-  case 112:
-#line 851 "pir.y"
+  case 117:
+#line 869 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                           if (sym == NULL) {
@@ -2871,23 +2919,23 @@
                         ;}
     break;
 
-  case 114:
-#line 860 "pir.y"
+  case 119:
+#line 878 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 116:
-#line 865 "pir.y"
+  case 121:
+#line 883 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
-  case 117:
-#line 870 "pir.y"
+  case 122:
+#line 888 "pir.y"
     { (yyval.sval) = ""; ;}
     break;
 
-  case 118:
-#line 872 "pir.y"
+  case 123:
+#line 890 "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));
@@ -2896,18 +2944,18 @@
                         ;}
     break;
 
-  case 122:
-#line 884 "pir.y"
+  case 127:
+#line 902 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 123:
-#line 892 "pir.y"
+  case 128:
+#line 910 "pir.y"
     { set_instr(lexer, NULL); ;}
     break;
 
-  case 125:
-#line 900 "pir.y"
+  case 130:
+#line 918 "pir.y"
     {
                            if (lexer->parse_errors > MAX_NUM_ERRORS)
                                panic(lexer, "Too many errors. Compilation aborted.\n");
@@ -2916,24 +2964,24 @@
                          ;}
     break;
 
-  case 126:
-#line 909 "pir.y"
+  case 131:
+#line 927 "pir.y"
     {
                            set_instrf(lexer, "null", "%T", (yyvsp[(2) - (3)].targ));
                            get_opinfo(yyscanner);
                          ;}
     break;
 
-  case 127:
-#line 916 "pir.y"
+  case 132:
+#line 934 "pir.y"
     {
                            set_instrf(lexer, "get_results", "%T", (yyvsp[(2) - (3)].targ));
                            get_opinfo(yyscanner);
                          ;}
     break;
 
-  case 131:
-#line 930 "pir.y"
+  case 136:
+#line 948 "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.
                             */
@@ -2942,8 +2990,8 @@
                          ;}
     break;
 
-  case 132:
-#line 939 "pir.y"
+  case 137:
+#line 957 "pir.y"
     { /* when this rule is activated, the initial identifier must
                            * be a parrot op.
                            */
@@ -2952,8 +3000,8 @@
                         ;}
     break;
 
-  case 138:
-#line 957 "pir.y"
+  case 143:
+#line 975 "pir.y"
     {
                          /* the "instruction" that was set now appears to be
                           * an identifier; get the name, and check its type.
@@ -2989,41 +3037,41 @@
                        ;}
     break;
 
-  case 139:
-#line 993 "pir.y"
+  case 144:
+#line 1011 "pir.y"
     { push_operand(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 140:
-#line 998 "pir.y"
+  case 145:
+#line 1016 "pir.y"
     { push_operand(lexer, expr_from_key(lexer, (yyvsp[(1) - (1)].key))); ;}
     break;
 
-  case 141:
-#line 1002 "pir.y"
+  case 146:
+#line 1020 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
-  case 142:
-#line 1004 "pir.y"
+  case 147:
+#line 1022 "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 143:
-#line 1009 "pir.y"
+  case 148:
+#line 1027 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
-  case 144:
-#line 1011 "pir.y"
+  case 149:
+#line 1029 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
-  case 145:
-#line 1015 "pir.y"
+  case 150:
+#line 1033 "pir.y"
     {
                            /* if $1 is a register, just return that */
                            if (TEST_FLAG((yyvsp[(1) - (2)].targ)->flags, TARGET_FLAG_IS_REG))
@@ -3046,23 +3094,23 @@
                          ;}
     break;
 
-  case 146:
-#line 1038 "pir.y"
+  case 151:
+#line 1056 "pir.y"
     { (yyval.key) = (yyvsp[(2) - (3)].key); ;}
     break;
 
-  case 147:
-#line 1042 "pir.y"
+  case 152:
+#line 1060 "pir.y"
     { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 148:
-#line 1044 "pir.y"
+  case 153:
+#line 1062 "pir.y"
     { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
-  case 149:
-#line 1053 "pir.y"
+  case 154:
+#line 1071 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (6)].expr));
@@ -3075,8 +3123,8 @@
                         ;}
     break;
 
-  case 150:
-#line 1064 "pir.y"
+  case 155:
+#line 1082 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (4)].expr));
@@ -3090,8 +3138,8 @@
                         ;}
     break;
 
-  case 151:
-#line 1076 "pir.y"
+  case 156:
+#line 1094 "pir.y"
     { /* XXX create a PMC const for $4 */
                           unshift_operand(lexer, expr_from_key(lexer, (yyvsp[(4) - (6)].key)));
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (6)].targ)));
@@ -3101,8 +3149,8 @@
                         ;}
     break;
 
-  case 155:
-#line 1093 "pir.y"
+  case 160:
+#line 1111 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3113,8 +3161,8 @@
                         ;}
     break;
 
-  case 156:
-#line 1102 "pir.y"
+  case 161:
+#line 1120 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 0.0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3125,24 +3173,24 @@
                         ;}
     break;
 
-  case 157:
-#line 1111 "pir.y"
+  case 162:
+#line 1129 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%s", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].sval));
                           get_opinfo(yyscanner);
                         ;}
     break;
 
-  case 158:
-#line 1116 "pir.y"
+  case 163:
+#line 1134 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(yyscanner);
                         ;}
     break;
 
-  case 159:
-#line 1121 "pir.y"
+  case 164:
+#line 1139 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (3)].sval));
                           if (sym) {
@@ -3165,16 +3213,16 @@
                         ;}
     break;
 
-  case 160:
-#line 1142 "pir.y"
+  case 165:
+#line 1160 "pir.y"
     {
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (3)].targ)));
                           get_opinfo(yyscanner);
                         ;}
     break;
 
-  case 161:
-#line 1147 "pir.y"
+  case 166:
+#line 1165 "pir.y"
     {
                           /*   $P0 = foo ["bar"]
                            *
@@ -3217,8 +3265,8 @@
                         ;}
     break;
 
-  case 162:
-#line 1188 "pir.y"
+  case 167:
+#line 1206 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (4)].sval));
                           target *t;
@@ -3238,8 +3286,8 @@
                         ;}
     break;
 
-  case 163:
-#line 1206 "pir.y"
+  case 168:
+#line 1224 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(3) - (4)].ival));
                           set_target_key(preg, (yyvsp[(4) - (4)].key));
@@ -3248,16 +3296,16 @@
                         ;}
     break;
 
-  case 164:
-#line 1213 "pir.y"
+  case 169:
+#line 1231 "pir.y"
     {
                           set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%T%E", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].expr));
                           get_opinfo(yyscanner);
                         ;}
     break;
 
-  case 165:
-#line 1218 "pir.y"
+  case 170:
+#line 1236 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3270,8 +3318,8 @@
                         ;}
     break;
 
-  case 166:
-#line 1229 "pir.y"
+  case 171:
+#line 1247 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3284,8 +3332,8 @@
                         ;}
     break;
 
-  case 167:
-#line 1240 "pir.y"
+  case 172:
+#line 1258 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3298,8 +3346,8 @@
                         ;}
     break;
 
-  case 168:
-#line 1251 "pir.y"
+  case 173:
+#line 1269 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3312,32 +3360,32 @@
                         ;}
     break;
 
-  case 169:
-#line 1262 "pir.y"
+  case 174:
+#line 1280 "pir.y"
     {
                           set_instrf(lexer, "add", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(yyscanner);
                         ;}
     break;
 
-  case 170:
-#line 1267 "pir.y"
+  case 175:
+#line 1285 "pir.y"
     {
                           set_instrf(lexer, "sub", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(yyscanner);
                         ;}
     break;
 
-  case 171:
-#line 1272 "pir.y"
+  case 176:
+#line 1290 "pir.y"
     {
                           set_instrf(lexer, (yyvsp[(3) - (4)].sval), "%T%E", (yyvsp[(1) - (4)].targ), (yyvsp[(4) - (4)].expr));
                           get_opinfo(yyscanner);
                         ;}
     break;
 
-  case 172:
-#line 1277 "pir.y"
+  case 177:
+#line 1295 "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));
@@ -3349,8 +3397,8 @@
                         ;}
     break;
 
-  case 173:
-#line 1287 "pir.y"
+  case 178:
+#line 1305 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (4)].sval));
                           target *t;
@@ -3371,8 +3419,8 @@
                       ;}
     break;
 
-  case 174:
-#line 1306 "pir.y"
+  case 179:
+#line 1324 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (4)].ival));
                           set_target_key(preg, (yyvsp[(2) - (4)].key));
@@ -3381,98 +3429,98 @@
                         ;}
     break;
 
-  case 175:
-#line 1340 "pir.y"
+  case 180:
+#line 1358 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%i%T", (yyvsp[(1) - (3)].ival), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 176:
-#line 1342 "pir.y"
+  case 181:
+#line 1360 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%n%T", (yyvsp[(1) - (3)].dval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 177:
-#line 1344 "pir.y"
+  case 182:
+#line 1362 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%s%T", (yyvsp[(1) - (3)].sval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 178:
-#line 1346 "pir.y"
+  case 183:
+#line 1364 "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 179:
-#line 1348 "pir.y"
+  case 184:
+#line 1366 "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 180:
-#line 1350 "pir.y"
+  case 185:
+#line 1368 "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 181:
-#line 1352 "pir.y"
+  case 186:
+#line 1370 "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 182:
-#line 1354 "pir.y"
+  case 187:
+#line 1372 "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 183:
-#line 1359 "pir.y"
+  case 188:
+#line 1377 "pir.y"
     { get_opinfo(yyscanner); ;}
     break;
 
-  case 184:
-#line 1368 "pir.y"
+  case 189:
+#line 1386 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, (yyvsp[(3) - (5)].sval), (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 185:
-#line 1370 "pir.y"
+  case 190:
+#line 1388 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "int", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 186:
-#line 1372 "pir.y"
+  case 191:
+#line 1390 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "num", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 187:
-#line 1374 "pir.y"
+  case 192:
+#line 1392 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "pmc", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 188:
-#line 1376 "pir.y"
+  case 193:
+#line 1394 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "string", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 189:
-#line 1378 "pir.y"
+  case 194:
+#line 1396 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "if", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 190:
-#line 1380 "pir.y"
+  case 195:
+#line 1398 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "unless", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 191:
-#line 1382 "pir.y"
+  case 196:
+#line 1400 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "goto", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 192:
-#line 1384 "pir.y"
+  case 197:
+#line 1402 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "null", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 193:
-#line 1386 "pir.y"
+  case 198:
+#line 1404 "pir.y"
     {
                           int istrue = evaluate_c(lexer, (yyvsp[(2) - (4)].cval));
                           /* if "unless", invert the true-ness */
@@ -3486,76 +3534,76 @@
                         ;}
     break;
 
-  case 194:
-#line 1398 "pir.y"
+  case 199:
+#line 1416 "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));
                         ;}
     break;
 
-  case 195:
-#line 1403 "pir.y"
+  case 200:
+#line 1421 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 196:
-#line 1405 "pir.y"
+  case 201:
+#line 1423 "pir.y"
     { set_instrf(lexer, (yyvsp[(1) - (4)].ival) ? "unless" : "if", "%T%I", (yyvsp[(2) - (4)].targ), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 197:
-#line 1407 "pir.y"
+  case 202:
+#line 1425 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "int", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 198:
-#line 1409 "pir.y"
+  case 203:
+#line 1427 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "num", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 199:
-#line 1411 "pir.y"
+  case 204:
+#line 1429 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "pmc", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 200:
-#line 1413 "pir.y"
+  case 205:
+#line 1431 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "string", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 201:
-#line 1415 "pir.y"
+  case 206:
+#line 1433 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "if", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 202:
-#line 1417 "pir.y"
+  case 207:
+#line 1435 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "unless", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 203:
-#line 1419 "pir.y"
+  case 208:
+#line 1437 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 204:
-#line 1421 "pir.y"
+  case 209:
+#line 1439 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 205:
-#line 1423 "pir.y"
+  case 210:
+#line 1441 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 206:
-#line 1425 "pir.y"
+  case 211:
+#line 1443 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 207:
-#line 1427 "pir.y"
+  case 212:
+#line 1445 "pir.y"
     {
                           if ((yyvsp[(2) - (4)].ival) == COMPUTE_DURING_RUNTIME) {
                              if ((yyvsp[(1) - (4)].ival) == NEED_INVERT_OPNAME) /* "unless" */
@@ -3582,8 +3630,8 @@
                         ;}
     break;
 
-  case 208:
-#line 1458 "pir.y"
+  case 213:
+#line 1476 "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
@@ -3611,8 +3659,8 @@
                         ;}
     break;
 
-  case 209:
-#line 1484 "pir.y"
+  case 214:
+#line 1502 "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));
@@ -3622,8 +3670,8 @@
                         ;}
     break;
 
-  case 210:
-#line 1492 "pir.y"
+  case 215:
+#line 1510 "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));
@@ -3634,8 +3682,8 @@
                         ;}
     break;
 
-  case 211:
-#line 1501 "pir.y"
+  case 216:
+#line 1519 "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));
@@ -3646,71 +3694,71 @@
                         ;}
     break;
 
-  case 212:
-#line 1510 "pir.y"
+  case 217:
+#line 1528 "pir.y"
     { (yyval.ival) = evaluate_i_i((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
-  case 213:
-#line 1512 "pir.y"
+  case 218:
+#line 1530 "pir.y"
     { (yyval.ival) = evaluate_i_n((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
-  case 214:
-#line 1514 "pir.y"
+  case 219:
+#line 1532 "pir.y"
     { (yyval.ival) = evaluate_n_i((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
-  case 215:
-#line 1516 "pir.y"
+  case 220:
+#line 1534 "pir.y"
     { (yyval.ival) = evaluate_n_n((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
-  case 216:
-#line 1518 "pir.y"
+  case 221:
+#line 1536 "pir.y"
     { (yyval.ival) = evaluate_s_s((yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval)); ;}
     break;
 
-  case 217:
-#line 1522 "pir.y"
+  case 222:
+#line 1540 "pir.y"
     {
                           yypirerror(yyscanner, lexer, "cannot compare string to %s",
                                      (yyvsp[(3) - (3)].ival) == INT_TYPE ? "integer" : "number");
                         ;}
     break;
 
-  case 218:
-#line 1527 "pir.y"
+  case 223:
+#line 1545 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare integer to string"); ;}
     break;
 
-  case 219:
-#line 1529 "pir.y"
+  case 224:
+#line 1547 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare number to string"); ;}
     break;
 
-  case 220:
-#line 1533 "pir.y"
+  case 225:
+#line 1551 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
-  case 221:
-#line 1534 "pir.y"
+  case 226:
+#line 1552 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
-  case 222:
-#line 1537 "pir.y"
+  case 227:
+#line 1555 "pir.y"
     { (yyval.ival) = DONT_INVERT_OPNAME; /* no need to invert */ ;}
     break;
 
-  case 223:
-#line 1538 "pir.y"
+  case 228:
+#line 1556 "pir.y"
     { (yyval.ival) = NEED_INVERT_OPNAME; /* yes, invert opname */ ;}
     break;
 
-  case 226:
-#line 1546 "pir.y"
+  case 231:
+#line 1564 "pir.y"
     {
                           set_instrf(lexer, "branch", "%I", (yyvsp[(2) - (3)].sval));
                           set_op_labelflag(lexer, BIT(0)); /* bit 0 means: "1 << 0" */
@@ -3718,38 +3766,38 @@
                         ;}
     break;
 
-  case 227:
-#line 1554 "pir.y"
+  case 232:
+#line 1572 "pir.y"
     { declare_local(lexer, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].symb)); ;}
     break;
 
-  case 228:
-#line 1558 "pir.y"
+  case 233:
+#line 1576 "pir.y"
     { (yyval.symb) = (yyvsp[(1) - (1)].symb); ;}
     break;
 
-  case 229:
-#line 1560 "pir.y"
+  case 234:
+#line 1578 "pir.y"
     { (yyval.symb) = add_local((yyvsp[(1) - (3)].symb), (yyvsp[(3) - (3)].symb)); ;}
     break;
 
-  case 230:
-#line 1564 "pir.y"
+  case 235:
+#line 1582 "pir.y"
     { (yyval.symb) = new_local(lexer, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 231:
-#line 1567 "pir.y"
+  case 236:
+#line 1585 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 232:
-#line 1568 "pir.y"
+  case 237:
+#line 1586 "pir.y"
     { (yyval.ival) = 1; ;}
     break;
 
-  case 233:
-#line 1572 "pir.y"
+  case 238:
+#line 1590 "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)) {
 
@@ -3761,86 +3809,86 @@
                         ;}
     break;
 
-  case 234:
-#line 1587 "pir.y"
+  case 239:
+#line 1605 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
-  case 237:
-#line 1599 "pir.y"
+  case 242:
+#line 1617 "pir.y"
     { /* $4 contains an invocation object */
                               set_invocation_args((yyvsp[(4) - (8)].invo), (yyvsp[(3) - (8)].argm));
                               (yyval.invo) = set_invocation_results((yyvsp[(4) - (8)].invo), (yyvsp[(6) - (8)].targ));
                             ;}
     break;
 
-  case 238:
-#line 1606 "pir.y"
+  case 243:
+#line 1624 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 239:
-#line 1608 "pir.y"
+  case 244:
+#line 1626 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 240:
-#line 1612 "pir.y"
+  case 245:
+#line 1630 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 241:
-#line 1614 "pir.y"
+  case 246:
+#line 1632 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
-  case 242:
-#line 1618 "pir.y"
+  case 247:
+#line 1636 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 243:
-#line 1622 "pir.y"
+  case 248:
+#line 1640 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(2) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 244:
-#line 1624 "pir.y"
+  case 249:
+#line 1642 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_NCI, (yyvsp[(2) - (2)].targ)); ;}
     break;
 
-  case 245:
-#line 1627 "pir.y"
+  case 250:
+#line 1645 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_METHOD, (yyvsp[(2) - (5)].targ), (yyvsp[(5) - (5)].expr)); ;}
     break;
 
-  case 246:
-#line 1631 "pir.y"
+  case 251:
+#line 1649 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 247:
-#line 1633 "pir.y"
+  case 252:
+#line 1651 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (2)].targ); ;}
     break;
 
-  case 248:
-#line 1637 "pir.y"
+  case 253:
+#line 1655 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 249:
-#line 1639 "pir.y"
+  case 254:
+#line 1657 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 250:
-#line 1643 "pir.y"
+  case 255:
+#line 1661 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 251:
-#line 1645 "pir.y"
+  case 256:
+#line 1663 "pir.y"
     {
                              if ((yyvsp[(2) - (2)].targ))
                                  (yyval.targ) = add_target(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].targ));
@@ -3849,33 +3897,33 @@
                            ;}
     break;
 
-  case 252:
-#line 1654 "pir.y"
+  case 257:
+#line 1672 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
-  case 253:
-#line 1656 "pir.y"
+  case 258:
+#line 1674 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 255:
-#line 1664 "pir.y"
+  case 260:
+#line 1682 "pir.y"
     { (yyval.invo) = set_invocation_results((yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
-  case 256:
-#line 1666 "pir.y"
+  case 261:
+#line 1684 "pir.y"
     { (yyval.invo) = set_invocation_results((yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
-  case 257:
-#line 1668 "pir.y"
+  case 262:
+#line 1686 "pir.y"
     {  (yyval.invo) = set_invocation_results((yyvsp[(1) - (1)].invo), NULL); ;}
     break;
 
-  case 260:
-#line 1676 "pir.y"
+  case 265:
+#line 1694 "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)) {
@@ -3895,21 +3943,21 @@
                            ;}
     break;
 
-  case 261:
-#line 1696 "pir.y"
+  case 266:
+#line 1714 "pir.y"
     {
                              (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(1) - (2)].targ), NULL);
                              set_invocation_args((yyval.invo), (yyvsp[(2) - (2)].argm));
                            ;}
     break;
 
-  case 262:
-#line 1703 "pir.y"
+  case 267:
+#line 1721 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 263:
-#line 1705 "pir.y"
+  case 268:
+#line 1723 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -3919,8 +3967,8 @@
                            ;}
     break;
 
-  case 264:
-#line 1715 "pir.y"
+  case 269:
+#line 1733 "pir.y"
     { /* check that this identifier was declared */
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
 
@@ -3939,23 +3987,23 @@
                            ;}
     break;
 
-  case 265:
-#line 1732 "pir.y"
+  case 270:
+#line 1750 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
-  case 266:
-#line 1734 "pir.y"
+  case 271:
+#line 1752 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
-  case 267:
-#line 1736 "pir.y"
+  case 272:
+#line 1754 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, new_const(lexer, STRING_TYPE, (yyvsp[(1) - (1)].sval))); ;}
     break;
 
-  case 268:
-#line 1740 "pir.y"
+  case 273:
+#line 1758 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -3966,89 +4014,89 @@
                            ;}
     break;
 
-  case 269:
-#line 1749 "pir.y"
+  case 274:
+#line 1767 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
-  case 270:
-#line 1754 "pir.y"
+  case 275:
+#line 1772 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
-  case 271:
-#line 1758 "pir.y"
+  case 276:
+#line 1776 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 272:
-#line 1760 "pir.y"
+  case 277:
+#line 1778 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 273:
-#line 1764 "pir.y"
+  case 278:
+#line 1782 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 274:
-#line 1766 "pir.y"
+  case 279:
+#line 1784 "pir.y"
     { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 275:
-#line 1770 "pir.y"
+  case 280:
+#line 1788 "pir.y"
     { (yyval.targ) = set_param_flag(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 276:
-#line 1774 "pir.y"
+  case 281:
+#line 1792 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 277:
-#line 1776 "pir.y"
+  case 282:
+#line 1794 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 278:
-#line 1780 "pir.y"
+  case 283:
+#line 1798 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPTIONAL; ;}
     break;
 
-  case 279:
-#line 1782 "pir.y"
+  case 284:
+#line 1800 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPT_FLAG; ;}
     break;
 
-  case 280:
-#line 1784 "pir.y"
+  case 285:
+#line 1802 "pir.y"
     { (yyval.ival) = TARGET_FLAG_SLURPY; ;}
     break;
 
-  case 281:
-#line 1786 "pir.y"
+  case 286:
+#line 1804 "pir.y"
     {
                              (yyval.ival) = TARGET_FLAG_NAMED;
                              set_param_alias(lexer, (yyvsp[(2) - (2)].sval));
                            ;}
     break;
 
-  case 282:
-#line 1796 "pir.y"
+  case 287:
+#line 1814 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
-  case 287:
-#line 1806 "pir.y"
+  case 292:
+#line 1824 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args((yyval.invo), (yyvsp[(2) - (3)].argm));
                             ;}
     break;
 
-  case 288:
-#line 1811 "pir.y"
+  case 293:
+#line 1829 "pir.y"
     { /* was the invocation a method call? then it becomes a method tail
                                * call, otherwise it's just a normal (sub) tail call.
                                */
@@ -4059,275 +4107,275 @@
                             ;}
     break;
 
-  case 289:
-#line 1822 "pir.y"
+  case 294:
+#line 1840 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args((yyval.invo), (yyvsp[(2) - (3)].argm));
                             ;}
     break;
 
-  case 290:
-#line 1829 "pir.y"
+  case 295:
+#line 1847 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 291:
-#line 1833 "pir.y"
+  case 296:
+#line 1851 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 292:
-#line 1835 "pir.y"
+  case 297:
+#line 1853 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 293:
-#line 1839 "pir.y"
+  case 298:
+#line 1857 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 294:
-#line 1841 "pir.y"
+  case 299:
+#line 1859 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (3)].argm), (yyvsp[(3) - (3)].argm)); ;}
     break;
 
-  case 297:
-#line 1849 "pir.y"
+  case 302:
+#line 1867 "pir.y"
     { (yyval.argm) = set_arg_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
-  case 298:
-#line 1853 "pir.y"
+  case 303:
+#line 1871 "pir.y"
     { (yyval.argm) = set_arg_flag((yyval.argm), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 299:
-#line 1857 "pir.y"
+  case 304:
+#line 1875 "pir.y"
     { (yyval.argm) = set_curarg(lexer, new_argument(lexer, (yyvsp[(1) - (1)].expr)));  ;}
     break;
 
-  case 300:
-#line 1863 "pir.y"
+  case 305:
+#line 1881 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args((yyval.invo), (yyvsp[(3) - (5)].argm));
                             ;}
     break;
 
-  case 301:
-#line 1872 "pir.y"
+  case 306:
+#line 1890 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args((yyval.invo), (yyvsp[(3) - (5)].argm));
                             ;}
     break;
 
-  case 302:
-#line 1879 "pir.y"
+  case 307:
+#line 1897 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 303:
-#line 1881 "pir.y"
+  case 308:
+#line 1899 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 304:
-#line 1886 "pir.y"
+  case 309:
+#line 1904 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 305:
-#line 1888 "pir.y"
+  case 310:
+#line 1906 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
-  case 306:
-#line 1893 "pir.y"
+  case 311:
+#line 1911 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 307:
-#line 1897 "pir.y"
+  case 312:
+#line 1915 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 308:
-#line 1899 "pir.y"
+  case 313:
+#line 1917 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 309:
-#line 1903 "pir.y"
+  case 314:
+#line 1921 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 310:
-#line 1905 "pir.y"
+  case 315:
+#line 1923 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
-  case 311:
-#line 1909 "pir.y"
+  case 316:
+#line 1927 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 312:
-#line 1914 "pir.y"
+  case 317:
+#line 1932 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 313:
-#line 1916 "pir.y"
+  case 318:
+#line 1934 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 314:
-#line 1920 "pir.y"
+  case 319:
+#line 1938 "pir.y"
     { (yyval.ival) = ARG_FLAG_FLAT; ;}
     break;
 
-  case 315:
-#line 1922 "pir.y"
+  case 320:
+#line 1940 "pir.y"
     {
                                (yyval.ival) = ARG_FLAG_NAMED;
                                set_arg_alias(lexer, (yyvsp[(2) - (2)].sval));
                              ;}
     break;
 
-  case 316:
-#line 1929 "pir.y"
+  case 321:
+#line 1947 "pir.y"
     { (yyval.sval) = NULL; ;}
     break;
 
-  case 317:
-#line 1931 "pir.y"
+  case 322:
+#line 1949 "pir.y"
     { (yyval.sval) = (yyvsp[(1) - (1)].sval); ;}
     break;
 
-  case 318:
-#line 1935 "pir.y"
+  case 323:
+#line 1953 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
-  case 322:
-#line 1946 "pir.y"
+  case 327:
+#line 1964 "pir.y"
     { store_global_constant(lexer, (yyvsp[(2) - (2)].cval)); ;}
     break;
 
-  case 323:
-#line 1950 "pir.y"
+  case 328:
+#line 1968 "pir.y"
     { /* XXX is .globalconst to be kept? */ ;}
     break;
 
-  case 324:
-#line 1954 "pir.y"
+  case 329:
+#line 1972 "pir.y"
     { (yyval.cval) = new_named_const(lexer, INT_TYPE, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ival)); ;}
     break;
 
-  case 325:
-#line 1956 "pir.y"
+  case 330:
+#line 1974 "pir.y"
     { (yyval.cval) = new_named_const(lexer, NUM_TYPE, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].dval)); ;}
     break;
 
-  case 326:
-#line 1958 "pir.y"
+  case 331:
+#line 1976 "pir.y"
     { (yyval.cval) = new_named_const(lexer, STRING_TYPE, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 327:
-#line 1960 "pir.y"
+  case 332:
+#line 1978 "pir.y"
     { (yyval.cval) = new_pmc_const((yyvsp[(1) - (4)].sval), (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
     break;
 
-  case 328:
-#line 1967 "pir.y"
+  case 333:
+#line 1985 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
-  case 329:
-#line 1968 "pir.y"
+  case 334:
+#line 1986 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
-  case 330:
-#line 1972 "pir.y"
+  case 335:
+#line 1990 "pir.y"
     { (yyval.cval) = new_const(lexer, STRING_TYPE, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 331:
-#line 1973 "pir.y"
+  case 336:
+#line 1991 "pir.y"
     { (yyval.cval) = new_const(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
-  case 332:
-#line 1974 "pir.y"
+  case 337:
+#line 1992 "pir.y"
     { (yyval.cval) = new_const(lexer, NUM_TYPE, (yyvsp[(1) - (1)].dval)); ;}
     break;
 
-  case 333:
-#line 1975 "pir.y"
+  case 338:
+#line 1993 "pir.y"
     { (yyval.cval) = (yyvsp[(1) - (1)].cval); ;}
     break;
 
-  case 334:
-#line 1978 "pir.y"
+  case 339:
+#line 1996 "pir.y"
     { (yyval.ival) = OP_NE; ;}
     break;
 
-  case 335:
-#line 1979 "pir.y"
+  case 340:
+#line 1997 "pir.y"
     { (yyval.ival) = OP_EQ; ;}
     break;
 
-  case 336:
-#line 1980 "pir.y"
+  case 341:
+#line 1998 "pir.y"
     { (yyval.ival) = OP_LT; ;}
     break;
 
-  case 337:
-#line 1981 "pir.y"
+  case 342:
+#line 1999 "pir.y"
     { (yyval.ival) = OP_LE; ;}
     break;
 
-  case 338:
-#line 1982 "pir.y"
+  case 343:
+#line 2000 "pir.y"
     { (yyval.ival) = OP_GE; ;}
     break;
 
-  case 339:
-#line 1983 "pir.y"
+  case 344:
+#line 2001 "pir.y"
     { (yyval.ival) = OP_GT; ;}
     break;
 
-  case 340:
-#line 1986 "pir.y"
+  case 345:
+#line 2004 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
-  case 341:
-#line 1987 "pir.y"
+  case 346:
+#line 2005 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
-  case 342:
-#line 1988 "pir.y"
+  case 347:
+#line 2006 "pir.y"
     { (yyval.ival) = PMC_TYPE; ;}
     break;
 
-  case 343:
-#line 1989 "pir.y"
+  case 348:
+#line 2007 "pir.y"
     { (yyval.ival) = STRING_TYPE; ;}
     break;
 
-  case 344:
-#line 1997 "pir.y"
+  case 349:
+#line 2015 "pir.y"
     { set_curtarget(lexer, (yyvsp[(1) - (1)].targ));  ;}
     break;
 
-  case 346:
-#line 2001 "pir.y"
+  case 351:
+#line 2019 "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) {
@@ -4339,278 +4387,278 @@
                          ;}
     break;
 
-  case 347:
-#line 2012 "pir.y"
+  case 352:
+#line 2030 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
-  case 348:
-#line 2013 "pir.y"
+  case 353:
+#line 2031 "pir.y"
     { (yyval.targ) = new_reg(lexer, NUM_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
-  case 349:
-#line 2014 "pir.y"
+  case 354:
+#line 2032 "pir.y"
     { (yyval.targ) = new_reg(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
-  case 350:
-#line 2015 "pir.y"
+  case 355:
+#line 2033 "pir.y"
     { (yyval.targ) = new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
-  case 353:
-#line 2023 "pir.y"
+  case 358:
+#line 2041 "pir.y"
     { (yyval.sval) = "if"; ;}
     break;
 
-  case 354:
-#line 2024 "pir.y"
+  case 359:
+#line 2042 "pir.y"
     { (yyval.sval) = "unless"; ;}
     break;
 
-  case 355:
-#line 2025 "pir.y"
+  case 360:
+#line 2043 "pir.y"
     { (yyval.sval) = "goto"; ;}
     break;
 
-  case 356:
-#line 2026 "pir.y"
+  case 361:
+#line 2044 "pir.y"
     { (yyval.sval) = "int"; ;}
     break;
 
-  case 357:
-#line 2027 "pir.y"
+  case 362:
+#line 2045 "pir.y"
     { (yyval.sval) = "num"; ;}
     break;
 
-  case 358:
-#line 2028 "pir.y"
+  case 363:
+#line 2046 "pir.y"
     { (yyval.sval) = "string"; ;}
     break;
 
-  case 359:
-#line 2029 "pir.y"
+  case 364:
+#line 2047 "pir.y"
     { (yyval.sval) = "pmc"; ;}
     break;
 
-  case 360:
-#line 2030 "pir.y"
+  case 365:
+#line 2048 "pir.y"
     { (yyval.sval) = "null"; ;}
     break;
 
-  case 361:
-#line 2033 "pir.y"
+  case 366:
+#line 2051 "pir.y"
     { (yyval.sval) = "neg"; ;}
     break;
 
-  case 362:
-#line 2034 "pir.y"
+  case 367:
+#line 2052 "pir.y"
     { (yyval.sval) = "not"; ;}
     break;
 
-  case 363:
-#line 2035 "pir.y"
+  case 368:
+#line 2053 "pir.y"
     { (yyval.sval) = "bnot"; ;}
     break;
 
-  case 364:
-#line 2038 "pir.y"
+  case 369:
+#line 2056 "pir.y"
     { (yyval.ival) = OP_ADD; ;}
     break;
 
-  case 365:
-#line 2039 "pir.y"
+  case 370:
+#line 2057 "pir.y"
     { (yyval.ival) = OP_SUB; ;}
     break;
 
-  case 366:
-#line 2040 "pir.y"
+  case 371:
+#line 2058 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
-  case 367:
-#line 2041 "pir.y"
+  case 372:
+#line 2059 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
-  case 368:
-#line 2042 "pir.y"
+  case 373:
+#line 2060 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
-  case 369:
-#line 2043 "pir.y"
+  case 374:
+#line 2061 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
-  case 370:
-#line 2044 "pir.y"
+  case 375:
+#line 2062 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
-  case 371:
-#line 2045 "pir.y"
+  case 376:
+#line 2063 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
-  case 372:
-#line 2046 "pir.y"
+  case 377:
+#line 2064 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
-  case 373:
-#line 2047 "pir.y"
+  case 378:
+#line 2065 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
-  case 374:
-#line 2048 "pir.y"
+  case 379:
+#line 2066 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
-  case 375:
-#line 2049 "pir.y"
+  case 380:
+#line 2067 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
-  case 376:
-#line 2050 "pir.y"
+  case 381:
+#line 2068 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
-  case 377:
-#line 2051 "pir.y"
+  case 382:
+#line 2069 "pir.y"
     { (yyval.ival) = OP_OR; ;}
     break;
 
-  case 378:
-#line 2052 "pir.y"
+  case 383:
+#line 2070 "pir.y"
     { (yyval.ival) = OP_AND; ;}
     break;
 
-  case 379:
-#line 2053 "pir.y"
+  case 384:
+#line 2071 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
-  case 380:
-#line 2054 "pir.y"
+  case 385:
+#line 2072 "pir.y"
     { (yyval.ival) = OP_XOR; ;}
     break;
 
-  case 381:
-#line 2055 "pir.y"
+  case 386:
+#line 2073 "pir.y"
     { (yyval.ival) = OP_ISEQ; ;}
     break;
 
-  case 382:
-#line 2056 "pir.y"
+  case 387:
+#line 2074 "pir.y"
     { (yyval.ival) = OP_ISLE; ;}
     break;
 
-  case 383:
-#line 2057 "pir.y"
+  case 388:
+#line 2075 "pir.y"
     { (yyval.ival) = OP_ISLT; ;}
     break;
 
-  case 384:
-#line 2058 "pir.y"
+  case 389:
+#line 2076 "pir.y"
     { (yyval.ival) = OP_ISGE; ;}
     break;
 
-  case 385:
-#line 2059 "pir.y"
+  case 390:
+#line 2077 "pir.y"
     { (yyval.ival) = OP_ISGT; ;}
     break;
 
-  case 386:
-#line 2060 "pir.y"
+  case 391:
+#line 2078 "pir.y"
     { (yyval.ival) = OP_ISNE; ;}
     break;
 
-  case 387:
-#line 2066 "pir.y"
+  case 392:
+#line 2084 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
-  case 388:
-#line 2067 "pir.y"
+  case 393:
+#line 2085 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
-  case 389:
-#line 2068 "pir.y"
+  case 394:
+#line 2086 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
-  case 390:
-#line 2069 "pir.y"
+  case 395:
+#line 2087 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
-  case 391:
-#line 2070 "pir.y"
+  case 396:
+#line 2088 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
-  case 392:
-#line 2071 "pir.y"
+  case 397:
+#line 2089 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
-  case 393:
-#line 2072 "pir.y"
+  case 398:
+#line 2090 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
-  case 394:
-#line 2073 "pir.y"
+  case 399:
+#line 2091 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
-  case 395:
-#line 2074 "pir.y"
+  case 400:
+#line 2092 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
-  case 396:
-#line 2075 "pir.y"
+  case 401:
+#line 2093 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
-  case 397:
-#line 2076 "pir.y"
+  case 402:
+#line 2094 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
-  case 398:
-#line 2077 "pir.y"
+  case 403:
+#line 2095 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
-  case 400:
-#line 2098 "pir.y"
+  case 405:
+#line 2116 "pir.y"
     { new_subr(lexer, "@start"); ;}
     break;
 
-  case 409:
-#line 2114 "pir.y"
+  case 414:
+#line 2132 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
-  case 414:
-#line 2124 "pir.y"
+  case 419:
+#line 2142 "pir.y"
     { set_sub_name(lexer, (yyvsp[(3) - (3)].sval)); ;}
     break;
 
-  case 415:
-#line 2128 "pir.y"
+  case 420:
+#line 2146 "pir.y"
     { new_subr(lexer, NULL); ;}
     break;
 
-  case 416:
-#line 2133 "pir.y"
+  case 421:
+#line 2151 "pir.y"
     {
                                   if (is_parrot_op(lexer, (yyvsp[(1) - (3)].sval)))
                                       get_opinfo(yyscanner);
@@ -4622,7 +4670,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 4626 "pirparser.c"
+#line 4674 "pirparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -4836,7 +4884,7 @@
 }
 
 
-#line 2144 "pir.y"
+#line 2162 "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