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

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

From:
kjs
Date:
January 5, 2009 03:02
Subject:
[svn:parrot] r34978 - trunk/compilers/pirc/src
Message ID:
20090105110011.441A9CB9F9@x12.develooper.com
Author: kjs
Date: Mon Jan  5 03:00:08 2009
New Revision: 34978

Modified:
   trunk/compilers/pirc/src/pir.l
   trunk/compilers/pirc/src/pir.y
   trunk/compilers/pirc/src/pirlexer.c
   trunk/compilers/pirc/src/pirlexer.h
   trunk/compilers/pirc/src/pirparser.c

Log:
[pirc] better error message for unrecognized sub pragmas.
+ add an error alternative to parser, so it can try to continue after the first error.

Modified: trunk/compilers/pirc/src/pir.l
==============================================================================
--- trunk/compilers/pirc/src/pir.l	(original)
+++ trunk/compilers/pirc/src/pir.l	Mon Jan  5 03:00:08 2009
@@ -380,6 +380,10 @@
 ":flat"           { return TK_FLAG_FLAT; }
 ":invocant"       { return TK_FLAG_INVOCANT; }
 
+":"{IDENT}        { yypirerror(yyscanner, yyget_extra(yyscanner),
+                               "unrecognized sub flag: '%s'", yytext);
+                  }
+
 
 {Q_STRING}        { /* copy the string, remove the quotes. */
                     yylval->sval = dupstrn(yyget_extra(yyscanner), yytext + 1, yyleng - 2);

Modified: trunk/compilers/pirc/src/pir.y
==============================================================================
--- trunk/compilers/pirc/src/pir.y	(original)
+++ trunk/compilers/pirc/src/pir.y	Mon Jan  5 03:00:08 2009
@@ -587,6 +587,7 @@
                   | location_directive
                   | annotation
                   | macro_definition
+                  | error_stat
                   ;
 
 

Modified: trunk/compilers/pirc/src/pirlexer.c
==============================================================================
--- trunk/compilers/pirc/src/pirlexer.c	(original)
+++ trunk/compilers/pirc/src/pirlexer.c	Mon Jan  5 03:00:08 2009
@@ -5,7 +5,7 @@
  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
  *
  * This file is generated automatically by the Parrot build process
- * from the file compilers/pirc/src/pir.l.
+ * from the file compilers/pirc/new/pir.l.
  *
  * Any changes made here will be lost!
  *
@@ -482,8 +482,8 @@
     yyg->yy_c_buf_p = yy_cp;
 
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 206
-#define YY_END_OF_BUFFER 207
+#define YY_NUM_RULES 207
+#define YY_END_OF_BUFFER 208
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -491,98 +491,98 @@
     flex_int32_t yy_verify;
     flex_int32_t yy_nxt;
     };
-static yyconst flex_int16_t yy_accept[816] =
+static yyconst flex_int16_t yy_accept[818] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  207,  126,    2,    4,    2,   25,
-      126,  126,  126,   22,  126,  126,   28,   29,   23,   21,
-       30,   27,  124,   24,  120,  120,  126,   35,   15,   34,
-       16,  118,  118,   31,   32,  118,  118,  118,  118,  118,
-      118,  126,   26,  206,  133,  138,  133,  135,  136,  137,
-      134,  172,  170,  172,  172,  164,  162,  163,  162,  164,
-      158,  158,  158,  158,  158,  167,  206,  206,  206,  151,
-      143,  150,  143,  151,  151,  151,  145,  146,  151,  144,
-
-      151,  147,  147,  141,  148,  149,  131,  130,  131,  131,
-      131,  131,  131,  129,  129,  128,  126,  124,  118,  118,
-      118,  118,  118,  118,  118,  118,  206,  206,  206,  206,
-      147,  147,    1,  205,  203,  204,  203,  205,  205,  205,
-      205,  173,  205,  198,  198,  205,  196,  196,  196,  196,
-      196,  174,  175,    0,    4,    4,   12,    0,  109,    0,
+        0,    0,    0,    0,  208,  127,    2,    4,    2,   25,
+      127,  127,  127,   22,  127,  127,   28,   29,   23,   21,
+       30,   27,  125,   24,  121,  121,  127,   35,   15,   34,
+       16,  119,  119,   31,   32,  119,  119,  119,  119,  119,
+      119,  127,   26,  207,  134,  139,  134,  136,  137,  138,
+      135,  173,  171,  173,  173,  165,  163,  164,  163,  165,
+      159,  159,  159,  159,  159,  168,  207,  207,  207,  152,
+      144,  151,  144,  152,  152,  152,  146,  147,  152,  145,
+
+      152,  148,  148,  142,  149,  150,  132,  131,  132,  132,
+      132,  132,  132,  130,  130,  129,  127,  125,  119,  119,
+      119,  119,  119,  119,  119,  119,  207,  207,  207,  207,
+      148,  148,    1,  206,  204,  205,  204,  206,  206,  206,
+      206,  174,  206,  199,  199,  206,  197,  197,  197,  197,
+      197,  175,  176,    0,    4,    4,   12,    0,  110,    0,
         0,    3,    0,    0,    0,    0,    0,   40,   18,   43,
-        0,    0,   39,    0,  120,   36,   37,  119,   46,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,   17,   38,  119,    0,
+        0,    0,   39,    0,  121,   36,   37,  120,   46,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,   17,   38,  120,    0,
+
+        0,    0,    0,  109,  109,  109,  109,  109,  109,  109,
+      109,  109,  109,  109,  109,    9,   13,   11,   10,   14,
+        8,    0,  119,  117,  118,  119,   47,  119,  119,  119,
+      119,  119,   42,   19,   45,   20,  139,  139,  135,  171,
+      171,    0,    0,    0,  164,  164,  160,  159,  159,  159,
+      159,  159,  168,  168,    0,    0,  167,  151,  151,    0,
+      148,    0,    0,    0,    0,  148,  148,  141,  148,    0,
+        0,    0,    0,  142,    0,  130,    0,    0,    0,    0,
+      130,  130,  130,    0,    0,    0,    0,  129,    0,    0,
+        0,    0,    0,    0,  119,  126,  118,  119,   47,  119,
+
+      119,  119,  119,  119,  205,  205,    0,  203,    0,    0,
+        0,    0,  199,  198,  190,  190,  190,  190,  190,  190,
+      198,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      197,  191,  195,  194,  193,  196,   33,    3,  116,  115,
+      113,  114,   41,    0,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,   44,  120,
+      123,    0,  120,  124,  122,  109,  109,  109,  109,  109,
+      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
+      109,  109,  109,  109,    7,    6,    0,    0,    0,  119,
+
+       51,  119,   52,   53,  119,  119,    0,    0,    0,  160,
+      155,  157,  156,  159,  143,    0,  141,  148,  148,    0,
+      148,  148,  148,  130,    0,  130,  130,    0,  130,  130,
+      130,    0,  162,  116,  115,  113,  114,  161,  169,  119,
+       51,  119,   52,   53,  119,  119,  192,    0,  190,  190,
+      190,  190,  190,  190,  190,  198,  201,    0,  198,  202,
+      200,    0,    0,    0,    0,    0,    0,    0,  120,   62,
+      140,  140,  140,  140,   58,  140,  140,  140,  140,   65,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+       82,  140,  140,  109,  109,  109,  109,  109,  109,   95,
+
+      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
+      109,  109,  109,    5,    0,  111,    0,    0,    0,   48,
+       50,  119,  119,    0,    0,    0,  159,    0,  148,    0,
+      130,  170,  161,   48,   50,  119,  119,    0,  198,  190,
+      184,  190,  190,  190,  190,    0,    0,    0,    0,    0,
+        0,  140,  140,  140,   76,  140,  140,   87,   59,  140,
+      140,  140,   66,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,   88,  107,  109,   89,  109,  109,
+       90,   93,  109,  109,  109,  109,  109,  109,  109,  109,
+      109,  109,  109,  109,    0,  119,  119,  172,    0,    0,
+
+      159,  119,  119,  189,  188,  190,  190,  190,  180,    0,
+      179,  178,  177,    0,  140,  140,  140,   57,  140,  140,
+      140,  140,  140,  140,  140,   68,  133,  140,  140,  140,
+       72,  140,  140,  140,  140,  140,   83,  109,  109,  109,
+      109,   98,  106,  109,  109,  109,   96,  109,  109,   99,
+      109,  109,    0,  112,    0,   54,   49,  153,    0,  158,
+       54,   49,  186,  190,  190,    0,    0,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,   81,  140,  140,  140,  140,  109,  109,  109,   94,
+      109,  109,  109,  109,  105,  109,   97,    0,  190,  190,
+
+      190,    0,    0,   63,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,   67,  140,  140,  140,  140,  140,
+       56,  140,  140,  140,  109,  109,  109,  101,  109,  109,
+      109,  109,    0,  190,  190,  183,    0,    0,   55,  140,
+      140,  140,   77,  140,  140,  140,  140,   64,  140,  140,
+      140,  140,  140,   71,  140,  140,   86,  109,  109,  108,
+      104,  103,   91,  109,    0,    0,  190,  190,    0,  181,
+      140,  140,  140,  140,   79,  140,  140,  140,  140,  140,
+       69,   70,  140,   85,   92,  109,  109,    0,    0,  190,
+      185,  182,   73,  140,  140,   78,   80,  140,  140,  140,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    9,   13,   11,   10,   14,    8,
-        0,  118,  116,  117,  118,   47,  118,  118,  118,  118,
-      118,   42,   19,   45,   20,  138,  138,  134,  170,  170,
-        0,    0,    0,  163,  163,  159,  158,  158,  158,  158,
-      158,  167,  167,    0,    0,  166,  150,  150,    0,  147,
-        0,    0,    0,    0,  147,  147,  140,  147,    0,    0,
-        0,    0,  141,    0,  129,    0,    0,    0,    0,  129,
-      129,  129,    0,    0,    0,    0,  128,    0,    0,    0,
-        0,    0,    0,  118,  125,  117,  118,   47,  118,  118,
-
-      118,  118,  118,  204,  204,    0,  202,    0,    0,    0,
-        0,  198,  197,  189,  189,  189,  189,  189,  189,  197,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  196,
-      190,  194,  193,  192,  195,   33,    3,  115,  114,  112,
-      113,   41,    0,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,   44,  119,  122,
-        0,  119,  123,  121,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    7,    6,    0,    0,    0,  118,   51,  118,
-
-       52,   53,  118,  118,    0,    0,    0,  159,  154,  156,
-      155,  158,  142,    0,  140,  147,  147,    0,  147,  147,
-      147,  129,    0,  129,  129,    0,  129,  129,  129,    0,
-      161,  115,  114,  112,  113,  160,  168,  118,   51,  118,
-       52,   53,  118,  118,  191,    0,  189,  189,  189,  189,
-      189,  189,  189,  197,  200,    0,  197,  201,  199,    0,
-        0,    0,    0,    0,    0,    0,  119,   62,  139,  139,
-      139,  139,   58,  139,  139,  139,  139,   65,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,   82,  139,
-      139,    0,    0,    0,    0,    0,    0,   95,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    5,    0,  110,    0,    0,    0,   48,   50,  118,
-      118,    0,    0,    0,  158,    0,  147,    0,  129,  169,
-      160,   48,   50,  118,  118,    0,  197,  189,  183,  189,
-      189,  189,  189,    0,    0,    0,    0,    0,    0,  139,
-      139,  139,   76,  139,  139,   87,   59,  139,  139,  139,
-       66,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,   88,  107,    0,   89,    0,    0,   90,   93,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  118,  118,  171,    0,    0,  158,  118,
-
-      118,  188,  187,  189,  189,  189,  179,    0,  178,  177,
-      176,    0,  139,  139,  139,   57,  139,  139,  139,  139,
-      139,  139,  139,   68,  132,  139,  139,  139,   72,  139,
-      139,  139,  139,  139,   83,    0,    0,    0,    0,   98,
-      106,    0,    0,    0,   96,    0,    0,   99,    0,    0,
-        0,  111,    0,   54,   49,  152,    0,  157,   54,   49,
-      185,  189,  189,    0,    0,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,   81,
-      139,  139,  139,  139,    0,    0,    0,   94,    0,    0,
-        0,    0,  105,    0,   97,    0,  189,  189,  189,    0,
-
-        0,   63,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,   67,  139,  139,  139,  139,  139,   56,  139,
-      139,  139,    0,    0,    0,  101,    0,    0,    0,    0,
-        0,  189,  189,  182,    0,    0,   55,  139,  139,  139,
-       77,  139,  139,  139,  139,   64,  139,  139,  139,  139,
-      139,   71,  139,  139,   86,    0,    0,  108,  104,  103,
-       91,    0,    0,    0,  189,  189,    0,  180,  139,  139,
-      139,  139,   79,  139,  139,  139,  139,  139,   69,   70,
-      139,   85,   92,    0,    0,    0,    0,  189,  184,  181,
-       73,  139,  139,   78,   80,  139,  139,  139,  139,   84,
-
-      100,  102,    0,    0,  189,  139,   75,   60,   61,  127,
-      165,  153,  186,   74,    0
+      140,   84,  100,  102,    0,    0,  190,  140,   75,   60,
+       61,  128,  166,  154,  187,   74,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -629,207 +629,207 @@
         1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[872] =
+static yyconst flex_int16_t yy_base[877] =
     {   0,
         0,    0,   72,    0,  142,  143,  162,    0,  234,    0,
       306,    0,  378,    0,    0,    0,  450,    0,  516,  529,
-        0,    0,  553,    0, 2273, 2274, 2253,  147,  523, 2243,
-      619,  148,  118, 2242,  516, 2257, 2274, 2274,  515,  608,
-     2274,  616,  643,  505,  693,  635,  714, 2274,  606,  613,
-      617,  506,  706, 2274, 2274,  695,  724,  718,  630,  720,
-      728,  600,  690, 2274, 2274,  647, 2265, 2274, 2274, 2274,
-        0, 2274,  745, 2264,  683, 2274, 2274,  753, 2263,    0,
-        0, 2207, 2199, 2206, 2198,  762, 2258,    0, 2235, 2274,
-     2274,  785, 2256,  644,  753, 2246, 2274, 2274,  776, 2274,
-
-      780,  786,  793,    0, 2274, 2274, 2274, 2274,  715,  791,
-     2245,  817,  799,  835,  827,    0,  825, 2247,  817,  866,
-      846,  855,  874,  885,  891,  893,  789, 2243,  903,  907,
-        0,  913, 2274, 2274, 2274,  867, 2251,  799,  857, 2241,
-      926, 2274,  935,  977,  946,  906, 2227,  950,  959,  981,
-      990, 2274, 2274,  877,  938,  983, 2274,  868, 2274,    0,
-      152,  915,  657,  999, 1008, 1016, 1024, 2274, 2274, 2274,
-     2239, 2222, 2274, 1028, 1034, 2274, 2274, 1038, 2274,    0,
-     2212, 2190, 2196,  614, 2188, 2190,  712, 2186, 1013,  596,
-      672, 2196, 2191,  672, 2194, 2185, 2211, 2274, 1053,  879,
-
-     1072,  955,    0, 2180, 2181,  932,  855, 1018,  606,  873,
-     2177,  952, 2177, 2170, 2274, 2274, 2274, 2274, 2274,  998,
-     2208,  760, 2225, 1084, 1016,  837, 1017, 1066, 1048, 1074,
-     1045, 2274, 2274, 2274, 2274, 1108, 1112,    0, 1116, 1122,
-     2173, 2171, 2182, 1126, 1130,    0,    0, 2164, 2170, 2177,
-     2163, 1135, 1139, 2199, 2198, 2274, 1143, 1147, 1072, 2274,
-        0, 1132, 2210, 1136, 1142, 1146,    0, 1150, 1155, 1164,
-     1168,    0,    0, 1140, 2274,    0, 1181, 2209, 1185, 1191,
-     1195, 1199, 1173, 1213, 1177,    0,    0, 2190, 1217, 1230,
-     1234, 1244,    0, 1245, 2194, 1255, 1263, 1264, 1265, 1266,
-
-     1279, 1280, 1281, 1298, 1310, 1189, 2274,    0, 1295, 2206,
-     1309, 1317, 1322,    0, 2162, 1027, 2169, 2168, 2165, 1330,
-     1204, 1343, 1222,    0, 2155, 1191, 2153, 2164, 2151, 2184,
-     2274, 1353, 1361, 1366, 1371, 2274, 1257, 1348, 1376, 1380,
-     1384, 2274, 1393,    0, 2171, 2149, 2153, 2149, 2146, 2153,
-     2146, 2137, 2141, 2133, 2131, 2139,  764, 2147, 2131, 2137,
-     2138, 2130, 2127, 2126, 2141, 2133, 2136, 2274, 1397, 1250,
-     1401, 1405, 1303,    0, 2127, 2138, 2127, 1294, 2116, 2135,
-     2126, 2116, 2123, 2121, 2126, 2112, 2111, 2111, 2108, 2124,
-     2116, 2123, 2274, 2141, 2161, 1314, 2142, 1289, 1413, 1414,
-
-     1415, 1416, 1417, 1418, 2116, 2116, 2115,    0,    0,    0,
-        0, 2108, 1423, 1433,    0, 1438, 1265, 1442, 1452, 1456,
-        0, 1459, 1469, 1473, 1313, 1477, 1481, 1486,    0, 2132,
-     2136, 1489, 1493, 1504, 1508,    0, 2274, 1515, 1517, 1519,
-     1518, 1521, 1532, 1534, 1532, 1545,    0, 2104, 2092, 2100,
-     2108, 2099, 2106, 1549, 1358, 1555, 1567, 1499,    0, 2095,
-     2096, 2097, 2104, 2095, 2086, 1571, 1575, 2102, 2088, 2091,
-     2089, 2081,  735, 2092, 2096, 2093, 2081,    0, 2088, 2088,
-     2090, 2074, 2081, 2083, 2087, 2085, 2066, 2084,    0, 2073,
-     2072, 2069, 2062, 2074, 2060, 2059, 2063, 2274, 2071, 2062,
-
-     2065, 2054, 2066, 2058,  978, 2064, 2050, 2051, 2057, 2050,
-     2062, 2274, 1406, 2274,    0, 2084, 2101, 1540, 1583, 1584,
-     1585, 2050, 2059, 2043, 2046, 1583, 1590, 1594, 1598, 2274,
-        0, 1605, 1606, 1607, 1608, 1622, 1628, 2052,    0, 2051,
-     2039, 2049, 2053, 2040, 2046, 2032, 2045, 2036, 2029, 2035,
-     2027, 2032,    0, 2025, 1579,    0,    0, 2026, 2040, 2037,
-        0, 2029, 2028, 2024, 2036, 2018, 2031, 2022, 2016, 1390,
-     2028, 2026, 2274, 2274, 2025, 2274, 2027, 2024, 2274, 2274,
-     2013, 2016, 2020, 2005, 2016, 2008, 2004, 2016, 2004, 2013,
-     1997, 2005, 1620, 1635, 1636, 2274, 2004, 2000, 2005, 1637,
-
-     1638,    0,    0, 1991, 1983, 1982, 2274, 1991, 2274, 2274,
-     2274, 1981, 1979, 1975, 1975,    0, 1970, 1965, 1952, 1947,
-     1929, 1934, 1925,    0, 1931, 1927, 1907, 1911,    0, 1896,
-     1891, 1899, 1894, 1898,    0, 1889, 1882, 1888, 1884, 2274,
-     2274, 1868, 1873, 1867, 2274, 1865, 1852, 2274, 1868, 1867,
-     1622, 2274,    0, 1651, 1652, 2274, 1871,    0, 1654, 1655,
-     1867, 1847, 1837, 1846, 1838, 1836, 1823, 1625, 1813, 1801,
-     1809, 1796, 1801, 1783, 1781, 1626, 1781, 1772, 1754,    0,
-     1753, 1741, 1750, 1744, 1744, 1733, 1720, 2274, 1703, 1723,
-     1717, 1706, 2274, 1713, 2274, 1692, 1681, 1653, 1650, 1650,
-
-     1639,    0, 1644, 1647, 1641, 1636, 1633, 1621, 1627, 1616,
-     1619, 1595,    0, 1599, 1053, 1601, 1591, 1583,    0, 1569,
-     1530, 1528, 1519, 1530, 1516, 2274, 1507, 1485, 1458, 1426,
-     1092, 1427, 1435,    0, 1404, 1407,    0, 1397, 1348, 1359,
-        0, 1300, 1306, 1291, 1262,    0, 1250, 1254, 1243, 1213,
-     1179,    0, 1165, 1161,    0, 1141, 1122, 2274, 2274, 2274,
-     2274, 1127, 1114, 1094, 1076, 1079, 1075, 2274, 1064, 1038,
-     1042, 1029,    0,  990,  980,  955,  956,  947,    0,    0,
-      902,    0, 2274,  902,  899,  893,  861,  789,    0, 2274,
-        0,  768,  774,    0,  712,  693,  687,  677,  616,    0,
-
-     2274, 2274,  493,  490,  465,  102,    0,    0,    0,    0,
-     2274, 2274,    0,    0, 2274, 1701, 1710, 1719, 1728, 1737,
-     1746, 1752, 1757, 1759, 1764, 1766, 1771, 1780, 1789, 1794,
-     1799, 1808, 1817, 1822, 1824, 1830, 1839, 1848, 1853, 1858,
-     1867, 1876, 1885, 1890, 1895, 1900, 1906, 1913, 1918, 1923,
-     1928, 1933, 1938, 1943, 1947, 1956, 1965, 1970, 1974, 1979,
-     1981, 1987, 1996, 2005, 2010, 2015, 2019, 2028, 2034, 2039,
-     2048
+        0,    0,  553,    0, 2283, 2284, 2263,  147,  523, 2253,
+      619,  148,  118, 2252,  516, 2267, 2284, 2284,  515,  608,
+     2284,  616,  643,  505,  693,  635,  714, 2284,  606,  613,
+      617,  506,  706, 2284, 2284,  695,  724,  718,  630,  720,
+      728,  600,  690, 2284, 2284,  647, 2275, 2284, 2284, 2284,
+        0, 2284,  745, 2274,  683, 2284, 2284,  753, 2273,    0,
+        0, 2217, 2209, 2216, 2208,  762, 2268,    0, 2245, 2284,
+     2284,  785, 2266,  644,  753, 2256, 2284, 2284,  776, 2284,
+
+      780,  786,  793,    0, 2284, 2284, 2284, 2284,  715,  791,
+     2255,  817,  799,  835,  827,    0,  825, 2257,  817,  866,
+      846,  855,  874,  885,  891,  893,  789, 2253,  903,  907,
+        0,  913, 2284, 2284, 2284,  867, 2261,  799,  857, 2251,
+      926, 2284,  935,  977,  946,  906, 2237,  950,  959,  981,
+      990, 2284, 2284,  877,  938,  983, 2284,  868, 2284,    0,
+      152,  915,  657,  999, 1008, 1016, 1024, 2284, 2284, 2284,
+     2249, 2232, 2284, 1028, 1034, 2284, 2284, 1038, 2284,    0,
+     2222, 2200, 2206,  614, 2198, 2200,  712, 2196, 1013,  596,
+      672, 2206, 2201,  672, 2204, 2195, 2221, 2284, 1053,  879,
+
+     1072,  955,    0,    0, 2190, 2191,  932,  855, 1018,  606,
+      873, 2187,  952, 2187, 2180, 2284, 2284, 2284, 2284, 2284,
+      998, 2218,  760, 2235, 1084, 1016,  837, 1017, 1066, 1048,
+     1074, 1045, 2284, 2284, 2284, 2284, 1108, 1112,    0, 1116,
+     1122, 2183, 2181, 2192, 1126, 1130,    0,    0, 2174, 2180,
+     2187, 2173, 1135, 1139, 2209, 2208, 2284, 1143, 1147, 1072,
+     2284,    0, 1132, 2220, 1136, 1142, 1146,    0, 1150, 1155,
+     1164, 1168,    0,    0, 1140, 2284,    0, 1181, 2219, 1185,
+     1191, 1195, 1199, 1173, 1213, 1177,    0,    0, 2200, 1217,
+     1230, 1234, 1244,    0, 1245, 2204, 1255, 1263, 1264, 1265,
+
+     1266, 1279, 1280, 1281, 1298, 1310, 1189, 2284,    0, 1295,
+     2216, 1309, 1317, 1322,    0, 2172, 1027, 2179, 2178, 2175,
+     1330, 1204, 1343, 1222,    0, 2165, 1191, 2163, 2174, 2161,
+     2194, 2284, 1353, 1361, 1366, 1371, 2284, 1257, 1348, 1376,
+     1380, 1384, 2284, 1393,    0, 2181, 2159, 2163, 2159, 2156,
+     2163, 2156, 2147, 2151, 2143, 2141, 2149,  764, 2157, 2141,
+     2147, 2148, 2140, 2137, 2136, 2151, 2143, 2146, 2284, 1397,
+     1250, 1401, 1405, 1303,    0,    0, 2137, 2148, 2137, 1294,
+     2126, 2145, 2136, 2126, 2133, 2131, 2136, 2122, 2121, 2121,
+     2118, 2134, 2126, 2133, 2284, 2151, 2171, 1314, 2152, 1289,
+
+     1413, 1414, 1415, 1416, 1417, 1418, 2126, 2126, 2125,    0,
+        0,    0,    0, 2118, 1423, 1433,    0, 1438, 1265, 1442,
+     1452, 1456,    0, 1459, 1469, 1473, 1313, 1477, 1481, 1486,
+        0, 2142, 2146, 1489, 1493, 1504, 1508,    0, 2284, 1515,
+     1517, 1519, 1518, 1521, 1532, 1534, 1532, 1545,    0, 2114,
+     2102, 2110, 2118, 2109, 2116, 1549, 1358, 1555, 1567, 1499,
+        0, 2105, 2106, 2107, 2114, 2105, 2096, 1571, 1575, 2112,
+     2098, 2101, 2099, 2091,  735, 2102, 2106, 2103, 2091,    0,
+     2098, 2098, 2100, 2084, 2091, 2093, 2097, 2095, 2076, 2094,
+        0, 2083, 2082, 2079, 2072, 2084, 2070, 2069, 2073,    0,
+
+     2081, 2072, 2075, 2064, 2076, 2068,  978, 2074, 2060, 2061,
+     2067, 2060, 2072, 2284, 1406, 2284,    0, 2094, 2111, 1540,
+     1583, 1584, 1585, 2060, 2069, 2053, 2056, 1583, 1590, 1594,
+     1598, 2284,    0, 1605, 1606, 1607, 1608, 1622, 1628, 2062,
+        0, 2061, 2049, 2059, 2063, 2050, 2056, 2042, 2055, 2046,
+     2039, 2045, 2037, 2042,    0, 2035, 1579,    0,    0, 2036,
+     2050, 2047,    0, 2039, 2038, 2034, 2046, 2028, 2041, 2032,
+     2026, 1390, 2038, 2036,    0,    0, 2035,    0, 2037, 2034,
+        0,    0, 2023, 2026, 2030, 2015, 2026, 2018, 2014, 2026,
+     2014, 2023, 2007, 2015, 1620, 1635, 1636, 2284, 2007, 2000,
+
+     2005, 1637, 1638,    0,    0, 1995, 1985, 1974, 2284, 1983,
+     2284, 2284, 2284, 1980, 1981, 1977, 1977,    0, 1967, 1954,
+     1937, 1937, 1931, 1937, 1928,    0, 1928, 1916, 1901, 1913,
+        0, 1899, 1894, 1901, 1896, 1900,    0, 1887, 1883, 1890,
+     1886,    0,    0, 1870, 1875, 1869,    0, 1867, 1857,    0,
+     1873, 1869, 1622, 2284,    0, 1651, 1652, 2284, 1868,    0,
+     1654, 1655, 1862, 1847, 1839, 1848, 1840, 1838, 1825, 1625,
+     1815, 1803, 1811, 1798, 1803, 1785, 1783, 1626, 1783, 1774,
+     1756,    0, 1755, 1743, 1752, 1746, 1746, 1735, 1722,    0,
+     1705, 1725, 1719, 1708,    0, 1715,    0, 1692, 1681, 1653,
+
+     1650, 1650, 1639,    0, 1644, 1647, 1641, 1636, 1633, 1621,
+     1627, 1616, 1619, 1595,    0, 1599, 1053, 1601, 1591, 1583,
+        0, 1569, 1530, 1528, 1519, 1530, 1516,    0, 1507, 1485,
+     1458, 1426, 1092, 1427, 1435,    0, 1404, 1407,    0, 1397,
+     1348, 1359,    0, 1300, 1306, 1291, 1262,    0, 1250, 1254,
+     1243, 1213, 1179,    0, 1165, 1161,    0, 1141, 1122,    0,
+        0,    0,    0, 1127, 1114, 1094, 1076, 1079, 1075, 2284,
+     1064, 1038, 1042, 1029,    0,  990,  980,  955,  956,  947,
+        0,    0,  902,    0,    0,  902,  899,  893,  861,  789,
+        0, 2284,    0,  768,  774,    0,  712,  693,  687,  677,
+
+      616,    0,    0,    0,  493,  490,  465,  102,    0,    0,
+        0,    0, 2284, 2284,    0,    0, 2284, 1701, 1710, 1719,
+     1728, 1737, 1746, 1748, 1754, 1759, 1761, 1766, 1768, 1773,
+     1782, 1791, 1796, 1801, 1810, 1819, 1824, 1826, 1832, 1841,
+     1850, 1855, 1860, 1869, 1878, 1887, 1892, 1897, 1901, 1907,
+     1913, 1920, 1925, 1930, 1935, 1940, 1945, 1950, 1954, 1963,
+     1972, 1977, 1981, 1986, 1988, 1994, 2003, 2012, 2017, 2022,
+     2026, 2035, 2041, 2047, 2052, 2061
     } ;
 
-static yyconst flex_int16_t yy_def[872] =
+static yyconst flex_int16_t yy_def[877] =
     {   0,
-      815,    1,  815,    3,  816,  816,  815,    7,  815,    9,
-      815,   11,  815,   13,    1,    1,  815,   17,  817,  817,
-      818,  818,  815,   23,  815,  815,  815,  815,  815,  815,
-      819,  820,  815,  815,  815,  821,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  822,  822,  815,  815,  822,  822,  822,  822,  822,
-      822,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      823,  815,  815,  815,  815,  815,  815,  815,  815,  824,
-      825,  825,  825,  825,  825,  815,  815,  826,  827,  815,
-      815,  815,  815,  828,  815,  829,  815,  815,  815,  815,
-
-      830,  815,  815,  831,  815,  815,  815,  815,  832,  815,
-      833,  815,  815,  815,  815,  834,  835,   43,  836,  836,
-      836,  836,  836,  836,  836,  836,  828,  829,  815,  815,
-      102,  815,  815,  815,  815,  815,  815,  837,  815,  838,
-      815,  815,  839,  815,  815,  815,  840,  840,  840,  840,
-      840,  815,  815,  815,  815,  815,  815,  841,  815,  841,
-      842,  815,  842,  815,  815,  815,  815,  815,  815,  815,
-      843,  815,  815,  815,  815,  815,  815,  815,  815,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  844,  815,  815,  815,  815,
-
-      815,  815,  845,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      846,  847,  848,  847,  847,  847,  847,  847,  847,  847,
-      847,  815,  815,  815,  815,  815,  815,  849,  815,  815,
-      815,  815,  815,  815,  815,  850,  851,  851,  851,  851,
-      851,  815,  815,  852,  852,  815,  815,  815,  828,  815,
-      828,  815,  829,  815,  815,  815,  853,  815,  815,  815,
-      815,  854,  855,  856,  815,  856,  815,  857,  815,  815,
-      815,  815,  815,  815,  815,  858,  859,  860,  860,  860,
-      860,  860,  861,  862,  815,  862,  862,  862,  862,  862,
-
-      862,  862,  862,  815,  815,  863,  815,  863,  815,  864,
-      815,  815,  815,  865,  865,  865,  865,  865,  865,  815,
-      815,  815,  815,  866,  815,  815,  815,  815,  815,  867,
-      815,  867,  867,  867,  867,  815,  815,  815,  815,  815,
-      815,  815,  815,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  844,  844,  815,  815,  815,
-      815,  815,  815,  845,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  848,  868,  869,  847,  847,  847,
-
-      847,  847,  847,  847,  815,  815,  815,  850,  851,  851,
-      851,  851,  815,  815,  853,  815,  815,  815,  815,  815,
-      854,  815,  815,  815,  815,  815,  815,  815,  858,  860,
-      815,  860,  860,  860,  860,  870,  815,  862,  862,  862,
-      862,  862,  862,  862,  815,  815,  865,  865,  865,  865,
-      865,  865,  865,  815,  815,  815,  815,  815,  866,  815,
-      815,  815,  815,  815,  815,  815,  815,  844,  844,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  868,  815,  868,  869,  815,  847,  847,  847,
-      847,  815,  815,  815,  851,  815,  815,  815,  815,  815,
-      870,  862,  862,  862,  862,  815,  815,  865,  865,  865,
-      865,  865,  865,  815,  815,  815,  815,  815,  815,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  871,  847,  847,  815,  815,  815,  851,  862,
-
-      862,  865,  865,  865,  865,  865,  815,  815,  815,  815,
-      815,  815,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      871,  815,  871,  847,  847,  815,  815,  851,  862,  862,
-      865,  865,  865,  815,  815,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  865,  865,  865,  815,
-
-      815,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  865,  865,  865,  815,  815,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  844,  844,  844,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  865,  865,  815,  815,  844,  844,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-      844,  844,  815,  815,  815,  815,  815,  865,  865,  815,
-      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
-
-      815,  815,  815,  815,  865,  844,  844,  844,  844,  844,
-      815,  815,  865,  844,    0,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815
+      817,    1,  817,    3,  818,  818,  817,    7,  817,    9,
+      817,   11,  817,   13,    1,    1,  817,   17,  819,  819,
+      820,  820,  817,   23,  817,  817,  817,  817,  817,  817,
+      821,  822,  817,  817,  817,  823,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  824,  817,  817,  817,
+      817,  825,  825,  817,  817,  825,  825,  825,  825,  825,
+      825,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      826,  817,  817,  817,  817,  817,  817,  817,  817,  827,
+      828,  828,  828,  828,  828,  817,  817,  829,  830,  817,
+      817,  817,  817,  831,  817,  832,  817,  817,  817,  817,
+
+      833,  817,  817,  834,  817,  817,  817,  817,  835,  817,
+      836,  817,  817,  817,  817,  837,  838,   43,  839,  839,
+      839,  839,  839,  839,  839,  839,  831,  832,  817,  817,
+      102,  817,  817,  817,  817,  817,  817,  840,  817,  841,
+      817,  817,  842,  817,  817,  817,  843,  843,  843,  843,
+      843,  817,  817,  817,  817,  817,  817,  844,  817,  844,
+      845,  817,  845,  817,  817,  817,  817,  817,  817,  817,
+      846,  817,  817,  817,  817,  817,  817,  817,  817,  847,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  847,  847,  817,  817,  817,  817,
+
+      817,  817,  848,  849,  849,  849,  849,  849,  849,  849,
+      849,  849,  849,  849,  849,  817,  817,  817,  817,  817,
+      817,  850,  851,  852,  851,  851,  851,  851,  851,  851,
+      851,  851,  817,  817,  817,  817,  817,  817,  853,  817,
+      817,  817,  817,  817,  817,  817,  854,  855,  855,  855,
+      855,  855,  817,  817,  856,  856,  817,  817,  817,  831,
+      817,  831,  817,  832,  817,  817,  817,  857,  817,  817,
+      817,  817,  858,  859,  860,  817,  860,  817,  861,  817,
+      817,  817,  817,  817,  817,  817,  862,  863,  864,  864,
+      864,  864,  864,  865,  866,  817,  866,  866,  866,  866,
+
+      866,  866,  866,  866,  817,  817,  867,  817,  867,  817,
+      868,  817,  817,  817,  869,  869,  869,  869,  869,  869,
+      817,  817,  817,  817,  870,  817,  817,  817,  817,  817,
+      871,  817,  871,  871,  871,  871,  817,  817,  817,  817,
+      817,  817,  817,  817,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  847,  847,  847,  847,  817,  817,
+      817,  817,  817,  817,  848,  849,  849,  849,  849,  849,
+      849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
+      849,  849,  849,  849,  817,  817,  852,  872,  873,  874,
+
+      874,  874,  874,  874,  874,  874,  817,  817,  817,  854,
+      855,  855,  855,  855,  817,  817,  857,  817,  817,  817,
+      817,  817,  858,  817,  817,  817,  817,  817,  817,  817,
+      862,  864,  817,  864,  864,  864,  864,  875,  817,  866,
+      866,  866,  866,  866,  866,  866,  817,  817,  869,  869,
+      869,  869,  869,  869,  869,  817,  817,  817,  817,  817,
+      870,  817,  817,  817,  817,  817,  817,  817,  817,  847,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  849,  849,  849,  849,  849,  849,  849,
+
+      849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
+      849,  849,  849,  817,  872,  817,  872,  873,  817,  874,
+      874,  874,  874,  817,  817,  817,  855,  817,  817,  817,
+      817,  817,  875,  866,  866,  866,  866,  817,  817,  869,
+      869,  869,  869,  869,  869,  817,  817,  817,  817,  817,
+      817,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  849,  849,  849,  849,  849,  849,
+      849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
+      849,  849,  849,  849,  876,  874,  874,  817,  817,  817,
+
+      855,  866,  866,  869,  869,  869,  869,  869,  817,  817,
+      817,  817,  817,  817,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  847,  847,  847,  849,  849,  849,
+      849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
+      849,  849,  876,  817,  876,  874,  874,  817,  817,  855,
+      866,  866,  869,  869,  869,  817,  817,  847,  847,  847,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  847,  847,  849,  849,  849,  849,
+      849,  849,  849,  849,  849,  849,  849,  817,  869,  869,
+
+      869,  817,  817,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  849,  849,  849,  849,  849,  849,
+      849,  849,  817,  869,  869,  869,  817,  817,  847,  847,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  847,  847,  847,  849,  849,  849,
+      849,  849,  849,  849,  817,  817,  869,  869,  817,  817,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  847,  847,  849,  849,  849,  817,  817,  869,
+      869,  817,  847,  847,  847,  847,  847,  847,  847,  847,
+
+      847,  847,  849,  849,  817,  817,  869,  847,  847,  847,
+      847,  847,  817,  817,  869,  847,    0,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817
     } ;
 
-static yyconst flex_int16_t yy_nxt[2347] =
+static yyconst flex_int16_t yy_nxt[2357] =
     {   0,
        26,   27,   28,   27,   29,   30,   31,   32,   33,   34,
        35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
@@ -847,7 +847,7 @@
        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
        64,   64,   64,   64,   73,   73,   74,   74,  155,  155,
-      162,  155,  163,  164,  162,  165,  163,  166,  167,  814,
+      162,  155,  163,  164,  162,  165,  163,  166,  167,  816,
        75,   75,   76,   77,   78,   77,   79,   76,   76,   76,
        80,   76,   76,   76,   76,   76,   76,   76,   76,   76,
        76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
@@ -888,9 +888,9 @@
 
       119,  119,  121,  119,  122,  119,  119,  123,  119,  124,
       119,  119,  125,  119,  126,  119,  119,  119,   26,   62,
-       26,   63,  127,  221,  197,  156,  169,  128,  813,  172,
-      223,  129,  198,  129,  130,  127,  131,  132,  132,  132,
-      128,  154,  173,  170,  129,  812,  129,  130,  811,  131,
+       26,   63,  127,  222,  197,  156,  169,  128,  815,  172,
+      224,  129,  198,  129,  130,  127,  131,  132,  132,  132,
+      128,  154,  173,  170,  129,  814,  129,  130,  813,  131,
       132,  132,  132,  134,  135,  136,  135,  137,  134,  138,
       134,  139,  134,  134,  140,  134,  134,  134,  141,  142,
       141,  143,  134,  144,  145,  145,  145,  146,  134,  134,
@@ -899,199 +899,200 @@
 
       147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
       147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
-      147,  134,  134,  134,  134,  159,  174,  232,  175,  175,
-      175,  175,  215,  216,  174,  176,  175,  175,  175,  175,
-      217,  218,  358,  177,  219,  220,  359,  221,  236,  236,
-      260,  236,  384,  199,  223,  175,  175,  175,  175,  162,
-      348,  163,  160,  178,  178,  178,  178,  201,  385,  233,
-      179,  556,  349,  180,  180,  180,  180,  181,  180,  180,
-      180,  180,  180,  180,  180,  201,  229,  261,  180,  182,
+      147,  134,  134,  134,  134,  159,  174,  233,  175,  175,
+      175,  175,  216,  217,  174,  176,  175,  175,  175,  175,
+      218,  219,  359,  177,  220,  221,  360,  222,  237,  237,
+      261,  237,  386,  199,  224,  175,  175,  175,  175,  162,
+      349,  163,  160,  178,  178,  178,  178,  201,  387,  234,
+      179,  558,  350,  180,  180,  180,  180,  181,  180,  180,
+      180,  180,  180,  180,  180,  201,  230,  262,  180,  182,
       183,  184,  180,  185,  186,  187,  180,  188,  189,  190,
 
       191,  180,  192,  180,  193,  194,  195,  180,  180,  180,
-      196,  199,  221,  175,  175,  175,  175,  234,  360,  223,
-      361,  275,  364,  221,  200,  201,  224,  224,  224,  224,
-      223,  202,  556,  241,  203,  221,  365,  221,  242,  243,
-      200,  221,  223,  201,  223,  221,  239,  239,  223,  239,
-      810,  202,  223,  225,  244,  244,  809,  244,  276,  203,
-      204,  235,  352,  252,  252,  205,  252,  353,  206,  207,
-      208,  209,  210,  211,  808,  226,  212,  221,  213,  214,
-      555,  227,  228,  230,  223,  231,  257,  257,  262,  257,
-      262,  556,  262,  262,  264,  260,  265,  265,  265,  265,
-
-      266,  266,  266,  266,  268,  307,  265,  265,  265,  265,
-      480,  268,  481,  265,  265,  265,  265,  269,  270,  281,
-      281,  281,  281,  807,  271,  270,  277,  272,  277,  806,
-      277,  277,  261,  269,  221,  279,  270,  280,  280,  280,
-      280,  223,  308,  270,  271,  282,  295,  280,  280,  280,
-      280,  805,  272,  282,  221,  280,  280,  280,  280,  284,
-      289,  223,  290,  221,  291,  292,  283,  284,  304,  304,
-      223,  304,  221,  285,  159,  295,  286,  284,  336,  223,
-      336,  336,  283,  221,  295,  284,  296,  296,  296,  296,
-      223,  221,  309,  285,  309,  295,  309,  309,  223,  370,
-
-      370,  286,  221,  295,  297,  379,  298,  804,  221,  223,
-      221,  160,  299,  380,  295,  223,  337,  223,  337,  337,
-      295,  264,  295,  265,  265,  265,  265,  266,  266,  266,
-      266,  268,  386,  265,  265,  265,  265,  387,  300,  155,
-      155,  301,  155,  803,  311,  270,  312,  312,  312,  312,
-      303,  802,  325,  801,  302,  313,  313,  313,  313,  800,
-      326,  327,  328,  270,  320,  329,  312,  312,  312,  312,
-      332,  332,  332,  332,  331,  373,  373,  373,  322,  333,
-      333,  333,  333,  331,  155,  155,  315,  155,  377,  378,
-      316,  317,  318,  799,  319,  320,  322,  312,  312,  312,
-
-      312,  334,  334,  334,  334,  331,  798,  389,  321,  322,
-      335,  335,  335,  335,  331,  323,  390,  797,  324,  338,
-      338,  338,  338,  585,  321,  393,  394,  322,  339,  339,
-      339,  339,  586,  221,  221,  323,  340,  340,  340,  340,
-      223,  223,  796,  324,  341,  341,  341,  341,  178,  178,
-      178,  178,  199,  795,  175,  175,  175,  175,  178,  178,
-      178,  178,  221,  355,  381,  221,  201,  356,  382,  223,
-      343,  357,  223,  369,  369,  369,  369,  449,  260,  398,
-      399,  450,  383,  221,  201,  343,  794,  371,  343,  371,
-      223,  221,  372,  372,  372,  372,  402,  793,  223,  748,
-
-      404,  221,  792,  343,  224,  224,  224,  224,  223,  236,
-      236,  749,  236,  236,  236,  261,  236,  239,  239,  791,
-      239,  400,  401,  239,  239,  790,  239,  244,  244,  789,
-      244,  244,  244,  788,  244,  403,  252,  252,  763,  252,
-      252,  252,  787,  252,  257,  257,  275,  257,  257,  257,
-      764,  257,  413,  413,  413,  413,  266,  266,  266,  266,
-      268,  786,  265,  265,  265,  265,  266,  266,  266,  266,
-      416,  416,  416,  416,  270,  417,  417,  785,  414,  418,
-      784,  418,  414,  276,  419,  419,  419,  419,  420,  420,
-      420,  783,  270,  425,  425,  307,  414,  428,  428,  428,
-
-      414,  422,  422,  422,  422,  281,  281,  281,  281,  282,
-      782,  280,  280,  280,  280,  281,  281,  281,  281,  424,
-      424,  424,  424,  284,  455,  455,  781,  423,  426,  780,
-      426,  423,  308,  427,  427,  427,  427,  432,  432,  432,
-      432,  284,  458,  458,  458,  423,  431,  461,  462,  423,
-      433,  433,  433,  433,  434,  434,  434,  434,  337,  431,
-      337,  337,  221,  431,  435,  435,  435,  435,  779,  223,
-      370,  370,  221,  431,  295,  296,  296,  296,  296,  223,
-      221,  221,  221,  221,  295,  417,  417,  223,  223,  223,
-      223,  778,  295,  295,  295,  295,  221,  221,  221,  304,
-
-      304,  777,  304,  223,  223,  223,  221,  776,  295,  295,
-      295,  304,  304,  223,  304,  445,  445,  445,  445,  775,
-      514,  440,  441,  373,  373,  373,  438,  442,  439,  313,
-      313,  313,  313,  425,  425,  320,  444,  312,  312,  312,
-      312,  443,  313,  313,  313,  313,  774,  518,  495,  322,
-      454,  454,  454,  454,  446,  773,  496,  515,  456,  497,
-      456,  772,  446,  457,  457,  457,  457,  322,  338,  338,
-      338,  338,  446,  332,  332,  332,  332,  331,  455,  455,
-      446,  333,  333,  333,  333,  331,  334,  334,  334,  334,
-      331,  335,  335,  335,  335,  331,  339,  339,  339,  339,
-
-      340,  340,  340,  340,  341,  341,  341,  341,  466,  771,
-      466,  770,  514,  467,  467,  467,  467,  369,  369,  369,
-      369,  372,  372,  372,  372,  372,  372,  372,  372,  343,
-      221,  221,  221,  221,  221,  221,  631,  223,  223,  223,
-      223,  223,  223,  413,  413,  413,  413,  343,  526,  515,
-      526,  632,  769,  527,  527,  527,  527,  633,  416,  416,
-      416,  416,  419,  419,  419,  419,  768,  767,  521,  519,
-      414,  520,  419,  419,  419,  419,  420,  420,  420,  422,
-      422,  422,  422,  766,  528,  765,  528,  762,  414,  529,
-      529,  529,  529,  424,  424,  424,  424,  427,  427,  427,
-
-      427,  427,  427,  427,  427,  423,  428,  428,  428,  432,
-      432,  432,  432,  433,  433,  433,  433,  761,  431,  458,
-      458,  458,  431,  423,  434,  434,  434,  434,  435,  435,
-      435,  435,  221,  431,  221,  221,  221,  431,  221,  223,
-      760,  223,  223,  223,  295,  223,  295,  295,  295,  221,
-      295,  221,  445,  445,  445,  445,  223,  221,  223,  759,
-      536,  295,  536,  295,  223,  537,  537,  537,  537,  454,
-      454,  454,  454,  532,  533,  457,  457,  457,  457,  758,
-      757,  446,  756,  755,  535,  754,  534,  457,  457,  457,
-      457,  467,  467,  467,  467,  467,  467,  467,  467,  446,
-
-      221,  221,  221,  527,  527,  527,  527,  223,  223,  223,
-      527,  527,  527,  527,  529,  529,  529,  529,  529,  529,
-      529,  529,  221,  221,  221,  221,  652,  617,  652,  223,
-      223,  223,  223,  753,  295,  295,  295,  295,  752,  751,
-      618,  594,  537,  537,  537,  537,  619,  595,  537,  537,
-      537,  537,  221,  221,  221,  221,  750,  747,  746,  223,
-      223,  223,  223,  653,  600,  653,  295,  295,  221,  221,
-      601,  221,  221,  704,  714,  223,  223,  745,  223,  223,
-      744,  715,  743,  295,  295,  742,  705,  654,  741,  659,
-      740,  739,  706,  738,  737,  736,  735,  734,  655,  733,
+      196,  199,  222,  175,  175,  175,  175,  235,  361,  224,
+      362,  276,  365,  222,  200,  201,  225,  225,  225,  225,
+      224,  202,  558,  242,  203,  222,  366,  222,  243,  244,
+      200,  222,  224,  201,  224,  222,  240,  240,  224,  240,
+      812,  202,  224,  226,  245,  245,  811,  245,  277,  203,
+      205,  236,  353,  253,  253,  206,  253,  354,  207,  208,
+      209,  210,  211,  212,  810,  227,  213,  222,  214,  215,
+      557,  228,  229,  231,  224,  232,  258,  258,  263,  258,
+      263,  558,  263,  263,  265,  261,  266,  266,  266,  266,
+
+      267,  267,  267,  267,  269,  308,  266,  266,  266,  266,
+      482,  269,  483,  266,  266,  266,  266,  270,  271,  282,
+      282,  282,  282,  809,  272,  271,  278,  273,  278,  808,
+      278,  278,  262,  270,  222,  280,  271,  281,  281,  281,
+      281,  224,  309,  271,  272,  283,  296,  281,  281,  281,
+      281,  807,  273,  283,  222,  281,  281,  281,  281,  285,
+      290,  224,  291,  222,  292,  293,  284,  285,  305,  305,
+      224,  305,  222,  286,  159,  296,  287,  285,  337,  224,
+      337,  337,  284,  222,  296,  285,  297,  297,  297,  297,
+      224,  222,  310,  286,  310,  296,  310,  310,  224,  371,
+
+      371,  287,  222,  296,  298,  381,  299,  806,  222,  224,
+      222,  160,  300,  382,  296,  224,  338,  224,  338,  338,
+      296,  265,  296,  266,  266,  266,  266,  267,  267,  267,
+      267,  269,  388,  266,  266,  266,  266,  389,  301,  155,
+      155,  302,  155,  805,  312,  271,  313,  313,  313,  313,
+      304,  804,  326,  803,  303,  314,  314,  314,  314,  802,
+      327,  328,  329,  271,  321,  330,  313,  313,  313,  313,
+      333,  333,  333,  333,  332,  374,  374,  374,  323,  334,
+      334,  334,  334,  332,  155,  155,  316,  155,  379,  380,
+      317,  318,  319,  801,  320,  321,  323,  313,  313,  313,
+
+      313,  335,  335,  335,  335,  332,  800,  391,  322,  323,
+      336,  336,  336,  336,  332,  324,  392,  799,  325,  339,
+      339,  339,  339,  587,  322,  395,  396,  323,  340,  340,
+      340,  340,  588,  222,  222,  324,  341,  341,  341,  341,
+      224,  224,  798,  325,  342,  342,  342,  342,  178,  178,
+      178,  178,  199,  797,  175,  175,  175,  175,  178,  178,
+      178,  178,  222,  356,  383,  222,  201,  357,  384,  224,
+      344,  358,  224,  370,  370,  370,  370,  451,  261,  400,
+      401,  452,  385,  222,  201,  344,  796,  372,  344,  372,
+      224,  222,  373,  373,  373,  373,  404,  795,  224,  750,
+
+      406,  222,  794,  344,  225,  225,  225,  225,  224,  237,
+      237,  751,  237,  237,  237,  262,  237,  240,  240,  793,
+      240,  402,  403,  240,  240,  792,  240,  245,  245,  791,
+      245,  245,  245,  790,  245,  405,  253,  253,  765,  253,
+      253,  253,  789,  253,  258,  258,  276,  258,  258,  258,
+      766,  258,  415,  415,  415,  415,  267,  267,  267,  267,
+      269,  788,  266,  266,  266,  266,  267,  267,  267,  267,
+      418,  418,  418,  418,  271,  419,  419,  787,  416,  420,
+      786,  420,  416,  277,  421,  421,  421,  421,  422,  422,
+      422,  785,  271,  427,  427,  308,  416,  430,  430,  430,
+
+      416,  424,  424,  424,  424,  282,  282,  282,  282,  283,
+      784,  281,  281,  281,  281,  282,  282,  282,  282,  426,
+      426,  426,  426,  285,  457,  457,  783,  425,  428,  782,
+      428,  425,  309,  429,  429,  429,  429,  434,  434,  434,
+      434,  285,  460,  460,  460,  425,  433,  463,  464,  425,
+      435,  435,  435,  435,  436,  436,  436,  436,  338,  433,
+      338,  338,  222,  433,  437,  437,  437,  437,  781,  224,
+      371,  371,  222,  433,  296,  297,  297,  297,  297,  224,
+      222,  222,  222,  222,  296,  419,  419,  224,  224,  224,
+      224,  780,  296,  296,  296,  296,  222,  222,  222,  305,
+
+      305,  779,  305,  224,  224,  224,  222,  778,  296,  296,
+      296,  305,  305,  224,  305,  447,  447,  447,  447,  777,
+      516,  442,  443,  374,  374,  374,  440,  444,  441,  314,
+      314,  314,  314,  427,  427,  321,  446,  313,  313,  313,
+      313,  445,  314,  314,  314,  314,  776,  520,  497,  323,
+      456,  456,  456,  456,  448,  775,  498,  517,  458,  499,
+      458,  774,  448,  459,  459,  459,  459,  323,  339,  339,
+      339,  339,  448,  333,  333,  333,  333,  332,  457,  457,
+      448,  334,  334,  334,  334,  332,  335,  335,  335,  335,
+      332,  336,  336,  336,  336,  332,  340,  340,  340,  340,
+
+      341,  341,  341,  341,  342,  342,  342,  342,  468,  773,
+      468,  772,  516,  469,  469,  469,  469,  370,  370,  370,
+      370,  373,  373,  373,  373,  373,  373,  373,  373,  344,
+      222,  222,  222,  222,  222,  222,  633,  224,  224,  224,
+      224,  224,  224,  415,  415,  415,  415,  344,  528,  517,
+      528,  634,  771,  529,  529,  529,  529,  635,  418,  418,
+      418,  418,  421,  421,  421,  421,  770,  769,  523,  521,
+      416,  522,  421,  421,  421,  421,  422,  422,  422,  424,
+      424,  424,  424,  768,  530,  767,  530,  764,  416,  531,
+      531,  531,  531,  426,  426,  426,  426,  429,  429,  429,
+
+      429,  429,  429,  429,  429,  425,  430,  430,  430,  434,
+      434,  434,  434,  435,  435,  435,  435,  763,  433,  460,
+      460,  460,  433,  425,  436,  436,  436,  436,  437,  437,
+      437,  437,  222,  433,  222,  222,  222,  433,  222,  224,
+      762,  224,  224,  224,  296,  224,  296,  296,  296,  222,
+      296,  222,  447,  447,  447,  447,  224,  222,  224,  761,
+      538,  296,  538,  296,  224,  539,  539,  539,  539,  456,
+      456,  456,  456,  534,  535,  459,  459,  459,  459,  760,
+      759,  448,  758,  757,  537,  756,  536,  459,  459,  459,
+      459,  469,  469,  469,  469,  469,  469,  469,  469,  448,
+
+      222,  222,  222,  529,  529,  529,  529,  224,  224,  224,
+      529,  529,  529,  529,  531,  531,  531,  531,  531,  531,
+      531,  531,  222,  222,  222,  222,  654,  619,  654,  224,
+      224,  224,  224,  755,  296,  296,  296,  296,  754,  753,
+      620,  596,  539,  539,  539,  539,  621,  597,  539,  539,
+      539,  539,  222,  222,  222,  222,  752,  749,  748,  224,
+      224,  224,  224,  655,  602,  655,  296,  296,  222,  222,
+      603,  222,  222,  706,  716,  224,  224,  747,  224,  224,
+      746,  717,  745,  296,  296,  744,  707,  656,  743,  661,
+      742,  741,  708,  740,  739,  738,  737,  736,  657,  735,
 
-      660,   72,   72,   72,   72,   72,   72,   72,   72,   72,
+      662,   72,   72,   72,   72,   72,   72,   72,   72,   72,
        64,   64,   64,   64,   64,   64,   64,   64,   64,  133,
-      133,  133,  133,  133,  133,  133,  133,  133,  158,  732,
+      133,  133,  133,  133,  133,  133,  133,  133,  158,  734,
       158,  158,  158,  158,  158,  158,  158,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  171,  731,  171,  171,
-      171,  171,  171,  171,  171,  222,  222,  222,  730,  222,
-      222,  238,  729,  728,  238,  238,  246,  246,  247,  727,
-      726,  247,  247,  254,  254,  255,  255,  725,  255,  255,
-      259,  724,  259,  259,  259,  259,  259,  259,  259,  263,
-      723,  263,  263,  263,  263,  263,  263,  263,  267,  722,
-
-      721,  267,  267,  273,  720,  719,  273,  273,  274,  718,
-      274,  274,  274,  274,  274,  274,  274,  278,  717,  278,
-      278,  278,  278,  278,  278,  278,  287,  716,  713,  287,
-      287,  288,  288,  294,  294,  294,  294,  294,  294,  306,
-      712,  306,  306,  306,  306,  306,  306,  306,  310,  711,
-      310,  310,  310,  310,  310,  310,  310,  314,  710,  709,
-      314,  314,  330,  330,  708,  330,  330,  158,  707,  158,
-      158,  158,  158,  158,  158,  158,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  171,  703,  171,  171,  171,
-      171,  171,  171,  171,  344,  702,  701,  344,  344,  374,
-
-      700,  699,  374,  221,  221,  221,  698,  221,  221,  222,
-      222,  222,  697,  222,  222,  397,  696,  695,  694,  693,
-      397,  397,  238,  692,  691,  238,  238,  408,  690,  689,
-      408,  408,  247,  688,  687,  247,  247,  255,  255,  686,
-      255,  255,  415,  685,  684,  415,  415,  421,  683,  682,
-      421,  273,  681,  680,  273,  273,  274,  679,  274,  274,
-      274,  274,  274,  274,  274,  278,  678,  278,  278,  278,
-      278,  278,  278,  278,  429,  677,  676,  429,  287,  675,
-      674,  287,  287,  430,  673,  430,  430,  430,  436,  436,
-      294,  294,  294,  294,  294,  294,  306,  672,  306,  306,
-
-      306,  306,  306,  306,  306,  310,  671,  310,  310,  310,
-      310,  310,  310,  310,  447,  670,  669,  447,  447,  459,
-      668,  667,  459,  330,  330,  666,  330,  330,  513,  665,
-      513,  513,  513,  513,  513,  513,  513,  516,  516,  516,
-      664,  516,  516,  531,  663,  662,  531,  531,  651,  661,
-      651,  651,  651,  651,  651,  651,  651,  658,  657,  656,
-      650,  649,  648,  647,  646,  645,  644,  643,  642,  641,
-      640,  639,  638,  637,  636,  635,  634,  630,  629,  628,
-      627,  626,  625,  624,  623,  622,  621,  620,  616,  615,
-      614,  613,  612,  611,  610,  609,  608,  607,  606,  605,
-
-      604,  603,  602,  599,  598,  597,  596,  593,  517,  592,
-      591,  590,  589,  588,  587,  584,  583,  582,  581,  580,
-      579,  578,  577,  576,  575,  574,  573,  572,  571,  570,
-      569,  568,  567,  566,  565,  564,  563,  562,  561,  560,
-      559,  558,  557,  554,  553,  552,  551,  550,  549,  548,
-      547,  546,  545,  544,  543,  542,  541,  540,  539,  538,
-      530,  431,  525,  524,  523,  522,  517,  396,  512,  511,
-      510,  509,  508,  507,  506,  505,  504,  503,  502,  501,
-      500,  499,  498,  494,  493,  492,  491,  490,  489,  488,
-      487,  486,  485,  484,  483,  482,  479,  478,  477,  476,
-
-      475,  474,  473,  472,  471,  470,  469,  468,  331,  465,
-      464,  463,  460,  453,  452,  451,  448,  307,  437,  431,
-      275,  260,  256,  256,  412,  411,  410,  409,  407,  406,
-      405,  396,  395,  392,  391,  388,  376,  375,  368,  367,
-      366,  363,  362,  354,  351,  350,  347,  346,  345,  342,
-      159,  331,  307,  305,  260,  293,  275,  260,  258,  256,
-      253,  251,  250,  249,  248,  245,  240,  237,  159,  168,
-      157,  154,  815,   25,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815
+      161,  161,  161,  161,  161,  161,  171,  733,  171,  171,
+      171,  171,  171,  171,  171,  204,  204,  223,  223,  223,
+      732,  223,  223,  239,  731,  730,  239,  239,  247,  247,
+      248,  729,  728,  248,  248,  255,  255,  256,  256,  727,
+      256,  256,  260,  726,  260,  260,  260,  260,  260,  260,
+      260,  264,  725,  264,  264,  264,  264,  264,  264,  264,
+
+      268,  724,  723,  268,  268,  274,  722,  721,  274,  274,
+      275,  720,  275,  275,  275,  275,  275,  275,  275,  279,
+      719,  279,  279,  279,  279,  279,  279,  279,  288,  718,
+      715,  288,  288,  289,  289,  295,  295,  295,  295,  295,
+      295,  307,  714,  307,  307,  307,  307,  307,  307,  307,
+      311,  713,  311,  311,  311,  311,  311,  311,  311,  315,
+      712,  711,  315,  315,  331,  331,  710,  331,  331,  158,
+      709,  158,  158,  158,  158,  158,  158,  158,  161,  161,
+      161,  161,  161,  161,  161,  161,  161,  171,  705,  171,
+      171,  171,  171,  171,  171,  171,  345,  704,  703,  345,
+
+      345,  375,  702,  701,  375,  376,  700,  699,  376,  376,
+      222,  222,  222,  698,  222,  222,  223,  223,  223,  697,
+      223,  223,  399,  696,  695,  694,  693,  399,  399,  239,
+      692,  691,  239,  239,  410,  690,  689,  410,  410,  248,
+      688,  687,  248,  248,  256,  256,  686,  256,  256,  417,
+      685,  684,  417,  417,  423,  683,  682,  423,  274,  681,
+      680,  274,  274,  275,  679,  275,  275,  275,  275,  275,
+      275,  275,  279,  678,  279,  279,  279,  279,  279,  279,
+      279,  431,  677,  676,  431,  288,  675,  674,  288,  288,
+      432,  673,  432,  432,  432,  438,  438,  295,  295,  295,
+
+      295,  295,  295,  307,  672,  307,  307,  307,  307,  307,
+      307,  307,  311,  671,  311,  311,  311,  311,  311,  311,
+      311,  449,  670,  669,  449,  449,  461,  668,  667,  461,
+      331,  331,  666,  331,  331,  515,  665,  515,  515,  515,
+      515,  515,  515,  515,  518,  518,  518,  664,  518,  518,
+      223,  223,  223,  663,  223,  223,  533,  660,  659,  533,
+      533,  653,  658,  653,  653,  653,  653,  653,  653,  653,
+      652,  651,  650,  649,  648,  647,  646,  645,  644,  643,
+      642,  641,  640,  639,  638,  637,  636,  632,  631,  630,
+      629,  628,  627,  626,  625,  624,  623,  622,  618,  617,
+
+      616,  615,  614,  613,  612,  611,  610,  609,  608,  607,
+      606,  605,  604,  601,  600,  599,  598,  595,  519,  594,
+      593,  592,  591,  590,  589,  586,  585,  584,  583,  582,
+      581,  580,  579,  578,  577,  576,  575,  574,  573,  572,
+      571,  570,  569,  568,  567,  566,  565,  564,  563,  562,
+      561,  560,  559,  556,  555,  554,  553,  552,  551,  550,
+      549,  548,  547,  546,  545,  544,  543,  542,  541,  540,
+      532,  433,  527,  526,  525,  524,  519,  398,  514,  513,
+      512,  511,  510,  509,  508,  507,  506,  505,  504,  503,
+      502,  501,  500,  496,  495,  494,  493,  492,  491,  490,
+
+      489,  488,  487,  486,  485,  484,  481,  480,  479,  478,
+      477,  476,  475,  474,  473,  472,  471,  470,  332,  467,
+      466,  465,  462,  455,  454,  453,  450,  308,  439,  433,
+      276,  261,  257,  257,  414,  413,  412,  411,  409,  408,
+      407,  398,  397,  394,  393,  390,  378,  377,  369,  368,
+      367,  364,  363,  355,  352,  351,  348,  347,  346,  343,
+      159,  332,  308,  306,  261,  294,  276,  261,  259,  257,
+      254,  252,  251,  250,  249,  246,  241,  238,  159,  168,
+      157,  154,  817,   25,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817
     } ;
 
-static yyconst flex_int16_t yy_chk[2347] =
+static yyconst flex_int16_t yy_chk[2357] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1109,7 +1110,7 @@
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    5,    6,    5,    6,   28,   28,
-       32,   28,   32,   33,  161,   33,  161,   33,   33,  806,
+       32,   28,   32,   33,  161,   33,  161,   33,   33,  808,
         5,    6,    7,    7,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
@@ -1150,9 +1151,9 @@
 
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
-       17,   17,   19,   52,   44,   29,   35,   19,  805,   39,
+       17,   17,   19,   52,   44,   29,   35,   19,  807,   39,
        52,   19,   44,   19,   19,   20,   19,   19,   19,   19,
-       20,   29,   39,   35,   20,  804,   20,   20,  803,   20,
+       20,   29,   39,   35,   20,  806,   20,   20,  805,   20,
        20,   20,   20,   23,   23,   23,   23,   23,   23,   23,
        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
@@ -1164,197 +1165,198 @@
        23,   23,   23,   23,   23,   31,   40,   62,   40,   40,
        40,   40,   49,   49,   42,   40,   42,   42,   42,   42,
        50,   50,  190,   42,   51,   51,  190,   59,   66,   66,
-       94,   66,  209,   46,   59,   46,   46,   46,   46,  163,
-      184,  163,   31,   43,   43,   43,   43,   46,  209,   62,
-       43,  799,  184,   43,   43,   43,   43,   43,   43,   43,
+       94,   66,  210,   46,   59,   46,   46,   46,   46,  163,
+      184,  163,   31,   43,   43,   43,   43,   46,  210,   62,
+       43,  801,  184,   43,   43,   43,   43,   43,   43,   43,
        43,   43,   43,   43,   43,   46,   59,   94,   43,   43,
        43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
 
        43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
        43,   45,   56,   45,   45,   45,   45,   63,  191,   56,
       191,  109,  194,   53,   45,   45,   53,   53,   53,   53,
-       53,   45,  798,   75,   45,   58,  194,   60,   75,   75,
+       53,   45,  800,   75,   45,   58,  194,   60,   75,   75,
        45,   57,   58,   45,   60,   61,   73,   73,   57,   73,
-      797,   45,   61,   56,   78,   78,  796,   78,  109,   45,
+      799,   45,   61,   56,   78,   78,  798,   78,  109,   45,
        47,   63,  187,   86,   86,   47,   86,  187,   47,   47,
-       47,   47,   47,   47,  795,   57,   47,  222,   47,   47,
-      473,   57,   58,   60,  222,   61,   92,   92,   95,   92,
-       95,  473,   95,   95,   99,  127,   99,   99,   99,   99,
+       47,   47,   47,   47,  797,   57,   47,  223,   47,   47,
+      475,   57,   58,   60,  223,   61,   92,   92,   95,   92,
+       95,  475,   95,   95,   99,  127,   99,   99,   99,   99,
 
       101,  101,  101,  101,  102,  138,  102,  102,  102,  102,
-      357,  103,  357,  103,  103,  103,  103,  102,  102,  113,
-      113,  113,  113,  793,  102,  103,  110,  102,  110,  792,
+      358,  103,  358,  103,  103,  103,  103,  102,  102,  113,
+      113,  113,  113,  795,  102,  103,  110,  102,  110,  794,
       110,  110,  127,  102,  119,  112,  102,  112,  112,  112,
       112,  119,  138,  103,  102,  115,  119,  115,  115,  115,
-      115,  788,  102,  114,  226,  114,  114,  114,  114,  115,
-      117,  226,  117,  121,  117,  117,  114,  114,  136,  136,
+      115,  790,  102,  114,  227,  114,  114,  114,  114,  115,
+      117,  227,  117,  121,  117,  117,  114,  114,  136,  136,
       121,  136,  122,  114,  158,  121,  114,  115,  154,  122,
       154,  154,  114,  120,  122,  114,  120,  120,  120,  120,
       120,  123,  139,  114,  139,  120,  139,  139,  123,  200,
 
-      200,  114,  124,  123,  121,  207,  122,  787,  125,  124,
-      126,  158,  122,  207,  124,  125,  162,  126,  162,  162,
+      200,  114,  124,  123,  121,  208,  122,  789,  125,  124,
+      126,  158,  122,  208,  124,  125,  162,  126,  162,  162,
       125,  129,  126,  129,  129,  129,  129,  130,  130,  130,
-      130,  132,  210,  132,  132,  132,  132,  210,  123,  155,
-      155,  124,  155,  786,  141,  132,  141,  141,  141,  141,
-      126,  785,  146,  784,  125,  143,  143,  143,  143,  781,
+      130,  132,  211,  132,  132,  132,  132,  211,  123,  155,
+      155,  124,  155,  788,  141,  132,  141,  141,  141,  141,
+      126,  787,  146,  786,  125,  143,  143,  143,  143,  783,
       146,  146,  146,  132,  145,  146,  145,  145,  145,  145,
       148,  148,  148,  148,  148,  202,  202,  202,  145,  149,
-      149,  149,  149,  149,  156,  156,  143,  156,  206,  206,
-      143,  143,  143,  778,  143,  144,  145,  144,  144,  144,
+      149,  149,  149,  149,  156,  156,  143,  156,  207,  207,
+      143,  143,  143,  780,  143,  144,  145,  144,  144,  144,
 
-      144,  150,  150,  150,  150,  150,  777,  212,  144,  144,
-      151,  151,  151,  151,  151,  144,  212,  776,  144,  164,
-      164,  164,  164,  505,  144,  220,  220,  144,  165,  165,
-      165,  165,  505,  225,  227,  144,  166,  166,  166,  166,
-      225,  227,  775,  144,  167,  167,  167,  167,  174,  174,
-      174,  174,  175,  774,  175,  175,  175,  175,  178,  178,
-      178,  178,  231,  189,  208,  229,  175,  189,  208,  231,
-      178,  189,  229,  199,  199,  199,  199,  316,  259,  225,
-      227,  316,  208,  228,  175,  199,  772,  201,  178,  201,
-      228,  230,  201,  201,  201,  201,  229,  771,  230,  715,
-
-      231,  224,  770,  199,  224,  224,  224,  224,  224,  236,
-      236,  715,  236,  237,  237,  259,  237,  239,  239,  769,
-      239,  228,  228,  240,  240,  767,  240,  244,  244,  766,
-      244,  245,  245,  765,  245,  230,  252,  252,  731,  252,
-      253,  253,  764,  253,  257,  257,  274,  257,  258,  258,
-      731,  258,  262,  262,  262,  262,  264,  264,  264,  264,
-      265,  763,  265,  265,  265,  265,  266,  266,  266,  266,
-      268,  268,  268,  268,  265,  269,  269,  762,  266,  270,
-      757,  270,  268,  274,  270,  270,  270,  270,  271,  271,
-      271,  756,  265,  283,  283,  306,  266,  285,  285,  285,
-
-      268,  277,  277,  277,  277,  279,  279,  279,  279,  280,
-      754,  280,  280,  280,  280,  281,  281,  281,  281,  282,
-      282,  282,  282,  280,  321,  321,  753,  281,  284,  751,
-      284,  282,  306,  284,  284,  284,  284,  289,  289,  289,
-      289,  280,  323,  323,  323,  281,  289,  326,  326,  282,
-      290,  290,  290,  290,  291,  291,  291,  291,  337,  290,
-      337,  337,  294,  291,  292,  292,  292,  292,  750,  294,
-      370,  370,  296,  292,  294,  296,  296,  296,  296,  296,
-      297,  298,  299,  300,  296,  417,  417,  297,  298,  299,
-      300,  749,  297,  298,  299,  300,  301,  302,  303,  304,
-
-      304,  748,  304,  301,  302,  303,  398,  747,  301,  302,
-      303,  305,  305,  398,  305,  309,  309,  309,  309,  745,
-      396,  300,  300,  373,  373,  373,  297,  301,  299,  311,
-      311,  311,  311,  425,  425,  312,  303,  312,  312,  312,
-      312,  302,  313,  313,  313,  313,  744,  398,  378,  312,
-      320,  320,  320,  320,  313,  743,  378,  396,  322,  378,
-      322,  742,  320,  322,  322,  322,  322,  312,  338,  338,
-      338,  338,  313,  332,  332,  332,  332,  332,  455,  455,
-      320,  333,  333,  333,  333,  333,  334,  334,  334,  334,
-      334,  335,  335,  335,  335,  335,  339,  339,  339,  339,
-
-      340,  340,  340,  340,  341,  341,  341,  341,  343,  740,
-      343,  739,  513,  343,  343,  343,  343,  369,  369,  369,
-      369,  371,  371,  371,  371,  372,  372,  372,  372,  369,
-      399,  400,  401,  402,  403,  404,  570,  399,  400,  401,
-      402,  403,  404,  413,  413,  413,  413,  369,  414,  513,
-      414,  570,  738,  414,  414,  414,  414,  570,  416,  416,
-      416,  416,  418,  418,  418,  418,  736,  735,  404,  400,
-      416,  403,  419,  419,  419,  419,  420,  420,  420,  422,
-      422,  422,  422,  733,  423,  732,  423,  730,  416,  423,
-      423,  423,  423,  424,  424,  424,  424,  426,  426,  426,
-
-      426,  427,  427,  427,  427,  424,  428,  428,  428,  432,
-      432,  432,  432,  433,  433,  433,  433,  729,  432,  458,
-      458,  458,  433,  424,  434,  434,  434,  434,  435,  435,
-      435,  435,  438,  434,  439,  441,  440,  435,  442,  438,
-      728,  439,  441,  440,  438,  442,  439,  441,  440,  443,
-      442,  444,  445,  445,  445,  445,  443,  518,  444,  727,
-      446,  443,  446,  444,  518,  446,  446,  446,  446,  454,
-      454,  454,  454,  438,  440,  456,  456,  456,  456,  725,
-      724,  454,  723,  722,  444,  721,  443,  457,  457,  457,
-      457,  466,  466,  466,  466,  467,  467,  467,  467,  454,
-
-      519,  520,  521,  526,  526,  526,  526,  519,  520,  521,
-      527,  527,  527,  527,  528,  528,  528,  528,  529,  529,
-      529,  529,  532,  533,  534,  535,  593,  555,  651,  532,
-      533,  534,  535,  720,  532,  533,  534,  535,  718,  717,
-      555,  520,  536,  536,  536,  536,  555,  521,  537,  537,
-      537,  537,  594,  595,  600,  601,  716,  714,  712,  594,
-      595,  600,  601,  593,  534,  651,  600,  601,  654,  655,
-      535,  659,  660,  668,  676,  654,  655,  711,  659,  660,
-      710,  676,  709,  659,  660,  708,  668,  594,  707,  600,
-      706,  705,  668,  704,  703,  701,  700,  699,  595,  698,
-
-      601,  816,  816,  816,  816,  816,  816,  816,  816,  816,
-      817,  817,  817,  817,  817,  817,  817,  817,  817,  818,
-      818,  818,  818,  818,  818,  818,  818,  818,  819,  697,
-      819,  819,  819,  819,  819,  819,  819,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  821,  696,  821,  821,
-      821,  821,  821,  821,  821,  822,  822,  822,  694,  822,
-      822,  823,  692,  691,  823,  823,  824,  824,  825,  690,
-      689,  825,  825,  826,  826,  827,  827,  687,  827,  827,
-      828,  686,  828,  828,  828,  828,  828,  828,  828,  829,
-      685,  829,  829,  829,  829,  829,  829,  829,  830,  684,
-
-      683,  830,  830,  831,  682,  681,  831,  831,  832,  679,
-      832,  832,  832,  832,  832,  832,  832,  833,  678,  833,
-      833,  833,  833,  833,  833,  833,  834,  677,  675,  834,
-      834,  835,  835,  836,  836,  836,  836,  836,  836,  837,
-      674,  837,  837,  837,  837,  837,  837,  837,  838,  673,
-      838,  838,  838,  838,  838,  838,  838,  839,  672,  671,
-      839,  839,  840,  840,  670,  840,  840,  841,  669,  841,
-      841,  841,  841,  841,  841,  841,  842,  842,  842,  842,
-      842,  842,  842,  842,  842,  843,  667,  843,  843,  843,
-      843,  843,  843,  843,  844,  666,  665,  844,  844,  845,
-
-      664,  663,  845,  846,  846,  846,  662,  846,  846,  847,
-      847,  847,  661,  847,  847,  848,  657,  650,  649,  647,
-      848,  848,  849,  646,  644,  849,  849,  850,  643,  642,
-      850,  850,  851,  639,  638,  851,  851,  852,  852,  637,
-      852,  852,  853,  636,  634,  853,  853,  854,  633,  632,
-      854,  855,  631,  630,  855,  855,  856,  628,  856,  856,
-      856,  856,  856,  856,  856,  857,  627,  857,  857,  857,
-      857,  857,  857,  857,  858,  626,  625,  858,  859,  623,
-      622,  859,  859,  860,  621,  860,  860,  860,  861,  861,
-      862,  862,  862,  862,  862,  862,  863,  620,  863,  863,
-
-      863,  863,  863,  863,  863,  864,  619,  864,  864,  864,
-      864,  864,  864,  864,  865,  618,  617,  865,  865,  866,
-      615,  614,  866,  867,  867,  613,  867,  867,  868,  612,
-      868,  868,  868,  868,  868,  868,  868,  869,  869,  869,
-      608,  869,  869,  870,  606,  605,  870,  870,  871,  604,
-      871,  871,  871,  871,  871,  871,  871,  599,  598,  597,
-      592,  591,  590,  589,  588,  587,  586,  585,  584,  583,
-      582,  581,  578,  577,  575,  572,  571,  569,  568,  567,
-      566,  565,  564,  563,  562,  560,  559,  558,  554,  552,
-      551,  550,  549,  548,  547,  546,  545,  544,  543,  542,
-
-      541,  540,  538,  525,  524,  523,  522,  517,  516,  511,
-      510,  509,  508,  507,  506,  504,  503,  502,  501,  500,
-      499,  497,  496,  495,  494,  493,  492,  491,  490,  488,
-      487,  486,  485,  484,  483,  482,  481,  480,  479,  477,
-      476,  475,  474,  472,  471,  470,  469,  468,  465,  464,
-      463,  462,  461,  460,  453,  452,  451,  450,  449,  448,
-      431,  430,  412,  407,  406,  405,  397,  395,  394,  392,
-      391,  390,  389,  388,  387,  386,  385,  384,  383,  382,
-      381,  380,  379,  377,  376,  375,  367,  366,  365,  364,
-      363,  362,  361,  360,  359,  358,  356,  355,  354,  353,
-
-      352,  351,  350,  349,  348,  347,  346,  345,  330,  329,
-      328,  327,  325,  319,  318,  317,  315,  310,  295,  288,
-      278,  263,  255,  254,  251,  250,  249,  248,  243,  242,
-      241,  223,  221,  214,  213,  211,  205,  204,  197,  196,
+      144,  150,  150,  150,  150,  150,  779,  213,  144,  144,
+      151,  151,  151,  151,  151,  144,  213,  778,  144,  164,
+      164,  164,  164,  507,  144,  221,  221,  144,  165,  165,
+      165,  165,  507,  226,  228,  144,  166,  166,  166,  166,
+      226,  228,  777,  144,  167,  167,  167,  167,  174,  174,
+      174,  174,  175,  776,  175,  175,  175,  175,  178,  178,
+      178,  178,  232,  189,  209,  230,  175,  189,  209,  232,
+      178,  189,  230,  199,  199,  199,  199,  317,  260,  226,
+      228,  317,  209,  229,  175,  199,  774,  201,  178,  201,
+      229,  231,  201,  201,  201,  201,  230,  773,  231,  717,
+
+      232,  225,  772,  199,  225,  225,  225,  225,  225,  237,
+      237,  717,  237,  238,  238,  260,  238,  240,  240,  771,
+      240,  229,  229,  241,  241,  769,  241,  245,  245,  768,
+      245,  246,  246,  767,  246,  231,  253,  253,  733,  253,
+      254,  254,  766,  254,  258,  258,  275,  258,  259,  259,
+      733,  259,  263,  263,  263,  263,  265,  265,  265,  265,
+      266,  765,  266,  266,  266,  266,  267,  267,  267,  267,
+      269,  269,  269,  269,  266,  270,  270,  764,  267,  271,
+      759,  271,  269,  275,  271,  271,  271,  271,  272,  272,
+      272,  758,  266,  284,  284,  307,  267,  286,  286,  286,
+
+      269,  278,  278,  278,  278,  280,  280,  280,  280,  281,
+      756,  281,  281,  281,  281,  282,  282,  282,  282,  283,
+      283,  283,  283,  281,  322,  322,  755,  282,  285,  753,
+      285,  283,  307,  285,  285,  285,  285,  290,  290,  290,
+      290,  281,  324,  324,  324,  282,  290,  327,  327,  283,
+      291,  291,  291,  291,  292,  292,  292,  292,  338,  291,
+      338,  338,  295,  292,  293,  293,  293,  293,  752,  295,
+      371,  371,  297,  293,  295,  297,  297,  297,  297,  297,
+      298,  299,  300,  301,  297,  419,  419,  298,  299,  300,
+      301,  751,  298,  299,  300,  301,  302,  303,  304,  305,
+
+      305,  750,  305,  302,  303,  304,  400,  749,  302,  303,
+      304,  306,  306,  400,  306,  310,  310,  310,  310,  747,
+      398,  301,  301,  374,  374,  374,  298,  302,  300,  312,
+      312,  312,  312,  427,  427,  313,  304,  313,  313,  313,
+      313,  303,  314,  314,  314,  314,  746,  400,  380,  313,
+      321,  321,  321,  321,  314,  745,  380,  398,  323,  380,
+      323,  744,  321,  323,  323,  323,  323,  313,  339,  339,
+      339,  339,  314,  333,  333,  333,  333,  333,  457,  457,
+      321,  334,  334,  334,  334,  334,  335,  335,  335,  335,
+      335,  336,  336,  336,  336,  336,  340,  340,  340,  340,
+
+      341,  341,  341,  341,  342,  342,  342,  342,  344,  742,
+      344,  741,  515,  344,  344,  344,  344,  370,  370,  370,
+      370,  372,  372,  372,  372,  373,  373,  373,  373,  370,
+      401,  402,  403,  404,  405,  406,  572,  401,  402,  403,
+      404,  405,  406,  415,  415,  415,  415,  370,  416,  515,
+      416,  572,  740,  416,  416,  416,  416,  572,  418,  418,
+      418,  418,  420,  420,  420,  420,  738,  737,  406,  402,
+      418,  405,  421,  421,  421,  421,  422,  422,  422,  424,
+      424,  424,  424,  735,  425,  734,  425,  732,  418,  425,
+      425,  425,  425,  426,  426,  426,  426,  428,  428,  428,
+
+      428,  429,  429,  429,  429,  426,  430,  430,  430,  434,
+      434,  434,  434,  435,  435,  435,  435,  731,  434,  460,
+      460,  460,  435,  426,  436,  436,  436,  436,  437,  437,
+      437,  437,  440,  436,  441,  443,  442,  437,  444,  440,
+      730,  441,  443,  442,  440,  444,  441,  443,  442,  445,
+      444,  446,  447,  447,  447,  447,  445,  520,  446,  729,
+      448,  445,  448,  446,  520,  448,  448,  448,  448,  456,
+      456,  456,  456,  440,  442,  458,  458,  458,  458,  727,
+      726,  456,  725,  724,  446,  723,  445,  459,  459,  459,
+      459,  468,  468,  468,  468,  469,  469,  469,  469,  456,
+
+      521,  522,  523,  528,  528,  528,  528,  521,  522,  523,
+      529,  529,  529,  529,  530,  530,  530,  530,  531,  531,
+      531,  531,  534,  535,  536,  537,  595,  557,  653,  534,
+      535,  536,  537,  722,  534,  535,  536,  537,  720,  719,
+      557,  522,  538,  538,  538,  538,  557,  523,  539,  539,
+      539,  539,  596,  597,  602,  603,  718,  716,  714,  596,
+      597,  602,  603,  595,  536,  653,  602,  603,  656,  657,
+      537,  661,  662,  670,  678,  656,  657,  713,  661,  662,
+      712,  678,  711,  661,  662,  710,  670,  596,  709,  602,
+      708,  707,  670,  706,  705,  703,  702,  701,  597,  700,
+
+      603,  818,  818,  818,  818,  818,  818,  818,  818,  818,
+      819,  819,  819,  819,  819,  819,  819,  819,  819,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  821,  699,
+      821,  821,  821,  821,  821,  821,  821,  822,  822,  822,
+      822,  822,  822,  822,  822,  822,  823,  698,  823,  823,
+      823,  823,  823,  823,  823,  824,  824,  825,  825,  825,
+      696,  825,  825,  826,  694,  693,  826,  826,  827,  827,
+      828,  692,  691,  828,  828,  829,  829,  830,  830,  689,
+      830,  830,  831,  688,  831,  831,  831,  831,  831,  831,
+      831,  832,  687,  832,  832,  832,  832,  832,  832,  832,
+
+      833,  686,  685,  833,  833,  834,  684,  683,  834,  834,
+      835,  681,  835,  835,  835,  835,  835,  835,  835,  836,
+      680,  836,  836,  836,  836,  836,  836,  836,  837,  679,
+      677,  837,  837,  838,  838,  839,  839,  839,  839,  839,
+      839,  840,  676,  840,  840,  840,  840,  840,  840,  840,
+      841,  675,  841,  841,  841,  841,  841,  841,  841,  842,
+      674,  673,  842,  842,  843,  843,  672,  843,  843,  844,
+      671,  844,  844,  844,  844,  844,  844,  844,  845,  845,
+      845,  845,  845,  845,  845,  845,  845,  846,  669,  846,
+      846,  846,  846,  846,  846,  846,  847,  668,  667,  847,
+
+      847,  848,  666,  665,  848,  849,  664,  663,  849,  849,
+      850,  850,  850,  659,  850,  850,  851,  851,  851,  652,
+      851,  851,  852,  651,  649,  648,  646,  852,  852,  853,
+      645,  644,  853,  853,  854,  641,  640,  854,  854,  855,
+      639,  638,  855,  855,  856,  856,  636,  856,  856,  857,
+      635,  634,  857,  857,  858,  633,  632,  858,  859,  630,
+      629,  859,  859,  860,  628,  860,  860,  860,  860,  860,
+      860,  860,  861,  627,  861,  861,  861,  861,  861,  861,
+      861,  862,  625,  624,  862,  863,  623,  622,  863,  863,
+      864,  621,  864,  864,  864,  865,  865,  866,  866,  866,
+
+      866,  866,  866,  867,  620,  867,  867,  867,  867,  867,
+      867,  867,  868,  619,  868,  868,  868,  868,  868,  868,
+      868,  869,  617,  616,  869,  869,  870,  615,  614,  870,
+      871,  871,  610,  871,  871,  872,  608,  872,  872,  872,
+      872,  872,  872,  872,  873,  873,  873,  607,  873,  873,
+      874,  874,  874,  606,  874,  874,  875,  601,  600,  875,
+      875,  876,  599,  876,  876,  876,  876,  876,  876,  876,
+      594,  593,  592,  591,  590,  589,  588,  587,  586,  585,
+      584,  583,  580,  579,  577,  574,  573,  571,  570,  569,
+      568,  567,  566,  565,  564,  562,  561,  560,  556,  554,
+
+      553,  552,  551,  550,  549,  548,  547,  546,  545,  544,
+      543,  542,  540,  527,  526,  525,  524,  519,  518,  513,
+      512,  511,  510,  509,  508,  506,  505,  504,  503,  502,
+      501,  499,  498,  497,  496,  495,  494,  493,  492,  490,
+      489,  488,  487,  486,  485,  484,  483,  482,  481,  479,
+      478,  477,  476,  474,  473,  472,  471,  470,  467,  466,
+      465,  464,  463,  462,  455,  454,  453,  452,  451,  450,
+      433,  432,  414,  409,  408,  407,  399,  397,  396,  394,
+      393,  392,  391,  390,  389,  388,  387,  386,  385,  384,
+      383,  382,  381,  379,  378,  377,  368,  367,  366,  365,
+
+      364,  363,  362,  361,  360,  359,  357,  356,  355,  354,
+      353,  352,  351,  350,  349,  348,  347,  346,  331,  330,
+      329,  328,  326,  320,  319,  318,  316,  311,  296,  289,
+      279,  264,  256,  255,  252,  251,  250,  249,  244,  243,
+      242,  224,  222,  215,  214,  212,  206,  205,  197,  196,
       195,  193,  192,  188,  186,  185,  183,  182,  181,  172,
       171,  147,  140,  137,  128,  118,  111,   96,   93,   89,
        87,   85,   84,   83,   82,   79,   74,   67,   36,   34,
-       30,   27,   25,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815
+       30,   27,   25,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[207] =
+static yyconst flex_int32_t yy_rule_can_match_eol[208] =
     {   0,
 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1362,13 +1364,13 @@
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 1, 0, 0,     };
+    0, 0, 0, 0, 0, 1, 0, 0,     };
 
-static yyconst flex_int16_t yy_rule_linenum[206] =
+static yyconst flex_int16_t yy_rule_linenum[207] =
     {   0,
       225,  247,  249,  251,  256,  257,  258,  259,  260,  261,
       262,  263,  264,  265,  266,  267,  269,  270,  271,  272,
@@ -1381,18 +1383,18 @@
       345,  346,  347,  348,  349,  350,  353,  360,  361,  362,
       363,  364,  365,  366,  367,  368,  369,  370,  371,  372,
 
-      373,  375,  376,  377,  378,  379,  380,  381,  384,  389,
-      418,  466,  467,  468,  469,  471,  476,  488,  494,  495,
-      496,  497,  498,  500,  552,  565,  587,  592,  597,  604,
-      605,  620,  625,  626,  631,  632,  633,  635,  651,  705,
-      733,  738,  743,  744,  745,  746,  751,  762,  763,  765,
-      767,  778,  792,  797,  798,  799,  800,  802,  817,  831,
-      860,  885,  887,  892,  902,  907,  925,  931,  938,  971,
-      973,  978, 1014, 1015, 1016, 1018, 1019, 1020, 1021, 1022,
-     1023, 1025, 1026, 1027, 1029, 1034, 1039, 1040, 1043, 1077,
-     1082, 1085, 1086, 1087, 1088, 1090, 1095, 1096, 1097, 1098,
+      373,  375,  376,  377,  378,  379,  380,  381,  383,  388,
+      393,  422,  470,  471,  472,  473,  475,  480,  492,  498,
+      499,  500,  501,  502,  504,  556,  569,  591,  596,  601,
+      608,  609,  624,  629,  630,  635,  636,  637,  639,  655,
+      709,  737,  742,  747,  748,  749,  750,  755,  766,  767,
+      769,  771,  782,  796,  801,  802,  803,  804,  806,  821,
+      835,  864,  889,  891,  896,  906,  911,  929,  935,  942,
+      975,  977,  982, 1018, 1019, 1020, 1022, 1023, 1024, 1025,
+     1026, 1027, 1029, 1030, 1031, 1033, 1038, 1043, 1044, 1047,
+     1081, 1086, 1089, 1090, 1091, 1092, 1094, 1099, 1100, 1101,
 
-     1099, 1101, 1106, 1108, 1110
+     1102, 1103, 1105, 1110, 1112, 1114
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1511,7 +1513,7 @@
 
 /* The PASM state is an exclusive state, recognizing ONLY PASM tokens. */
 
-#line 1515 "pirlexer.c"
+#line 1517 "pirlexer.c"
 
 #define INITIAL 0
 #define MACROHEAD 1
@@ -1821,7 +1823,7 @@
 
 
 
-#line 1825 "pirlexer.c"
+#line 1827 "pirlexer.c"
 
     yylval = yylval_param;
 
@@ -1886,13 +1888,13 @@
             while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                 {
                 yy_current_state = (int) yy_def[yy_current_state];
-                if ( yy_current_state >= 816 )
+                if ( yy_current_state >= 818 )
                     yy_c = yy_meta[(unsigned int) yy_c];
                 }
             yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
             ++yy_cp;
             }
-        while ( yy_current_state != 815 );
+        while ( yy_current_state != 817 );
         yy_cp = yyg->yy_last_accepting_cpos;
         yy_current_state = yyg->yy_last_accepting_state;
 
@@ -1923,13 +1925,13 @@
             {
             if ( yy_act == 0 )
                 fprintf( stderr, "--scanner backing up\n" );
-            else if ( yy_act < 206 )
+            else if ( yy_act < 207 )
                 fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                          (long)yy_rule_linenum[yy_act], yytext );
-            else if ( yy_act == 206 )
+            else if ( yy_act == 207 )
                 fprintf( stderr, "--accepting default rule (\"%s\")\n",
                          yytext );
-            else if ( yy_act == 207 )
+            else if ( yy_act == 208 )
                 fprintf( stderr, "--(end of buffer or a NUL)\n" );
             else
                 fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2518,15 +2520,22 @@
     YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 384 "pir.l"
+#line 383 "pir.l"
+{ yypirerror(yyscanner, yypirget_extra(yyscanner),
+                               "unrecognized sub flag: '%s'", yytext);
+                  }
+    YY_BREAK
+case 110:
+YY_RULE_SETUP
+#line 388 "pir.l"
 { /* copy the string, remove the quotes. */
                     yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext + 1, yyleng - 2);
                     return TK_STRINGC;
                   }
     YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 389 "pir.l"
+#line 393 "pir.l"
 {
                     /* parse yytext, which contains the charset, a ':', and the quoted string */
                     char        *colon = strchr(yytext, ':');
@@ -2556,9 +2565,9 @@
                     return TK_USTRINGC;
                   }
     YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 418 "pir.l"
+#line 422 "pir.l"
 {
                     /* parse yytext, which contains the encoding, a ':', a charset,
                      * a ':', and the quoted string
@@ -2606,37 +2615,37 @@
 
                   }
     YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 466 "pir.l"
+#line 470 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_PREG; }
     YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 467 "pir.l"
+#line 471 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_SREG; }
     YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 468 "pir.l"
+#line 472 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_NREG; }
     YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 469 "pir.l"
+#line 473 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_IREG; }
     YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 471 "pir.l"
+#line 475 "pir.l"
 { /* make the label Id available in the parser. remove the ":" first. */
                     yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext, yyleng - 1);
                     return TK_LABEL;
                   }
     YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 476 "pir.l"
+#line 480 "pir.l"
 { /* give a warning when using PASM registers as PIR identifiers */
                     lexer_state * const lexer = yypirget_extra(yyscanner);
 
@@ -2649,43 +2658,43 @@
                     return TK_IDENT;
                   }
     YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 488 "pir.l"
+#line 492 "pir.l"
 { /* identifier; can be a global (sub or const), local or parrot op */
                     lexer_state * const lexer = yypirget_extra(yyscanner);
                     yylval->sval = dupstr(lexer, yytext);
                     return TK_IDENT;
                   }
     YY_BREAK
-case 119:
-YY_RULE_SETUP
-#line 494 "pir.l"
-{ yylval->dval = atof(yytext); return TK_NUMC; }
-    YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 495 "pir.l"
-{ yylval->ival = atoi(yytext); return TK_INTC; }
+#line 498 "pir.l"
+{ yylval->dval = atof(yytext); return TK_NUMC; }
     YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 496 "pir.l"
+#line 499 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 497 "pir.l"
+#line 500 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 498 "pir.l"
+#line 501 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 500 "pir.l"
+#line 502 "pir.l"
+{ yylval->ival = atoi(yytext); return TK_INTC; }
+    YY_BREAK
+case 125:
+YY_RULE_SETUP
+#line 504 "pir.l"
 { /* XXX some work to be done to disallow $P0 . foo()
                      * spaces should not be allowed.
                      */
@@ -2708,7 +2717,7 @@
 
 
 case YY_STATE_EOF(SCANSTR):
-#line 523 "pir.l"
+#line 527 "pir.l"
 { /* switch back from .macro_const buffer to file. */
                      lexer_state * const lexer = yypirget_extra(yyscanner);
                      yy_pop_state(yyscanner);
@@ -2716,7 +2725,7 @@
                    }
     YY_BREAK
 case YY_STATE_EOF(SCANMACRO):
-#line 529 "pir.l"
+#line 533 "pir.l"
 { /* override the default <<EOF>> action; go back to normal state and
                       * switch back to the saved file.
                       */
@@ -2740,9 +2749,9 @@
 
                    }
     YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 552 "pir.l"
+#line 556 "pir.l"
 { /* when scanning a macro body, the @ marker indicates the {IDENT} must
                           * be munged.
                           */
@@ -2753,14 +2762,14 @@
                        }
     YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 561 "pir.l"
+#line 565 "pir.l"
 { /* end of file, stop scanning. */
                     yyterminate();
                   }
     YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 565 "pir.l"
+#line 569 "pir.l"
 { /* any character not covered in the rules above is an error. */
                     yypirerror(yyscanner, yypirget_extra(yyscanner),
                                "unexpected character: '%c'", yytext[0]);
@@ -2779,25 +2788,25 @@
 /********************** .macro_const ****************************************/
 
 
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 587 "pir.l"
+#line 591 "pir.l"
 {
                                yy_push_state(MACROCONST, yyscanner);
                                return TK_MACRO_CONST;
                              }
     YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 592 "pir.l"
+#line 596 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_IDENT;
                              }
     YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 597 "pir.l"
+#line 601 "pir.l"
 {
                                /* only these tokens can be macro constant values */
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
@@ -2805,21 +2814,21 @@
                                return TK_MACRO_CONST_VAL;
                              }
     YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 604 "pir.l"
+#line 608 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 605 "pir.l"
+#line 609 "pir.l"
 {
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "unknown character: '%c'", yytext[0]);
                              }
     YY_BREAK
 case YY_STATE_EOF(MACROCONST):
-#line 609 "pir.l"
+#line 613 "pir.l"
 {
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "read end of file during .macro_const definition");
@@ -2830,46 +2839,46 @@
 /**************** macro header (.macro <ident> <parameters> ) ***************/
 
 
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 620 "pir.l"
+#line 624 "pir.l"
 { /* start a macro definition */
                                yy_push_state(MACROHEAD, yyscanner);
                                return TK_MACRO;
                              }
     YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 625 "pir.l"
+#line 629 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 626 "pir.l"
+#line 630 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_IDENT;
                              }
     YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 631 "pir.l"
+#line 635 "pir.l"
 { return '('; }
     YY_BREAK
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 632 "pir.l"
+#line 636 "pir.l"
 { return ')'; }
     YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 633 "pir.l"
+#line 637 "pir.l"
 { return ','; }
     YY_BREAK
-case 138:
-/* rule 138 can match eol */
+case 139:
+/* rule 139 can match eol */
 YY_RULE_SETUP
-#line 635 "pir.l"
+#line 639 "pir.l"
 { /* a set of continuous newlines yields a single newline token. */
                                yy_pop_state(yyscanner); /* remove MACROHEAD state */
                                yy_push_state(MACROBODY, yyscanner); /* enter MACROBODY state */
@@ -2885,9 +2894,9 @@
  */
 
 
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 651 "pir.l"
+#line 655 "pir.l"
 { /* .foo; it can be a macro, macro_local, or just $P0.foo(),
                                 * but we need to check that.
                                 */
@@ -2942,9 +2951,9 @@
                                }
                              }
     YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 705 "pir.l"
+#line 709 "pir.l"
 { /* expand a .macro_const or parameter in argument list */
                                lexer_state * const lexer = yypirget_extra(yyscanner);
                                macro_def   * const macro = find_macro(lexer->macros, yytext + 1);
@@ -2973,80 +2982,80 @@
                                    yypirerror(yyscanner, lexer, "'%s' is not a macro", yytext + 1);
                              }
     YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 733 "pir.l"
+#line 737 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_IDENT;
                              }
     YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 738 "pir.l"
+#line 742 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_OTHER;
                              }
     YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 743 "pir.l"
+#line 747 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 744 "pir.l"
+#line 748 "pir.l"
 { return ','; }
     YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 745 "pir.l"
+#line 749 "pir.l"
 { return '('; }
     YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 746 "pir.l"
+#line 750 "pir.l"
 {
                                yy_pop_state(yyscanner); /* leave MACROEXPAND state */
                                return ')';
                              }
     YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 751 "pir.l"
+#line 755 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_OTHER;
                              }
     YY_BREAK
 case YY_STATE_EOF(STRINGEXPAND):
-#line 756 "pir.l"
+#line 760 "pir.l"
 {
                                lexer_state * const lexer = yypirget_extra(yyscanner);
                                yy_pop_state(yyscanner);
                                yypir_switch_to_buffer(lexer->buffer,yyscanner);
                              }
     YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 762 "pir.l"
+#line 766 "pir.l"
 { return '{'; }
     YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 763 "pir.l"
+#line 767 "pir.l"
 { return '}'; }
     YY_BREAK
-case 150:
-/* rule 150 can match eol */
+case 151:
+/* rule 151 can match eol */
 YY_RULE_SETUP
-#line 765 "pir.l"
+#line 769 "pir.l"
 { yylval->sval = "\n"; return TK_NL; }
     YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 767 "pir.l"
+#line 771 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "unknown character in macro expansion: %c", yytext[0]);
                              }
@@ -3056,9 +3065,9 @@
 /******************************** .macro_local *****************************/
 
 
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 778 "pir.l"
+#line 782 "pir.l"
 { /* give a warning if the right flag is set */
                               /*
                               lexer_state * const lexer = yypirget_extra(yyscanner);
@@ -3072,37 +3081,37 @@
                               */
                             }
     YY_BREAK
-case 153:
+case 154:
 YY_RULE_SETUP
-#line 792 "pir.l"
+#line 796 "pir.l"
 {
                               yy_push_state(MACROLOCAL, yyscanner);
                               return TK_MACRO_LOCAL;
                             }
     YY_BREAK
-case 154:
+case 155:
 YY_RULE_SETUP
-#line 797 "pir.l"
+#line 801 "pir.l"
 { return TK_INT; }
     YY_BREAK
-case 155:
+case 156:
 YY_RULE_SETUP
-#line 798 "pir.l"
+#line 802 "pir.l"
 { return TK_PMC; }
     YY_BREAK
-case 156:
+case 157:
 YY_RULE_SETUP
-#line 799 "pir.l"
+#line 803 "pir.l"
 { return TK_NUM; }
     YY_BREAK
-case 157:
+case 158:
 YY_RULE_SETUP
-#line 800 "pir.l"
+#line 804 "pir.l"
 { return TK_STRING; }
     YY_BREAK
-case 158:
+case 159:
 YY_RULE_SETUP
-#line 802 "pir.l"
+#line 806 "pir.l"
 { /* normal .macro_local */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               /* reserve space for {IDENT}, the @ marker and the NULL char. */
@@ -3118,9 +3127,9 @@
                               return TK_MACRO_LOCAL_ID;
                             }
     YY_BREAK
-case 159:
+case 160:
 YY_RULE_SETUP
-#line 817 "pir.l"
+#line 821 "pir.l"
 { /* declare a .macro_local based on a parameter */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
 
@@ -3135,9 +3144,9 @@
 
                             }
     YY_BREAK
-case 160:
+case 161:
 YY_RULE_SETUP
-#line 831 "pir.l"
+#line 835 "pir.l"
 { /* .$foo */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               macro_table * const table = peek_macro_table(lexer);
@@ -3167,9 +3176,9 @@
 
                             }
     YY_BREAK
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 860 "pir.l"
+#line 864 "pir.l"
 { /* expanding a .macro_local using a macro parameter value */
                              lexer_state * const lexer     = yypirget_extra(yyscanner);
                              char  const * const paramname = dupstrn(lexer, yytext + 1, yyleng - 2);
@@ -3195,23 +3204,23 @@
                              return TK_IDENT;
                            }
     YY_BREAK
-case 162:
+case 163:
 YY_RULE_SETUP
-#line 885 "pir.l"
+#line 889 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
-case 163:
-/* rule 163 can match eol */
+case 164:
+/* rule 164 can match eol */
 YY_RULE_SETUP
-#line 887 "pir.l"
+#line 891 "pir.l"
 { /* newline after .macro_local <type> <ident> line */
                               yy_pop_state(yyscanner);
                               return TK_NL;
                             }
     YY_BREAK
-case 164:
+case 165:
 YY_RULE_SETUP
-#line 892 "pir.l"
+#line 896 "pir.l"
 { /* this state is only used for declaring .macro_locals */
                               yypirerror(yyscanner, yypirget_extra(yyscanner),
                                  "unknown character '%c' when declaring .macro_local", yytext[0]);
@@ -3222,17 +3231,17 @@
 /****************************** .macro_label ********************************/
 
 
-case 165:
+case 166:
 YY_RULE_SETUP
-#line 902 "pir.l"
+#line 906 "pir.l"
 {
                               yy_push_state(MACROLABEL, yyscanner);
                               return TK_MACRO_LABEL;
                             }
     YY_BREAK
-case 166:
+case 167:
 YY_RULE_SETUP
-#line 907 "pir.l"
+#line 911 "pir.l"
 { /* if the "$" is there, it's a macro label using a macro
                                * parameter's value; otherwise it's a normal macro label
                                */
@@ -3250,18 +3259,18 @@
                               return TK_MACRO_LABEL_ID;
                             }
     YY_BREAK
-case 167:
-/* rule 167 can match eol */
+case 168:
+/* rule 168 can match eol */
 YY_RULE_SETUP
-#line 925 "pir.l"
+#line 929 "pir.l"
 { /* the newline character after a ".macro_label $foo:" declaration */
                               yy_pop_state(yyscanner); /* leave MACROLABEL state */
                               return TK_NL;
                             }
     YY_BREAK
-case 168:
+case 169:
 YY_RULE_SETUP
-#line 931 "pir.l"
+#line 935 "pir.l"
 { /* scan a label when expanding a buffer; declared as .macro_label */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               char const  * const label = dupstrn(lexer, yytext, yyleng - 2);
@@ -3269,9 +3278,9 @@
                               return TK_LABEL;
                             }
     YY_BREAK
-case 169:
+case 170:
 YY_RULE_SETUP
-#line 938 "pir.l"
+#line 942 "pir.l"
 { /* scan a label when expanding macro; was a macro parameter */
                              lexer_state * const lexer     = yypirget_extra(yyscanner);
                              char const  * const paramname = dupstrn(lexer, yytext + 1, yyleng - 3);
@@ -3303,29 +3312,29 @@
 /*************************** macro body scanning (storing) ****************************/
 
 
-case 170:
-/* rule 170 can match eol */
+case 171:
+/* rule 171 can match eol */
 YY_RULE_SETUP
-#line 971 "pir.l"
+#line 975 "pir.l"
 { store_macro_char(CURRENT_MACRO(yypirget_extra(yyscanner)), '\n'); }
     YY_BREAK
-case 171:
+case 172:
 YY_RULE_SETUP
-#line 973 "pir.l"
+#line 977 "pir.l"
 {
                                yy_pop_state(yyscanner); /* leave MACROBODY state */
                                return TK_ENDM;
                              }
     YY_BREAK
-case 172:
+case 173:
 YY_RULE_SETUP
-#line 978 "pir.l"
+#line 982 "pir.l"
 { /* store everything else */
                                store_macro_char(CURRENT_MACRO(yypirget_extra(yyscanner)), yytext[0]);
                              }
     YY_BREAK
 case YY_STATE_EOF(MACROBODY):
-#line 982 "pir.l"
+#line 986 "pir.l"
 { /* catch run-away macro bodys */
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "read end of file while reading macro body");
@@ -3355,95 +3364,95 @@
  * This becomes unmanageable
  */
 
-case 173:
+case 174:
 YY_RULE_SETUP
-#line 1014 "pir.l"
+#line 1018 "pir.l"
 { return ','; }
     YY_BREAK
-case 174:
+case 175:
 YY_RULE_SETUP
-#line 1015 "pir.l"
+#line 1019 "pir.l"
 { return '['; }
     YY_BREAK
-case 175:
+case 176:
 YY_RULE_SETUP
-#line 1016 "pir.l"
+#line 1020 "pir.l"
 { return ']'; }
     YY_BREAK
-case 176:
+case 177:
 YY_RULE_SETUP
-#line 1018 "pir.l"
+#line 1022 "pir.l"
 { return TK_FLAG_MAIN; }
     YY_BREAK
-case 177:
+case 178:
 YY_RULE_SETUP
-#line 1019 "pir.l"
+#line 1023 "pir.l"
 { return TK_FLAG_LOAD; }
     YY_BREAK
-case 178:
+case 179:
 YY_RULE_SETUP
-#line 1020 "pir.l"
+#line 1024 "pir.l"
 { return TK_FLAG_INIT; }
     YY_BREAK
-case 179:
+case 180:
 YY_RULE_SETUP
-#line 1021 "pir.l"
+#line 1025 "pir.l"
 { return TK_FLAG_ANON; }
     YY_BREAK
-case 180:
+case 181:
 YY_RULE_SETUP
-#line 1022 "pir.l"
+#line 1026 "pir.l"
 { return TK_FLAG_POSTCOMP; }
     YY_BREAK
-case 181:
+case 182:
 YY_RULE_SETUP
-#line 1023 "pir.l"
+#line 1027 "pir.l"
 { return TK_FLAG_IMMEDIATE; }
     YY_BREAK
-case 182:
+case 183:
 YY_RULE_SETUP
-#line 1025 "pir.l"
+#line 1029 "pir.l"
 { return TK_PCC_SUB; }
     YY_BREAK
-case 183:
+case 184:
 YY_RULE_SETUP
-#line 1026 "pir.l"
+#line 1030 "pir.l"
 { return TK_LEX; }
     YY_BREAK
-case 184:
+case 185:
 YY_RULE_SETUP
-#line 1027 "pir.l"
+#line 1031 "pir.l"
 { return TK_NAMESPACE; }
     YY_BREAK
-case 185:
+case 186:
 YY_RULE_SETUP
-#line 1029 "pir.l"
+#line 1033 "pir.l"
 {
                           yy_push_state(MACROHEAD, yyscanner);
                           return TK_MACRO;
                         }
     YY_BREAK
-case 186:
+case 187:
 YY_RULE_SETUP
-#line 1034 "pir.l"
+#line 1038 "pir.l"
 {
                           yy_push_state(MACROCONST, yyscanner);
                           return TK_MACRO_CONST;
                         }
     YY_BREAK
-case 187:
+case 188:
 YY_RULE_SETUP
-#line 1039 "pir.l"
+#line 1043 "pir.l"
 { return TK_LINE; }
     YY_BREAK
-case 188:
+case 189:
 YY_RULE_SETUP
-#line 1040 "pir.l"
+#line 1044 "pir.l"
 { return TK_FILE; }
     YY_BREAK
-case 189:
+case 190:
 YY_RULE_SETUP
-#line 1043 "pir.l"
+#line 1047 "pir.l"
 { /* macro expansion in PASM mode. */
                           lexer_state * const lexer = yypirget_extra(yyscanner);
                           macro_def   * const macro = find_macro(lexer->macros, yytext + 1);
@@ -3478,110 +3487,110 @@
                           }
                         }
     YY_BREAK
-case 190:
+case 191:
 YY_RULE_SETUP
-#line 1077 "pir.l"
+#line 1081 "pir.l"
 { /* a label in PASM */
                           yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext, yyleng - 1);
                           return TK_LABEL;
                         }
     YY_BREAK
-case 191:
+case 192:
 YY_RULE_SETUP
-#line 1082 "pir.l"
+#line 1086 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                      "symbolic registers are not allowed in PASM mode");
                         }
     YY_BREAK
-case 192:
+case 193:
 YY_RULE_SETUP
-#line 1085 "pir.l"
+#line 1089 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_PREG; }
     YY_BREAK
-case 193:
+case 194:
 YY_RULE_SETUP
-#line 1086 "pir.l"
+#line 1090 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_NREG; }
     YY_BREAK
-case 194:
+case 195:
 YY_RULE_SETUP
-#line 1087 "pir.l"
+#line 1091 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_IREG; }
     YY_BREAK
-case 195:
+case 196:
 YY_RULE_SETUP
-#line 1088 "pir.l"
+#line 1092 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_SREG; }
     YY_BREAK
-case 196:
+case 197:
 YY_RULE_SETUP
-#line 1090 "pir.l"
+#line 1094 "pir.l"
 { /* can be a parrot op or a label; the check is done in the parser. */
                           yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                           return TK_IDENT;
                         }
     YY_BREAK
-case 197:
-YY_RULE_SETUP
-#line 1095 "pir.l"
-{ yylval->dval = atof(yytext); return TK_NUMC; }
-    YY_BREAK
 case 198:
 YY_RULE_SETUP
-#line 1096 "pir.l"
-{ yylval->ival = atoi(yytext); return TK_INTC; }
+#line 1099 "pir.l"
+{ yylval->dval = atof(yytext); return TK_NUMC; }
     YY_BREAK
 case 199:
 YY_RULE_SETUP
-#line 1097 "pir.l"
+#line 1100 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 200:
 YY_RULE_SETUP
-#line 1098 "pir.l"
+#line 1101 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 201:
 YY_RULE_SETUP
-#line 1099 "pir.l"
+#line 1102 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 202:
 YY_RULE_SETUP
-#line 1101 "pir.l"
+#line 1103 "pir.l"
+{ yylval->ival = atoi(yytext); return TK_INTC; }
+    YY_BREAK
+case 203:
+YY_RULE_SETUP
+#line 1105 "pir.l"
 { /* copy the string, remove the quotes. */
                           yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext + 1, yyleng - 2);
                           return TK_STRINGC;
                         }
     YY_BREAK
-case 203:
+case 204:
 YY_RULE_SETUP
-#line 1106 "pir.l"
+#line 1110 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
-case 204:
-/* rule 204 can match eol */
+case 205:
+/* rule 205 can match eol */
 YY_RULE_SETUP
-#line 1108 "pir.l"
+#line 1112 "pir.l"
 { return TK_NL; }
     YY_BREAK
-case 205:
+case 206:
 YY_RULE_SETUP
-#line 1110 "pir.l"
+#line 1114 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                      "unrecognized character: %c", yytext[0]);
                         }
     YY_BREAK
 case YY_STATE_EOF(PASM):
-#line 1113 "pir.l"
+#line 1117 "pir.l"
 { yyterminate(); }
     YY_BREAK
-case 206:
+case 207:
 YY_RULE_SETUP
-#line 1115 "pir.l"
+#line 1119 "pir.l"
 ECHO;
     YY_BREAK
-#line 3585 "pirlexer.c"
+#line 3594 "pirlexer.c"
 case YY_STATE_EOF(MACROHEAD):
 case YY_STATE_EOF(MACROLOCAL):
 case YY_STATE_EOF(MACROLABEL):
@@ -3893,7 +3902,7 @@
         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
             {
             yy_current_state = (int) yy_def[yy_current_state];
-            if ( yy_current_state >= 816 )
+            if ( yy_current_state >= 818 )
                 yy_c = yy_meta[(unsigned int) yy_c];
             }
         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3927,11 +3936,11 @@
     while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
         {
         yy_current_state = (int) yy_def[yy_current_state];
-        if ( yy_current_state >= 816 )
+        if ( yy_current_state >= 818 )
             yy_c = yy_meta[(unsigned int) yy_c];
         }
     yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-    yy_is_jam = (yy_current_state == 815);
+    yy_is_jam = (yy_current_state == 817);
 
     return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4835,7 +4844,7 @@
 
 /* %ok-for-header */
 
-#line 1115 "pir.l"
+#line 1119 "pir.l"
 
 
 

Modified: trunk/compilers/pirc/src/pirlexer.h
==============================================================================
--- trunk/compilers/pirc/src/pirlexer.h	(original)
+++ trunk/compilers/pirc/src/pirlexer.h	Mon Jan  5 03:00:08 2009
@@ -9,7 +9,7 @@
  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
  *
  * This file is generated automatically by the Parrot build process
- * from the file compilers/pirc/src/pir.l.
+ * from the file compilers/pirc/new/pir.l.
  *
  * Any changes made here will be lost!
  *
@@ -492,7 +492,7 @@
 #undef YY_DECL
 #endif
 
-#line 1115 "pir.l"
+#line 1119 "pir.l"
 
 
 #line 499 "pirlexer.h"

Modified: trunk/compilers/pirc/src/pirparser.c
==============================================================================
--- trunk/compilers/pirc/src/pirparser.c	(original)
+++ trunk/compilers/pirc/src/pirparser.c	Mon Jan  5 03:00:08 2009
@@ -815,16 +815,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  10
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1076
+#define YYLAST   1079
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  139
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  171
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  428
+#define YYNRULES  430
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  667
+#define YYNSTATES  669
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -883,38 +883,38 @@
 {
        0,     0,     3,     6,     9,    13,    14,    16,    18,    22,
       24,    26,    28,    30,    32,    34,    36,    38,    40,    42,
-      44,    48,    56,    59,    60,    62,    64,    68,    70,    71,
-      73,    75,    78,    81,    83,    85,    88,    92,    95,    98,
-     101,   106,   109,   114,   119,   120,   122,   124,   128,   130,
-     137,   139,   142,   144,   146,   147,   150,   152,   154,   156,
-     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,
+      44,    46,    48,    52,    60,    63,    64,    66,    68,    72,
+      74,    75,    77,    79,    82,    85,    87,    89,    92,    96,
+      99,   102,   105,   110,   113,   118,   123,   124,   126,   128,
+     132,   134,   141,   143,   146,   148,   150,   151,   154,   156,
+     158,   160,   162,   164,   166,   168,   171,   176,   179,   182,
+     185,   188,   191,   195,   196,   198,   200,   204,   206,   208,
+     210,   212,   213,   216,   221,   224,   225,   228,   230,   232,
+     234,   239,   241,   242,   245,   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,   875,   876,   879,   881,   883,   885,   888,   890,
-     892,   894,   896,   898,   902,   906,   910,   914,   915,   917,
-     919,   923,   925,   927,   931,   934,   936,   942,   948,   949,
-     951,   953,   956,   960,   961,   963,   965,   968,   972,   973,
-     976,   978,   981,   982,   984,   988,   991,   994,   996,   998,
-    1001,  1003,  1005,  1008,  1013,  1018,  1023,  1028,  1030,  1032,
+     278,   280,   282,   286,   287,   291,   292,   294,   296,   300,
+     302,   304,   307,   309,   313,   314,   317,   319,   321,   323,
+     326,   328,   331,   334,   338,   342,   345,   348,   350,   352,
+     354,   356,   357,   359,   361,   365,   369,   371,   373,   375,
+     377,   379,   381,   384,   388,   390,   394,   401,   406,   413,
+     416,   418,   420,   424,   428,   432,   436,   440,   444,   449,
+     454,   459,   463,   467,   471,   475,   479,   483,   487,   492,
+     498,   503,   508,   512,   516,   520,   524,   528,   532,   536,
+     540,   543,   549,   555,   561,   567,   573,   579,   585,   591,
+     597,   602,   608,   613,   618,   623,   628,   633,   638,   643,
+     648,   653,   658,   663,   668,   673,   677,   681,   685,   689,
+     693,   697,   701,   705,   709,   713,   717,   721,   723,   725,
+     727,   729,   731,   733,   737,   742,   744,   748,   751,   752,
+     754,   760,   762,   764,   766,   775,   776,   778,   780,   783,
+     787,   791,   794,   800,   801,   804,   805,   807,   809,   812,
+     816,   818,   821,   825,   829,   831,   833,   835,   840,   843,
+     845,   847,   849,   851,   853,   855,   857,   859,   863,   864,
+     866,   868,   872,   875,   879,   880,   883,   885,   887,   889,
+     892,   894,   896,   898,   900,   902,   906,   910,   914,   918,
+     919,   921,   923,   927,   929,   931,   935,   938,   940,   946,
+     952,   953,   955,   957,   960,   964,   965,   967,   969,   972,
+     976,   977,   980,   982,   985,   986,   988,   992,   995,   998,
+    1000,  1002,  1005,  1007,  1009,  1012,  1017,  1022,  1027,  1032,
     1034,  1036,  1038,  1040,  1042,  1044,  1046,  1048,  1050,  1052,
     1054,  1056,  1058,  1060,  1062,  1064,  1066,  1068,  1070,  1072,
     1074,  1076,  1078,  1080,  1082,  1084,  1086,  1088,  1090,  1092,
@@ -922,8 +922,9 @@
     1114,  1116,  1118,  1120,  1122,  1124,  1126,  1128,  1130,  1132,
     1134,  1136,  1138,  1140,  1142,  1144,  1146,  1148,  1150,  1152,
     1154,  1156,  1158,  1160,  1162,  1164,  1166,  1168,  1170,  1172,
-    1174,  1176,  1179,  1181,  1183,  1186,  1188,  1191,  1193,  1196,
-    1199,  1201,  1204,  1207,  1209,  1211,  1213,  1217,  1219
+    1174,  1176,  1178,  1180,  1183,  1185,  1187,  1190,  1192,  1195,
+    1197,  1200,  1203,  1205,  1208,  1211,  1213,  1215,  1217,  1221,
+    1223
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -931,175 +932,176 @@
 {
      140,     0,    -1,   116,   141,    -1,   115,   301,    -1,   142,
      143,   142,    -1,    -1,    35,    -1,   144,    -1,   143,    35,
-     144,    -1,   167,    -1,   280,    -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,   296,    -1,    -1,
-     150,    -1,   151,    -1,   150,   121,   151,    -1,   296,    -1,
-      -1,   153,    -1,   154,    -1,   153,   154,    -1,   155,    35,
-      -1,   156,    -1,   157,    -1,   107,   109,    -1,   106,   292,
-     110,    -1,     5,    46,    -1,    10,    48,    -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,   177,   185,   168,    -1,     7,    -1,     6,
-     170,    -1,   296,    -1,    46,    -1,    -1,   171,   172,    -1,
-      86,    -1,    83,    -1,    84,    -1,    85,    -1,    90,    -1,
-      92,    -1,    93,    -1,    91,   173,    -1,    88,   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,
-     296,    -1,    46,    -1,   212,    -1,   178,    -1,    -1,   178,
-     179,    -1,     8,   180,   181,    35,    -1,   292,   296,    -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,   293,    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,   288,    -1,   210,    -1,   212,    -1,   289,
-      -1,   296,    -1,   295,    -1,   211,    -1,   249,   212,    -1,
-     123,   213,   124,    -1,   288,    -1,   213,   125,   288,    -1,
-     293,   122,   204,   210,   121,   207,    -1,   293,   122,   204,
-     210,    -1,   293,   122,   204,   212,   121,   207,    -1,   217,
-      35,    -1,    37,    -1,   297,    -1,   293,   122,    48,    -1,
-     293,   122,    49,    -1,   293,   122,   290,    -1,   293,   122,
-     295,    -1,   293,   122,   216,    -1,   293,   122,   218,    -1,
-     293,   122,   204,   212,    -1,   293,   122,   297,   212,    -1,
-     293,   122,    50,   212,    -1,   293,   300,   288,    -1,   293,
-      72,    48,    -1,   293,    72,    49,    -1,   293,    73,    48,
-      -1,   293,    73,    49,    -1,   293,    72,   293,    -1,   293,
-      73,   293,    -1,   293,   122,   298,   288,    -1,   293,   122,
-     293,   299,   288,    -1,   297,   212,   122,   288,    -1,    50,
-     212,   122,   288,    -1,    48,   299,   293,    -1,    49,   299,
-     293,    -1,    46,   299,   293,    -1,    46,   299,    46,    -1,
-      48,   299,    48,    -1,    49,   299,    49,    -1,    48,   299,
-      49,    -1,    49,   299,    48,    -1,   220,    35,    -1,   223,
-      44,    37,    45,   296,    -1,   223,    44,    38,    45,   296,
-      -1,   223,    44,    39,    45,   296,    -1,   223,    44,    40,
-      45,   296,    -1,   223,    44,    41,    45,   296,    -1,   223,
-      44,    42,    45,   296,    -1,   223,    44,    43,    45,   296,
-      -1,   223,    44,    45,    45,   296,    -1,   223,    44,    44,
-      45,   296,    -1,   223,   289,   224,   296,    -1,   223,    44,
-      50,   224,   296,    -1,   223,    37,   224,   296,    -1,   223,
-     295,   224,   296,    -1,   223,    38,   224,   296,    -1,   223,
-      39,   224,   296,    -1,   223,    40,   224,   296,    -1,   223,
-      41,   224,   296,    -1,   223,    42,   224,   296,    -1,   223,
-      43,   224,   296,    -1,   223,    45,    45,   296,    -1,   223,
-      45,   121,   296,    -1,   223,    44,    45,   296,    -1,   223,
-      44,   121,   296,    -1,   223,   221,    45,   296,    -1,   293,
-     291,   288,    -1,    48,   291,   293,    -1,    49,   291,   293,
-      -1,    46,   291,   293,    -1,    48,   291,    48,    -1,    48,
-     291,    49,    -1,    49,   291,    48,    -1,    49,   291,    49,
-      -1,    46,   291,    46,    -1,    46,   291,   222,    -1,    48,
-     291,    46,    -1,    49,   291,    46,    -1,    48,    -1,    49,
-      -1,    42,    -1,    43,    -1,    45,    -1,   121,    -1,    45,
-     296,    35,    -1,    12,   292,   227,    35,    -1,   228,    -1,
-     227,   121,   228,    -1,   296,   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,   293,   122,   244,    -1,   244,    -1,   246,    -1,   245,
-      -1,   249,   128,   248,   260,    -1,   247,   260,    -1,   249,
-      -1,    46,    -1,   296,    -1,    50,    -1,    52,    -1,    46,
-      -1,   296,    -1,    50,    -1,   119,   251,   120,    -1,    -1,
-     252,    -1,   253,    -1,   252,   121,   253,    -1,   293,   254,
-      -1,    46,    54,   293,    -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,   288,    -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,   281,    35,
-      -1,    17,   285,    -1,   282,    -1,   284,    -1,    17,   283,
-      -1,   285,    -1,   286,    -1,    16,   283,    -1,    38,   296,
-     122,    48,    -1,    39,   296,   122,    49,    -1,    41,   296,
-     122,   290,    -1,    46,   296,   122,   287,    -1,   289,    -1,
-     296,    -1,   293,    -1,   289,    -1,    48,    -1,    49,    -1,
-     290,    -1,    46,    -1,    47,    -1,    55,    -1,    56,    -1,
-      57,    -1,    58,    -1,    60,    -1,    59,    -1,    38,    -1,
-      39,    -1,    40,    -1,    41,    -1,   294,    -1,   295,    -1,
-     296,    -1,    50,    -1,    51,    -1,    53,    -1,    52,    -1,
-      37,    -1,   297,    -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,   302,   303,    -1,   142,
-      -1,   304,    -1,   303,   304,    -1,   305,    -1,   163,    35,
-      -1,   230,    -1,   159,    35,    -1,   145,    35,    -1,   189,
-      -1,    36,   306,    -1,   307,   306,    -1,   309,    -1,   197,
-      -1,   309,    -1,   308,   171,    36,    -1,   117,    -1,   204,
-     206,    35,    -1
+     144,    -1,     1,    -1,   167,    -1,   280,    -1,   163,    -1,
+     161,    -1,   162,    -1,   158,    -1,   159,    -1,   160,    -1,
+     145,    -1,   199,    -1,   146,    -1,   147,    -1,   108,    37,
+     114,    -1,   148,   119,   149,   120,    35,   152,   105,    -1,
+     104,   296,    -1,    -1,   150,    -1,   151,    -1,   150,   121,
+     151,    -1,   296,    -1,    -1,   153,    -1,   154,    -1,   153,
+     154,    -1,   155,    35,    -1,   156,    -1,   157,    -1,   107,
+     109,    -1,   106,   292,   110,    -1,     5,    46,    -1,    10,
+      48,    -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,   177,   185,   168,
+      -1,     7,    -1,     6,   170,    -1,   296,    -1,    46,    -1,
+      -1,   171,   172,    -1,    86,    -1,    83,    -1,    84,    -1,
+      85,    -1,    90,    -1,    92,    -1,    93,    -1,    91,   173,
+      -1,    88,   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,   296,    -1,    46,    -1,   212,    -1,
+     178,    -1,    -1,   178,   179,    -1,     8,   180,   181,    35,
+      -1,   292,   296,    -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,   293,    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,   288,    -1,   210,
+      -1,   212,    -1,   289,    -1,   296,    -1,   295,    -1,   211,
+      -1,   249,   212,    -1,   123,   213,   124,    -1,   288,    -1,
+     213,   125,   288,    -1,   293,   122,   204,   210,   121,   207,
+      -1,   293,   122,   204,   210,    -1,   293,   122,   204,   212,
+     121,   207,    -1,   217,    35,    -1,    37,    -1,   297,    -1,
+     293,   122,    48,    -1,   293,   122,    49,    -1,   293,   122,
+     290,    -1,   293,   122,   295,    -1,   293,   122,   216,    -1,
+     293,   122,   218,    -1,   293,   122,   204,   212,    -1,   293,
+     122,   297,   212,    -1,   293,   122,    50,   212,    -1,   293,
+     300,   288,    -1,   293,    72,    48,    -1,   293,    72,    49,
+      -1,   293,    73,    48,    -1,   293,    73,    49,    -1,   293,
+      72,   293,    -1,   293,    73,   293,    -1,   293,   122,   298,
+     288,    -1,   293,   122,   293,   299,   288,    -1,   297,   212,
+     122,   288,    -1,    50,   212,   122,   288,    -1,    48,   299,
+     293,    -1,    49,   299,   293,    -1,    46,   299,   293,    -1,
+      46,   299,    46,    -1,    48,   299,    48,    -1,    49,   299,
+      49,    -1,    48,   299,    49,    -1,    49,   299,    48,    -1,
+     220,    35,    -1,   223,    44,    37,    45,   296,    -1,   223,
+      44,    38,    45,   296,    -1,   223,    44,    39,    45,   296,
+      -1,   223,    44,    40,    45,   296,    -1,   223,    44,    41,
+      45,   296,    -1,   223,    44,    42,    45,   296,    -1,   223,
+      44,    43,    45,   296,    -1,   223,    44,    45,    45,   296,
+      -1,   223,    44,    44,    45,   296,    -1,   223,   289,   224,
+     296,    -1,   223,    44,    50,   224,   296,    -1,   223,    37,
+     224,   296,    -1,   223,   295,   224,   296,    -1,   223,    38,
+     224,   296,    -1,   223,    39,   224,   296,    -1,   223,    40,
+     224,   296,    -1,   223,    41,   224,   296,    -1,   223,    42,
+     224,   296,    -1,   223,    43,   224,   296,    -1,   223,    45,
+      45,   296,    -1,   223,    45,   121,   296,    -1,   223,    44,
+      45,   296,    -1,   223,    44,   121,   296,    -1,   223,   221,
+      45,   296,    -1,   293,   291,   288,    -1,    48,   291,   293,
+      -1,    49,   291,   293,    -1,    46,   291,   293,    -1,    48,
+     291,    48,    -1,    48,   291,    49,    -1,    49,   291,    48,
+      -1,    49,   291,    49,    -1,    46,   291,    46,    -1,    46,
+     291,   222,    -1,    48,   291,    46,    -1,    49,   291,    46,
+      -1,    48,    -1,    49,    -1,    42,    -1,    43,    -1,    45,
+      -1,   121,    -1,    45,   296,    35,    -1,    12,   292,   227,
+      35,    -1,   228,    -1,   227,   121,   228,    -1,   296,   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,   293,   122,   244,    -1,   244,
+      -1,   246,    -1,   245,    -1,   249,   128,   248,   260,    -1,
+     247,   260,    -1,   249,    -1,    46,    -1,   296,    -1,    50,
+      -1,    52,    -1,    46,    -1,   296,    -1,    50,    -1,   119,
+     251,   120,    -1,    -1,   252,    -1,   253,    -1,   252,   121,
+     253,    -1,   293,   254,    -1,    46,    54,   293,    -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,   288,    -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,   281,    35,    -1,    17,   285,    -1,   282,    -1,
+     284,    -1,    17,   283,    -1,   285,    -1,   286,    -1,    16,
+     283,    -1,    38,   296,   122,    48,    -1,    39,   296,   122,
+      49,    -1,    41,   296,   122,   290,    -1,    46,   296,   122,
+     287,    -1,   289,    -1,   296,    -1,   293,    -1,   289,    -1,
+      48,    -1,    49,    -1,   290,    -1,    46,    -1,    47,    -1,
+      55,    -1,    56,    -1,    57,    -1,    58,    -1,    60,    -1,
+      59,    -1,    38,    -1,    39,    -1,    40,    -1,    41,    -1,
+     294,    -1,   295,    -1,   296,    -1,    50,    -1,    51,    -1,
+      53,    -1,    52,    -1,    37,    -1,   297,    -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,
+     302,   303,    -1,   142,    -1,   304,    -1,   303,   304,    -1,
+     305,    -1,   163,    35,    -1,   230,    -1,   159,    35,    -1,
+     145,    35,    -1,   189,    -1,    36,   306,    -1,   307,   306,
+      -1,   309,    -1,   197,    -1,   309,    -1,   308,   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,   561,   561,   562,   567,   573,   574,   577,   578,   581,
-     582,   583,   584,   585,   586,   587,   588,   589,   596,   597,
-     600,   604,   610,   617,   618,   621,   622,   625,   629,   630,
-     633,   634,   637,   640,   641,   644,   648,   659,   663,   665,
-     669,   675,   679,   683,   688,   689,   693,   695,   699,   703,
-     709,   713,   717,   718,   721,   722,   725,   727,   729,   731,
-     733,   735,   737,   739,   741,   743,   745,   747,   749,   751,
-     755,   760,   764,   768,   777,   788,   790,   792,   796,   805,
-     806,   819,   823,   828,   829,   833,   834,   835,   838,   845,
-     851,   852,   862,   864,   867,   868,   869,   870,   871,   872,
-     873,   874,   875,   876,   877,   878,   879,   880,   881,   887,
-     890,   895,   896,   901,   902,   905,   907,   915,   923,   924,
-     926,   929,   935,   936,   945,   946,   947,   948,   956,   960,
-     964,   973,   980,   987,   990,   991,   994,  1003,  1010,  1013,
-    1014,  1017,  1018,  1021,  1057,  1059,  1063,  1065,  1070,  1072,
-    1076,  1099,  1103,  1105,  1114,  1125,  1137,  1147,  1150,  1151,
-    1154,  1163,  1172,  1177,  1182,  1203,  1208,  1249,  1267,  1274,
-    1279,  1290,  1301,  1312,  1323,  1328,  1333,  1338,  1348,  1367,
-    1401,  1403,  1405,  1407,  1409,  1411,  1413,  1415,  1420,  1429,
-    1431,  1433,  1435,  1437,  1439,  1441,  1443,  1445,  1447,  1459,
-    1464,  1466,  1468,  1470,  1472,  1474,  1476,  1478,  1480,  1482,
-    1484,  1486,  1488,  1519,  1545,  1553,  1562,  1571,  1573,  1575,
-    1577,  1579,  1583,  1588,  1590,  1595,  1596,  1599,  1600,  1603,
-    1604,  1607,  1615,  1619,  1621,  1625,  1629,  1630,  1633,  1648,
-    1652,  1653,  1656,  1668,  1669,  1673,  1675,  1679,  1683,  1685,
-    1687,  1693,  1694,  1699,  1700,  1704,  1706,  1715,  1717,  1721,
-    1725,  1727,  1729,  1733,  1734,  1737,  1757,  1764,  1766,  1776,
-    1793,  1795,  1797,  1801,  1810,  1815,  1822,  1823,  1827,  1829,
-    1833,  1835,  1840,  1841,  1845,  1847,  1849,  1851,  1861,  1865,
-    1866,  1867,  1868,  1871,  1876,  1887,  1894,  1899,  1900,  1904,
-    1906,  1910,  1911,  1914,  1918,  1922,  1926,  1935,  1945,  1946,
-    1951,  1953,  1958,  1963,  1964,  1968,  1970,  1974,  1980,  1981,
-    1985,  1987,  1995,  1996,  2000,  2004,  2007,  2011,  2012,  2015,
-    2019,  2020,  2023,  2027,  2029,  2031,  2035,  2039,  2040,  2053,
-    2054,  2058,  2059,  2060,  2063,  2064,  2067,  2068,  2069,  2070,
-    2071,  2072,  2075,  2076,  2077,  2078,  2086,  2089,  2090,  2103,
-    2104,  2105,  2106,  2110,  2111,  2114,  2115,  2116,  2117,  2118,
-    2119,  2120,  2121,  2124,  2125,  2126,  2129,  2130,  2131,  2132,
+       0,   561,   561,   562,   567,   573,   574,   577,   578,   579,
+     582,   583,   584,   585,   586,   587,   588,   589,   590,   591,
+     598,   599,   602,   606,   612,   619,   620,   623,   624,   627,
+     631,   632,   635,   636,   639,   642,   643,   646,   650,   661,
+     665,   667,   671,   677,   681,   685,   690,   691,   695,   697,
+     701,   705,   711,   715,   719,   720,   723,   724,   727,   729,
+     731,   733,   735,   737,   739,   741,   743,   745,   747,   749,
+     751,   753,   757,   762,   766,   770,   779,   790,   792,   794,
+     798,   807,   808,   821,   825,   830,   831,   835,   836,   837,
+     840,   847,   853,   854,   864,   866,   869,   870,   871,   872,
+     873,   874,   875,   876,   877,   878,   879,   880,   881,   882,
+     883,   889,   892,   897,   898,   903,   904,   907,   909,   917,
+     925,   926,   928,   931,   937,   938,   947,   948,   949,   950,
+     958,   962,   966,   975,   982,   989,   992,   993,   996,  1005,
+    1012,  1015,  1016,  1019,  1020,  1023,  1059,  1061,  1065,  1067,
+    1072,  1074,  1078,  1101,  1105,  1107,  1116,  1127,  1139,  1149,
+    1152,  1153,  1156,  1165,  1174,  1179,  1184,  1205,  1210,  1251,
+    1269,  1276,  1281,  1292,  1303,  1314,  1325,  1330,  1335,  1340,
+    1350,  1369,  1403,  1405,  1407,  1409,  1411,  1413,  1415,  1417,
+    1422,  1431,  1433,  1435,  1437,  1439,  1441,  1443,  1445,  1447,
+    1449,  1461,  1466,  1468,  1470,  1472,  1474,  1476,  1478,  1480,
+    1482,  1484,  1486,  1488,  1490,  1521,  1547,  1555,  1564,  1573,
+    1575,  1577,  1579,  1581,  1585,  1590,  1592,  1597,  1598,  1601,
+    1602,  1605,  1606,  1609,  1617,  1621,  1623,  1627,  1631,  1632,
+    1635,  1650,  1654,  1655,  1658,  1670,  1671,  1675,  1677,  1681,
+    1685,  1687,  1689,  1695,  1696,  1701,  1702,  1706,  1708,  1717,
+    1719,  1723,  1727,  1729,  1731,  1735,  1736,  1739,  1759,  1766,
+    1768,  1778,  1795,  1797,  1799,  1803,  1812,  1817,  1824,  1825,
+    1829,  1831,  1835,  1837,  1842,  1843,  1847,  1849,  1851,  1853,
+    1863,  1867,  1868,  1869,  1870,  1873,  1878,  1889,  1896,  1901,
+    1902,  1906,  1908,  1912,  1913,  1916,  1920,  1924,  1928,  1937,
+    1947,  1948,  1953,  1955,  1960,  1965,  1966,  1970,  1972,  1976,
+    1982,  1983,  1987,  1989,  1997,  1998,  2002,  2006,  2009,  2013,
+    2014,  2017,  2021,  2022,  2025,  2029,  2031,  2033,  2037,  2041,
+    2042,  2055,  2056,  2060,  2061,  2062,  2065,  2066,  2069,  2070,
+    2071,  2072,  2073,  2074,  2077,  2078,  2079,  2080,  2088,  2091,
+    2092,  2105,  2106,  2107,  2108,  2112,  2113,  2116,  2117,  2118,
+    2119,  2120,  2121,  2122,  2123,  2126,  2127,  2128,  2131,  2132,
     2133,  2134,  2135,  2136,  2137,  2138,  2139,  2140,  2141,  2142,
-    2143,  2144,  2145,  2146,  2147,  2148,  2149,  2150,  2151,  2157,
-    2158,  2159,  2160,  2161,  2162,  2163,  2164,  2165,  2166,  2167,
-    2168,  2180,  2188,  2192,  2193,  2196,  2197,  2198,  2199,  2200,
-    2201,  2204,  2206,  2207,  2210,  2211,  2214,  2218,  2223
+    2143,  2144,  2145,  2146,  2147,  2148,  2149,  2150,  2151,  2152,
+    2153,  2159,  2160,  2161,  2162,  2163,  2164,  2165,  2166,  2167,
+    2168,  2169,  2170,  2182,  2190,  2194,  2195,  2198,  2199,  2200,
+    2201,  2202,  2203,  2206,  2208,  2209,  2212,  2213,  2216,  2220,
+    2225
 };
 #endif
 
@@ -1206,49 +1208,50 @@
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   139,   140,   140,   141,   142,   142,   143,   143,   144,
-     144,   144,   144,   144,   144,   144,   144,   144,   145,   145,
-     146,   147,   148,   149,   149,   150,   150,   151,   152,   152,
-     153,   153,   154,   155,   155,   156,   157,   158,   159,   159,
-     160,   161,   162,   163,   164,   164,   165,   165,   166,   167,
-     168,   169,   170,   170,   171,   171,   172,   172,   172,   172,
+       0,   139,   140,   140,   141,   142,   142,   143,   143,   143,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     145,   145,   146,   147,   148,   149,   149,   150,   150,   151,
+     152,   152,   153,   153,   154,   155,   155,   156,   157,   158,
+     159,   159,   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,
-     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,
+     172,   172,   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,
-     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,
+     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,   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,   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,   281,   281,   282,
-     283,   283,   284,   285,   285,   285,   286,   287,   287,   288,
-     288,   289,   289,   289,   290,   290,   291,   291,   291,   291,
-     291,   291,   292,   292,   292,   292,   293,   294,   294,   295,
-     295,   295,   295,   296,   296,   297,   297,   297,   297,   297,
-     297,   297,   297,   298,   298,   298,   299,   299,   299,   299,
+     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,   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,   281,
+     281,   282,   283,   283,   284,   285,   285,   285,   286,   287,
+     287,   288,   288,   289,   289,   289,   290,   290,   291,   291,
+     291,   291,   291,   291,   292,   292,   292,   292,   293,   294,
+     294,   295,   295,   295,   295,   296,   296,   297,   297,   297,
+     297,   297,   297,   297,   297,   298,   298,   298,   299,   299,
      299,   299,   299,   299,   299,   299,   299,   299,   299,   299,
-     299,   299,   299,   299,   299,   299,   299,   299,   299,   300,
-     300,   300,   300,   300,   300,   300,   300,   300,   300,   300,
-     300,   301,   302,   303,   303,   304,   304,   304,   304,   304,
-     304,   305,   305,   305,   306,   306,   307,   308,   309
+     299,   299,   299,   299,   299,   299,   299,   299,   299,   299,
+     299,   300,   300,   300,   300,   300,   300,   300,   300,   300,
+     300,   300,   300,   301,   302,   303,   303,   304,   304,   304,
+     304,   304,   304,   305,   305,   305,   306,   306,   307,   308,
+     309
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1256,38 +1259,38 @@
 {
        0,     2,     2,     2,     3,     0,     1,     1,     3,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     7,     2,     0,     1,     1,     3,     1,     0,     1,
-       1,     2,     2,     1,     1,     2,     3,     2,     2,     2,
-       4,     2,     4,     4,     0,     1,     1,     3,     1,     6,
-       1,     2,     1,     1,     0,     2,     1,     1,     1,     1,
-       1,     1,     1,     2,     4,     2,     2,     2,     2,     2,
-       3,     0,     1,     1,     3,     1,     1,     1,     1,     0,
-       2,     4,     2,     0,     2,     1,     1,     1,     4,     1,
-       0,     2,     2,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     3,     7,     2,     0,     1,     1,     3,     1,
+       0,     1,     1,     2,     2,     1,     1,     2,     3,     2,
+       2,     2,     4,     2,     4,     4,     0,     1,     1,     3,
+       1,     6,     1,     2,     1,     1,     0,     2,     1,     1,
+       1,     1,     1,     1,     1,     2,     4,     2,     2,     2,
+       2,     2,     3,     0,     1,     1,     3,     1,     1,     1,
+       1,     0,     2,     4,     2,     0,     2,     1,     1,     1,
+       4,     1,     0,     2,     2,     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,     3,     0,     2,     1,     1,     1,     2,     1,     1,
-       1,     1,     1,     3,     3,     3,     3,     0,     1,     1,
-       3,     1,     1,     3,     2,     1,     5,     5,     0,     1,
-       1,     2,     3,     0,     1,     1,     2,     3,     0,     2,
-       1,     2,     0,     1,     3,     2,     2,     1,     1,     2,
-       1,     1,     2,     4,     4,     4,     4,     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,     3,     0,     2,     1,     1,     1,     2,
+       1,     1,     1,     1,     1,     3,     3,     3,     3,     0,
+       1,     1,     3,     1,     1,     3,     2,     1,     5,     5,
+       0,     1,     1,     2,     3,     0,     1,     1,     2,     3,
+       0,     2,     1,     2,     0,     1,     3,     2,     2,     1,
+       1,     2,     1,     1,     2,     4,     4,     4,     4,     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,
@@ -1295,8 +1298,9 @@
        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,     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
@@ -1304,422 +1308,422 @@
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     5,     5,     0,     6,   412,     3,     0,     2,     0,
-       1,     0,     0,     0,     0,     0,   136,     0,     0,   111,
-     427,     0,    18,    19,     0,     0,     0,   420,   139,   417,
-     411,   413,   415,     0,    54,   423,     0,     0,     0,     0,
-       0,     0,     5,     7,    17,    14,    15,    16,    12,    13,
-      11,     9,    54,    10,     0,    38,    39,    44,   128,   424,
-     421,   425,   363,   368,   369,   371,   370,   365,   366,   372,
-     367,    22,   364,     0,   113,     0,   419,    23,   418,   416,
-     344,   345,   341,   342,   359,   360,   362,   361,     0,     0,
-     140,   141,   144,   149,   145,     0,   146,   343,   148,   147,
-     414,   422,     0,    41,     0,    37,    53,    51,    52,     0,
-       0,     0,   326,     0,     6,     4,     0,     0,    48,     0,
-      45,    46,    20,   111,   117,   118,   122,     0,   114,   115,
-     120,   110,     0,    24,    25,    27,   359,     0,   152,   340,
-     339,   356,   357,   358,   428,     0,   150,   426,    57,    58,
-      59,    56,   322,     0,   322,    60,     0,    61,    62,     0,
-       0,     0,    55,     0,     0,     0,     0,     0,     8,    79,
-     274,     0,   273,    43,     0,   119,     0,   112,     0,     0,
-       0,   151,     0,   142,     0,    65,   323,     0,    66,    71,
-      63,    67,    68,    69,    42,     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,   333,   334,   335,     0,     0,    80,   127,     0,     0,
-       0,    29,    30,     0,    33,    34,   324,    64,    70,     0,
-       0,    50,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   136,   365,   366,   372,   367,   268,   359,
-     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,   288,   289,   291,   290,
-     292,    99,     0,   327,   328,     0,   358,   364,   352,   353,
-     354,   355,    83,     0,     0,    35,    21,    31,    32,    74,
-     130,     0,     0,   332,   330,   331,   329,   297,     0,     0,
-     308,   313,   243,     0,     0,    92,     0,     0,     0,     0,
-       0,   277,   278,   282,   129,   133,   134,   137,   138,   145,
-     157,   188,   363,   368,   369,   371,   370,   365,   366,   372,
-     367,   344,   341,   342,     0,     0,     0,   357,   259,   266,
-       0,     0,   325,   410,   408,   409,     0,     0,   399,   400,
-     401,   402,   404,   405,   403,   406,   407,     0,     0,     0,
-       0,    82,    36,     0,   233,   236,     0,   344,     0,   298,
-     299,   302,   301,   318,   305,   293,   295,     0,     0,   309,
-     310,     0,     0,   314,   315,     0,     0,   244,   245,   132,
-     294,   131,   231,     0,     0,   275,     0,   280,     0,   229,
-     230,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     5,     5,     0,     6,   414,     3,     0,     2,     0,
+       1,     0,     0,     0,     0,     0,   138,     0,     0,   113,
+     429,     0,    20,    21,     0,     0,     0,   422,   141,   419,
+     413,   415,   417,     0,    56,   425,     9,     0,     0,     0,
+       0,     0,     0,     5,     7,    18,    15,    16,    17,    13,
+      14,    12,    10,    56,    19,    11,     0,    40,    41,    46,
+     130,   426,   423,   427,   365,   370,   371,   373,   372,   367,
+     368,   374,   369,    24,   366,     0,   115,     0,   421,    25,
+     420,   418,   346,   347,   343,   344,   361,   362,   364,   363,
+       0,     0,   142,   143,   146,   151,   147,     0,   148,   345,
+     150,   149,   416,   424,     0,   132,    43,     0,    39,    55,
+      53,    54,     0,     0,     0,   328,     0,     0,     4,     0,
+       0,    50,     0,    47,    48,    22,   113,   119,   120,   124,
+       0,   116,   117,   122,   112,     0,    26,    27,    29,   361,
+       0,   154,   342,   341,   358,   359,   360,   430,     0,   152,
+     428,    59,    60,    61,    58,   324,     0,   324,    62,     0,
+      63,    64,     0,     0,     0,    57,     0,     0,     0,     0,
+       0,     0,     8,    81,   276,     0,   275,    45,     0,   121,
+       0,   114,     0,     0,     0,   153,     0,   144,     0,    67,
+     325,     0,    68,    73,    65,    69,    70,    71,    44,     0,
+       0,     0,    42,    92,    80,   240,    49,   126,   113,   128,
+     127,   123,   125,   118,    30,    28,   155,     0,     0,    78,
+       0,    74,    75,    79,    77,   335,   336,   337,     0,     0,
+      82,   129,     0,     0,     0,    31,    32,     0,    35,    36,
+     326,    66,    72,     0,    52,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   138,   367,   368,   374,
+     369,   270,   361,   278,     0,    51,    93,    95,   109,   111,
+     107,   108,   110,   106,   105,    96,     0,   141,   137,   104,
+       0,    97,     0,     0,    98,    99,   100,   103,   241,   242,
+     243,     0,   264,   266,   265,     0,   269,     0,   102,   290,
+     291,   293,   292,   294,   101,     0,   329,   330,     0,   360,
+     366,   354,   355,   356,   357,    85,     0,     0,    37,    23,
+      33,    34,    76,     0,     0,   334,   332,   333,   331,   299,
+       0,     0,   310,   315,   245,     0,     0,    94,     0,     0,
+       0,     0,     0,   279,   280,   284,   131,   135,   136,   139,
+     140,   147,   159,   190,   365,   370,   371,   373,   372,   367,
+     368,   374,   369,   346,   343,   344,     0,     0,     0,   359,
+     261,   268,     0,     0,   327,   412,   410,   411,     0,     0,
+     401,   402,   403,   404,   406,   407,   405,   408,   409,     0,
+       0,     0,     0,    84,    38,     0,   235,   238,     0,   346,
+       0,   300,   301,   304,   303,   320,   307,   295,   297,     0,
+       0,   311,   312,     0,     0,   316,   317,     0,     0,   246,
+     247,   134,   296,   133,   233,     0,     0,   277,     0,   282,
+       0,   231,   232,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   346,   347,   348,   349,   351,   350,     0,     0,     0,
-       0,     0,     0,     0,   272,   270,   271,     0,   269,   260,
-     170,   171,   174,   172,   173,   175,   363,   268,   160,   161,
-     359,   373,   374,   375,     0,   164,   165,   261,   162,     0,
-     357,   364,     0,   169,     0,    81,    89,   322,   286,   284,
-     285,     0,    84,    86,    87,    85,   232,     0,   237,   235,
-       0,     0,   296,     0,   304,     0,     0,   311,     0,     0,
-     316,     0,     0,     0,     0,     0,   246,   179,   281,   279,
-     283,   143,   200,   202,   203,   204,   205,   206,   207,     0,
-       0,     0,     0,     0,     0,     0,     0,   367,   210,     0,
-     211,   208,   209,   221,   225,   226,   222,   216,   223,   217,
-     218,   214,   224,   219,   220,   215,   212,   198,   213,   201,
-     265,   398,   393,   395,   394,   397,   396,   386,   387,   388,
-     391,   389,   390,   392,   385,   377,   383,   376,   378,   379,
-     380,   381,   382,   384,     0,     0,     0,   168,   155,   166,
-       0,   167,   176,   178,   287,     0,   234,   336,   337,   338,
-     303,   300,   322,   320,   319,   312,   307,   317,   306,   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,   321,     0,     0,
-     248,     0,   258,     0,   254,   255,   154,   156,    88,     0,
-     252,     0,     0,   256,   250,   257,   242
+       0,     0,     0,   348,   349,   350,   351,   353,   352,     0,
+       0,     0,     0,     0,     0,     0,   274,   272,   273,     0,
+     271,   262,   172,   173,   176,   174,   175,   177,   365,   270,
+     162,   163,   361,   375,   376,   377,     0,   166,   167,   263,
+     164,     0,   359,   366,     0,   171,     0,    83,    91,   324,
+     288,   286,   287,     0,    86,    88,    89,    87,   234,     0,
+     239,   237,     0,     0,   298,     0,   306,     0,     0,   313,
+       0,     0,   318,     0,     0,     0,     0,     0,   248,   181,
+     283,   281,   285,   145,   202,   204,   205,   206,   207,   208,
+     209,     0,     0,     0,     0,     0,     0,     0,     0,   369,
+     212,     0,   213,   210,   211,   223,   227,   228,   224,   218,
+     225,   219,   220,   216,   226,   221,   222,   217,   214,   200,
+     215,   203,   267,   400,   395,   397,   396,   399,   398,   388,
+     389,   390,   393,   391,   392,   394,   387,   379,   385,   378,
+     380,   381,   382,   383,   384,   386,     0,     0,     0,   170,
+     157,   168,     0,   169,   178,   180,   289,     0,   236,   338,
+     339,   340,   305,   302,   324,   322,   321,   314,   309,   319,
+     308,   249,     0,   253,   269,   251,   255,   191,   192,   193,
+     194,   195,   196,   197,   199,   198,   201,   185,   184,   186,
+     188,   182,   189,   187,   183,     0,     0,   179,     0,   323,
+       0,     0,   250,     0,   260,     0,   256,   257,   156,   158,
+      90,     0,   254,     0,     0,   258,   252,   259,   244
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     3,     8,     5,    42,    43,    21,    22,    23,    24,
-     132,   133,   134,   230,   231,   232,   233,   234,   235,    45,
-      25,    47,    48,    49,    26,   119,   120,   121,    51,   262,
-      52,   107,   102,   162,   190,   216,   217,   218,   199,   200,
-     226,   312,   390,   502,   503,   504,   224,   263,   264,   265,
-      27,    75,   127,   128,   129,   130,   176,   208,    59,   268,
-     269,   270,   271,   272,   273,    28,   346,    89,    90,   348,
-      91,    92,    93,    94,   137,   275,   276,   485,   277,   486,
-     278,   279,   364,   556,   280,   431,   281,   282,   393,   394,
-     509,    29,   284,   285,   286,   416,   417,   418,   525,   650,
-     653,   654,   655,   287,   288,   289,   290,   291,   292,   467,
-      95,   294,   340,   341,   342,   427,   505,   295,   296,   297,
-     298,   328,   398,   399,   400,   401,   402,   403,   299,   300,
-     408,   409,   410,   412,   413,   414,   514,   614,   185,   186,
-     301,    53,   302,   303,   323,   304,   324,   325,   607,   404,
-     139,    97,   457,   313,   140,   141,   142,   143,    72,   492,
-     594,   388,     6,     7,    30,    31,    32,    60,    33,    34,
+      -1,     3,     8,     5,    43,    44,    21,    22,    23,    24,
+     135,   136,   137,   234,   235,   236,   237,   238,   239,    46,
+      25,    48,    49,    50,    26,   122,   123,   124,    52,   265,
+      53,   110,   104,   165,   194,   220,   221,   222,   203,   204,
+     230,   315,   392,   504,   505,   506,   228,   266,   267,   268,
+      27,    77,   130,   131,   132,   133,   180,   212,    61,   271,
+      54,   273,   274,   275,   276,    28,   348,    91,    92,   350,
+      93,    94,    95,    96,   140,   278,   279,   487,   280,   488,
+     281,   282,   366,   558,   283,   433,   284,   285,   395,   396,
+     511,    29,   287,   288,   289,   418,   419,   420,   527,   652,
+     655,   656,   657,   290,   291,   292,   293,   294,   295,   469,
+      97,   297,   342,   343,   344,   429,   507,   298,   299,   300,
+     301,   330,   400,   401,   402,   403,   404,   405,   302,   303,
+     410,   411,   412,   414,   415,   416,   516,   616,   189,   190,
+     304,    55,   305,   306,   325,   307,   326,   327,   609,   406,
+     142,    99,   459,   316,   143,   144,   145,   146,    74,   494,
+     596,   390,     6,     7,    30,    31,    32,    62,    33,    34,
       35
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -594
+#define YYPACT_NINF -592
 static const yytype_int16 yypact[] =
 {
-     -49,     3,     3,    41,  -594,  -594,  -594,    15,  -594,    65,
-    -594,    49,     9,    51,   -21,    11,  -594,  1022,    69,    -6,
-    -594,    89,  -594,  -594,    22,    92,   100,  -594,   647,  -594,
-      15,  -594,  -594,    11,  -594,  -594,   106,   111,   113,  1012,
-     182,   116,   139,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
-    -594,  -594,  -594,  -594,    54,  -594,  -594,   130,  -594,  -594,
-    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
-    -594,  -594,  -594,    84,    -1,   164,  -594,  1022,  -594,  -594,
-    -594,  -594,  -594,  -594,    95,  -594,  -594,  -594,   734,   180,
-     112,  -594,  -594,  -594,  -594,   109,  -594,  -594,  -594,   115,
-    -594,  -594,   385,  -594,   117,  -594,  -594,  -594,  -594,  1022,
-    1022,  1022,  -594,   125,    65,  -594,   244,   985,  -594,   126,
-     134,  -594,  -594,    -6,  -594,  -594,  -594,   131,   133,  -594,
-    -594,  -594,   148,   149,  -594,  -594,  -594,   -52,  -594,  -594,
-    -594,  -594,  -594,  -594,  -594,   647,  -594,  -594,  -594,  -594,
-    -594,  -594,   150,   152,   150,  -594,   154,  -594,  -594,   150,
-     150,   150,  -594,   229,   155,   156,   159,   230,  -594,  -594,
-    -594,   251,  -594,  -594,   130,  -594,     4,  -594,    -1,   252,
-    1022,  -594,   734,  -594,   242,  -594,  -594,  1012,  -594,   410,
-    -594,  -594,  -594,  -594,  -594,   245,   249,    87,  -594,  -594,
-     286,  -594,  -594,  -594,    -6,  -594,  -594,  -594,  -594,  -594,
-      44,  -594,  -594,   183,   200,  -594,   201,   179,  -594,  -594,
-    -594,  -594,  -594,  -594,   273,   141,  -594,  -594,   141,   193,
-     217,    44,  -594,   306,  -594,  -594,  -594,  -594,  -594,   410,
-     308,  -594,   141,   173,   173,   225,   225,   310,   311,   314,
-     231,   971,   530,   632,   751,   768,   570,  1022,  -594,    30,
-     458,   316,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
-    -594,  -594,  -594,   317,   647,  -594,  -594,   322,  -594,   325,
-     785,  -594,  -594,  -594,  -594,  -594,  -594,  -594,   326,  -594,
-    -594,  -594,   225,   235,   243,  -594,  -594,  -594,  -594,  -594,
-    -594,  -594,   329,  -594,  -594,   646,   -74,   109,  -594,  -594,
-    -594,  -594,  -594,  1022,   256,  -594,  -594,  -594,  -594,  -594,
-    -594,  1022,  1022,  -594,  -594,  -594,  -594,   802,   332,   333,
-     349,   350,   343,   339,   340,  -594,   341,   342,   260,   331,
-     263,   265,  -594,  -594,  -594,  -594,  -594,  -594,  -594,   266,
-    -594,  -594,   -18,   -18,   -18,   -18,   -18,   -18,   -18,    46,
-     -16,   170,   170,   170,   345,   -18,   170,   -18,  -594,  -594,
-     955,   971,  -594,  -594,  -594,  -594,   870,   887,  -594,  -594,
-    -594,  -594,  -594,  -594,  -594,  -594,  -594,   552,   734,   269,
-     103,  -594,  -594,   -14,  -594,   290,   272,   344,   275,   276,
-    -594,  -594,  -594,  -594,  -594,  -594,  -594,   734,   373,   349,
-    -594,   734,   374,   350,  -594,   734,    45,   343,  -594,  -594,
-    -594,  -594,  -594,   734,   570,  -594,   458,   257,   734,  -594,
-    -594,  1022,  1022,  1022,  1022,  1022,  1022,  1022,   356,   357,
-     358,   359,   360,   361,   365,   367,  1031,   -18,  1022,  1022,
-    1022,  -594,  -594,  -594,  -594,  -594,  -594,   819,   836,   853,
-    1022,  1022,   734,  1022,  -594,  -594,  -594,   225,  -594,  -594,
-    -594,  -594,  -594,  -594,  -594,  -594,   613,   129,   612,   612,
-      30,  -594,  -594,  -594,   647,  -594,  -594,  -594,  -594,   612,
-     387,   -15,   734,  -594,   734,  -594,  -594,   150,  -594,  -594,
-    -594,   304,  -594,  -594,  -594,  -594,  -594,  1022,  -594,  -594,
-     999,   734,  -594,   802,   -45,   389,   390,  -594,   391,   392,
-    -594,   393,   985,   971,   985,   395,  -594,  -594,  -594,  -594,
-    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  1022,
-    1022,  1022,  1022,  1022,  1022,  1022,  1022,  1022,  -594,  1022,
-    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
-    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
-    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
-    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
-    -594,  -594,  -594,  -594,   938,   904,   921,  -594,   313,   315,
-     734,  -594,  -594,  -594,  -594,   410,  -594,  -594,  -594,  -594,
-    -594,  -594,   150,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
-     402,   318,  -594,  -594,    18,  -594,  -594,  -594,  -594,  -594,
-    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
-    -594,  -594,  -594,   647,   647,  -594,   320,  -594,   423,   985,
-    -594,   458,  -594,   414,    18,  -594,   112,   112,  -594,   955,
-    -594,   407,   425,  -594,  -594,  -594,  -594
+       2,    18,    18,    76,  -592,  -592,  -592,    41,  -592,    81,
+    -592,    53,    54,    61,   -14,    46,  -592,   698,    77,     3,
+    -592,    95,  -592,  -592,    35,   135,   146,  -592,   667,  -592,
+      41,  -592,  -592,    46,  -592,  -592,   148,   142,   155,   167,
+     554,   210,   170,   200,  -592,  -592,  -592,  -592,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,  -592,   115,  -592,  -592,   198,
+    -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,   139,    60,   222,  -592,   698,
+    -592,  -592,  -592,  -592,  -592,  -592,   136,  -592,  -592,  -592,
+     811,   226,   157,  -592,  -592,  -592,  -592,   156,  -592,  -592,
+    -592,   158,  -592,  -592,   722,  -592,  -592,   160,  -592,  -592,
+    -592,  -592,   698,   698,   698,  -592,   159,    21,  -592,   388,
+     165,  -592,   166,   164,  -592,  -592,     3,  -592,  -592,  -592,
+     171,   175,  -592,  -592,  -592,   177,   180,  -592,  -592,  -592,
+     -36,  -592,  -592,  -592,  -592,  -592,  -592,  -592,   667,  -592,
+    -592,  -592,  -592,  -592,  -592,   184,   189,   184,  -592,   191,
+    -592,  -592,   184,   184,   184,  -592,   238,   202,   203,   219,
+     277,   148,  -592,  -592,  -592,   307,  -592,  -592,   198,  -592,
+      -7,  -592,    60,   309,   698,  -592,   811,  -592,   301,  -592,
+    -592,   554,  -592,   153,  -592,  -592,  -592,  -592,  -592,   302,
+     300,   100,  -592,  -592,   343,  -592,  -592,  -592,     3,  -592,
+    -592,  -592,  -592,  -592,    56,  -592,  -592,   232,   233,  -592,
+     234,   236,  -592,  -592,  -592,  -592,  -592,  -592,   276,   201,
+    -592,  -592,   201,   249,   254,    56,  -592,   325,  -592,  -592,
+    -592,  -592,  -592,   153,  -592,   201,   141,   141,   242,   242,
+     327,   328,   330,   247,   293,   534,   705,   828,   851,  1004,
+     698,  -592,     5,   460,   332,  -592,  -592,  -592,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,  -592,   333,   667,  -592,  -592,
+     334,  -592,   335,   868,  -592,  -592,  -592,  -592,  -592,  -592,
+    -592,   338,  -592,  -592,  -592,   242,   246,   253,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,   341,  -592,  -592,   765,   -58,
+     156,  -592,  -592,  -592,  -592,  -592,   698,   267,  -592,  -592,
+    -592,  -592,  -592,   698,   698,  -592,  -592,  -592,  -592,   885,
+     345,   346,   358,   364,   356,   353,   355,  -592,   357,   359,
+     269,   342,   278,   280,  -592,  -592,  -592,  -592,  -592,  -592,
+    -592,   275,  -592,  -592,    -9,    -9,    -9,    -9,    -9,    -9,
+      -9,   225,    -8,   163,   163,   163,   354,    -9,   163,    -9,
+    -592,  -592,   412,   293,  -592,  -592,  -592,  -592,   598,   712,
+    -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,   617,
+     811,   281,    58,  -592,  -592,    -2,  -592,   305,   282,   351,
+     290,   291,  -592,  -592,  -592,  -592,  -592,  -592,  -592,   811,
+     390,   358,  -592,   811,   389,   364,  -592,   811,    34,   356,
+    -592,  -592,  -592,  -592,  -592,   811,  1004,  -592,   460,   130,
+     811,  -592,  -592,   698,   698,   698,   698,   698,   698,   698,
+     370,   379,   380,   381,   382,   383,   384,   385,  1034,    -9,
+     698,   698,   698,  -592,  -592,  -592,  -592,  -592,  -592,   902,
+     919,   936,   698,   698,   811,   698,  -592,  -592,  -592,   242,
+    -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,   650,   546,
+     666,   666,     5,  -592,  -592,  -592,   667,  -592,  -592,  -592,
+    -592,   666,   397,   -15,   811,  -592,   811,  -592,  -592,   184,
+    -592,  -592,  -592,   317,  -592,  -592,  -592,  -592,  -592,   698,
+    -592,  -592,  1021,   811,  -592,   885,    68,   402,   403,  -592,
+     405,   406,  -592,   407,   165,   293,   165,   408,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,
+    -592,   698,   698,   698,   698,   698,   698,   698,   698,   698,
+    -592,   698,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,  -592,   987,   953,   970,  -592,
+     323,   326,   811,  -592,  -592,  -592,  -592,   153,  -592,  -592,
+    -592,  -592,  -592,  -592,   184,  -592,  -592,  -592,  -592,  -592,
+    -592,  -592,   425,   344,  -592,  -592,    27,  -592,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,   667,   667,  -592,   347,  -592,
+     451,   165,  -592,   460,  -592,   441,    27,  -592,   157,   157,
+    -592,   412,  -592,   435,   452,  -592,  -592,  -592,  -592
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -594,  -594,  -594,    16,  -594,   347,     7,  -594,  -594,  -594,
-    -594,  -594,   278,  -594,  -594,   214,  -594,  -594,  -594,  -594,
-       0,  -594,  -594,  -594,     8,  -594,  -594,   288,  -594,  -594,
-    -594,   277,   413,  -594,  -594,  -594,  -594,  -233,  -594,  -594,
-    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,   232,  -594,
-    -190,  -100,  -594,  -594,   307,  -594,  -594,  -594,  -189,  -594,
-    -594,  -594,  -594,  -594,  -594,  -210,  -594,   192,  -478,  -594,
-     337,     2,  -594,   -91,  -594,  -594,  -594,  -594,  -594,  -594,
-    -594,  -594,  -594,  -594,  -594,  -211,  -594,  -593,  -594,   -20,
-    -594,  -187,  -594,  -594,  -594,  -594,  -594,    71,  -594,  -594,
-    -594,  -594,  -165,  -594,  -594,  -232,  -594,  -594,   -32,  -167,
-    -115,   262,  -594,  -594,  -414,  -594,    67,  -594,  -594,  -594,
-    -594,  -236,  -594,  -594,     5,  -594,  -198,     6,  -594,  -594,
-    -594,  -594,   104,  -594,  -594,   102,  -594,  -594,  -149,   -80,
-    -594,  -594,  -594,  -594,   291,  -594,   476,  -594,  -594,   -81,
-     -27,  -184,  -118,  -195,  -216,  -594,   -25,   -17,  -209,  -594,
-    -349,  -594,  -594,  -594,  -594,   490,  -594,   488,  -594,  -594,
-      17
+    -592,  -592,  -592,    28,  -592,   369,     9,  -592,  -592,  -592,
+    -592,  -592,   304,  -592,  -592,   255,  -592,  -592,  -592,  -592,
+      -1,  -592,  -592,  -592,    10,  -592,  -592,   311,  -592,  -592,
+    -592,   303,   438,  -592,  -592,  -592,  -592,  -236,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,   241,  -592,
+    -213,   -97,  -592,  -592,   336,  -592,  -592,  -592,  -188,  -592,
+    -182,  -592,  -592,  -592,  -592,  -212,  -592,   216,  -421,  -592,
+     367,    30,  -592,   -93,  -592,  -592,  -592,  -592,  -592,  -592,
+    -592,  -592,  -592,  -592,  -592,  -216,  -592,  -591,  -592,    11,
+    -592,  -181,  -592,  -592,  -592,  -592,  -592,   102,  -592,  -592,
+    -592,  -592,  -137,  -592,  -592,  -241,  -592,  -592,    -3,  -138,
+    -118,   283,  -592,  -592,  -419,  -592,   108,  -592,  -592,  -592,
+    -592,  -239,  -592,  -592,    23,  -592,  -349,    26,  -592,  -592,
+    -592,  -592,   129,  -592,  -592,   126,  -592,  -592,  -151,   110,
+    -592,  -592,  -592,  -592,   295,  -592,   506,  -592,  -592,   -85,
+     -27,  -189,  -230,  -173,  -214,  -592,   -25,   -17,  -211,  -592,
+    -401,  -592,  -592,  -592,  -592,   518,  -592,   516,  -592,  -592,
+      42
 };
 
 /* 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 -364
+#define YYTABLE_NINF -366
 static const yytype_int16 yytable[] =
 {
-      71,    96,   171,    98,   146,   188,   319,   138,   305,    46,
-     329,    99,   529,   223,   274,   307,    44,    50,     9,   334,
-    -159,   506,   108,   175,    11,    12,    13,   429,    14,   449,
-     242,   652,    61,   314,   266,   267,   305,   283,     4,   203,
-     336,    10,   274,   307,   343,  -273,    58,   321,    16,   651,
-      61,    15,    16,   612,  -273,   613,   369,    55,   115,   522,
-     135,   652,   266,   267,   366,   283,     1,     2,    36,    37,
-      38,    39,   181,   182,   523,    12,    13,   524,    14,   191,
-     192,   193,    40,   438,   439,   440,   441,   442,   443,   444,
-     445,   446,   164,   165,   166,    54,   447,    56,   219,    41,
-     172,   212,    57,   430,   227,   450,    73,   507,    88,   293,
-     123,   124,   125,    74,    46,   204,   205,   206,    96,    17,
-      98,    44,    50,    18,    76,   126,    19,    78,    99,   595,
-     596,   207,    20,    80,    81,    79,   293,   293,   495,   469,
-     600,    77,   432,   433,   434,   435,   436,   437,   219,  -274,
-     228,   229,   103,    88,   461,   487,   463,   104,  -274,   105,
-     472,   475,   113,   135,  -344,   656,   657,   448,   338,    17,
-     108,   489,   220,    18,   114,   117,   118,   484,   491,   308,
-     309,   310,   311,   349,   571,   572,   573,   574,   575,   576,
-     577,   578,   579,   580,   581,   582,   583,   584,   122,   131,
-     496,   497,   498,   488,   499,   500,   501,   306,   528,   515,
-     343,   109,   110,   518,   111,   144,   389,   521,  -274,   322,
-     109,   110,   220,   111,   261,   451,   452,   453,   454,   455,
-     456,   570,    88,   145,   172,   306,   549,   661,  -273,   163,
-     337,   557,   561,   565,   458,   459,   167,    96,   462,    98,
-     173,   177,   261,   365,   178,   367,   293,    99,   585,   174,
-     586,   587,   588,   589,   590,   591,   592,   593,   179,   184,
-     180,   187,   293,   189,   240,   194,   198,   195,   196,   169,
-     241,   197,    11,    12,    13,   242,   201,   210,   213,   243,
-     244,   245,   246,   221,   225,   247,   391,   248,   222,   249,
-     239,   250,   315,   236,   395,   396,   251,   493,    58,   252,
-     253,    63,    64,    65,    66,   254,   255,   256,   257,   258,
-     237,   238,   316,   259,    85,    86,    87,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   318,   527,   320,   327,   330,   331,   531,   604,   332,
-     260,   344,   345,   468,   172,   497,   498,   350,   499,   500,
-     351,   368,   490,   370,   372,   371,   392,   405,   406,   407,
-     306,   411,   646,   415,   419,   420,   421,   422,   636,   639,
-     642,   568,   423,   425,    19,   424,   426,   508,   428,   597,
-     460,   494,   260,   599,   510,   512,   516,   513,   511,   519,
-     601,   539,   540,   541,   542,   543,   544,   620,   622,   623,
-     545,   602,   546,   603,   532,   533,   534,   535,   536,   537,
-     538,   147,  -163,   605,   615,   616,   617,   618,   619,   548,
-     624,   550,   551,   552,   643,   343,   644,   648,   659,   649,
-     658,   662,   665,   566,   567,   317,   569,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,   215,    96,   211,    98,
-     666,   168,   202,   647,   214,   116,   347,    99,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   183,   608,   335,   209,   598,   606,   526,   663,
-     395,   621,   664,   609,   530,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,   339,   172,   172,   172,   136,    85,
-      86,    87,   333,   517,   219,   520,   112,   610,   611,   645,
-     100,   101,   625,   626,   627,   628,   629,   630,   631,   632,
-     633,   240,   634,    88,   660,   326,     0,     0,     0,    11,
-      12,    13,   242,     0,     0,     0,   243,   244,   245,   246,
-       0,     0,   247,     0,   248,     0,   249,     0,   250,     0,
-       0,     0,     0,   251,     0,    58,     0,   253,    63,    64,
-      65,    66,   254,   255,   256,   257,   258,     0,     0,     0,
-     259,    85,    86,    87,     0,     0,     0,     0,   220,   476,
-      63,    64,    65,    66,    67,    68,    69,    70,   477,    81,
-     478,   479,   480,    85,    86,    87,     0,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    96,    96,    98,    98,
-     136,    85,    86,    87,     0,     0,    99,    99,     0,     0,
-       0,     0,   172,     0,     0,     0,     0,     0,     0,     0,
-       0,    19,   468,     0,     0,     0,     0,     0,  -158,   260,
-    -136,  -136,  -136,  -136,  -136,  -136,  -136,  -136,  -136,  -136,
-    -136,  -136,  -136,  -136,  -136,  -136,  -136,   571,   572,   573,
-     574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
-     584,   481,   482,   483,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    80,    81,    82,    83,    84,    85,    86,
-      87,  -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,
-    -363,  -363,  -363,  -363,  -363,   373,   374,   375,   376,   377,
-     378,   379,   380,   381,   382,   383,   384,   385,   386,     0,
-       0,     0,     0,     0,     0,     0,  -136,     0,     0,     0,
-       0,   585,     0,   586,   587,   588,   589,   590,   591,   592,
-     593,  -363,     0,     0,  -363,     0,     0,     0,     0,     0,
-    -363,     0,     0,     0,     0,     0,     0,     0,   387,     0,
-      88,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      80,    81,    82,    83,   136,    85,    86,    87,  -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,   352,   353,   354,   355,   356,   357,   358,   359,
-     360,   361,    81,   362,   363,   136,    85,    86,    87,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,   397,    81,
-      82,    83,   136,    85,    86,    87,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,   553,     0,   554,   555,   136,
-      85,    86,    87,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,   558,     0,   559,   560,   136,    85,    86,    87,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,   562,
-       0,   563,   564,   136,    85,    86,    87,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,     0,     0,   470,   471,
-     136,    85,    86,    87,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,     0,     0,   473,   474,   136,    85,    86,
-      87,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-       0,     0,   637,   638,   136,    85,    86,    87,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,     0,     0,   640,
-     641,   136,    85,    86,    87,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,   635,     0,     0,     0,   136,    85,
-      86,    87,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,   464,     0,     0,     0,   465,     0,   466,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,   258,     0,     0,
-       0,   170,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,     0,     0,     0,     0,   170,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    80,    81,    82,    83,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,   106,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    62,    63,
-      64,    65,    66,    67,    68,    69,   547
+      73,    98,   175,   100,   149,   141,   192,   322,    47,   531,
+     331,   101,   227,   336,   308,   269,   277,   310,    45,    51,
+    -161,    -6,   171,   111,    37,    38,    39,    40,   207,   179,
+       9,    12,    13,   508,    14,   654,   431,   451,    41,   245,
+     270,   308,   269,   277,   310,   338,   272,   286,   524,   345,
+      11,    12,    13,     4,    14,    42,   371,    63,   653,   317,
+     517,  -275,   138,   525,   520,   654,   526,   270,   523,   368,
+    -275,   118,   323,   272,   286,    63,    10,    15,    16,   597,
+     598,    60,    36,    16,    37,    38,    39,    40,   185,   186,
+     602,    12,    13,   497,    14,   167,   168,   169,    41,    56,
+     223,   216,    57,   176,   208,   209,   210,    58,    90,    59,
+     296,   231,   432,   452,    75,    42,    47,     1,     2,   509,
+     211,    98,    76,   100,  -276,    17,    45,    51,    90,    18,
+      78,   101,   471,  -276,   460,   461,   296,   296,   464,   434,
+     435,   436,   437,   438,   439,    17,    82,    83,   489,    18,
+     223,   463,    19,   465,    79,   498,   499,   500,    20,   501,
+     502,   503,   232,   233,   474,   477,   614,   138,   615,   340,
+      80,   126,   127,   128,   111,   491,   224,   486,   493,   112,
+     113,    81,   114,   105,   351,    17,   129,   324,   106,    18,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,   219,
+     490,   107,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,   309,   530,   108,   345,   174,   116,   391,   453,   454,
+     455,   456,   457,   458,   658,   659,   224,   264,   499,   500,
+     572,   501,   502,   551,   663,   117,   120,   176,   309,   311,
+     312,   313,   314,   339,   121,   559,   563,   567,   112,   113,
+      98,   114,   100,   125,   264,   296,   367,   134,   369,  -276,
+     101,   147,   440,   441,   442,   443,   444,   445,   446,   447,
+     448,   296,   195,   196,   197,   449,    90,   171,   148,    90,
+     170,  -275,   166,   244,   198,    11,    12,    13,   245,   178,
+     177,   181,   246,   247,   248,   249,   182,   183,   250,   393,
+     251,   184,   252,   188,   253,   495,   397,   398,   191,   254,
+     193,    60,   255,   256,    65,    66,    67,    68,   257,   258,
+     259,   260,   261,   202,   199,   200,   262,    87,    88,    89,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,   261,
+     529,   201,   205,   174,   214,   533,   450,   217,   606,   226,
+     225,   229,   240,   241,   242,   470,   176,   243,   318,   319,
+     321,   329,   332,   333,   492,   334,   263,   346,   347,   352,
+     353,   648,   309,   370,   372,   373,   374,   394,   409,   570,
+     407,   408,   638,   641,   644,   413,   417,    19,   421,   599,
+     422,   425,   423,   601,   424,   263,   426,   430,   427,   462,
+     603,   428,   510,   496,   512,   513,   622,   624,   625,   604,
+     514,   605,   515,   518,   521,   541,   534,   535,   536,   537,
+     538,   539,   540,   173,   542,   543,   544,   545,   546,   547,
+     548,   550,  -165,   552,   553,   554,   607,   617,   618,   345,
+     619,   620,   621,   626,   645,   568,   569,   646,   571,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,   466,    98,
+     650,   100,   467,   649,   468,   651,   661,   660,   664,   101,
+     667,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   610,   172,   668,   215,   206,
+     320,   119,   397,   349,   218,   611,   337,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,   341,   176,   176,   176,
+     139,    87,    88,    89,   223,   187,   600,   647,   213,   665,
+     608,   528,   623,   666,   627,   628,   629,   630,   631,   632,
+     633,   634,   635,   662,   636,   171,   335,   532,   613,   612,
+     519,   522,   328,    11,    12,    13,   245,   115,   102,   103,
+     246,   247,   248,   249,     0,     0,   250,     0,   251,     0,
+     252,     0,   253,     0,     0,     0,     0,   254,     0,    60,
+       0,   256,    65,    66,    67,    68,   257,   258,   259,   260,
+     261,  -346,     0,     0,   262,    87,    88,    89,     0,     0,
+     224,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+     109,   573,   574,   575,   576,   577,   578,   579,   580,   581,
+     582,   583,   584,   585,   586,     0,     0,     0,    98,    98,
+     100,   100,     0,     0,     0,     0,     0,     0,   101,   101,
+       0,     0,     0,     0,   176,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,   470,    19,   472,   473,   139,    87,
+      88,    89,     0,   263,   478,    65,    66,    67,    68,    69,
+      70,    71,    72,   479,    83,   480,   481,   482,    87,    88,
+      89,     0,     0,     0,     0,   587,     0,   588,   589,   590,
+     591,   592,   593,   594,   595,  -160,     0,  -138,  -138,  -138,
+    -138,  -138,  -138,  -138,  -138,  -138,  -138,  -138,  -138,  -138,
+    -138,  -138,  -138,  -138,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    82,    83,    84,    85,    86,    87,    88,
+      89,   573,   574,   575,   576,   577,   578,   579,   580,   581,
+     582,   583,   584,   585,   586,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,     0,     0,   483,   484,   485,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,   150,     0,
+     475,   476,   139,    87,    88,    89,     0,     0,     0,     0,
+       0,     0,     0,  -138,  -365,  -365,  -365,  -365,  -365,  -365,
+    -365,  -365,  -365,  -365,  -365,  -365,  -365,  -365,     0,     0,
+      90,     0,     0,     0,     0,   587,     0,   588,   589,   590,
+     591,   592,   593,   594,   595,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,     0,
+       0,     0,     0,     0,  -365,     0,     0,  -365,     0,     0,
+       0,     0,     0,  -365,   375,   376,   377,   378,   379,   380,
+     381,   382,   383,   384,   385,   386,   387,   388,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    82,    83,    84,
+      85,   139,    87,    88,    89,  -229,  -229,  -229,  -229,  -229,
+    -229,  -229,  -229,  -229,  -229,  -229,  -229,  -229,  -229,  -229,
+    -229,  -229,     0,     0,     0,     0,     0,   389,  -230,  -230,
+    -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,
+    -230,  -230,  -230,  -230,  -230,   354,   355,   356,   357,   358,
+     359,   360,   361,   362,   363,    83,   364,   365,   139,    87,
+      88,    89,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,   399,    83,    84,    85,   139,    87,    88,    89,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,   555,     0,
+     556,   557,   139,    87,    88,    89,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,   560,     0,   561,   562,   139,
+      87,    88,    89,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,   564,     0,   565,   566,   139,    87,    88,    89,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,     0,
+       0,   639,   640,   139,    87,    88,    89,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,     0,     0,   642,   643,
+     139,    87,    88,    89,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,   637,     0,     0,     0,   139,    87,    88,
+      89,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+       0,     0,     0,     0,   139,    87,    88,    89,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    82,    83,    84,
+      85,    64,    65,    66,    67,    68,    69,    70,    71,   549
 };
 
 static const yytype_int16 yycheck[] =
 {
-      17,    28,   117,    28,    95,   154,   239,    88,   224,     9,
-     246,    28,   426,   197,   224,   224,     9,     9,     2,   251,
-      35,    35,    39,   123,     9,    10,    11,    45,    13,    45,
-      12,   624,    15,   228,   224,   224,   252,   224,    35,    35,
-     256,     0,   252,   252,   260,   119,    35,   242,    37,    31,
-      33,    36,    37,    98,   128,   100,   292,    48,    42,    14,
-      77,   654,   252,   252,   280,   252,   115,   116,     3,     4,
-       5,     6,   124,   125,    29,    10,    11,    32,    13,   159,
-     160,   161,    17,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,   109,   110,   111,    46,    50,    46,   189,    34,
-     117,   182,   123,   121,   204,   121,    37,   121,   123,   224,
-     111,   112,   113,   119,   114,   111,   112,   113,   145,   104,
-     145,   114,   114,   108,    35,   126,   111,    35,   145,   478,
-     479,   127,   117,    46,    47,    35,   251,   252,    35,   371,
-     489,   119,   353,   354,   355,   356,   357,   358,   239,   119,
-     106,   107,    46,   123,   365,   387,   367,    46,   128,    46,
-     376,   377,    46,   180,    35,   643,   644,   121,   259,   104,
-     187,   387,   189,   108,    35,   121,    46,   387,   387,    38,
-      39,    40,    41,   274,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,   114,    35,
-      97,    98,    99,   387,   101,   102,   103,   224,   424,   407,
-     426,    38,    39,   411,    41,    35,   307,   415,   123,    46,
-      38,    39,   239,    41,   224,    55,    56,    57,    58,    59,
-      60,   467,   123,   121,   251,   252,   447,   651,   123,   122,
-     257,   457,   458,   459,   362,   363,   121,   274,   366,   274,
-     124,   120,   252,   280,   121,   280,   371,   274,   129,   125,
-     131,   132,   133,   134,   135,   136,   137,   138,   120,   119,
-     121,   119,   387,   119,     1,    46,    46,   122,   122,    35,
-       7,   122,     9,    10,    11,    12,    35,    35,    46,    16,
-      17,    18,    19,    48,     8,    22,   313,    24,    49,    26,
-     121,    28,   109,   120,   321,   322,    33,   388,    35,    36,
+      17,    28,   120,    28,    97,    90,   157,   243,     9,   428,
+     249,    28,   201,   254,   228,   228,   228,   228,     9,     9,
+      35,     0,     1,    40,     3,     4,     5,     6,    35,   126,
+       2,    10,    11,    35,    13,   626,    45,    45,    17,    12,
+     228,   255,   255,   255,   255,   259,   228,   228,    14,   263,
+       9,    10,    11,    35,    13,    34,   295,    15,    31,   232,
+     409,   119,    79,    29,   413,   656,    32,   255,   417,   283,
+     128,    43,   245,   255,   255,    33,     0,    36,    37,   480,
+     481,    35,     1,    37,     3,     4,     5,     6,   124,   125,
+     491,    10,    11,    35,    13,   112,   113,   114,    17,    46,
+     193,   186,    48,   120,   111,   112,   113,    46,   123,   123,
+     228,   208,   121,   121,    37,    34,   117,   115,   116,   121,
+     127,   148,   119,   148,   119,   104,   117,   117,   123,   108,
+      35,   148,   373,   128,   364,   365,   254,   255,   368,   355,
+     356,   357,   358,   359,   360,   104,    46,    47,   389,   108,
+     243,   367,   111,   369,   119,    97,    98,    99,   117,   101,
+     102,   103,   106,   107,   378,   379,    98,   184,   100,   262,
+      35,   111,   112,   113,   191,   389,   193,   389,   389,    38,
+      39,    35,    41,    35,   277,   104,   126,    46,    46,   108,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-     120,   120,   105,    50,    51,    52,    53,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    35,   423,    35,   119,    35,    35,   428,   497,    35,
-     119,    35,    35,   370,   371,    98,    99,    35,   101,   102,
-      35,    35,   387,   128,    35,   122,   110,    35,    35,    20,
-     387,    21,   605,    30,    35,    35,    35,    35,   594,   595,
-     596,   462,   122,   120,   111,    54,   121,    97,   122,   480,
-      45,   122,   119,   484,   122,   120,    23,   121,    54,    25,
-     491,    45,    45,    45,    45,    45,    45,   522,   523,   524,
-      45,   492,    45,   494,   431,   432,   433,   434,   435,   436,
-     437,    36,    35,   119,    35,    35,    35,    35,    35,   446,
-      35,   448,   449,   450,   121,   651,   121,    35,    15,   121,
-     120,    27,    35,   460,   461,   231,   463,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,   484,   180,   484,
-      35,   114,   174,   612,   187,    52,   274,   484,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,   145,   510,   252,   178,   484,   507,   417,   654,
-     507,   523,   659,   510,   427,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,   522,   523,   524,    50,    51,
-      52,    53,   250,   409,   605,   413,    40,   511,   513,   600,
-      30,    33,   539,   540,   541,   542,   543,   544,   545,   546,
-     547,     1,   549,   123,   649,   244,    -1,    -1,    -1,     9,
-      10,    11,    12,    -1,    -1,    -1,    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,    -1,    -1,    -1,
-      50,    51,    52,    53,    -1,    -1,    -1,    -1,   605,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    -1,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,   643,   644,   643,   644,
-      50,    51,    52,    53,    -1,    -1,   643,   644,    -1,    -1,
-      -1,    -1,   649,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   111,   659,    -1,    -1,    -1,    -1,    -1,    35,   119,
+     389,    46,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,   228,   426,    46,   428,    50,    46,   310,    55,    56,
+      57,    58,    59,    60,   645,   646,   243,   228,    98,    99,
+     469,   101,   102,   449,   653,    35,   121,   254,   255,    38,
+      39,    40,    41,   260,    46,   459,   460,   461,    38,    39,
+     277,    41,   277,   114,   255,   373,   283,    35,   283,   123,
+     277,    35,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,   389,   162,   163,   164,    50,   123,     1,   121,   123,
+     121,   123,   122,     7,    46,     9,    10,    11,    12,   125,
+     124,   120,    16,    17,    18,    19,   121,   120,    22,   316,
+      24,   121,    26,   119,    28,   390,   323,   324,   119,    33,
+     119,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    46,   122,   122,    50,    51,    52,    53,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,   129,   130,   131,    37,    38,    39,    40,    41,    42,
+     425,   122,    35,    50,    35,   430,   121,    46,   499,    49,
+      48,     8,   120,   120,   120,   372,   373,   121,   109,   105,
+      35,   119,    35,    35,   389,    35,   119,    35,    35,    35,
+      35,   607,   389,    35,   128,   122,    35,   110,    20,   464,
+      35,    35,   596,   597,   598,    21,    30,   111,    35,   482,
+      35,   122,    35,   486,    35,   119,    54,   122,   120,    45,
+     493,   121,    97,   122,   122,    54,   524,   525,   526,   494,
+     120,   496,   121,    23,    25,    45,   433,   434,   435,   436,
+     437,   438,   439,    35,    45,    45,    45,    45,    45,    45,
+      45,   448,    35,   450,   451,   452,   119,    35,    35,   653,
+      35,    35,    35,    35,   121,   462,   463,   121,   465,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,   486,
+      35,   486,    50,   614,    52,   121,    15,   120,    27,   486,
+      35,    83,    84,    85,    86,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    96,   512,   117,    35,   184,   178,
+     235,    53,   509,   277,   191,   512,   255,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,   524,   525,   526,
+      50,    51,    52,    53,   607,   148,   486,   602,   182,   656,
+     509,   419,   525,   661,   541,   542,   543,   544,   545,   546,
+     547,   548,   549,   651,   551,     1,   253,   429,   515,   513,
+     411,   415,   247,     9,    10,    11,    12,    41,    30,    33,
+      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,    35,    -1,    -1,    50,    51,    52,    53,    -1,    -1,
+     607,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    -1,    -1,    -1,   645,   646,
+     645,   646,    -1,    -1,    -1,    -1,    -1,    -1,   645,   646,
+      -1,    -1,    -1,    -1,   651,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,   661,   111,    48,    49,    50,    51,
+      52,    53,    -1,   119,    37,    38,    39,    40,    41,    42,
       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    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,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,    -1,    -1,
-      -1,   129,    -1,   131,   132,   133,   134,   135,   136,   137,
-     138,   119,    -1,    -1,   122,    -1,    -1,    -1,    -1,    -1,
-     128,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   122,    -1,
-     123,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    37,    38,
+      53,    -1,    -1,    -1,    -1,   129,    -1,   131,   132,   133,
+     134,   135,   136,   137,   138,    35,    -1,    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,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    -1,    -1,   129,   130,   131,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    36,    -1,
+      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   123,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    -1,    -1,
+     123,    -1,    -1,    -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,    -1,
+      -1,    -1,    -1,    -1,   119,    -1,    -1,   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,    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,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    -1,
       48,    49,    50,    51,    52,    53,    37,    38,    39,    40,
       41,    42,    43,    44,    45,    46,    -1,    48,    49,    50,
       51,    52,    53,    37,    38,    39,    40,    41,    42,    43,
       44,    45,    46,    -1,    48,    49,    50,    51,    52,    53,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    -1,
       -1,    48,    49,    50,    51,    52,    53,    37,    38,    39,
       40,    41,    42,    43,    44,    45,    -1,    -1,    48,    49,
       50,    51,    52,    53,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    -1,    -1,    48,    49,    50,    51,    52,
+      43,    44,    45,    46,    -1,    -1,    -1,    50,    51,    52,
       53,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      -1,    -1,    48,    49,    50,    51,    52,    53,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    -1,    -1,    48,
-      49,    50,    51,    52,    53,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    -1,    -1,    -1,    50,    51,
-      52,    53,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    -1,    -1,    -1,    50,    -1,    52,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    -1,    -1,
-      -1,    50,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    -1,    -1,    -1,    -1,    50,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    37,    38,
-      39,    40,    41,    42,    43,    44,    45
+      -1,    -1,    -1,    -1,    50,    51,    52,    53,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    37,    38,    39,    40,    41,    42,    43,    44,    45
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1729,70 +1733,70 @@
        0,   115,   116,   140,    35,   142,   301,   302,   141,   142,
        0,     9,    10,    11,    13,    36,    37,   104,   108,   111,
      117,   145,   146,   147,   148,   159,   163,   189,   204,   230,
-     303,   304,   305,   307,   308,   309,     3,     4,     5,     6,
-      17,    34,   143,   144,   145,   158,   159,   160,   161,   162,
-     163,   167,   169,   280,    46,    48,    46,   123,    35,   197,
-     306,   309,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,   296,   297,    37,   119,   190,    35,   119,    35,    35,
-      46,    47,    48,    49,    50,    51,    52,    53,   123,   206,
-     207,   209,   210,   211,   212,   249,   289,   290,   295,   296,
-     304,   306,   171,    46,    46,    46,    46,   170,   296,    38,
-      39,    41,   285,    46,    35,   142,   171,   121,    46,   164,
-     165,   166,   114,   111,   112,   113,   126,   191,   192,   193,
-     194,    35,   149,   150,   151,   296,    50,   213,   288,   289,
-     293,   294,   295,   296,    35,   121,   212,    36,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,   172,   122,   296,   296,   296,   121,   144,    35,
-      50,   249,   296,   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,    46,   177,
-     178,    35,   166,    35,   111,   112,   113,   127,   196,   193,
-      35,   151,   288,    46,   170,    46,   174,   175,   176,   212,
-     296,    48,    49,   290,   185,     8,   179,   190,   106,   107,
-     152,   153,   154,   155,   156,   157,   120,   120,   120,   121,
-       1,     7,    12,    16,    17,    18,    19,    22,    24,    26,
-      28,    33,    36,    37,    42,    43,    44,    45,    46,    50,
-     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,   281,   282,   284,   293,   296,   297,    38,    39,
-      40,    41,   180,   292,   292,   109,   105,   154,    35,   176,
-      35,   292,    46,   283,   285,   286,   283,   119,   260,   260,
-      35,    35,    35,   250,   244,   187,   293,   296,   212,    46,
-     251,   252,   253,   293,    35,    35,   205,   206,   208,   212,
-      35,    35,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    48,    49,   221,   289,   293,   295,    35,   260,
-     128,   122,    35,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,   122,   300,   212,
-     181,   296,   110,   227,   228,   296,   296,    46,   261,   262,
-     263,   264,   265,   266,   288,    35,    35,    20,   269,   270,
-     271,    21,   272,   273,   274,    30,   234,   235,   236,    35,
-      35,    35,    35,   122,    54,   120,   121,   254,   122,    45,
-     121,   224,   224,   224,   224,   224,   224,   224,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    50,   121,    45,
-     121,    55,    56,    57,    58,    59,    60,   291,   291,   291,
-      45,   224,   291,   224,    46,    50,    52,   248,   296,   244,
-      48,    49,   293,    48,    49,   293,    37,    46,    48,    49,
-      50,   129,   130,   131,   204,   216,   218,   244,   290,   293,
-     295,   297,   298,   288,   122,    35,    97,    98,    99,   101,
-     102,   103,   182,   183,   184,   255,    35,   121,    97,   229,
-     122,    54,   120,   121,   275,   265,    23,   271,   265,    25,
-     274,   265,    14,    29,    32,   237,   236,   288,   293,   253,
-     255,   288,   296,   296,   296,   296,   296,   296,   296,    45,
-      45,    45,    45,    45,    45,    45,    45,    45,   296,   224,
-     296,   296,   296,    46,    48,    49,   222,   293,    46,    48,
-      49,   293,    46,    48,    49,   293,   296,   296,   288,   296,
-     260,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,   129,   131,   132,   133,   134,
-     135,   136,   137,   138,   299,   299,   299,   212,   210,   212,
-     299,   212,   288,   288,   277,   119,   228,   287,   289,   296,
-     266,   263,    98,   100,   276,    35,    35,    35,    35,    35,
-     249,   247,   249,   249,    35,   296,   296,   296,   296,   296,
-     296,   296,   296,   296,   296,    46,   293,    48,    49,   293,
-      48,    49,   293,   121,   121,   288,   176,   277,    35,   121,
-     238,    31,   226,   239,   240,   241,   207,   207,   120,    15,
-     249,   253,    27,   241,   248,    35,    35
+     303,   304,   305,   307,   308,   309,     1,     3,     4,     5,
+       6,    17,    34,   143,   144,   145,   158,   159,   160,   161,
+     162,   163,   167,   169,   199,   280,    46,    48,    46,   123,
+      35,   197,   306,   309,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,   296,   297,    37,   119,   190,    35,   119,
+      35,    35,    46,    47,    48,    49,    50,    51,    52,    53,
+     123,   206,   207,   209,   210,   211,   212,   249,   289,   290,
+     295,   296,   304,   306,   171,    35,    46,    46,    46,    46,
+     170,   296,    38,    39,    41,   285,    46,    35,   142,   171,
+     121,    46,   164,   165,   166,   114,   111,   112,   113,   126,
+     191,   192,   193,   194,    35,   149,   150,   151,   296,    50,
+     213,   288,   289,   293,   294,   295,   296,    35,   121,   212,
+      36,    83,    84,    85,    86,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    96,   172,   122,   296,   296,   296,
+     121,     1,   144,    35,    50,   249,   296,   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,    46,   177,   178,    35,   166,    35,   111,   112,
+     113,   127,   196,   193,    35,   151,   288,    46,   170,    46,
+     174,   175,   176,   212,   296,    48,    49,   290,   185,     8,
+     179,   190,   106,   107,   152,   153,   154,   155,   156,   157,
+     120,   120,   120,   121,     7,    12,    16,    17,    18,    19,
+      22,    24,    26,    28,    33,    36,    37,    42,    43,    44,
+      45,    46,    50,   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,   281,   282,   284,   293,   296,
+     297,    38,    39,    40,    41,   180,   292,   292,   109,   105,
+     154,    35,   176,   292,    46,   283,   285,   286,   283,   119,
+     260,   260,    35,    35,    35,   250,   244,   187,   293,   296,
+     212,    46,   251,   252,   253,   293,    35,    35,   205,   206,
+     208,   212,    35,    35,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    48,    49,   221,   289,   293,   295,
+      35,   260,   128,   122,    35,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,   122,
+     300,   212,   181,   296,   110,   227,   228,   296,   296,    46,
+     261,   262,   263,   264,   265,   266,   288,    35,    35,    20,
+     269,   270,   271,    21,   272,   273,   274,    30,   234,   235,
+     236,    35,    35,    35,    35,   122,    54,   120,   121,   254,
+     122,    45,   121,   224,   224,   224,   224,   224,   224,   224,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    50,
+     121,    45,   121,    55,    56,    57,    58,    59,    60,   291,
+     291,   291,    45,   224,   291,   224,    46,    50,    52,   248,
+     296,   244,    48,    49,   293,    48,    49,   293,    37,    46,
+      48,    49,    50,   129,   130,   131,   204,   216,   218,   244,
+     290,   293,   295,   297,   298,   288,   122,    35,    97,    98,
+      99,   101,   102,   103,   182,   183,   184,   255,    35,   121,
+      97,   229,   122,    54,   120,   121,   275,   265,    23,   271,
+     265,    25,   274,   265,    14,    29,    32,   237,   236,   288,
+     293,   253,   255,   288,   296,   296,   296,   296,   296,   296,
+     296,    45,    45,    45,    45,    45,    45,    45,    45,    45,
+     296,   224,   296,   296,   296,    46,    48,    49,   222,   293,
+      46,    48,    49,   293,    46,    48,    49,   293,   296,   296,
+     288,   296,   260,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,   129,   131,   132,
+     133,   134,   135,   136,   137,   138,   299,   299,   299,   212,
+     210,   212,   299,   212,   288,   288,   277,   119,   228,   287,
+     289,   296,   266,   263,    98,   100,   276,    35,    35,    35,
+      35,    35,   249,   247,   249,   249,    35,   296,   296,   296,
+     296,   296,   296,   296,   296,   296,   296,    46,   293,    48,
+      49,   293,    48,    49,   293,   121,   121,   288,   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)
@@ -2624,202 +2628,202 @@
     { fixup_global_labels(lexer); ;}
     break;
 
-  case 20:
-#line 601 "pir.y"
+  case 22:
+#line 603 "pir.y"
     { new_macro_const(lexer->macros, (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].sval), yypirget_lineno(yyscanner)); ;}
     break;
 
-  case 21:
-#line 607 "pir.y"
+  case 23:
+#line 609 "pir.y"
     { /* fprintf(stderr, "macro body: [%s]\n", CURRENT_MACRO(lexer)->body);*/ ;}
     break;
 
-  case 22:
-#line 611 "pir.y"
+  case 24:
+#line 613 "pir.y"
     {
                           new_macro(lexer->macros, (yyvsp[(2) - (2)].sval), yypirget_lineno(yyscanner), TRUE,
                                     lexer->macro_size);
                         ;}
     break;
 
-  case 27:
-#line 626 "pir.y"
+  case 29:
+#line 628 "pir.y"
     { add_macro_param(CURRENT_MACRO(lexer), (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 35:
-#line 645 "pir.y"
+  case 37:
+#line 647 "pir.y"
     { store_macro_string(CURRENT_MACRO(lexer), "%s\n", (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 36:
-#line 649 "pir.y"
+  case 38:
+#line 651 "pir.y"
     {
                           store_macro_string(CURRENT_MACRO(lexer), ".local %s %s\n",
                                              pir_type_names[(yyvsp[(2) - (3)].ival)], (yyvsp[(3) - (3)].sval));
                         ;}
     break;
 
-  case 37:
-#line 660 "pir.y"
+  case 39:
+#line 662 "pir.y"
     { load_library(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 38:
-#line 664 "pir.y"
+  case 40:
+#line 666 "pir.y"
     { yypirset_lineno ((yyvsp[(2) - (2)].ival), yyscanner); ;}
     break;
 
-  case 39:
-#line 666 "pir.y"
+  case 41:
+#line 668 "pir.y"
     { lexer->filename = (yyvsp[(2) - (2)].sval); ;}
     break;
 
-  case 40:
-#line 670 "pir.y"
+  case 42:
+#line 672 "pir.y"
     { annotate(lexer, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 41:
-#line 676 "pir.y"
+  case 43:
+#line 678 "pir.y"
     { set_hll(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 42:
-#line 680 "pir.y"
+  case 44:
+#line 682 "pir.y"
     { set_hll_map(lexer, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 43:
-#line 684 "pir.y"
+  case 45:
+#line 686 "pir.y"
     { set_namespace(lexer, (yyvsp[(3) - (4)].key)); ;}
     break;
 
-  case 44:
-#line 688 "pir.y"
+  case 46:
+#line 690 "pir.y"
     { (yyval.key) = NULL; ;}
     break;
 
-  case 45:
-#line 690 "pir.y"
+  case 47:
+#line 692 "pir.y"
     { (yyval.key) = (yyvsp[(1) - (1)].key); ;}
     break;
 
-  case 46:
-#line 694 "pir.y"
+  case 48:
+#line 696 "pir.y"
     { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 47:
-#line 696 "pir.y"
+  case 49:
+#line 698 "pir.y"
     { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
-  case 48:
-#line 700 "pir.y"
+  case 50:
+#line 702 "pir.y"
     { (yyval.expr) = expr_from_string(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 50:
-#line 710 "pir.y"
+  case 52:
+#line 712 "pir.y"
     { close_sub(lexer); ;}
     break;
 
-  case 51:
-#line 714 "pir.y"
+  case 53:
+#line 716 "pir.y"
     { new_subr(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 56:
-#line 726 "pir.y"
+  case 58:
+#line 728 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_ANON);;}
     break;
 
-  case 57:
-#line 728 "pir.y"
+  case 59:
+#line 730 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_INIT); ;}
     break;
 
-  case 58:
-#line 730 "pir.y"
+  case 60:
+#line 732 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_LOAD); ;}
     break;
 
-  case 59:
-#line 732 "pir.y"
+  case 61:
+#line 734 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_MAIN); ;}
     break;
 
-  case 60:
-#line 734 "pir.y"
+  case 62:
+#line 736 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_LEX); ;}
     break;
 
-  case 61:
-#line 736 "pir.y"
+  case 63:
+#line 738 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_POSTCOMP); ;}
     break;
 
-  case 62:
-#line 738 "pir.y"
+  case 64:
+#line 740 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_IMMEDIATE); ;}
     break;
 
-  case 63:
-#line 740 "pir.y"
+  case 65:
+#line 742 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_MULTI); ;}
     break;
 
-  case 64:
-#line 742 "pir.y"
+  case 66:
+#line 744 "pir.y"
     { set_sub_outer(lexer, (yyvsp[(3) - (4)].sval)); ;}
     break;
 
-  case 65:
-#line 744 "pir.y"
+  case 67:
+#line 746 "pir.y"
     { set_sub_methodname(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 66:
-#line 746 "pir.y"
+  case 68:
+#line 748 "pir.y"
     { set_sub_vtable(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 67:
-#line 748 "pir.y"
+  case 69:
+#line 750 "pir.y"
     { set_sub_subid(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 68:
-#line 750 "pir.y"
+  case 70:
+#line 752 "pir.y"
     { set_sub_instanceof(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 69:
-#line 752 "pir.y"
+  case 71:
+#line 754 "pir.y"
     { set_sub_nsentry(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 70:
-#line 756 "pir.y"
+  case 72:
+#line 758 "pir.y"
     { set_sub_multi_types(lexer, (yyvsp[(2) - (3)].expr)); ;}
     break;
 
-  case 71:
-#line 760 "pir.y"
+  case 73:
+#line 762 "pir.y"
     {
                           CURRENT_SUB(lexer)->info.num_multi_types = 1;
                           /* n=1 means :multi() -- without any types. */
                         ;}
     break;
 
-  case 72:
-#line 765 "pir.y"
+  case 74:
+#line 767 "pir.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
-  case 73:
-#line 769 "pir.y"
+  case 75:
+#line 771 "pir.y"
     {
                           CURRENT_SUB(lexer)->info.num_multi_types = 2;
                           /* start counting multi types; always 1 higher than actual number
@@ -2830,8 +2834,8 @@
                         ;}
     break;
 
-  case 74:
-#line 778 "pir.y"
+  case 76:
+#line 780 "pir.y"
     {
                           ++CURRENT_SUB(lexer)->info.num_multi_types;
                           /* link the multi types in reverse other. That's fine,
@@ -2842,23 +2846,23 @@
                         ;}
     break;
 
-  case 75:
-#line 789 "pir.y"
+  case 77:
+#line 791 "pir.y"
     { (yyval.expr) = expr_from_ident(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 76:
-#line 791 "pir.y"
+  case 78:
+#line 793 "pir.y"
     { (yyval.expr) = expr_from_string(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 77:
-#line 793 "pir.y"
+  case 79:
+#line 795 "pir.y"
     { (yyval.expr) = expr_from_key(lexer, (yyvsp[(1) - (1)].key)); ;}
     break;
 
-  case 78:
-#line 797 "pir.y"
+  case 80:
+#line 799 "pir.y"
     {
                            /* if there are parameters, then emit a get_params instruction. */
                            if ((yyvsp[(1) - (1)].uval) > 0)
@@ -2866,13 +2870,13 @@
                          ;}
     break;
 
-  case 79:
-#line 805 "pir.y"
+  case 81:
+#line 807 "pir.y"
     { (yyval.uval) = 0; ;}
     break;
 
-  case 80:
-#line 807 "pir.y"
+  case 82:
+#line 809 "pir.y"
     {
                           /* if the :named flag was set, there's an extra
                            * constant string argument for the name. count that too.
@@ -2885,41 +2889,41 @@
                         ;}
     break;
 
-  case 81:
-#line 820 "pir.y"
+  case 83:
+#line 822 "pir.y"
     { (yyval.targ) = set_param_flag(lexer, (yyvsp[(2) - (4)].targ), (yyvsp[(3) - (4)].ival)); ;}
     break;
 
-  case 82:
-#line 824 "pir.y"
+  case 84:
+#line 826 "pir.y"
     { (yyval.targ) = add_param(lexer, (yyvsp[(1) - (2)].ival), (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 83:
-#line 828 "pir.y"
+  case 85:
+#line 830 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 84:
-#line 830 "pir.y"
+  case 86:
+#line 832 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 88:
-#line 839 "pir.y"
+  case 90:
+#line 841 "pir.y"
     { (yyval.ival) = TARGET_FLAG_INVOCANT;
                            /* XXX handle multi_type */
 
                          ;}
     break;
 
-  case 89:
-#line 846 "pir.y"
+  case 91:
+#line 848 "pir.y"
     { (yyval.ival) = TARGET_FLAG_UNIQUE_REG; ;}
     break;
 
-  case 91:
-#line 853 "pir.y"
+  case 93:
+#line 855 "pir.y"
     {
                          ++lexer->stmt_counter;
                          /* increment the logical statement counter; a statement can be
@@ -2929,38 +2933,38 @@
                         ;}
     break;
 
-  case 92:
-#line 863 "pir.y"
+  case 94:
+#line 865 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
-  case 110:
-#line 891 "pir.y"
+  case 112:
+#line 893 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (3)].mval), (yyvsp[(2) - (3)].pval)); ;}
     break;
 
-  case 111:
-#line 895 "pir.y"
+  case 113:
+#line 897 "pir.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 112:
-#line 897 "pir.y"
+  case 114:
+#line 899 "pir.y"
     { (yyval.pval) = (yyvsp[(2) - (3)].pval); ;}
     break;
 
-  case 113:
-#line 901 "pir.y"
+  case 115:
+#line 903 "pir.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 115:
-#line 906 "pir.y"
+  case 117:
+#line 908 "pir.y"
     { (yyval.pval) = new_macro_param((yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 116:
-#line 908 "pir.y"
+  case 118:
+#line 910 "pir.y"
     {
                           macro_param *param = new_macro_param((yyvsp[(3) - (3)].sval));
                           param->next = (yyvsp[(1) - (3)].pval);
@@ -2968,8 +2972,8 @@
                         ;}
     break;
 
-  case 117:
-#line 916 "pir.y"
+  case 119:
+#line 918 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                           if (sym == NULL) {
@@ -2979,23 +2983,23 @@
                         ;}
     break;
 
-  case 119:
-#line 925 "pir.y"
+  case 121:
+#line 927 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 121:
-#line 930 "pir.y"
+  case 123:
+#line 932 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
-  case 122:
-#line 935 "pir.y"
+  case 124:
+#line 937 "pir.y"
     { (yyval.sval) = ""; ;}
     break;
 
-  case 123:
-#line 937 "pir.y"
+  case 125:
+#line 939 "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));
@@ -3004,18 +3008,18 @@
                         ;}
     break;
 
-  case 127:
-#line 949 "pir.y"
+  case 129:
+#line 951 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 128:
-#line 957 "pir.y"
+  case 130:
+#line 959 "pir.y"
     { set_instr(lexer, NULL); ;}
     break;
 
-  case 130:
-#line 965 "pir.y"
+  case 132:
+#line 967 "pir.y"
     {
                            if (lexer->parse_errors > MAX_NUM_ERRORS)
                                panic(lexer, "Too many errors. Compilation aborted.\n");
@@ -3024,24 +3028,24 @@
                          ;}
     break;
 
-  case 131:
-#line 974 "pir.y"
+  case 133:
+#line 976 "pir.y"
     {
                            set_instrf(lexer, "null", "%T", (yyvsp[(2) - (3)].targ));
                            get_opinfo(lexer);
                          ;}
     break;
 
-  case 132:
-#line 981 "pir.y"
+  case 134:
+#line 983 "pir.y"
     {
                            set_instrf(lexer, "get_results", "%T", (yyvsp[(2) - (3)].targ));
                            get_opinfo(lexer);
                          ;}
     break;
 
-  case 136:
-#line 995 "pir.y"
+  case 138:
+#line 997 "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.
                             */
@@ -3050,8 +3054,8 @@
                          ;}
     break;
 
-  case 137:
-#line 1004 "pir.y"
+  case 139:
+#line 1006 "pir.y"
     { /* when this rule is activated, the initial identifier must
                            * be a parrot op.
                            */
@@ -3060,8 +3064,8 @@
                         ;}
     break;
 
-  case 143:
-#line 1022 "pir.y"
+  case 145:
+#line 1024 "pir.y"
     {
                          /* the "instruction" that was set now appears to be
                           * an identifier; get the name, and check its type.
@@ -3097,41 +3101,41 @@
                        ;}
     break;
 
-  case 144:
-#line 1058 "pir.y"
+  case 146:
+#line 1060 "pir.y"
     { push_operand(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 145:
-#line 1060 "pir.y"
+  case 147:
+#line 1062 "pir.y"
     { push_operand(lexer, expr_from_key(lexer, (yyvsp[(1) - (1)].key))); ;}
     break;
 
-  case 146:
-#line 1064 "pir.y"
+  case 148:
+#line 1066 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
-  case 147:
-#line 1066 "pir.y"
+  case 149:
+#line 1068 "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 148:
-#line 1071 "pir.y"
+  case 150:
+#line 1073 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
-  case 149:
-#line 1073 "pir.y"
+  case 151:
+#line 1075 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
-  case 150:
-#line 1077 "pir.y"
+  case 152:
+#line 1079 "pir.y"
     {
                            /* if $1 is a register, just return that */
                            if (TEST_FLAG((yyvsp[(1) - (2)].targ)->flags, TARGET_FLAG_IS_REG))
@@ -3154,23 +3158,23 @@
                          ;}
     break;
 
-  case 151:
-#line 1100 "pir.y"
+  case 153:
+#line 1102 "pir.y"
     { (yyval.key) = (yyvsp[(2) - (3)].key); ;}
     break;
 
-  case 152:
-#line 1104 "pir.y"
+  case 154:
+#line 1106 "pir.y"
     { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 153:
-#line 1106 "pir.y"
+  case 155:
+#line 1108 "pir.y"
     { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
-  case 154:
-#line 1115 "pir.y"
+  case 156:
+#line 1117 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (6)].expr));
@@ -3183,8 +3187,8 @@
                         ;}
     break;
 
-  case 155:
-#line 1126 "pir.y"
+  case 157:
+#line 1128 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (4)].expr));
@@ -3198,8 +3202,8 @@
                         ;}
     break;
 
-  case 156:
-#line 1138 "pir.y"
+  case 158:
+#line 1140 "pir.y"
     {
                           unshift_operand(lexer, expr_from_key(lexer, (yyvsp[(4) - (6)].key)));
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (6)].targ)));
@@ -3209,8 +3213,8 @@
                         ;}
     break;
 
-  case 160:
-#line 1155 "pir.y"
+  case 162:
+#line 1157 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3221,8 +3225,8 @@
                         ;}
     break;
 
-  case 161:
-#line 1164 "pir.y"
+  case 163:
+#line 1166 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 0.0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3233,24 +3237,24 @@
                         ;}
     break;
 
-  case 162:
-#line 1173 "pir.y"
+  case 164:
+#line 1175 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%C", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].cval));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 163:
-#line 1178 "pir.y"
+  case 165:
+#line 1180 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 164:
-#line 1183 "pir.y"
+  case 166:
+#line 1185 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (3)].sval));
                           if (sym) {
@@ -3273,16 +3277,16 @@
                         ;}
     break;
 
-  case 165:
-#line 1204 "pir.y"
+  case 167:
+#line 1206 "pir.y"
     {
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (3)].targ)));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 166:
-#line 1209 "pir.y"
+  case 168:
+#line 1211 "pir.y"
     {
                           /*   $P0 = foo ["bar"]    # PIR style
                            *
@@ -3325,8 +3329,8 @@
                         ;}
     break;
 
-  case 167:
-#line 1250 "pir.y"
+  case 169:
+#line 1252 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (4)].sval));
                           target *t;
@@ -3346,8 +3350,8 @@
                         ;}
     break;
 
-  case 168:
-#line 1268 "pir.y"
+  case 170:
+#line 1270 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(3) - (4)].ival));
                           set_target_key(preg, (yyvsp[(4) - (4)].key));
@@ -3356,16 +3360,16 @@
                         ;}
     break;
 
-  case 169:
-#line 1275 "pir.y"
+  case 171:
+#line 1277 "pir.y"
     {
                           set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%T%E", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].expr));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 170:
-#line 1280 "pir.y"
+  case 172:
+#line 1282 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3378,8 +3382,8 @@
                         ;}
     break;
 
-  case 171:
-#line 1291 "pir.y"
+  case 173:
+#line 1293 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3392,8 +3396,8 @@
                         ;}
     break;
 
-  case 172:
-#line 1302 "pir.y"
+  case 174:
+#line 1304 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3406,8 +3410,8 @@
                         ;}
     break;
 
-  case 173:
-#line 1313 "pir.y"
+  case 175:
+#line 1315 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3420,32 +3424,32 @@
                         ;}
     break;
 
-  case 174:
-#line 1324 "pir.y"
+  case 176:
+#line 1326 "pir.y"
     {
                           set_instrf(lexer, "add", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 175:
-#line 1329 "pir.y"
+  case 177:
+#line 1331 "pir.y"
     {
                           set_instrf(lexer, "sub", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 176:
-#line 1334 "pir.y"
+  case 178:
+#line 1336 "pir.y"
     {
                           set_instrf(lexer, (yyvsp[(3) - (4)].sval), "%T%E", (yyvsp[(1) - (4)].targ), (yyvsp[(4) - (4)].expr));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 177:
-#line 1339 "pir.y"
+  case 179:
+#line 1341 "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));
@@ -3457,8 +3461,8 @@
                         ;}
     break;
 
-  case 178:
-#line 1349 "pir.y"
+  case 180:
+#line 1351 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (4)].sval));
                           target *t;
@@ -3479,8 +3483,8 @@
                       ;}
     break;
 
-  case 179:
-#line 1368 "pir.y"
+  case 181:
+#line 1370 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (4)].ival));
                           set_target_key(preg, (yyvsp[(2) - (4)].key));
@@ -3489,98 +3493,98 @@
                         ;}
     break;
 
-  case 180:
-#line 1402 "pir.y"
+  case 182:
+#line 1404 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%i%T", (yyvsp[(1) - (3)].ival), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 181:
-#line 1404 "pir.y"
+  case 183:
+#line 1406 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%n%T", (yyvsp[(1) - (3)].dval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 182:
-#line 1406 "pir.y"
+  case 184:
+#line 1408 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%s%T", (yyvsp[(1) - (3)].sval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 183:
-#line 1408 "pir.y"
+  case 185:
+#line 1410 "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 184:
-#line 1410 "pir.y"
+  case 186:
+#line 1412 "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 185:
-#line 1412 "pir.y"
+  case 187:
+#line 1414 "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 186:
-#line 1414 "pir.y"
+  case 188:
+#line 1416 "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 187:
-#line 1416 "pir.y"
+  case 189:
+#line 1418 "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 188:
-#line 1421 "pir.y"
+  case 190:
+#line 1423 "pir.y"
     { get_opinfo(lexer); ;}
     break;
 
-  case 189:
-#line 1430 "pir.y"
+  case 191:
+#line 1432 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, (yyvsp[(3) - (5)].sval), (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 190:
-#line 1432 "pir.y"
+  case 192:
+#line 1434 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "int", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 191:
-#line 1434 "pir.y"
+  case 193:
+#line 1436 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "num", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 192:
-#line 1436 "pir.y"
+  case 194:
+#line 1438 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "pmc", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 193:
-#line 1438 "pir.y"
+  case 195:
+#line 1440 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "string", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 194:
-#line 1440 "pir.y"
+  case 196:
+#line 1442 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "if", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 195:
-#line 1442 "pir.y"
+  case 197:
+#line 1444 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "unless", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 196:
-#line 1444 "pir.y"
+  case 198:
+#line 1446 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "goto", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 197:
-#line 1446 "pir.y"
+  case 199:
+#line 1448 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "null", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 198:
-#line 1448 "pir.y"
+  case 200:
+#line 1450 "pir.y"
     {
                           int istrue = evaluate_c(lexer, (yyvsp[(2) - (4)].cval));
                           /* if "unless", invert the true-ness */
@@ -3594,76 +3598,76 @@
                         ;}
     break;
 
-  case 199:
-#line 1460 "pir.y"
+  case 201:
+#line 1462 "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 200:
-#line 1465 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
-    break;
-
-  case 201:
+  case 202:
 #line 1467 "pir.y"
-    { set_instrf(lexer, (yyvsp[(1) - (4)].ival) ? "unless" : "if", "%T%I", (yyvsp[(2) - (4)].targ), (yyvsp[(4) - (4)].sval)); ;}
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 202:
+  case 203:
 #line 1469 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "int", (yyvsp[(4) - (4)].sval)); ;}
+    { set_instrf(lexer, (yyvsp[(1) - (4)].ival) ? "unless" : "if", "%T%I", (yyvsp[(2) - (4)].targ), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 203:
+  case 204:
 #line 1471 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "num", (yyvsp[(4) - (4)].sval)); ;}
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "int", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 204:
+  case 205:
 #line 1473 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "pmc", (yyvsp[(4) - (4)].sval)); ;}
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "num", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 205:
+  case 206:
 #line 1475 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "string", (yyvsp[(4) - (4)].sval)); ;}
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "pmc", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 206:
+  case 207:
 #line 1477 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "if", (yyvsp[(4) - (4)].sval)); ;}
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "string", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 207:
+  case 208:
 #line 1479 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "unless", (yyvsp[(4) - (4)].sval)); ;}
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "if", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 208:
+  case 209:
 #line 1481 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "unless", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 209:
+  case 210:
 #line 1483 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 210:
+  case 211:
 #line 1485 "pir.y"
-    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 211:
+  case 212:
 #line 1487 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 212:
+  case 213:
 #line 1489 "pir.y"
+    { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
+    break;
+
+  case 214:
+#line 1491 "pir.y"
     {
                           if ((yyvsp[(2) - (4)].ival) == COMPUTE_DURING_RUNTIME) {
                              if ((yyvsp[(1) - (4)].ival) == NEED_INVERT_OPNAME) /* "unless" */
@@ -3690,8 +3694,8 @@
                         ;}
     break;
 
-  case 213:
-#line 1520 "pir.y"
+  case 215:
+#line 1522 "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
@@ -3719,8 +3723,8 @@
                         ;}
     break;
 
-  case 214:
-#line 1546 "pir.y"
+  case 216:
+#line 1548 "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));
@@ -3730,8 +3734,8 @@
                         ;}
     break;
 
-  case 215:
-#line 1554 "pir.y"
+  case 217:
+#line 1556 "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));
@@ -3742,8 +3746,8 @@
                         ;}
     break;
 
-  case 216:
-#line 1563 "pir.y"
+  case 218:
+#line 1565 "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));
@@ -3754,71 +3758,71 @@
                         ;}
     break;
 
-  case 217:
-#line 1572 "pir.y"
+  case 219:
+#line 1574 "pir.y"
     { (yyval.ival) = evaluate_i_i((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
-  case 218:
-#line 1574 "pir.y"
+  case 220:
+#line 1576 "pir.y"
     { (yyval.ival) = evaluate_i_n((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
-  case 219:
-#line 1576 "pir.y"
+  case 221:
+#line 1578 "pir.y"
     { (yyval.ival) = evaluate_n_i((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
-  case 220:
-#line 1578 "pir.y"
+  case 222:
+#line 1580 "pir.y"
     { (yyval.ival) = evaluate_n_n((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
-  case 221:
-#line 1580 "pir.y"
+  case 223:
+#line 1582 "pir.y"
     { (yyval.ival) = evaluate_s_s((yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval)); ;}
     break;
 
-  case 222:
-#line 1584 "pir.y"
+  case 224:
+#line 1586 "pir.y"
     {
                           yypirerror(yyscanner, lexer, "cannot compare string to %s",
                                      (yyvsp[(3) - (3)].ival) == INT_TYPE ? "integer" : "number");
                         ;}
     break;
 
-  case 223:
-#line 1589 "pir.y"
+  case 225:
+#line 1591 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare integer to string"); ;}
     break;
 
-  case 224:
-#line 1591 "pir.y"
+  case 226:
+#line 1593 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare number to string"); ;}
     break;
 
-  case 225:
-#line 1595 "pir.y"
+  case 227:
+#line 1597 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
-  case 226:
-#line 1596 "pir.y"
+  case 228:
+#line 1598 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
-  case 227:
-#line 1599 "pir.y"
+  case 229:
+#line 1601 "pir.y"
     { (yyval.ival) = DONT_INVERT_OPNAME; /* no need to invert */ ;}
     break;
 
-  case 228:
-#line 1600 "pir.y"
+  case 230:
+#line 1602 "pir.y"
     { (yyval.ival) = NEED_INVERT_OPNAME; /* yes, invert opname */ ;}
     break;
 
-  case 231:
-#line 1608 "pir.y"
+  case 233:
+#line 1610 "pir.y"
     {
                           set_instrf(lexer, "branch", "%I", (yyvsp[(2) - (3)].sval));
                           set_op_labelflag(lexer, BIT(0)); /* bit 0 means: "1 << 0" */
@@ -3826,38 +3830,38 @@
                         ;}
     break;
 
-  case 232:
-#line 1616 "pir.y"
+  case 234:
+#line 1618 "pir.y"
     { declare_local(lexer, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].symb)); ;}
     break;
 
-  case 233:
-#line 1620 "pir.y"
+  case 235:
+#line 1622 "pir.y"
     { (yyval.symb) = (yyvsp[(1) - (1)].symb); ;}
     break;
 
-  case 234:
-#line 1622 "pir.y"
+  case 236:
+#line 1624 "pir.y"
     { (yyval.symb) = add_local((yyvsp[(1) - (3)].symb), (yyvsp[(3) - (3)].symb)); ;}
     break;
 
-  case 235:
-#line 1626 "pir.y"
+  case 237:
+#line 1628 "pir.y"
     { (yyval.symb) = new_local(lexer, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 236:
-#line 1629 "pir.y"
+  case 238:
+#line 1631 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 237:
-#line 1630 "pir.y"
+  case 239:
+#line 1632 "pir.y"
     { (yyval.ival) = 1; ;}
     break;
 
-  case 238:
-#line 1634 "pir.y"
+  case 240:
+#line 1636 "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)) {
 
@@ -3869,86 +3873,86 @@
                         ;}
     break;
 
-  case 239:
-#line 1649 "pir.y"
+  case 241:
+#line 1651 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
-  case 242:
-#line 1661 "pir.y"
+  case 244:
+#line 1663 "pir.y"
     { /* $4 contains an invocation object */
                               set_invocation_args(lexer, (yyvsp[(4) - (8)].invo), (yyvsp[(3) - (8)].argm));
                               (yyval.invo) = set_invocation_results(lexer, (yyvsp[(4) - (8)].invo), (yyvsp[(6) - (8)].targ));
                             ;}
     break;
 
-  case 243:
-#line 1668 "pir.y"
+  case 245:
+#line 1670 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 244:
-#line 1670 "pir.y"
+  case 246:
+#line 1672 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 245:
-#line 1674 "pir.y"
+  case 247:
+#line 1676 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 246:
-#line 1676 "pir.y"
+  case 248:
+#line 1678 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
-  case 247:
-#line 1680 "pir.y"
+  case 249:
+#line 1682 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 248:
-#line 1684 "pir.y"
+  case 250:
+#line 1686 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(2) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 249:
-#line 1686 "pir.y"
+  case 251:
+#line 1688 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_NCI, (yyvsp[(2) - (2)].targ)); ;}
     break;
 
-  case 250:
-#line 1689 "pir.y"
+  case 252:
+#line 1691 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_METHOD, (yyvsp[(2) - (5)].targ), (yyvsp[(5) - (5)].expr)); ;}
     break;
 
-  case 251:
-#line 1693 "pir.y"
+  case 253:
+#line 1695 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 252:
-#line 1695 "pir.y"
+  case 254:
+#line 1697 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (2)].targ); ;}
     break;
 
-  case 253:
-#line 1699 "pir.y"
+  case 255:
+#line 1701 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 254:
-#line 1701 "pir.y"
+  case 256:
+#line 1703 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 255:
-#line 1705 "pir.y"
+  case 257:
+#line 1707 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 256:
-#line 1707 "pir.y"
+  case 258:
+#line 1709 "pir.y"
     {
                              if ((yyvsp[(2) - (2)].targ))
                                  (yyval.targ) = add_target(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].targ));
@@ -3957,33 +3961,33 @@
                            ;}
     break;
 
-  case 257:
-#line 1716 "pir.y"
+  case 259:
+#line 1718 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
-  case 258:
-#line 1718 "pir.y"
+  case 260:
+#line 1720 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 260:
-#line 1726 "pir.y"
+  case 262:
+#line 1728 "pir.y"
     { (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
-  case 261:
-#line 1728 "pir.y"
+  case 263:
+#line 1730 "pir.y"
     { (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
-  case 262:
-#line 1730 "pir.y"
+  case 264:
+#line 1732 "pir.y"
     {  (yyval.invo) = set_invocation_results(lexer, (yyvsp[(1) - (1)].invo), NULL); ;}
     break;
 
-  case 265:
-#line 1738 "pir.y"
+  case 267:
+#line 1740 "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)) {
@@ -4003,21 +4007,21 @@
                            ;}
     break;
 
-  case 266:
-#line 1758 "pir.y"
+  case 268:
+#line 1760 "pir.y"
     {
                              (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(1) - (2)].targ), NULL);
                              set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (2)].argm));
                            ;}
     break;
 
-  case 267:
-#line 1765 "pir.y"
+  case 269:
+#line 1767 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 268:
-#line 1767 "pir.y"
+  case 270:
+#line 1769 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -4027,8 +4031,8 @@
                            ;}
     break;
 
-  case 269:
-#line 1777 "pir.y"
+  case 271:
+#line 1779 "pir.y"
     { /* check that this identifier was declared */
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
 
@@ -4047,23 +4051,23 @@
                            ;}
     break;
 
-  case 270:
-#line 1794 "pir.y"
+  case 272:
+#line 1796 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
-  case 271:
-#line 1796 "pir.y"
+  case 273:
+#line 1798 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
-  case 272:
-#line 1798 "pir.y"
+  case 274:
+#line 1800 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, new_const(lexer, STRING_TYPE, (yyvsp[(1) - (1)].sval))); ;}
     break;
 
-  case 273:
-#line 1802 "pir.y"
+  case 275:
+#line 1804 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -4074,96 +4078,96 @@
                            ;}
     break;
 
-  case 274:
-#line 1811 "pir.y"
+  case 276:
+#line 1813 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
-  case 275:
-#line 1816 "pir.y"
+  case 277:
+#line 1818 "pir.y"
     {
                              (yyval.targ) = (yyvsp[(2) - (3)].targ);
                            ;}
     break;
 
-  case 276:
-#line 1822 "pir.y"
+  case 278:
+#line 1824 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 277:
-#line 1824 "pir.y"
+  case 279:
+#line 1826 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 278:
-#line 1828 "pir.y"
+  case 280:
+#line 1830 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 279:
-#line 1830 "pir.y"
+  case 281:
+#line 1832 "pir.y"
     { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 280:
-#line 1834 "pir.y"
+  case 282:
+#line 1836 "pir.y"
     { (yyval.targ) = set_param_flag(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 281:
-#line 1836 "pir.y"
+  case 283:
+#line 1838 "pir.y"
     { (yyval.targ) = set_param_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
-  case 282:
-#line 1840 "pir.y"
+  case 284:
+#line 1842 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 283:
-#line 1842 "pir.y"
+  case 285:
+#line 1844 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 284:
-#line 1846 "pir.y"
+  case 286:
+#line 1848 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPTIONAL; ;}
     break;
 
-  case 285:
-#line 1848 "pir.y"
+  case 287:
+#line 1850 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPT_FLAG; ;}
     break;
 
-  case 286:
-#line 1850 "pir.y"
+  case 288:
+#line 1852 "pir.y"
     { (yyval.ival) = TARGET_FLAG_SLURPY; ;}
     break;
 
-  case 287:
-#line 1852 "pir.y"
+  case 289:
+#line 1854 "pir.y"
     {
                              (yyval.ival) = TARGET_FLAG_NAMED;
                              set_param_alias(lexer, (yyvsp[(2) - (2)].sval));
                            ;}
     break;
 
-  case 288:
-#line 1862 "pir.y"
+  case 290:
+#line 1864 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
-  case 293:
-#line 1872 "pir.y"
+  case 295:
+#line 1874 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
                             ;}
     break;
 
-  case 294:
-#line 1877 "pir.y"
+  case 296:
+#line 1879 "pir.y"
     { /* was the invocation a method call? then it becomes a method tail
                                * call, otherwise it's just a normal (sub) tail call.
                                */
@@ -4174,195 +4178,195 @@
                             ;}
     break;
 
-  case 295:
-#line 1888 "pir.y"
+  case 297:
+#line 1890 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
                             ;}
     break;
 
-  case 296:
-#line 1895 "pir.y"
+  case 298:
+#line 1897 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 297:
-#line 1899 "pir.y"
+  case 299:
+#line 1901 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 298:
-#line 1901 "pir.y"
+  case 300:
+#line 1903 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 299:
-#line 1905 "pir.y"
+  case 301:
+#line 1907 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 300:
-#line 1907 "pir.y"
+  case 302:
+#line 1909 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (3)].argm), (yyvsp[(3) - (3)].argm)); ;}
     break;
 
-  case 303:
-#line 1915 "pir.y"
+  case 305:
+#line 1917 "pir.y"
     { (yyval.argm) = set_arg_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
-  case 304:
-#line 1919 "pir.y"
+  case 306:
+#line 1921 "pir.y"
     { (yyval.argm) = set_arg_flag((yyval.argm), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 305:
-#line 1923 "pir.y"
+  case 307:
+#line 1925 "pir.y"
     { (yyval.argm) = set_curarg(lexer, new_argument(lexer, (yyvsp[(1) - (1)].expr)));  ;}
     break;
 
-  case 306:
-#line 1929 "pir.y"
+  case 308:
+#line 1931 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
                             ;}
     break;
 
-  case 307:
-#line 1938 "pir.y"
+  case 309:
+#line 1940 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
                             ;}
     break;
 
-  case 308:
-#line 1945 "pir.y"
+  case 310:
+#line 1947 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 309:
-#line 1947 "pir.y"
+  case 311:
+#line 1949 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 310:
-#line 1952 "pir.y"
+  case 312:
+#line 1954 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 311:
-#line 1954 "pir.y"
+  case 313:
+#line 1956 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
-  case 312:
-#line 1959 "pir.y"
+  case 314:
+#line 1961 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 313:
-#line 1963 "pir.y"
+  case 315:
+#line 1965 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 314:
-#line 1965 "pir.y"
+  case 316:
+#line 1967 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 315:
-#line 1969 "pir.y"
+  case 317:
+#line 1971 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 316:
-#line 1971 "pir.y"
+  case 318:
+#line 1973 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
-  case 317:
-#line 1975 "pir.y"
+  case 319:
+#line 1977 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 318:
-#line 1980 "pir.y"
+  case 320:
+#line 1982 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 319:
-#line 1982 "pir.y"
+  case 321:
+#line 1984 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 320:
-#line 1986 "pir.y"
+  case 322:
+#line 1988 "pir.y"
     { (yyval.ival) = ARG_FLAG_FLAT; ;}
     break;
 
-  case 321:
-#line 1988 "pir.y"
+  case 323:
+#line 1990 "pir.y"
     {
                                (yyval.ival) = ARG_FLAG_NAMED;
                                set_arg_alias(lexer, (yyvsp[(2) - (2)].sval));
                              ;}
     break;
 
-  case 322:
-#line 1995 "pir.y"
+  case 324:
+#line 1997 "pir.y"
     { (yyval.sval) = NULL; ;}
     break;
 
-  case 323:
-#line 1997 "pir.y"
+  case 325:
+#line 1999 "pir.y"
     { (yyval.sval) = (yyvsp[(1) - (1)].sval); ;}
     break;
 
-  case 324:
-#line 2001 "pir.y"
+  case 326:
+#line 2003 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
-  case 326:
-#line 2008 "pir.y"
+  case 328:
+#line 2010 "pir.y"
     { store_global_constant(lexer, (yyvsp[(2) - (2)].cdec)); ;}
     break;
 
-  case 329:
-#line 2016 "pir.y"
+  case 331:
+#line 2018 "pir.y"
     { (yyval.cdec) = (yyvsp[(2) - (2)].cdec); ;}
     break;
 
-  case 332:
-#line 2024 "pir.y"
+  case 334:
+#line 2026 "pir.y"
     { store_global_constant(lexer, (yyvsp[(2) - (2)].cdec)); ;}
     break;
 
-  case 333:
-#line 2028 "pir.y"
+  case 335:
+#line 2030 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, INT_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ival)); ;}
     break;
 
-  case 334:
-#line 2030 "pir.y"
+  case 336:
+#line 2032 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, NUM_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].dval)); ;}
     break;
 
-  case 335:
-#line 2032 "pir.y"
+  case 337:
+#line 2034 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, STRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
     break;
 
-  case 336:
-#line 2036 "pir.y"
+  case 338:
+#line 2038 "pir.y"
     { (yyval.cdec) = new_pmc_const(lexer, (yyvsp[(1) - (4)].sval), (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
     break;
 
-  case 338:
-#line 2041 "pir.y"
+  case 340:
+#line 2043 "pir.y"
     { /* this alternative is necessary, otherwise the parser
                                * just stops when assigning an identifier to a pmc
                                * const, without an error message. That may be
@@ -4372,98 +4376,98 @@
                             ;}
     break;
 
-  case 339:
-#line 2053 "pir.y"
-    { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
-    break;
-
-  case 340:
-#line 2054 "pir.y"
-    { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
-    break;
-
   case 341:
-#line 2058 "pir.y"
-    { (yyval.cval) = new_const(lexer, INT_VAL, (yyvsp[(1) - (1)].ival)); ;}
+#line 2055 "pir.y"
+    { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 342:
-#line 2059 "pir.y"
-    { (yyval.cval) = new_const(lexer, NUM_VAL, (yyvsp[(1) - (1)].dval)); ;}
+#line 2056 "pir.y"
+    { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
   case 343:
 #line 2060 "pir.y"
-    { (yyval.cval) = (yyvsp[(1) - (1)].cval); ;}
+    { (yyval.cval) = new_const(lexer, INT_VAL, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 344:
-#line 2063 "pir.y"
-    { (yyval.cval) = new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval)); ;}
+#line 2061 "pir.y"
+    { (yyval.cval) = new_const(lexer, NUM_VAL, (yyvsp[(1) - (1)].dval)); ;}
     break;
 
   case 345:
-#line 2064 "pir.y"
-    { (yyval.cval) = new_const(lexer, USTRING_VAL, (yyvsp[(1) - (1)].ustr)); ;}
+#line 2062 "pir.y"
+    { (yyval.cval) = (yyvsp[(1) - (1)].cval); ;}
     break;
 
   case 346:
-#line 2067 "pir.y"
-    { (yyval.ival) = OP_NE; ;}
+#line 2065 "pir.y"
+    { (yyval.cval) = new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 347:
-#line 2068 "pir.y"
-    { (yyval.ival) = OP_EQ; ;}
+#line 2066 "pir.y"
+    { (yyval.cval) = new_const(lexer, USTRING_VAL, (yyvsp[(1) - (1)].ustr)); ;}
     break;
 
   case 348:
 #line 2069 "pir.y"
-    { (yyval.ival) = OP_LT; ;}
+    { (yyval.ival) = OP_NE; ;}
     break;
 
   case 349:
 #line 2070 "pir.y"
-    { (yyval.ival) = OP_LE; ;}
+    { (yyval.ival) = OP_EQ; ;}
     break;
 
   case 350:
 #line 2071 "pir.y"
-    { (yyval.ival) = OP_GE; ;}
+    { (yyval.ival) = OP_LT; ;}
     break;
 
   case 351:
 #line 2072 "pir.y"
-    { (yyval.ival) = OP_GT; ;}
+    { (yyval.ival) = OP_LE; ;}
     break;
 
   case 352:
-#line 2075 "pir.y"
-    { (yyval.ival) = INT_TYPE; ;}
+#line 2073 "pir.y"
+    { (yyval.ival) = OP_GE; ;}
     break;
 
   case 353:
-#line 2076 "pir.y"
-    { (yyval.ival) = NUM_TYPE; ;}
+#line 2074 "pir.y"
+    { (yyval.ival) = OP_GT; ;}
     break;
 
   case 354:
 #line 2077 "pir.y"
-    { (yyval.ival) = PMC_TYPE; ;}
+    { (yyval.ival) = INT_TYPE; ;}
     break;
 
   case 355:
 #line 2078 "pir.y"
-    { (yyval.ival) = STRING_TYPE; ;}
+    { (yyval.ival) = NUM_TYPE; ;}
     break;
 
   case 356:
-#line 2086 "pir.y"
-    { set_curtarget(lexer, (yyvsp[(1) - (1)].targ));  ;}
+#line 2079 "pir.y"
+    { (yyval.ival) = PMC_TYPE; ;}
+    break;
+
+  case 357:
+#line 2080 "pir.y"
+    { (yyval.ival) = STRING_TYPE; ;}
     break;
 
   case 358:
-#line 2090 "pir.y"
+#line 2088 "pir.y"
+    { set_curtarget(lexer, (yyvsp[(1) - (1)].targ));  ;}
+    break;
+
+  case 360:
+#line 2092 "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) {
@@ -4477,278 +4481,278 @@
                          ;}
     break;
 
-  case 359:
-#line 2103 "pir.y"
-    { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival));    ;}
-    break;
-
-  case 360:
-#line 2104 "pir.y"
-    { (yyval.targ) = new_reg(lexer, NUM_TYPE, (yyvsp[(1) - (1)].ival));    ;}
-    break;
-
   case 361:
 #line 2105 "pir.y"
-    { (yyval.targ) = new_reg(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival));    ;}
+    { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 362:
 #line 2106 "pir.y"
-    { (yyval.targ) = new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival)); ;}
+    { (yyval.targ) = new_reg(lexer, NUM_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
-  case 365:
-#line 2114 "pir.y"
-    { (yyval.sval) = "if"; ;}
+  case 363:
+#line 2107 "pir.y"
+    { (yyval.targ) = new_reg(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
-  case 366:
-#line 2115 "pir.y"
-    { (yyval.sval) = "unless"; ;}
+  case 364:
+#line 2108 "pir.y"
+    { (yyval.targ) = new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 367:
 #line 2116 "pir.y"
-    { (yyval.sval) = "goto"; ;}
+    { (yyval.sval) = "if"; ;}
     break;
 
   case 368:
 #line 2117 "pir.y"
-    { (yyval.sval) = "int"; ;}
+    { (yyval.sval) = "unless"; ;}
     break;
 
   case 369:
 #line 2118 "pir.y"
-    { (yyval.sval) = "num"; ;}
+    { (yyval.sval) = "goto"; ;}
     break;
 
   case 370:
 #line 2119 "pir.y"
-    { (yyval.sval) = "string"; ;}
+    { (yyval.sval) = "int"; ;}
     break;
 
   case 371:
 #line 2120 "pir.y"
-    { (yyval.sval) = "pmc"; ;}
+    { (yyval.sval) = "num"; ;}
     break;
 
   case 372:
 #line 2121 "pir.y"
-    { (yyval.sval) = "null"; ;}
+    { (yyval.sval) = "string"; ;}
     break;
 
   case 373:
-#line 2124 "pir.y"
-    { (yyval.sval) = "neg"; ;}
+#line 2122 "pir.y"
+    { (yyval.sval) = "pmc"; ;}
     break;
 
   case 374:
-#line 2125 "pir.y"
-    { (yyval.sval) = "not"; ;}
+#line 2123 "pir.y"
+    { (yyval.sval) = "null"; ;}
     break;
 
   case 375:
 #line 2126 "pir.y"
-    { (yyval.sval) = "bnot"; ;}
+    { (yyval.sval) = "neg"; ;}
     break;
 
   case 376:
-#line 2129 "pir.y"
-    { (yyval.ival) = OP_ADD; ;}
+#line 2127 "pir.y"
+    { (yyval.sval) = "not"; ;}
     break;
 
   case 377:
-#line 2130 "pir.y"
-    { (yyval.ival) = OP_SUB; ;}
+#line 2128 "pir.y"
+    { (yyval.sval) = "bnot"; ;}
     break;
 
   case 378:
 #line 2131 "pir.y"
-    { (yyval.ival) = OP_DIV; ;}
+    { (yyval.ival) = OP_ADD; ;}
     break;
 
   case 379:
 #line 2132 "pir.y"
-    { (yyval.ival) = OP_MUL; ;}
+    { (yyval.ival) = OP_SUB; ;}
     break;
 
   case 380:
 #line 2133 "pir.y"
-    { (yyval.ival) = OP_MOD; ;}
+    { (yyval.ival) = OP_DIV; ;}
     break;
 
   case 381:
 #line 2134 "pir.y"
-    { (yyval.ival) = OP_BOR; ;}
+    { (yyval.ival) = OP_MUL; ;}
     break;
 
   case 382:
 #line 2135 "pir.y"
-    { (yyval.ival) = OP_BAND; ;}
+    { (yyval.ival) = OP_MOD; ;}
     break;
 
   case 383:
 #line 2136 "pir.y"
-    { (yyval.ival) = OP_BXOR; ;}
+    { (yyval.ival) = OP_BOR; ;}
     break;
 
   case 384:
 #line 2137 "pir.y"
-    { (yyval.ival) = OP_POW; ;}
+    { (yyval.ival) = OP_BAND; ;}
     break;
 
   case 385:
 #line 2138 "pir.y"
-    { (yyval.ival) = OP_CONCAT; ;}
+    { (yyval.ival) = OP_BXOR; ;}
     break;
 
   case 386:
 #line 2139 "pir.y"
-    { (yyval.ival) = OP_LSR; ;}
+    { (yyval.ival) = OP_POW; ;}
     break;
 
   case 387:
 #line 2140 "pir.y"
-    { (yyval.ival) = OP_SHR; ;}
+    { (yyval.ival) = OP_CONCAT; ;}
     break;
 
   case 388:
 #line 2141 "pir.y"
-    { (yyval.ival) = OP_SHL; ;}
+    { (yyval.ival) = OP_LSR; ;}
     break;
 
   case 389:
 #line 2142 "pir.y"
-    { (yyval.ival) = OP_OR; ;}
+    { (yyval.ival) = OP_SHR; ;}
     break;
 
   case 390:
 #line 2143 "pir.y"
-    { (yyval.ival) = OP_AND; ;}
+    { (yyval.ival) = OP_SHL; ;}
     break;
 
   case 391:
 #line 2144 "pir.y"
-    { (yyval.ival) = OP_FDIV; ;}
+    { (yyval.ival) = OP_OR; ;}
     break;
 
   case 392:
 #line 2145 "pir.y"
-    { (yyval.ival) = OP_XOR; ;}
+    { (yyval.ival) = OP_AND; ;}
     break;
 
   case 393:
 #line 2146 "pir.y"
-    { (yyval.ival) = OP_ISEQ; ;}
+    { (yyval.ival) = OP_FDIV; ;}
     break;
 
   case 394:
 #line 2147 "pir.y"
-    { (yyval.ival) = OP_ISLE; ;}
+    { (yyval.ival) = OP_XOR; ;}
     break;
 
   case 395:
 #line 2148 "pir.y"
-    { (yyval.ival) = OP_ISLT; ;}
+    { (yyval.ival) = OP_ISEQ; ;}
     break;
 
   case 396:
 #line 2149 "pir.y"
-    { (yyval.ival) = OP_ISGE; ;}
+    { (yyval.ival) = OP_ISLE; ;}
     break;
 
   case 397:
 #line 2150 "pir.y"
-    { (yyval.ival) = OP_ISGT; ;}
+    { (yyval.ival) = OP_ISLT; ;}
     break;
 
   case 398:
 #line 2151 "pir.y"
-    { (yyval.ival) = OP_ISNE; ;}
+    { (yyval.ival) = OP_ISGE; ;}
     break;
 
   case 399:
-#line 2157 "pir.y"
-    { (yyval.ival) = OP_MUL; ;}
+#line 2152 "pir.y"
+    { (yyval.ival) = OP_ISGT; ;}
     break;
 
   case 400:
-#line 2158 "pir.y"
-    { (yyval.ival) = OP_MOD; ;}
+#line 2153 "pir.y"
+    { (yyval.ival) = OP_ISNE; ;}
     break;
 
   case 401:
 #line 2159 "pir.y"
-    { (yyval.ival) = OP_POW; ;}
+    { (yyval.ival) = OP_MUL; ;}
     break;
 
   case 402:
 #line 2160 "pir.y"
-    { (yyval.ival) = OP_DIV; ;}
+    { (yyval.ival) = OP_MOD; ;}
     break;
 
   case 403:
 #line 2161 "pir.y"
-    { (yyval.ival) = OP_FDIV; ;}
+    { (yyval.ival) = OP_POW; ;}
     break;
 
   case 404:
 #line 2162 "pir.y"
-    { (yyval.ival) = OP_BOR; ;}
+    { (yyval.ival) = OP_DIV; ;}
     break;
 
   case 405:
 #line 2163 "pir.y"
-    { (yyval.ival) = OP_BAND; ;}
+    { (yyval.ival) = OP_FDIV; ;}
     break;
 
   case 406:
 #line 2164 "pir.y"
-    { (yyval.ival) = OP_BXOR; ;}
+    { (yyval.ival) = OP_BOR; ;}
     break;
 
   case 407:
 #line 2165 "pir.y"
-    { (yyval.ival) = OP_CONCAT; ;}
+    { (yyval.ival) = OP_BAND; ;}
     break;
 
   case 408:
 #line 2166 "pir.y"
-    { (yyval.ival) = OP_SHR; ;}
+    { (yyval.ival) = OP_BXOR; ;}
     break;
 
   case 409:
 #line 2167 "pir.y"
-    { (yyval.ival) = OP_SHL; ;}
+    { (yyval.ival) = OP_CONCAT; ;}
     break;
 
   case 410:
 #line 2168 "pir.y"
-    { (yyval.ival) = OP_LSR; ;}
+    { (yyval.ival) = OP_SHR; ;}
+    break;
+
+  case 411:
+#line 2169 "pir.y"
+    { (yyval.ival) = OP_SHL; ;}
     break;
 
   case 412:
-#line 2189 "pir.y"
+#line 2170 "pir.y"
+    { (yyval.ival) = OP_LSR; ;}
+    break;
+
+  case 414:
+#line 2191 "pir.y"
     { new_subr(lexer, "@start"); ;}
     break;
 
-  case 421:
-#line 2205 "pir.y"
+  case 423:
+#line 2207 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
-  case 426:
-#line 2215 "pir.y"
+  case 428:
+#line 2217 "pir.y"
     { set_sub_name(lexer, (yyvsp[(3) - (3)].sval)); ;}
     break;
 
-  case 427:
-#line 2219 "pir.y"
+  case 429:
+#line 2221 "pir.y"
     { new_subr(lexer, NULL); ;}
     break;
 
-  case 428:
-#line 2224 "pir.y"
+  case 430:
+#line 2226 "pir.y"
     {
                                   if (is_parrot_op(lexer, (yyvsp[(1) - (3)].sval)))
                                       get_opinfo(lexer);
@@ -4760,7 +4764,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 4764 "pirparser.c"
+#line 4768 "pirparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -4974,7 +4978,7 @@
 }
 
 
-#line 2235 "pir.y"
+#line 2237 "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