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

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

From:
kjs
Date:
January 5, 2009 03:26
Subject:
[svn:parrot] r34979 - trunk/compilers/pirc/src
Message ID:
20090105112519.E3C4ACB9F9@x12.develooper.com
Author: kjs
Date: Mon Jan  5 03:25:18 2009
New Revision: 34979

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] disallow $P0. $P1(), $P0 .$P1() and $P0 . $P1(). Give proper error messages.
Fix a bug in the parser (action method only).

Modified: trunk/compilers/pirc/src/pir.l
==============================================================================
--- trunk/compilers/pirc/src/pir.l	(original)
+++ trunk/compilers/pirc/src/pir.l	Mon Jan  5 03:25:18 2009
@@ -381,7 +381,7 @@
 ":invocant"       { return TK_FLAG_INVOCANT; }
 
 ":"{IDENT}        { yypirerror(yyscanner, yyget_extra(yyscanner),
-                               "unrecognized sub flag: '%s'", yytext);
+                               "unrecognized flag: '%s'", yytext);
                   }
 
 
@@ -501,12 +501,19 @@
 {BIN}             { yylval->ival = atoi(yytext); return TK_INTC; }
 {OCT}             { yylval->ival = atoi(yytext); return TK_INTC; }
 
-"."               { /* XXX some work to be done to disallow $P0 . foo()
-                     * spaces should not be allowed.
+"."/[\'\"$a-zA-Z] { /* Make sure the dot is followed by a character that
+                     * starts a method object. $ for registers,
+                     * quotes for quoted strings, and letters for identifiers.
+                     *
                      */
                      return '.';
                   }
 
+{WS}"."[^{WS}]    { yypirerror(yyscanner, yyget_extra(yyscanner),
+                    "no space allowed before a methodcall dot, "
+                    "or space expected after the '.' operator");
+                    return '.';
+                  }
 
 %{
 

Modified: trunk/compilers/pirc/src/pir.y
==============================================================================
--- trunk/compilers/pirc/src/pir.y	(original)
+++ trunk/compilers/pirc/src/pir.y	Mon Jan  5 03:25:18 2009
@@ -1796,7 +1796,7 @@
                      | TK_SREG
                            { $$ = expr_from_target(lexer, new_reg(lexer, STRING_TYPE, $1)); }
                      | TK_STRINGC
-                           { $$ = expr_from_const(lexer, new_const(lexer, STRING_TYPE, $1)); }
+                           { $$ = expr_from_const(lexer, new_const(lexer, STRING_VAL, $1)); }
                      ;
 
 pmc_object           : identifier

Modified: trunk/compilers/pirc/src/pirlexer.c
==============================================================================
--- trunk/compilers/pirc/src/pirlexer.c	(original)
+++ trunk/compilers/pirc/src/pirlexer.c	Mon Jan  5 03:25:18 2009
@@ -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 207
-#define YY_END_OF_BUFFER 208
+#define YY_NUM_RULES 208
+#define YY_END_OF_BUFFER 209
 /* 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[818] =
+static yyconst flex_int16_t yy_accept[821] =
     {   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,  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,
+        0,    0,    0,    0,  209,  128,    2,    4,    2,   25,
+      128,  128,  128,   22,  128,  128,   28,   29,   23,   21,
+       30,   27,  128,   24,  121,  121,  128,   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,
+      119,  128,   26,  208,  135,  140,  135,  137,  138,  139,
+      136,  174,  172,  174,  174,  166,  164,  165,  164,  166,
+      160,  160,  160,  160,  160,  169,  208,  208,  208,  153,
+      145,  152,  145,  153,  153,  153,  147,  148,  153,  146,
+
+      153,  149,  149,  143,  150,  151,  133,  132,  133,  133,
+      133,  133,  133,  131,  131,  130,  128,  128,  119,  119,
+      119,  119,  119,  119,  119,  119,  208,  208,  208,  208,
+      149,  149,    1,  207,  205,  206,  205,  207,  207,  207,
+      207,  175,  207,  200,  200,  207,  198,  198,  198,  198,
+      198,  176,  177,    0,    4,    4,   12,    0,  110,    0,
         0,    3,    0,    0,    0,    0,    0,   40,   18,   43,
-        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,
+        0,    0,   39,    0,  121,   36,   37,  125,  120,   46,
+      125,  125,  141,  125,  125,  125,  125,  125,  125,  125,
+      125,  125,  125,  125,  125,  125,  125,  125,   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,  140,  140,
+      136,  172,  172,    0,    0,    0,  165,  165,  161,  160,
+      160,  160,  160,  160,  169,  169,    0,    0,  168,  152,
+      152,    0,  149,    0,    0,    0,    0,  149,  149,  142,
+      149,    0,    0,    0,    0,  143,    0,  131,    0,    0,
+        0,    0,  131,  131,  131,    0,    0,    0,    0,  130,
+        0,    0,    0,    0,    0,  125,  119,  127,  118,  119,
+
+       47,  119,  119,  119,  119,  119,  206,  206,    0,  204,
+        0,    0,    0,    0,  200,  199,  191,  191,  191,  191,
+      191,  191,  199,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  198,  192,  196,  195,  194,  197,  126,   33,
+        3,  116,  115,  113,  114,   41,    0,  141,  141,  141,
+      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
+      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
+      141,   44,  120,  123,    0,  120,  124,  122,  109,  109,
       109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,    7,    6,    0,    0,    0,  119,
+      109,  109,  109,  109,  109,  109,  109,    7,    6,    0,
 
-       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,
+        0,    0,  119,   51,  119,   52,   53,  119,  119,    0,
+        0,    0,  161,  156,  158,  157,  160,  144,    0,  142,
+      149,  149,    0,  149,  149,  149,  131,    0,  131,  131,
+        0,  131,  131,  131,    0,  163,  116,  115,  113,  114,
+      162,  170,  119,   51,  119,   52,   53,  119,  119,  193,
+        0,  191,  191,  191,  191,  191,  191,  191,  199,  202,
+        0,  199,  203,  201,    0,    0,    0,    0,    0,    0,
+        0,  120,   62,  141,  141,  141,  141,   58,  141,  141,
+      141,  141,   65,  141,  141,  141,  141,  141,  141,  141,
+      141,  141,  141,   82,  141,  141,  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,  160,
+        0,  149,    0,  131,  171,  162,   48,   50,  119,  119,
+        0,  199,  191,  185,  191,  191,  191,  191,    0,    0,
+        0,    0,    0,    0,  141,  141,  141,   76,  141,  141,
+       87,   59,  141,  141,  141,   66,  141,  141,  141,  141,
+      141,  141,  141,  141,  141,  141,  141,   88,  107,  109,
+       89,  109,  109,   90,   93,  109,  109,  109,  109,  109,
+      109,  109,  109,  109,  109,  109,  109,    0,  119,  119,
+
+      173,    0,    0,  160,  119,  119,  190,  189,  191,  191,
+      191,  181,    0,  180,  179,  178,    0,  141,  141,  141,
+       57,  141,  141,  141,  141,  141,  141,  141,   68,  134,
+      141,  141,  141,   72,  141,  141,  141,  141,  141,   83,
+      109,  109,  109,  109,   98,  106,  109,  109,  109,   96,
+      109,  109,   99,  109,  109,    0,  112,    0,   54,   49,
+      154,    0,  159,   54,   49,  187,  191,  191,    0,    0,
+      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
+      141,  141,  141,  141,   81,  141,  141,  141,  141,  109,
+      109,  109,   94,  109,  109,  109,  109,  105,  109,   97,
+
+        0,  191,  191,  191,    0,    0,   63,  141,  141,  141,
+      141,  141,  141,  141,  141,  141,  141,   67,  141,  141,
+      141,  141,  141,   56,  141,  141,  141,  109,  109,  109,
+      101,  109,  109,  109,  109,    0,  191,  191,  184,    0,
+        0,   55,  141,  141,  141,   77,  141,  141,  141,  141,
+       64,  141,  141,  141,  141,  141,   71,  141,  141,   86,
+      109,  109,  108,  104,  103,   91,  109,    0,    0,  191,
+      191,    0,  182,  141,  141,  141,  141,   79,  141,  141,
+      141,  141,  141,   69,   70,  141,   85,   92,  109,  109,
+        0,    0,  191,  186,  183,   73,  141,  141,   78,   80,
 
-      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,
-
-      140,   84,  100,  102,    0,    0,  190,  140,   75,   60,
-       61,  128,  166,  154,  187,   74,    0
+      141,  141,  141,  141,   84,  100,  102,    0,    0,  191,
+      141,   75,   60,   61,  129,  167,  155,  188,   74,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -595,12 +595,12 @@
        23,   23,   23,   23,   23,   24,   24,   25,   26,   27,
        28,   29,    1,   30,   31,   32,   31,   31,   33,   31,
        34,   35,   36,   34,   34,   37,   34,   38,   39,   40,
-       34,   34,   41,   34,   34,   34,   34,   42,   34,   34,
-       43,   44,   45,    1,   46,    1,   47,   48,   49,   50,
+       34,   34,   41,   34,   34,   34,   42,   43,   34,   34,
+       44,   45,   46,    1,   47,    1,   48,   49,   50,   51,
 
-       51,   52,   53,   54,   55,   34,   34,   56,   57,   58,
-       59,   60,   61,   62,   63,   64,   65,   66,   34,   67,
-       68,   34,   69,   70,   71,   72,    1,    1,    1,    1,
+       52,   53,   54,   55,   56,   34,   34,   57,   58,   59,
+       60,   61,   62,   63,   64,   65,   66,   67,   34,   68,
+       69,   34,   70,   71,   72,   73,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -617,482 +617,493 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[73] =
+static yyconst flex_int32_t yy_meta[74] =
     {   0,
         1,    1,    2,    1,    1,    1,    3,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    4,    1,    1,
         5,    5,    5,    5,    6,    1,    1,    1,    1,    7,
         8,    8,    8,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    1,    1,    1,    9,    8,    8,    8,    8,
-        8,    8,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    1,    1,
-        1,    1
+       10,   10,    9,    1,    1,    1,    9,    8,    8,    8,
+        8,    8,    8,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    9,    9,   11,
+        1,   11,    1
     } ;
 
-static yyconst flex_int16_t yy_base[877] =
+static yyconst flex_int16_t yy_base[881] =
     {   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, 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
+        0,    0,   73,    0,  144,  145,  164,    0,  237,    0,
+      310,    0,  383,    0,    0,    0,  456,    0,  523,  536,
+        0,    0,  560,    0, 2380, 2381, 2360,  149,  530, 2350,
+      627,  150,  120, 2349,  523, 2364, 2381, 2381,  522,  616,
+     2381,  624,  666,  512,  717,  632,  738, 2381,  614,  621,
+      629,  513,  645, 2381, 2381,  719,  728,  646,  730,  727,
+      747,  608,  730, 2381, 2381,  657, 2372, 2381, 2381, 2381,
+        0, 2381,  678, 2371,  634, 2381, 2381,  759, 2370,    0,
+        0, 2313, 2305, 2312, 2304,  765, 2365,    0, 2342, 2381,
+     2381,  771, 2363,  735,  771, 2353, 2381, 2381,  794, 2381,
+
+      798,  804,  811,    0, 2381, 2381, 2381, 2381,  744,  810,
+     2352,  836,  817,  854,  846,    0,  844, 2354,  729,  886,
+      836,  865,  887,  901,  895,  903,  756, 2350,  913,  878,
+        0,  919, 2381, 2381, 2381,  886, 2358,  786,  908, 2348,
+      942, 2381,  933,  976,  951,  920, 2334,  989,  999, 1008,
+     1016, 2381, 2381,  672,  977,  999, 2381,  807, 2381,    0,
+      154,  691,  779, 1024, 1028, 1032, 1036, 2381, 2381, 2381,
+     2346, 2329, 2381, 1040, 1046, 2381, 2381, 2381, 1050, 2381,
+        0, 2319,    0, 2296, 2302,  723, 2294, 2296,  772, 2292,
+      933,  797,  760, 2302, 2297,  691, 2300, 2291, 2318, 2381,
+
+     1054,  689, 1068,  984,    0,    0, 2286, 2287,  871,  863,
+     1033,  903,  884, 2283,  805, 2283, 2276, 2381, 2381, 2381,
+     2381, 2381,  959, 2315,  856, 2332, 1086, 1017, 1009, 1070,
+     1075, 1076, 1078, 1087, 2381, 2381, 2381, 2381, 1111, 1115,
+        0, 1119, 1125, 2279, 2277, 2288, 1134, 1140,    0,    0,
+     2270, 2276, 2283, 2269, 1144, 1148, 2306, 2305, 2381, 1152,
+     1156,  951, 2381,    0, 1141, 2317, 1145, 1151, 1155,    0,
+     1159,  995, 1173, 1164,    0,    0, 1145, 2381,    0, 1177,
+     2316, 1191, 1197, 1201, 1205, 1183, 1219, 1187,    0,    0,
+     2297, 1224, 1237, 1241, 1251,    0, 1214, 2301, 1261, 1262,
+
+     1270, 1271, 1272, 1281, 1280, 1289, 1310, 1315, 1186, 2381,
+        0, 1300, 2313, 1311, 1318, 1326,    0, 2268, 1063, 2275,
+     2274, 2271, 1331, 1229, 1344, 1247,    0, 2261, 1197, 2259,
+     2270, 2257, 2291, 2381, 1350, 1363, 1368, 1373, 2381, 2381,
+     1375, 1378, 1382, 1386, 1390, 2381, 1399,    0, 2278, 2255,
+     2259, 2255, 2252, 2259, 2252, 2243, 2247, 2239, 2237, 2245,
+      844, 2253, 2237, 2243, 2244, 2236, 2233, 2232, 2247, 2239,
+     2242, 2381, 1403, 1255, 1407, 1411, 1335,    0,    0, 2233,
+     2244, 2233, 1067, 2222, 2241, 2232, 2222, 2229, 2227, 2232,
+     2218, 2217, 2217, 2214, 2230, 2222, 2229, 2381, 2248, 2268,
+
+     1259, 2249, 1419, 1291, 1420, 1320, 1351, 1422, 1421, 2222,
+     2222, 2221,    0,    0,    0,    0, 2214, 1427, 1436,    0,
+     1441, 1272, 1445, 1459, 1420,    0, 1463, 1473, 1477, 1304,
+     1481, 1485, 1449,    0, 2239, 2243, 1490, 1494, 1504, 1509,
+        0, 2381, 1517, 1518, 1519, 1520, 1528, 1534, 1536, 1546,
+     1557,    0, 2210, 2198, 2206, 2214, 2205, 2212, 1561, 1360,
+     1574, 1578, 1500,    0, 2201, 2202, 2203, 2210, 2201, 2192,
+     1582, 1586, 2208, 2194, 2197, 2195, 2187, 1082, 2198, 2202,
+     2199, 2187,    0, 2194, 2194, 2196, 2180, 2187, 2189, 2193,
+     2191, 2172, 2190,    0, 2179, 2178, 2175, 2168, 2180, 2166,
+
+     2165, 2169,    0, 2177, 2168, 2171, 2160, 2172, 2164, 1504,
+     2170, 2156, 2157, 2163, 2156, 2168, 2381, 1411, 2381,    0,
+     2191, 2208, 1537, 1538, 1568, 1547, 2156, 2165, 2149, 2152,
+     1593, 1597, 1601, 1607, 2381,    0, 1608, 1614, 1616, 1617,
+     1627, 1631, 2158,    0, 2157, 2145, 2155, 2159, 2146, 2152,
+     2138, 2151, 2142, 2135, 2141, 2133, 2138,    0, 2131, 1593,
+        0,    0, 2132, 2146, 2143,    0, 2135, 2134, 2130, 2142,
+     2124, 2137, 2128, 2122, 1597, 2134, 2132,    0,    0, 2131,
+        0, 2133, 2130,    0,    0, 2119, 2122, 2126, 2111, 2122,
+     2114, 2110, 2122, 2110, 2119, 2103, 2111, 1512, 1639, 1640,
+
+     2381, 2101, 2093, 2098, 1643, 1649,    0,    0, 2087, 2076,
+     2063, 2381, 2071, 2381, 2381, 2381, 2068, 2069, 2064, 2064,
+        0, 2052, 2037, 2017, 2016, 2010, 2016, 2007,    0, 2005,
+     1991, 1975, 1987,    0, 1973, 1968, 1974, 1969, 1972,    0,
+     1958, 1954, 1960, 1956,    0,    0, 1939, 1944, 1937,    0,
+     1935, 1925,    0, 1941, 1936, 1567, 2381,    0, 1645, 1651,
+     2381, 1934,    0, 1653, 1659, 1927, 1912, 1904, 1913, 1904,
+     1902, 1887, 1622, 1873, 1851, 1858, 1845, 1848, 1828, 1823,
+     1630, 1823, 1812, 1792,    0, 1790, 1778, 1786, 1780, 1778,
+     1765, 1751,    0, 1732, 1752, 1744, 1733,    0, 1739,    0,
+
+     1713, 1698, 1664, 1662, 1662, 1651,    0, 1656, 1659, 1654,
+     1649, 1646, 1636, 1644, 1634, 1639, 1633,    0, 1636,  730,
+     1638, 1644, 1635,    0, 1624, 1631, 1629, 1617, 1607, 1575,
+        0, 1583, 1579, 1531, 1528,  879, 1529, 1537,    0, 1506,
+     1480,    0, 1483, 1427, 1438,    0, 1425, 1425, 1418, 1402,
+        0, 1394, 1370, 1366, 1306, 1309,    0, 1281, 1277,    0,
+     1256, 1243,    0,    0,    0,    0, 1226, 1203, 1186, 1174,
+     1165, 1154, 2381, 1145, 1105, 1103, 1097,    0, 1083, 1074,
+     1061, 1045, 1032,    0,    0, 1007,    0,    0,  990,  972,
+      966,  935,  905,    0, 2381,    0,  884,  791,    0,  736,
+
+      710,  620,  625,  604,    0,    0,    0,  499,  496,  471,
+      103,    0,    0,    0,    0, 2381, 2381,    0,    0, 2381,
+     1713, 1724, 1735, 1746, 1757, 1768, 1772, 1779, 1785, 1788,
+     1794, 1797, 1803, 1813, 1824, 1831, 1837, 1847, 1858, 1865,
+     1868, 1875, 1885, 1896, 1903, 1909, 1919, 1928, 1939, 1950,
+     1957, 1963, 1967, 1974, 1981, 1989, 1995, 2001, 2007, 2013,
+     2019, 2025, 2029, 2039, 2050, 2057, 2061, 2067, 2070, 2077,
+     2087, 2098, 2105, 2111, 2115, 2125, 2133, 2140, 2146, 2156
     } ;
 
-static yyconst flex_int16_t yy_def[877] =
+static yyconst flex_int16_t yy_def[881] =
     {   0,
-      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
+      820,    1,  820,    3,  821,  821,  820,    7,  820,    9,
+      820,   11,  820,   13,    1,    1,  820,   17,  822,  822,
+      823,  823,  820,   23,  820,  820,  820,  820,  820,  820,
+      824,  825,  820,  820,  820,  826,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  827,  820,  820,  820,
+      820,  828,  828,  820,  820,  828,  828,  828,  828,  828,
+      828,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      829,  820,  820,  820,  820,  820,  820,  820,  820,  830,
+      831,  831,  831,  831,  831,  820,  820,  832,  833,  820,
+      820,  820,  820,  834,  820,  835,  820,  820,  820,  820,
+
+      836,  820,  820,  837,  820,  820,  820,  820,  838,  820,
+      839,  820,  820,  820,  820,  840,  841,   43,  842,  842,
+      842,  842,  842,  842,  842,  842,  834,  835,  820,  820,
+      102,  820,  820,  820,  820,  820,  820,  843,  820,  844,
+      820,  820,  845,  820,  820,  820,  846,  846,  846,  846,
+      846,  820,  820,  847,  820,  820,  820,  848,  820,  848,
+      849,  820,  849,  820,  820,  820,  820,  820,  820,  820,
+      850,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  851,  820,  820,
+
+      820,  820,  820,  820,  852,  853,  853,  853,  853,  853,
+      853,  853,  853,  853,  853,  853,  853,  820,  820,  820,
+      820,  820,  820,  854,  855,  856,  855,  855,  855,  855,
+      855,  855,  855,  855,  820,  820,  820,  820,  820,  820,
+      857,  820,  820,  820,  820,  820,  820,  820,  858,  859,
+      859,  859,  859,  859,  820,  820,  860,  860,  820,  820,
+      820,  834,  820,  834,  820,  835,  820,  820,  820,  861,
+      820,  820,  820,  820,  862,  863,  864,  820,  864,  820,
+      865,  820,  820,  820,  820,  820,  820,  820,  866,  867,
+      868,  868,  868,  868,  868,  869,  870,  820,  870,  870,
+
+      870,  870,  870,  870,  870,  870,  820,  820,  871,  820,
+      871,  820,  872,  820,  820,  820,  873,  873,  873,  873,
+      873,  873,  820,  820,  820,  820,  874,  820,  820,  820,
+      820,  820,  875,  820,  875,  875,  875,  875,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      851,  820,  820,  820,  820,  820,  820,  852,  853,  853,
+      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
+      853,  853,  853,  853,  853,  853,  853,  820,  820,  856,
+
+      876,  877,  878,  878,  878,  878,  878,  878,  878,  820,
+      820,  820,  858,  859,  859,  859,  859,  820,  820,  861,
+      820,  820,  820,  820,  820,  862,  820,  820,  820,  820,
+      820,  820,  820,  866,  868,  820,  868,  868,  868,  868,
+      879,  820,  870,  870,  870,  870,  870,  870,  870,  820,
+      820,  873,  873,  873,  873,  873,  873,  873,  820,  820,
+      820,  820,  820,  874,  820,  820,  820,  820,  820,  820,
+      820,  820,  851,  851,  851,  851,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  853,  853,  853,  853,
+
+      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
+      853,  853,  853,  853,  853,  853,  820,  876,  820,  876,
+      877,  820,  878,  878,  878,  878,  820,  820,  820,  859,
+      820,  820,  820,  820,  820,  879,  870,  870,  870,  870,
+      820,  820,  873,  873,  873,  873,  873,  873,  820,  820,
+      820,  820,  820,  820,  851,  851,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  853,  853,  853,
+      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
+      853,  853,  853,  853,  853,  853,  853,  880,  878,  878,
+
+      820,  820,  820,  859,  870,  870,  873,  873,  873,  873,
+      873,  820,  820,  820,  820,  820,  820,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
+      853,  853,  853,  853,  853,  880,  820,  880,  878,  878,
+      820,  820,  859,  870,  870,  873,  873,  873,  820,  820,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  853,
+      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
+
+      820,  873,  873,  873,  820,  820,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  853,  853,  853,
+      853,  853,  853,  853,  853,  820,  873,  873,  873,  820,
+      820,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      853,  853,  853,  853,  853,  853,  853,  820,  820,  873,
+      873,  820,  820,  851,  851,  851,  851,  851,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  853,  853,  853,
+      820,  820,  873,  873,  820,  851,  851,  851,  851,  851,
+
+      851,  851,  851,  851,  851,  853,  853,  820,  820,  873,
+      851,  851,  851,  851,  851,  820,  820,  873,  851,    0,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820
     } ;
 
-static yyconst flex_int16_t yy_nxt[2357] =
+static yyconst flex_int16_t yy_nxt[2455] =
     {   0,
        26,   27,   28,   27,   29,   30,   31,   32,   33,   34,
        35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
        45,   46,   46,   46,   47,   48,   49,   50,   51,   26,
        52,   52,   52,   52,   52,   53,   52,   53,   52,   53,
-       53,   52,   54,   26,   55,   52,   52,   52,   52,   52,
-       52,   52,   56,   52,   57,   52,   52,   58,   52,   59,
-       52,   52,   60,   52,   61,   52,   52,   52,   26,   62,
-       26,   63,   64,   65,   66,   65,   67,   64,   64,   64,
-       64,   64,   64,   64,   68,   69,   64,   64,   70,   64,
+       53,   52,   52,   54,   26,   55,   52,   52,   52,   52,
+       52,   52,   52,   56,   52,   57,   52,   52,   58,   52,
+       59,   52,   52,   60,   52,   61,   52,   52,   52,   26,
+       62,   26,   63,   64,   65,   66,   65,   67,   64,   64,
+       64,   64,   64,   64,   64,   68,   69,   64,   64,   70,
        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
 
-       64,   64,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   64,   64,   64,   71,   71,   71,
+       64,   64,   64,   71,   71,   71,   71,   71,   71,   71,
+       71,   71,   71,   71,   71,   71,   64,   64,   64,   71,
        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,  816,
-       75,   75,   76,   77,   78,   77,   79,   76,   76,   76,
-       80,   76,   76,   76,   76,   76,   76,   76,   76,   76,
+       71,   71,   64,   64,   64,   64,   73,   73,   74,   74,
+      155,  155,  162,  155,  163,  164,  162,  165,  163,  166,
+      167,  819,   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,   81,   81,   81,   81,   81,   81,   81,   81,
+       76,   76,   76,   76,   81,   81,   81,   81,   81,   81,
 
-       81,   81,   81,   81,   76,   76,   76,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   82,   81,   81,   83,
-       81,   84,   81,   81,   85,   81,   81,   81,   81,   81,
-       76,   76,   76,   76,   64,   64,   86,   64,   87,   64,
-       64,   64,   88,   64,   64,   64,   64,   64,   64,   64,
+       81,   81,   81,   81,   81,   81,   81,   76,   76,   76,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   82,
+       81,   81,   83,   81,   84,   81,   81,   85,   81,   81,
+       81,   81,   81,   76,   76,   76,   76,   64,   64,   86,
+       64,   87,   64,   64,   64,   88,   64,   64,   64,   64,
        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   89,   89,   89,   89,   89,   89,
-       89,   89,   89,   89,   89,   89,   64,   64,   64,   89,
+       64,   64,   64,   64,   64,   64,   64,   89,   89,   89,
        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       64,   64,   64,   89,   89,   89,   89,   89,   89,   89,
        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
 
-       89,   89,   64,   64,   64,   64,   90,   91,   92,   91,
-       93,   90,   94,   90,   95,   90,   90,   96,   97,   98,
-       90,   99,  100,   99,  101,   90,  102,  103,  103,  103,
-       90,   90,   90,   90,   90,   90,  104,  104,  104,  104,
-      104,  104,  104,  104,  104,  104,  104,  104,   90,   90,
-       90,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+       89,   89,   89,   89,   89,   89,   64,   64,   64,   64,
+       90,   91,   92,   91,   93,   90,   94,   90,   95,   90,
+       90,   96,   97,   98,   90,   99,  100,   99,  101,   90,
+      102,  103,  103,  103,   90,   90,   90,   90,   90,   90,
       104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
-      104,  104,  104,  104,  105,   90,  106,   90,  107,  108,
-       64,  108,  108,  107,  109,  107,  110,  107,  107,  111,
-      107,  107,  107,  112,  107,  112,  113,  107,  114,  115,
+      104,  104,  104,   90,   90,   90,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  105,
+       90,  106,   90,  107,  108,   64,  108,  108,  107,  109,
+      107,  110,  107,  107,  111,  107,  107,  107,  112,  107,
 
-      115,  115,  107,  107,  107,  107,  107,  107,  116,  116,
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
+      112,  113,  107,  114,  115,  115,  115,  107,  107,  107,
       107,  107,  107,  116,  116,  116,  116,  116,  116,  116,
+      116,  116,  116,  116,  116,  116,  107,  107,  107,  116,
       116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  116,  107,  107,  107,  107,
-       26,   27,   28,   27,   29,   30,   31,   32,  117,   34,
-       35,   36,   37,   38,   39,   40,   41,   42,  118,   44,
-       45,   46,   46,   46,   47,   48,   49,   50,   51,   26,
-      119,  119,  119,  119,  119,  120,  119,  120,  119,  120,
-      120,  119,   54,   26,   55,  119,  119,  119,  119,  119,
-
-      119,  119,  121,  119,  122,  119,  119,  123,  119,  124,
-      119,  119,  125,  119,  126,  119,  119,  119,   26,   62,
-       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,
-      134,  134,  134,  147,  147,  147,  147,  147,  148,  147,
-      149,  147,  150,  151,  147,  152,  134,  153,  147,  147,
+      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
+      116,  116,  107,  107,  107,  107,   26,   27,   28,   27,
+       29,   30,   31,   32,  117,   34,   35,   36,   37,   38,
+       39,   40,   41,   42,  118,   44,   45,   46,   46,   46,
+       47,   48,   49,   50,   51,   26,  119,  119,  119,  119,
+      119,  120,  119,  120,  119,  120,  120,  119,  119,   54,
+
+       26,   55,  119,  119,  119,  119,  119,  119,  119,  121,
+      119,  122,  119,  119,  123,  119,  124,  119,  119,  125,
+      119,  126,  119,  119,  119,   26,   62,   26,   63,  127,
+      224,  199,  156,  169,  128,  818,  172,  226,  129,  200,
+      129,  130,  127,  131,  132,  132,  132,  128,  154,  173,
+      170,  129,  817,  129,  130,  816,  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,  134,  134,  134,
+      147,  147,  147,  147,  147,  148,  147,  149,  147,  150,
 
+      151,  147,  147,  152,  134,  153,  147,  147,  147,  147,
       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,  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,  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,
-
-      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,  734,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  134,
+      134,  134,  134,  159,  174,  235,  175,  175,  175,  175,
+      218,  219,  174,  176,  175,  175,  175,  175,  220,  221,
+      201,  177,  175,  175,  175,  175,  222,  223,  239,  239,
+      561,  239,  224,  224,  203,  227,  227,  227,  227,  226,
+      226,  160,  178,  340,  178,  340,  340,  178,  236,  242,
+      242,  561,  242,  203,  815,  244,  179,  179,  179,  179,
+      245,  246,  341,  180,  341,  341,  181,  181,  181,  181,
+
+      182,  181,  181,  181,  181,  181,  181,  181,  181,  374,
+      374,  231,  183,  184,  185,  186,  181,  187,  188,  189,
+      181,  190,  191,  192,  193,  181,  194,  181,  195,  196,
+      197,  181,  181,  181,  198,  201,  224,  175,  175,  175,
+      175,  263,  368,  226,  224,  224,  224,  224,  202,  203,
+      278,  226,  226,  226,  226,  204,  369,  237,  298,  205,
+      247,  247,  263,  247,  224,  202,  255,  255,  203,  255,
+      352,  226,  260,  260,  814,  260,  204,  753,  228,  264,
+      229,  162,  353,  163,  205,  207,  230,  232,  279,  754,
+      208,  233,  310,  209,  210,  211,  212,  213,  214,  813,
+
+      264,  215,  238,  216,  217,  234,  265,  364,  265,  365,
+      265,  265,  267,  159,  268,  268,  268,  268,  269,  269,
+      269,  269,  271,  356,  268,  268,  268,  268,  357,  271,
+      311,  268,  268,  268,  268,  272,  273,  284,  284,  284,
+      284,  812,  274,  273,  362,  280,  275,  280,  363,  280,
+      280,  160,  272,  224,  282,  273,  283,  283,  283,  283,
+      226,  394,  273,  274,  285,  298,  283,  283,  283,  283,
+      395,  275,  285,  224,  283,  283,  283,  283,  287,  292,
+      226,  293,  224,  294,  295,  286,  287,  307,  307,  226,
+      307,  485,  288,  486,  298,  300,  289,  287,  269,  269,
+
+      269,  269,  286,  224,  224,  287,  299,  299,  299,  299,
+      226,  226,  224,  288,  384,  298,  298,  301,  224,  226,
+      224,  289,  385,  302,  298,  226,  768,  226,  382,  383,
+      298,  267,  298,  268,  268,  268,  268,  271,  769,  268,
+      268,  268,  268,  312,  391,  312,  811,  312,  312,  392,
+      389,  273,  303,  316,  316,  316,  316,  263,  304,  305,
+      314,  306,  315,  315,  315,  315,  390,  328,  810,  323,
+      273,  315,  315,  315,  315,  329,  330,  331,  155,  155,
+      332,  155,  809,  325,  359,  318,  398,  399,  360,  319,
+      320,  321,  361,  322,  323,  264,  315,  315,  315,  315,
+
+      155,  155,  325,  155,  377,  377,  377,  324,  325,  335,
+      335,  335,  335,  334,  326,  422,  422,  808,  327,  336,
+      336,  336,  336,  334,  324,  807,  224,  325,  337,  337,
+      337,  337,  334,  226,  224,  326,  338,  338,  338,  338,
+      334,  226,  806,  327,  342,  342,  342,  342,  343,  343,
+      343,  343,  344,  344,  344,  344,  345,  345,  345,  345,
+      179,  179,  179,  179,  201,  805,  175,  175,  175,  175,
+      179,  179,  179,  179,  373,  373,  373,  373,  203,  804,
+      386,  403,  347,  375,  387,  375,  347,  224,  376,  376,
+      376,  376,  224,  224,  226,  224,  803,  203,  388,  226,
+
+      226,  347,  226,  224,  224,  347,  227,  227,  227,  227,
+      226,  226,  239,  239,  454,  239,  239,  239,  455,  239,
+      242,  242,  500,  242,  802,  407,  242,  242,  560,  242,
+      501,  405,  406,  502,  404,  247,  247,  801,  247,  561,
+      408,  247,  247,  409,  247,  255,  255,  800,  255,  255,
+      255,  278,  255,  260,  260,  799,  260,  260,  260,  798,
+      260,  418,  418,  418,  418,  269,  269,  269,  269,  271,
+      797,  268,  268,  268,  268,  269,  269,  269,  269,  421,
+      421,  421,  421,  273,  425,  425,  425,  419,  423,  279,
+      423,  419,  310,  424,  424,  424,  424,  427,  427,  427,
+
+      427,  796,  273,  430,  430,  795,  419,  433,  433,  433,
+      419,  284,  284,  284,  284,  285,  794,  283,  283,  283,
+      283,  284,  284,  284,  284,  429,  429,  429,  429,  287,
+      311,  224,  793,  428,  431,  792,  431,  428,  226,  432,
+      432,  432,  432,  298,  437,  437,  437,  437,  287,  460,
+      460,  791,  428,  436,  466,  467,  428,  438,  438,  438,
+      438,  439,  439,  439,  439,  519,  436,  463,  463,  463,
+      436,  440,  440,  440,  440,  374,  374,  790,  224,  224,
+      436,  299,  299,  299,  299,  226,  226,  224,  224,  224,
+      298,  298,  422,  422,  226,  226,  226,  224,  224,  298,
+
+      298,  298,  789,  520,  226,  226,  224,  788,  224,  298,
+      298,  307,  307,  226,  307,  226,  307,  307,  298,  307,
+      450,  450,  450,  450,  430,  430,  443,  787,  445,  446,
+      447,  316,  316,  316,  316,  444,  323,  224,  315,  315,
+      315,  315,  448,  786,  226,  449,  316,  316,  316,  316,
+      325,  459,  459,  459,  459,  377,  377,  377,  451,  461,
+      785,  461,  784,  451,  462,  462,  462,  462,  224,  325,
+      335,  335,  335,  335,  334,  226,  341,  451,  341,  341,
+      460,  460,  451,  336,  336,  336,  336,  334,  337,  337,
+      337,  337,  334,  338,  338,  338,  338,  334,  342,  342,
+
+      342,  342,  343,  343,  343,  343,  344,  344,  344,  344,
+      345,  345,  345,  345,  471,  783,  471,  519,  782,  472,
+      472,  472,  472,  373,  373,  373,  373,  376,  376,  376,
+      376,  376,  376,  376,  376,  347,  224,  224,  224,  224,
+      425,  425,  425,  226,  226,  226,  226,  418,  418,  418,
+      418,  531,  781,  531,  347,  520,  532,  532,  532,  532,
+      780,  421,  421,  421,  421,  424,  424,  424,  424,  433,
+      433,  433,  526,  419,  779,  778,  524,  525,  523,  424,
+      424,  424,  424,  427,  427,  427,  427,  777,  533,  776,
+      533,  775,  419,  534,  534,  534,  534,  429,  429,  429,
+
+      429,  432,  432,  432,  432,  432,  432,  432,  432,  428,
+      437,  437,  437,  437,  438,  438,  438,  438,  657,  436,
+      463,  463,  463,  436,  439,  439,  439,  439,  428,  440,
+      440,  440,  440,  436,  224,  224,  224,  224,  436,  774,
+      773,  226,  226,  226,  226,  224,  298,  298,  298,  298,
+      590,  224,  226,  224,  224,  224,  658,  298,  226,  591,
+      226,  226,  226,  298,  224,  298,  450,  450,  450,  450,
+      772,  226,  541,  657,  541,  538,  537,  542,  542,  542,
+      542,  459,  459,  459,  459,  224,  771,  540,  770,  539,
+      767,  766,  226,  451,  462,  462,  462,  462,  462,  462,
+
+      462,  462,  472,  472,  472,  472,  472,  472,  472,  472,
+      600,  658,  451,  532,  532,  532,  532,  532,  532,  532,
+      532,  534,  534,  534,  534,  224,  599,  534,  534,  534,
+      534,  224,  226,  224,  224,  765,  764,  298,  226,  763,
+      226,  226,  622,  298,  636,  298,  298,  542,  542,  542,
+      542,  542,  542,  542,  542,  623,  224,  224,  762,  637,
+      224,  624,  224,  226,  226,  638,  224,  226,  224,  226,
+      224,  709,  298,  226,  605,  226,  224,  226,  298,  719,
+      606,  761,  298,  226,  710,  760,  720,  759,  298,  758,
+      711,  757,  659,  756,  755,  752,  664,  751,  750,  749,
+
+      748,  747,  746,  660,  745,  744,  743,  742,  741,  740,
+      739,  738,  665,   72,   72,   72,   72,   72,   72,   72,
+       72,   72,   72,   72,   64,   64,   64,   64,   64,   64,
+       64,   64,   64,   64,   64,  133,  133,  133,  133,  133,
+      133,  133,  133,  133,  133,  133,  158,  737,  158,  158,
       158,  158,  158,  158,  158,  158,  158,  161,  161,  161,
-      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,
+      161,  161,  161,  161,  161,  161,  161,  161,  171,  736,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  206,
+      206,  206,  225,  225,  225,  735,  225,  225,  225,  241,
+      734,  733,  241,  241,  241,  249,  249,  249,  250,  732,
+
+      731,  250,  250,  250,  257,  257,  257,  258,  258,  730,
+      258,  258,  258,  262,  729,  262,  262,  262,  262,  262,
+      262,  262,  262,  262,  266,  728,  266,  266,  266,  266,
+      266,  266,  266,  266,  266,  270,  727,  726,  270,  270,
+      270,  276,  725,  724,  276,  276,  276,  277,  723,  277,
+      277,  277,  277,  277,  277,  277,  277,  277,  281,  722,
+      281,  281,  281,  281,  281,  281,  281,  281,  281,  290,
+      721,  718,  290,  290,  290,  291,  291,  291,  297,  297,
+      297,  297,  297,  297,  297,  309,  717,  309,  309,  309,
+      309,  309,  309,  309,  309,  309,  313,  716,  313,  313,
+
+      313,  313,  313,  313,  313,  313,  313,  317,  715,  714,
+      317,  317,  317,  333,  333,  713,  333,  333,  333,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  158,  712,
+      158,  158,  158,  158,  158,  158,  158,  158,  158,  161,
+      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
+      171,  708,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  348,  707,  706,  348,  348,  348,  378,  705,  704,
+      378,  379,  703,  702,  379,  379,  379,  224,  224,  224,
+      701,  224,  224,  224,  225,  225,  225,  700,  225,  225,
+      225,  402,  699,  698,  697,  696,  402,  402,  402,  241,
+
+      695,  694,  241,  241,  241,  413,  693,  692,  413,  413,
+      413,  250,  691,  690,  250,  250,  250,  258,  258,  689,
+      258,  258,  258,  420,  688,  687,  420,  420,  420,  426,
+      686,  685,  426,  276,  684,  683,  276,  276,  276,  277,
+      682,  277,  277,  277,  277,  277,  277,  277,  277,  277,
+      281,  681,  281,  281,  281,  281,  281,  281,  281,  281,
+      281,  434,  680,  679,  434,  290,  678,  677,  290,  290,
+      290,  435,  676,  435,  435,  435,  435,  441,  441,  441,
+      297,  297,  297,  297,  297,  297,  297,  309,  675,  309,
+      309,  309,  309,  309,  309,  309,  309,  309,  313,  674,
+
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  452,
+      673,  672,  452,  452,  452,  464,  671,  670,  464,  333,
+      333,  669,  333,  333,  333,  518,  668,  518,  518,  518,
+      518,  518,  518,  518,  518,  518,  521,  521,  521,  667,
+      521,  521,  521,  225,  225,  225,  666,  225,  225,  225,
+      536,  663,  662,  536,  536,  536,  656,  661,  656,  656,
+      656,  656,  656,  656,  656,  656,  656,  655,  654,  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,
+      642,  641,  640,  639,  635,  634,  633,  632,  631,  630,
+      629,  628,  627,  626,  625,  621,  620,  619,  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,
+      604,  603,  602,  601,  598,  522,  597,  596,  595,  594,
+      593,  592,  589,  588,  587,  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,
+      559,  558,  557,  556,  555,  554,  553,  552,  551,  550,
+      549,  548,  547,  546,  545,  544,  543,  535,  436,  530,
+      529,  528,  527,  522,  401,  517,  516,  515,  514,  513,
       512,  511,  510,  509,  508,  507,  506,  505,  504,  503,
-      502,  501,  500,  496,  495,  494,  493,  492,  491,  490,
+      499,  498,  497,  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
+      489,  488,  487,  484,  483,  482,  481,  480,  479,  478,
+      477,  476,  475,  474,  473,  334,  470,  469,  468,  465,
+      458,  457,  456,  453,  310,  442,  436,  278,  263,  259,
+      259,  417,  416,  415,  414,  412,  411,  410,  401,  400,
+      397,  396,  393,  381,  380,  372,  371,  370,  367,  366,
+      358,  355,  354,  351,  350,  349,  346,  159,  334,  310,
+      308,  263,  296,  278,  263,  261,  259,  256,  254,  253,
+      252,  251,  248,  243,  240,  159,  168,  157,  154,  820,
+       25,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820
     } ;
 
-static yyconst flex_int16_t yy_chk[2357] =
+static yyconst flex_int16_t yy_chk[2455] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1101,7 +1112,7 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    3,    3,    3,    3,    3,    3,    3,    3,
+        1,    1,    1,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
 
@@ -1109,9 +1120,9 @@
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         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,  808,
-        5,    6,    7,    7,    7,    7,    7,    7,    7,    7,
+        3,    3,    3,    3,    3,    3,    5,    6,    5,    6,
+       28,   28,   32,   28,   32,   33,  161,   33,  161,   33,
+       33,  811,    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,    7,    7,    7,    7,    7,    7,    7,    7,
@@ -1119,7 +1130,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,    7,    7,    7,
-        7,    7,    7,    7,    9,    9,    9,    9,    9,    9,
+        7,    7,    7,    7,    7,    7,    7,    9,    9,    9,
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
@@ -1127,15 +1138,15 @@
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
 
-        9,    9,    9,    9,    9,    9,   11,   11,   11,   11,
+        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
+       11,   11,   11,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
 
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
@@ -1143,7 +1154,7 @@
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
+       13,   13,   13,   13,   13,   13,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
@@ -1151,10 +1162,10 @@
 
        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,  807,   39,
-       52,   19,   44,   19,   19,   20,   19,   19,   19,   19,
-       20,   29,   39,   35,   20,  806,   20,   20,  805,   20,
-       20,   20,   20,   23,   23,   23,   23,   23,   23,   23,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,   19,
+       52,   44,   29,   35,   19,  810,   39,   52,   19,   44,
+       19,   19,   20,   19,   19,   19,   19,   20,   29,   39,
+       35,   20,  809,   20,   20,  808,   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,   23,   23,   23,
@@ -1162,201 +1173,212 @@
 
        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,   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,  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,
+       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
+       23,   23,   23,   31,   40,   62,   40,   40,   40,   40,
+       49,   49,   42,   40,   42,   42,   42,   42,   50,   50,
+       46,   42,   46,   46,   46,   46,   51,   51,   66,   66,
+      804,   66,   53,   58,   46,   53,   53,   53,   53,   53,
+       58,   31,   43,  154,   43,  154,  154,   43,   62,   73,
+       73,  803,   73,   46,  802,   75,   43,   43,   43,   43,
+       75,   75,  162,   43,  162,  162,   43,   43,   43,   43,
 
+       43,   43,   43,   43,   43,   43,   43,   43,   43,  202,
+      202,   58,   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,  800,   75,   45,   58,  194,   60,   75,   75,
-       45,   57,   58,   45,   60,   61,   73,   73,   57,   73,
-      799,   45,   61,   56,   78,   78,  798,   78,  109,   45,
-       47,   63,  187,   86,   86,   47,   86,  187,   47,   47,
-       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,
-      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,  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,  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,  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,  207,  207,
-      143,  143,  143,  780,  143,  144,  145,  144,  144,  144,
-
-      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,
+       43,   43,   43,   43,   43,   45,   56,   45,   45,   45,
+       45,   94,  196,   56,   60,   57,  119,   59,   45,   45,
+      109,   60,   57,  119,   59,   45,  196,   63,  119,   45,
+       78,   78,  127,   78,   61,   45,   86,   86,   45,   86,
+      186,   61,   92,   92,  801,   92,   45,  720,   56,   94,
+       57,  163,  186,  163,   45,   47,   57,   59,  109,  720,
+       47,   60,  138,   47,   47,   47,   47,   47,   47,  800,
+
+      127,   47,   63,   47,   47,   61,   95,  193,   95,  193,
+       95,   95,   99,  158,   99,   99,   99,   99,  101,  101,
+      101,  101,  102,  189,  102,  102,  102,  102,  189,  103,
+      138,  103,  103,  103,  103,  102,  102,  113,  113,  113,
+      113,  798,  102,  103,  192,  110,  102,  110,  192,  110,
+      110,  158,  102,  121,  112,  102,  112,  112,  112,  112,
+      121,  215,  103,  102,  115,  121,  115,  115,  115,  115,
+      215,  102,  114,  225,  114,  114,  114,  114,  115,  117,
+      225,  117,  122,  117,  117,  114,  114,  136,  136,  122,
+      136,  361,  114,  361,  122,  121,  114,  115,  130,  130,
+
+      130,  130,  114,  120,  123,  114,  120,  120,  120,  120,
+      120,  123,  125,  114,  210,  120,  123,  122,  124,  125,
+      126,  114,  210,  122,  125,  124,  736,  126,  209,  209,
+      124,  129,  126,  129,  129,  129,  129,  132,  736,  132,
+      132,  132,  132,  139,  213,  139,  797,  139,  139,  213,
+      212,  132,  123,  143,  143,  143,  143,  262,  124,  125,
+      141,  126,  141,  141,  141,  141,  212,  146,  793,  145,
+      132,  145,  145,  145,  145,  146,  146,  146,  155,  155,
+      146,  155,  792,  145,  191,  143,  223,  223,  191,  143,
+      143,  143,  191,  143,  144,  262,  144,  144,  144,  144,
+
+      156,  156,  145,  156,  204,  204,  204,  144,  144,  148,
+      148,  148,  148,  148,  144,  272,  272,  791,  144,  149,
+      149,  149,  149,  149,  144,  790,  229,  144,  150,  150,
+      150,  150,  150,  229,  228,  144,  151,  151,  151,  151,
+      151,  228,  789,  144,  164,  164,  164,  164,  165,  165,
+      165,  165,  166,  166,  166,  166,  167,  167,  167,  167,
+      174,  174,  174,  174,  175,  786,  175,  175,  175,  175,
+      179,  179,  179,  179,  201,  201,  201,  201,  175,  783,
+      211,  228,  179,  203,  211,  203,  201,  230,  203,  203,
+      203,  203,  231,  232,  230,  233,  782,  175,  211,  231,
+
+      232,  179,  233,  227,  234,  201,  227,  227,  227,  227,
+      227,  234,  239,  239,  319,  239,  240,  240,  319,  240,
+      242,  242,  383,  242,  781,  232,  243,  243,  478,  243,
+      383,  231,  231,  383,  230,  247,  247,  780,  247,  478,
+      233,  248,  248,  234,  248,  255,  255,  779,  255,  256,
+      256,  277,  256,  260,  260,  777,  260,  261,  261,  776,
+      261,  265,  265,  265,  265,  267,  267,  267,  267,  268,
+      775,  268,  268,  268,  268,  269,  269,  269,  269,  271,
+      271,  271,  271,  268,  274,  274,  274,  269,  273,  277,
+      273,  271,  309,  273,  273,  273,  273,  280,  280,  280,
+
+      280,  774,  268,  286,  286,  772,  269,  288,  288,  288,
+      271,  282,  282,  282,  282,  283,  771,  283,  283,  283,
+      283,  284,  284,  284,  284,  285,  285,  285,  285,  283,
+      309,  297,  770,  284,  287,  769,  287,  285,  297,  287,
+      287,  287,  287,  297,  292,  292,  292,  292,  283,  324,
+      324,  768,  284,  292,  329,  329,  285,  293,  293,  293,
+      293,  294,  294,  294,  294,  401,  293,  326,  326,  326,
+      294,  295,  295,  295,  295,  374,  374,  767,  299,  300,
+      295,  299,  299,  299,  299,  299,  300,  301,  302,  303,
+      299,  300,  422,  422,  301,  302,  303,  305,  304,  301,
+
+      302,  303,  762,  401,  305,  304,  306,  761,  404,  305,
+      304,  307,  307,  306,  307,  404,  308,  308,  306,  308,
+      312,  312,  312,  312,  430,  430,  300,  759,  303,  303,
+      304,  314,  314,  314,  314,  302,  315,  406,  315,  315,
+      315,  315,  305,  758,  406,  306,  316,  316,  316,  316,
+      315,  323,  323,  323,  323,  377,  377,  377,  316,  325,
+      756,  325,  755,  323,  325,  325,  325,  325,  407,  315,
+      335,  335,  335,  335,  335,  407,  341,  316,  341,  341,
+      460,  460,  323,  336,  336,  336,  336,  336,  337,  337,
+      337,  337,  337,  338,  338,  338,  338,  338,  342,  342,
+
+      342,  342,  343,  343,  343,  343,  344,  344,  344,  344,
+      345,  345,  345,  345,  347,  754,  347,  518,  753,  347,
+      347,  347,  347,  373,  373,  373,  373,  375,  375,  375,
+      375,  376,  376,  376,  376,  373,  403,  405,  409,  408,
+      425,  425,  425,  403,  405,  409,  408,  418,  418,  418,
+      418,  419,  752,  419,  373,  518,  419,  419,  419,  419,
+      750,  421,  421,  421,  421,  423,  423,  423,  423,  433,
+      433,  433,  409,  421,  749,  748,  405,  408,  403,  424,
+      424,  424,  424,  427,  427,  427,  427,  747,  428,  745,
+      428,  744,  421,  428,  428,  428,  428,  429,  429,  429,
+
+      429,  431,  431,  431,  431,  432,  432,  432,  432,  429,
+      437,  437,  437,  437,  438,  438,  438,  438,  598,  437,
+      463,  463,  463,  438,  439,  439,  439,  439,  429,  440,
+      440,  440,  440,  439,  443,  444,  445,  446,  440,  743,
+      741,  443,  444,  445,  446,  447,  443,  444,  445,  446,
+      510,  448,  447,  449,  523,  524,  598,  447,  448,  510,
+      449,  523,  524,  448,  526,  449,  450,  450,  450,  450,
+      740,  526,  451,  656,  451,  445,  443,  451,  451,  451,
+      451,  459,  459,  459,  459,  525,  738,  449,  737,  448,
+      735,  734,  525,  459,  461,  461,  461,  461,  462,  462,
+
+      462,  462,  471,  471,  471,  471,  472,  472,  472,  472,
+      526,  656,  459,  531,  531,  531,  531,  532,  532,  532,
+      532,  533,  533,  533,  533,  537,  525,  534,  534,  534,
+      534,  538,  537,  539,  540,  733,  732,  537,  538,  730,
+      539,  540,  560,  538,  575,  539,  540,  541,  541,  541,
+      541,  542,  542,  542,  542,  560,  599,  600,  729,  575,
+      605,  560,  659,  599,  600,  575,  606,  605,  660,  659,
+      664,  673,  605,  606,  539,  660,  665,  664,  606,  681,
+      540,  728,  664,  665,  673,  727,  681,  726,  665,  725,
+      673,  723,  599,  722,  721,  719,  605,  717,  716,  715,
+
+      714,  713,  712,  600,  711,  710,  709,  708,  706,  705,
+      704,  703,  606,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  822,  822,  822,  822,  822,  822,
+      822,  822,  822,  822,  822,  823,  823,  823,  823,  823,
+      823,  823,  823,  823,  823,  823,  824,  702,  824,  824,
+      824,  824,  824,  824,  824,  824,  824,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  826,  701,
+      826,  826,  826,  826,  826,  826,  826,  826,  826,  827,
+      827,  827,  828,  828,  828,  699,  828,  828,  828,  829,
+      697,  696,  829,  829,  829,  830,  830,  830,  831,  695,
+
+      694,  831,  831,  831,  832,  832,  832,  833,  833,  692,
+      833,  833,  833,  834,  691,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  835,  690,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  836,  689,  688,  836,  836,
+      836,  837,  687,  686,  837,  837,  837,  838,  684,  838,
+      838,  838,  838,  838,  838,  838,  838,  838,  839,  683,
+      839,  839,  839,  839,  839,  839,  839,  839,  839,  840,
+      682,  680,  840,  840,  840,  841,  841,  841,  842,  842,
+      842,  842,  842,  842,  842,  843,  679,  843,  843,  843,
+      843,  843,  843,  843,  843,  843,  844,  678,  844,  844,
+
+      844,  844,  844,  844,  844,  844,  844,  845,  677,  676,
+      845,  845,  845,  846,  846,  675,  846,  846,  846,  847,
+      847,  847,  847,  847,  847,  847,  847,  847,  848,  674,
+      848,  848,  848,  848,  848,  848,  848,  848,  848,  849,
+      849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
+      850,  672,  850,  850,  850,  850,  850,  850,  850,  850,
+      850,  851,  671,  670,  851,  851,  851,  852,  669,  668,
+      852,  853,  667,  666,  853,  853,  853,  854,  854,  854,
+      662,  854,  854,  854,  855,  855,  855,  655,  855,  855,
+      855,  856,  654,  652,  651,  649,  856,  856,  856,  857,
+
+      648,  647,  857,  857,  857,  858,  644,  643,  858,  858,
+      858,  859,  642,  641,  859,  859,  859,  860,  860,  639,
+      860,  860,  860,  861,  638,  637,  861,  861,  861,  862,
+      636,  635,  862,  863,  633,  632,  863,  863,  863,  864,
+      631,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      865,  630,  865,  865,  865,  865,  865,  865,  865,  865,
+      865,  866,  628,  627,  866,  867,  626,  625,  867,  867,
+      867,  868,  624,  868,  868,  868,  868,  869,  869,  869,
+      870,  870,  870,  870,  870,  870,  870,  871,  623,  871,
+      871,  871,  871,  871,  871,  871,  871,  871,  872,  622,
+
+      872,  872,  872,  872,  872,  872,  872,  872,  872,  873,
+      620,  619,  873,  873,  873,  874,  618,  617,  874,  875,
+      875,  613,  875,  875,  875,  876,  611,  876,  876,  876,
+      876,  876,  876,  876,  876,  876,  877,  877,  877,  610,
+      877,  877,  877,  878,  878,  878,  609,  878,  878,  878,
+      879,  604,  603,  879,  879,  879,  880,  602,  880,  880,
+      880,  880,  880,  880,  880,  880,  880,  597,  596,  595,
+      594,  593,  592,  591,  590,  589,  588,  587,  586,  583,
+      582,  580,  577,  576,  574,  573,  572,  571,  570,  569,
+      568,  567,  565,  564,  563,  559,  557,  556,  555,  554,
+
+      553,  552,  551,  550,  549,  548,  547,  546,  545,  543,
+      530,  529,  528,  527,  522,  521,  516,  515,  514,  513,
+      512,  511,  509,  508,  507,  506,  505,  504,  502,  501,
+      500,  499,  498,  497,  496,  495,  493,  492,  491,  490,
+      489,  488,  487,  486,  485,  484,  482,  481,  480,  479,
+      477,  476,  475,  474,  473,  470,  469,  468,  467,  466,
+      465,  458,  457,  456,  455,  454,  453,  436,  435,  417,
+      412,  411,  410,  402,  400,  399,  397,  396,  395,  394,
       393,  392,  391,  390,  389,  388,  387,  386,  385,  384,
-      383,  382,  381,  379,  378,  377,  368,  367,  366,  365,
+      382,  381,  380,  371,  370,  369,  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,  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
+      364,  363,  362,  360,  359,  358,  357,  356,  355,  354,
+      353,  352,  351,  350,  349,  333,  332,  331,  330,  328,
+      322,  321,  320,  318,  313,  298,  291,  281,  266,  258,
+      257,  254,  253,  252,  251,  246,  245,  244,  226,  224,
+      217,  216,  214,  208,  207,  199,  198,  197,  195,  194,
+      190,  188,  187,  185,  184,  182,  172,  171,  147,  140,
+      137,  128,  118,  111,   96,   93,   89,   87,   85,   84,
+       83,   82,   79,   74,   67,   36,   34,   30,   27,   25,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[208] =
+static yyconst flex_int32_t yy_rule_can_match_eol[209] =
     {   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,
@@ -1364,13 +1386,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, 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, 1, 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, 0, 1, 0, 0,     };
 
-static yyconst flex_int16_t yy_rule_linenum[207] =
+static yyconst flex_int16_t yy_rule_linenum[208] =
     {   0,
       225,  247,  249,  251,  256,  257,  258,  259,  260,  261,
       262,  263,  264,  265,  266,  267,  269,  270,  271,  272,
@@ -1385,16 +1407,16 @@
 
       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,
+      499,  500,  501,  502,  504,  512,  563,  576,  598,  603,
+      608,  615,  616,  631,  636,  637,  642,  643,  644,  646,
+      662,  716,  744,  749,  754,  755,  756,  757,  762,  773,
+      774,  776,  778,  789,  803,  808,  809,  810,  811,  813,
+      828,  842,  871,  896,  898,  903,  913,  918,  936,  942,
+      949,  982,  984,  989, 1025, 1026, 1027, 1029, 1030, 1031,
+     1032, 1033, 1034, 1036, 1037, 1038, 1040, 1045, 1050, 1051,
+     1054, 1088, 1093, 1096, 1097, 1098, 1099, 1101, 1106, 1107,
 
-     1102, 1103, 1105, 1110, 1112, 1114
+     1108, 1109, 1110, 1112, 1117, 1119, 1121
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1513,7 +1535,7 @@
 
 /* The PASM state is an exclusive state, recognizing ONLY PASM tokens. */
 
-#line 1517 "pirlexer.c"
+#line 1539 "pirlexer.c"
 
 #define INITIAL 0
 #define MACROHEAD 1
@@ -1823,7 +1845,7 @@
 
 
 
-#line 1827 "pirlexer.c"
+#line 1849 "pirlexer.c"
 
     yylval = yylval_param;
 
@@ -1888,13 +1910,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 >= 818 )
+                if ( yy_current_state >= 821 )
                     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 != 817 );
+        while ( yy_current_state != 820 );
         yy_cp = yyg->yy_last_accepting_cpos;
         yy_current_state = yyg->yy_last_accepting_state;
 
@@ -1925,13 +1947,13 @@
             {
             if ( yy_act == 0 )
                 fprintf( stderr, "--scanner backing up\n" );
-            else if ( yy_act < 207 )
+            else if ( yy_act < 208 )
                 fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                          (long)yy_rule_linenum[yy_act], yytext );
-            else if ( yy_act == 207 )
+            else if ( yy_act == 208 )
                 fprintf( stderr, "--accepting default rule (\"%s\")\n",
                          yytext );
-            else if ( yy_act == 208 )
+            else if ( yy_act == 209 )
                 fprintf( stderr, "--(end of buffer or a NUL)\n" );
             else
                 fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2522,7 +2544,7 @@
 YY_RULE_SETUP
 #line 383 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
-                               "unrecognized sub flag: '%s'", yytext);
+                               "unrecognized flag: '%s'", yytext);
                   }
     YY_BREAK
 case 110:
@@ -2693,14 +2715,29 @@
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 125:
+*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
+yyg->yy_c_buf_p = yy_cp = yy_bp + 1;
+YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
 #line 504 "pir.l"
-{ /* XXX some work to be done to disallow $P0 . foo()
-                     * spaces should not be allowed.
+{ /* Make sure the dot is followed by a character that
+                     * starts a method object. $ for registers,
+                     * quotes for quoted strings, and letters for identifiers.
+                     *
                      */
                      return '.';
                   }
     YY_BREAK
+case 126:
+/* rule 126 can match eol */
+YY_RULE_SETUP
+#line 512 "pir.l"
+{ yypirerror(yyscanner, yypirget_extra(yyscanner),
+                    "no space allowed before a methodcall dot, "
+                    "or space expected after the '.' operator");
+                    return '.';
+                  }
+    YY_BREAK
 
 
 /* SCANSTR<<EOF>> and SCANMACRO<<EOF>> must be defined before <INTIAL><<EOF>>,
@@ -2717,7 +2754,7 @@
 
 
 case YY_STATE_EOF(SCANSTR):
-#line 527 "pir.l"
+#line 534 "pir.l"
 { /* switch back from .macro_const buffer to file. */
                      lexer_state * const lexer = yypirget_extra(yyscanner);
                      yy_pop_state(yyscanner);
@@ -2725,7 +2762,7 @@
                    }
     YY_BREAK
 case YY_STATE_EOF(SCANMACRO):
-#line 533 "pir.l"
+#line 540 "pir.l"
 { /* override the default <<EOF>> action; go back to normal state and
                       * switch back to the saved file.
                       */
@@ -2749,9 +2786,9 @@
 
                    }
     YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 556 "pir.l"
+#line 563 "pir.l"
 { /* when scanning a macro body, the @ marker indicates the {IDENT} must
                           * be munged.
                           */
@@ -2762,14 +2799,14 @@
                        }
     YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 565 "pir.l"
+#line 572 "pir.l"
 { /* end of file, stop scanning. */
                     yyterminate();
                   }
     YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 569 "pir.l"
+#line 576 "pir.l"
 { /* any character not covered in the rules above is an error. */
                     yypirerror(yyscanner, yypirget_extra(yyscanner),
                                "unexpected character: '%c'", yytext[0]);
@@ -2788,25 +2825,25 @@
 /********************** .macro_const ****************************************/
 
 
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 591 "pir.l"
+#line 598 "pir.l"
 {
                                yy_push_state(MACROCONST, yyscanner);
                                return TK_MACRO_CONST;
                              }
     YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 596 "pir.l"
+#line 603 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_IDENT;
                              }
     YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 601 "pir.l"
+#line 608 "pir.l"
 {
                                /* only these tokens can be macro constant values */
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
@@ -2814,21 +2851,21 @@
                                return TK_MACRO_CONST_VAL;
                              }
     YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 608 "pir.l"
+#line 615 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 609 "pir.l"
+#line 616 "pir.l"
 {
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "unknown character: '%c'", yytext[0]);
                              }
     YY_BREAK
 case YY_STATE_EOF(MACROCONST):
-#line 613 "pir.l"
+#line 620 "pir.l"
 {
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "read end of file during .macro_const definition");
@@ -2839,46 +2876,46 @@
 /**************** macro header (.macro <ident> <parameters> ) ***************/
 
 
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 624 "pir.l"
+#line 631 "pir.l"
 { /* start a macro definition */
                                yy_push_state(MACROHEAD, yyscanner);
                                return TK_MACRO;
                              }
     YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 629 "pir.l"
+#line 636 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 630 "pir.l"
+#line 637 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_IDENT;
                              }
     YY_BREAK
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 635 "pir.l"
+#line 642 "pir.l"
 { return '('; }
     YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 636 "pir.l"
+#line 643 "pir.l"
 { return ')'; }
     YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 637 "pir.l"
+#line 644 "pir.l"
 { return ','; }
     YY_BREAK
-case 139:
-/* rule 139 can match eol */
+case 140:
+/* rule 140 can match eol */
 YY_RULE_SETUP
-#line 639 "pir.l"
+#line 646 "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 */
@@ -2894,9 +2931,9 @@
  */
 
 
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 655 "pir.l"
+#line 662 "pir.l"
 { /* .foo; it can be a macro, macro_local, or just $P0.foo(),
                                 * but we need to check that.
                                 */
@@ -2951,9 +2988,9 @@
                                }
                              }
     YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 709 "pir.l"
+#line 716 "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);
@@ -2982,80 +3019,80 @@
                                    yypirerror(yyscanner, lexer, "'%s' is not a macro", yytext + 1);
                              }
     YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 737 "pir.l"
+#line 744 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_IDENT;
                              }
     YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 742 "pir.l"
+#line 749 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_OTHER;
                              }
     YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 747 "pir.l"
+#line 754 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 748 "pir.l"
+#line 755 "pir.l"
 { return ','; }
     YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 749 "pir.l"
+#line 756 "pir.l"
 { return '('; }
     YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 750 "pir.l"
+#line 757 "pir.l"
 {
                                yy_pop_state(yyscanner); /* leave MACROEXPAND state */
                                return ')';
                              }
     YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 755 "pir.l"
+#line 762 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_OTHER;
                              }
     YY_BREAK
 case YY_STATE_EOF(STRINGEXPAND):
-#line 760 "pir.l"
+#line 767 "pir.l"
 {
                                lexer_state * const lexer = yypirget_extra(yyscanner);
                                yy_pop_state(yyscanner);
                                yypir_switch_to_buffer(lexer->buffer,yyscanner);
                              }
     YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 766 "pir.l"
+#line 773 "pir.l"
 { return '{'; }
     YY_BREAK
-case 150:
+case 151:
 YY_RULE_SETUP
-#line 767 "pir.l"
+#line 774 "pir.l"
 { return '}'; }
     YY_BREAK
-case 151:
-/* rule 151 can match eol */
+case 152:
+/* rule 152 can match eol */
 YY_RULE_SETUP
-#line 769 "pir.l"
+#line 776 "pir.l"
 { yylval->sval = "\n"; return TK_NL; }
     YY_BREAK
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 771 "pir.l"
+#line 778 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "unknown character in macro expansion: %c", yytext[0]);
                              }
@@ -3065,9 +3102,9 @@
 /******************************** .macro_local *****************************/
 
 
-case 153:
+case 154:
 YY_RULE_SETUP
-#line 782 "pir.l"
+#line 789 "pir.l"
 { /* give a warning if the right flag is set */
                               /*
                               lexer_state * const lexer = yypirget_extra(yyscanner);
@@ -3081,37 +3118,37 @@
                               */
                             }
     YY_BREAK
-case 154:
+case 155:
 YY_RULE_SETUP
-#line 796 "pir.l"
+#line 803 "pir.l"
 {
                               yy_push_state(MACROLOCAL, yyscanner);
                               return TK_MACRO_LOCAL;
                             }
     YY_BREAK
-case 155:
+case 156:
 YY_RULE_SETUP
-#line 801 "pir.l"
+#line 808 "pir.l"
 { return TK_INT; }
     YY_BREAK
-case 156:
+case 157:
 YY_RULE_SETUP
-#line 802 "pir.l"
+#line 809 "pir.l"
 { return TK_PMC; }
     YY_BREAK
-case 157:
+case 158:
 YY_RULE_SETUP
-#line 803 "pir.l"
+#line 810 "pir.l"
 { return TK_NUM; }
     YY_BREAK
-case 158:
+case 159:
 YY_RULE_SETUP
-#line 804 "pir.l"
+#line 811 "pir.l"
 { return TK_STRING; }
     YY_BREAK
-case 159:
+case 160:
 YY_RULE_SETUP
-#line 806 "pir.l"
+#line 813 "pir.l"
 { /* normal .macro_local */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               /* reserve space for {IDENT}, the @ marker and the NULL char. */
@@ -3127,9 +3164,9 @@
                               return TK_MACRO_LOCAL_ID;
                             }
     YY_BREAK
-case 160:
+case 161:
 YY_RULE_SETUP
-#line 821 "pir.l"
+#line 828 "pir.l"
 { /* declare a .macro_local based on a parameter */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
 
@@ -3144,9 +3181,9 @@
 
                             }
     YY_BREAK
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 835 "pir.l"
+#line 842 "pir.l"
 { /* .$foo */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               macro_table * const table = peek_macro_table(lexer);
@@ -3176,9 +3213,9 @@
 
                             }
     YY_BREAK
-case 162:
+case 163:
 YY_RULE_SETUP
-#line 864 "pir.l"
+#line 871 "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);
@@ -3204,23 +3241,23 @@
                              return TK_IDENT;
                            }
     YY_BREAK
-case 163:
+case 164:
 YY_RULE_SETUP
-#line 889 "pir.l"
+#line 896 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
-case 164:
-/* rule 164 can match eol */
+case 165:
+/* rule 165 can match eol */
 YY_RULE_SETUP
-#line 891 "pir.l"
+#line 898 "pir.l"
 { /* newline after .macro_local <type> <ident> line */
                               yy_pop_state(yyscanner);
                               return TK_NL;
                             }
     YY_BREAK
-case 165:
+case 166:
 YY_RULE_SETUP
-#line 896 "pir.l"
+#line 903 "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]);
@@ -3231,17 +3268,17 @@
 /****************************** .macro_label ********************************/
 
 
-case 166:
+case 167:
 YY_RULE_SETUP
-#line 906 "pir.l"
+#line 913 "pir.l"
 {
                               yy_push_state(MACROLABEL, yyscanner);
                               return TK_MACRO_LABEL;
                             }
     YY_BREAK
-case 167:
+case 168:
 YY_RULE_SETUP
-#line 911 "pir.l"
+#line 918 "pir.l"
 { /* if the "$" is there, it's a macro label using a macro
                                * parameter's value; otherwise it's a normal macro label
                                */
@@ -3259,18 +3296,18 @@
                               return TK_MACRO_LABEL_ID;
                             }
     YY_BREAK
-case 168:
-/* rule 168 can match eol */
+case 169:
+/* rule 169 can match eol */
 YY_RULE_SETUP
-#line 929 "pir.l"
+#line 936 "pir.l"
 { /* the newline character after a ".macro_label $foo:" declaration */
                               yy_pop_state(yyscanner); /* leave MACROLABEL state */
                               return TK_NL;
                             }
     YY_BREAK
-case 169:
+case 170:
 YY_RULE_SETUP
-#line 935 "pir.l"
+#line 942 "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);
@@ -3278,9 +3315,9 @@
                               return TK_LABEL;
                             }
     YY_BREAK
-case 170:
+case 171:
 YY_RULE_SETUP
-#line 942 "pir.l"
+#line 949 "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);
@@ -3312,29 +3349,29 @@
 /*************************** macro body scanning (storing) ****************************/
 
 
-case 171:
-/* rule 171 can match eol */
+case 172:
+/* rule 172 can match eol */
 YY_RULE_SETUP
-#line 975 "pir.l"
+#line 982 "pir.l"
 { store_macro_char(CURRENT_MACRO(yypirget_extra(yyscanner)), '\n'); }
     YY_BREAK
-case 172:
+case 173:
 YY_RULE_SETUP
-#line 977 "pir.l"
+#line 984 "pir.l"
 {
                                yy_pop_state(yyscanner); /* leave MACROBODY state */
                                return TK_ENDM;
                              }
     YY_BREAK
-case 173:
+case 174:
 YY_RULE_SETUP
-#line 982 "pir.l"
+#line 989 "pir.l"
 { /* store everything else */
                                store_macro_char(CURRENT_MACRO(yypirget_extra(yyscanner)), yytext[0]);
                              }
     YY_BREAK
 case YY_STATE_EOF(MACROBODY):
-#line 986 "pir.l"
+#line 993 "pir.l"
 { /* catch run-away macro bodys */
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "read end of file while reading macro body");
@@ -3364,95 +3401,95 @@
  * This becomes unmanageable
  */
 
-case 174:
+case 175:
 YY_RULE_SETUP
-#line 1018 "pir.l"
+#line 1025 "pir.l"
 { return ','; }
     YY_BREAK
-case 175:
+case 176:
 YY_RULE_SETUP
-#line 1019 "pir.l"
+#line 1026 "pir.l"
 { return '['; }
     YY_BREAK
-case 176:
+case 177:
 YY_RULE_SETUP
-#line 1020 "pir.l"
+#line 1027 "pir.l"
 { return ']'; }
     YY_BREAK
-case 177:
+case 178:
 YY_RULE_SETUP
-#line 1022 "pir.l"
+#line 1029 "pir.l"
 { return TK_FLAG_MAIN; }
     YY_BREAK
-case 178:
+case 179:
 YY_RULE_SETUP
-#line 1023 "pir.l"
+#line 1030 "pir.l"
 { return TK_FLAG_LOAD; }
     YY_BREAK
-case 179:
+case 180:
 YY_RULE_SETUP
-#line 1024 "pir.l"
+#line 1031 "pir.l"
 { return TK_FLAG_INIT; }
     YY_BREAK
-case 180:
+case 181:
 YY_RULE_SETUP
-#line 1025 "pir.l"
+#line 1032 "pir.l"
 { return TK_FLAG_ANON; }
     YY_BREAK
-case 181:
+case 182:
 YY_RULE_SETUP
-#line 1026 "pir.l"
+#line 1033 "pir.l"
 { return TK_FLAG_POSTCOMP; }
     YY_BREAK
-case 182:
+case 183:
 YY_RULE_SETUP
-#line 1027 "pir.l"
+#line 1034 "pir.l"
 { return TK_FLAG_IMMEDIATE; }
     YY_BREAK
-case 183:
+case 184:
 YY_RULE_SETUP
-#line 1029 "pir.l"
+#line 1036 "pir.l"
 { return TK_PCC_SUB; }
     YY_BREAK
-case 184:
+case 185:
 YY_RULE_SETUP
-#line 1030 "pir.l"
+#line 1037 "pir.l"
 { return TK_LEX; }
     YY_BREAK
-case 185:
+case 186:
 YY_RULE_SETUP
-#line 1031 "pir.l"
+#line 1038 "pir.l"
 { return TK_NAMESPACE; }
     YY_BREAK
-case 186:
+case 187:
 YY_RULE_SETUP
-#line 1033 "pir.l"
+#line 1040 "pir.l"
 {
                           yy_push_state(MACROHEAD, yyscanner);
                           return TK_MACRO;
                         }
     YY_BREAK
-case 187:
+case 188:
 YY_RULE_SETUP
-#line 1038 "pir.l"
+#line 1045 "pir.l"
 {
                           yy_push_state(MACROCONST, yyscanner);
                           return TK_MACRO_CONST;
                         }
     YY_BREAK
-case 188:
+case 189:
 YY_RULE_SETUP
-#line 1043 "pir.l"
+#line 1050 "pir.l"
 { return TK_LINE; }
     YY_BREAK
-case 189:
+case 190:
 YY_RULE_SETUP
-#line 1044 "pir.l"
+#line 1051 "pir.l"
 { return TK_FILE; }
     YY_BREAK
-case 190:
+case 191:
 YY_RULE_SETUP
-#line 1047 "pir.l"
+#line 1054 "pir.l"
 { /* macro expansion in PASM mode. */
                           lexer_state * const lexer = yypirget_extra(yyscanner);
                           macro_def   * const macro = find_macro(lexer->macros, yytext + 1);
@@ -3487,110 +3524,110 @@
                           }
                         }
     YY_BREAK
-case 191:
+case 192:
 YY_RULE_SETUP
-#line 1081 "pir.l"
+#line 1088 "pir.l"
 { /* a label in PASM */
                           yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext, yyleng - 1);
                           return TK_LABEL;
                         }
     YY_BREAK
-case 192:
+case 193:
 YY_RULE_SETUP
-#line 1086 "pir.l"
+#line 1093 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                      "symbolic registers are not allowed in PASM mode");
                         }
     YY_BREAK
-case 193:
+case 194:
 YY_RULE_SETUP
-#line 1089 "pir.l"
+#line 1096 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_PREG; }
     YY_BREAK
-case 194:
+case 195:
 YY_RULE_SETUP
-#line 1090 "pir.l"
+#line 1097 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_NREG; }
     YY_BREAK
-case 195:
+case 196:
 YY_RULE_SETUP
-#line 1091 "pir.l"
+#line 1098 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_IREG; }
     YY_BREAK
-case 196:
+case 197:
 YY_RULE_SETUP
-#line 1092 "pir.l"
+#line 1099 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_SREG; }
     YY_BREAK
-case 197:
+case 198:
 YY_RULE_SETUP
-#line 1094 "pir.l"
+#line 1101 "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 198:
-YY_RULE_SETUP
-#line 1099 "pir.l"
-{ yylval->dval = atof(yytext); return TK_NUMC; }
-    YY_BREAK
 case 199:
 YY_RULE_SETUP
-#line 1100 "pir.l"
-{ yylval->ival = atoi(yytext); return TK_INTC; }
+#line 1106 "pir.l"
+{ yylval->dval = atof(yytext); return TK_NUMC; }
     YY_BREAK
 case 200:
 YY_RULE_SETUP
-#line 1101 "pir.l"
+#line 1107 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 201:
 YY_RULE_SETUP
-#line 1102 "pir.l"
+#line 1108 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 202:
 YY_RULE_SETUP
-#line 1103 "pir.l"
+#line 1109 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 203:
 YY_RULE_SETUP
-#line 1105 "pir.l"
+#line 1110 "pir.l"
+{ yylval->ival = atoi(yytext); return TK_INTC; }
+    YY_BREAK
+case 204:
+YY_RULE_SETUP
+#line 1112 "pir.l"
 { /* copy the string, remove the quotes. */
                           yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext + 1, yyleng - 2);
                           return TK_STRINGC;
                         }
     YY_BREAK
-case 204:
+case 205:
 YY_RULE_SETUP
-#line 1110 "pir.l"
+#line 1117 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
-case 205:
-/* rule 205 can match eol */
+case 206:
+/* rule 206 can match eol */
 YY_RULE_SETUP
-#line 1112 "pir.l"
+#line 1119 "pir.l"
 { return TK_NL; }
     YY_BREAK
-case 206:
+case 207:
 YY_RULE_SETUP
-#line 1114 "pir.l"
+#line 1121 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                      "unrecognized character: %c", yytext[0]);
                         }
     YY_BREAK
 case YY_STATE_EOF(PASM):
-#line 1117 "pir.l"
+#line 1124 "pir.l"
 { yyterminate(); }
     YY_BREAK
-case 207:
+case 208:
 YY_RULE_SETUP
-#line 1119 "pir.l"
+#line 1126 "pir.l"
 ECHO;
     YY_BREAK
-#line 3594 "pirlexer.c"
+#line 3631 "pirlexer.c"
 case YY_STATE_EOF(MACROHEAD):
 case YY_STATE_EOF(MACROLOCAL):
 case YY_STATE_EOF(MACROLABEL):
@@ -3902,7 +3939,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 >= 818 )
+            if ( yy_current_state >= 821 )
                 yy_c = yy_meta[(unsigned int) yy_c];
             }
         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3936,11 +3973,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 >= 818 )
+        if ( yy_current_state >= 821 )
             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 == 817);
+    yy_is_jam = (yy_current_state == 820);
 
     return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4844,7 +4881,7 @@
 
 /* %ok-for-header */
 
-#line 1119 "pir.l"
+#line 1126 "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:25:18 2009
@@ -492,7 +492,7 @@
 #undef YY_DECL
 #endif
 
-#line 1119 "pir.l"
+#line 1126 "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:25:18 2009
@@ -815,16 +815,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  10
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1079
+#define YYLAST   1106
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  139
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  171
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  430
+#define YYNRULES  429
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  669
+#define YYNSTATES  668
 
 /* 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,    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,
+      44,    46,    50,    58,    61,    62,    64,    66,    70,    72,
+      73,    75,    77,    80,    83,    85,    87,    90,    94,    97,
+     100,   103,   108,   111,   116,   121,   122,   124,   126,   130,
+     132,   139,   141,   144,   146,   148,   149,   152,   154,   156,
+     158,   160,   162,   164,   166,   169,   174,   177,   180,   183,
+     186,   189,   193,   194,   196,   198,   202,   204,   206,   208,
+     210,   211,   214,   219,   222,   223,   226,   228,   230,   232,
+     237,   239,   240,   243,   246,   248,   250,   252,   254,   256,
      258,   260,   262,   264,   266,   268,   270,   272,   274,   276,
-     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,
+     278,   280,   284,   285,   289,   290,   292,   294,   298,   300,
+     302,   305,   307,   311,   312,   315,   317,   319,   321,   324,
+     326,   329,   332,   336,   340,   343,   346,   348,   350,   352,
+     354,   355,   357,   359,   363,   367,   369,   371,   373,   375,
+     377,   379,   382,   386,   388,   392,   399,   404,   411,   414,
+     416,   418,   422,   426,   430,   434,   438,   442,   447,   452,
+     457,   461,   465,   469,   473,   477,   481,   485,   490,   496,
+     501,   506,   510,   514,   518,   522,   526,   530,   534,   538,
+     541,   547,   553,   559,   565,   571,   577,   583,   589,   595,
+     600,   606,   611,   616,   621,   626,   631,   636,   641,   646,
+     651,   656,   661,   666,   671,   675,   679,   683,   687,   691,
+     695,   699,   703,   707,   711,   715,   719,   721,   723,   725,
+     727,   729,   731,   735,   740,   742,   746,   749,   750,   752,
+     758,   760,   762,   764,   773,   774,   776,   778,   781,   785,
+     789,   792,   798,   799,   802,   803,   805,   807,   810,   814,
+     816,   819,   823,   827,   829,   831,   833,   838,   841,   843,
+     845,   847,   849,   851,   853,   855,   857,   861,   862,   864,
+     866,   870,   873,   877,   878,   881,   883,   885,   887,   890,
+     892,   894,   896,   898,   900,   904,   908,   912,   916,   917,
+     919,   921,   925,   927,   929,   933,   936,   938,   944,   950,
+     951,   953,   955,   958,   962,   963,   965,   967,   970,   974,
+     975,   978,   980,   983,   984,   986,   990,   993,   996,   998,
+    1000,  1003,  1005,  1007,  1010,  1015,  1020,  1025,  1030,  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,9 +922,8 @@
     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,  1178,  1180,  1183,  1185,  1187,  1190,  1192,  1195,
-    1197,  1200,  1203,  1205,  1208,  1211,  1213,  1215,  1217,  1221,
-    1223
+    1174,  1176,  1178,  1181,  1183,  1185,  1188,  1190,  1193,  1195,
+    1198,  1201,  1203,  1206,  1209,  1211,  1213,  1215,  1219,  1221
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -932,176 +931,175 @@
 {
      140,     0,    -1,   116,   141,    -1,   115,   301,    -1,   142,
      143,   142,    -1,    -1,    35,    -1,   144,    -1,   143,    35,
-     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
+     144,    -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,   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,
+       0,   561,   561,   562,   567,   573,   574,   577,   578,   581,
+     582,   583,   584,   585,   586,   587,   588,   589,   590,   597,
+     598,   601,   605,   611,   618,   619,   622,   623,   626,   630,
+     631,   634,   635,   638,   641,   642,   645,   649,   660,   664,
+     666,   670,   676,   680,   684,   689,   690,   694,   696,   700,
+     704,   710,   714,   718,   719,   722,   723,   726,   728,   730,
+     732,   734,   736,   738,   740,   742,   744,   746,   748,   750,
+     752,   756,   761,   765,   769,   778,   789,   791,   793,   797,
+     806,   807,   820,   824,   829,   830,   834,   835,   836,   839,
+     846,   852,   853,   863,   865,   868,   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,
+     888,   891,   896,   897,   902,   903,   906,   908,   916,   924,
+     925,   927,   930,   936,   937,   946,   947,   948,   949,   957,
+     961,   965,   974,   981,   988,   991,   992,   995,  1004,  1011,
+    1014,  1015,  1018,  1019,  1022,  1058,  1060,  1064,  1066,  1071,
+    1073,  1077,  1100,  1104,  1106,  1115,  1126,  1138,  1148,  1151,
+    1152,  1155,  1164,  1173,  1178,  1183,  1204,  1209,  1250,  1268,
+    1275,  1280,  1291,  1302,  1313,  1324,  1329,  1334,  1339,  1349,
+    1368,  1402,  1404,  1406,  1408,  1410,  1412,  1414,  1416,  1421,
+    1430,  1432,  1434,  1436,  1438,  1440,  1442,  1444,  1446,  1448,
+    1460,  1465,  1467,  1469,  1471,  1473,  1475,  1477,  1479,  1481,
+    1483,  1485,  1487,  1489,  1520,  1546,  1554,  1563,  1572,  1574,
+    1576,  1578,  1580,  1584,  1589,  1591,  1596,  1597,  1600,  1601,
+    1604,  1605,  1608,  1616,  1620,  1622,  1626,  1630,  1631,  1634,
+    1649,  1653,  1654,  1657,  1669,  1670,  1674,  1676,  1680,  1684,
+    1686,  1688,  1694,  1695,  1700,  1701,  1705,  1707,  1716,  1718,
+    1722,  1726,  1728,  1730,  1734,  1735,  1738,  1758,  1765,  1767,
+    1777,  1794,  1796,  1798,  1802,  1811,  1816,  1823,  1824,  1828,
+    1830,  1834,  1836,  1841,  1842,  1846,  1848,  1850,  1852,  1862,
+    1866,  1867,  1868,  1869,  1872,  1877,  1888,  1895,  1900,  1901,
+    1905,  1907,  1911,  1912,  1915,  1919,  1923,  1927,  1936,  1946,
+    1947,  1952,  1954,  1959,  1964,  1965,  1969,  1971,  1975,  1981,
+    1982,  1986,  1988,  1996,  1997,  2001,  2005,  2008,  2012,  2013,
+    2016,  2020,  2021,  2024,  2028,  2030,  2032,  2036,  2040,  2041,
+    2054,  2055,  2059,  2060,  2061,  2064,  2065,  2068,  2069,  2070,
+    2071,  2072,  2073,  2076,  2077,  2078,  2079,  2087,  2090,  2091,
+    2104,  2105,  2106,  2107,  2111,  2112,  2115,  2116,  2117,  2118,
+    2119,  2120,  2121,  2122,  2125,  2126,  2127,  2130,  2131,  2132,
     2133,  2134,  2135,  2136,  2137,  2138,  2139,  2140,  2141,  2142,
     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
+    2158,  2159,  2160,  2161,  2162,  2163,  2164,  2165,  2166,  2167,
+    2168,  2169,  2181,  2189,  2193,  2194,  2197,  2198,  2199,  2200,
+    2201,  2202,  2205,  2207,  2208,  2211,  2212,  2215,  2219,  2224
 };
 #endif
 
@@ -1208,50 +1206,49 @@
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       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,
+       0,   139,   140,   140,   141,   142,   142,   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,   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,
+     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,
-     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,
+     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,   218,   218,   218,   218,   218,   218,   218,   218,
-     219,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     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,   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,
+     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,   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
+     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.  */
@@ -1259,38 +1256,38 @@
 {
        0,     2,     2,     2,     3,     0,     1,     1,     3,     1,
        1,     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,     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,     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,     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,     1,
@@ -1298,9 +1295,8 @@
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     1,     1,     2,     1,     2,     1,
-       2,     2,     1,     2,     2,     1,     1,     1,     3,     1,
-       3
+       1,     1,     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
@@ -1308,422 +1304,428 @@
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       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,     5,     5,     0,     6,   413,     3,     0,     2,     0,
+       1,     0,     0,     0,     0,     0,   137,     0,     0,   112,
+     428,     0,    19,    20,     0,     0,     0,   421,   140,   418,
+     412,   414,   416,     0,    55,   424,     0,     0,     0,     0,
+       0,     0,     0,     5,     7,    17,    14,    15,    16,    12,
+      13,    11,     9,    55,    18,    10,     0,    39,    40,    45,
+     129,   425,   422,   426,   364,   369,   370,   372,   371,   366,
+     367,   373,   368,    23,   365,     0,   114,     0,   420,    24,
+     419,   417,   345,   346,   342,   343,   360,   361,   363,   362,
+       0,     0,   141,   142,   145,   150,   146,     0,   147,   344,
+     149,   148,   415,   423,     0,   131,    42,     0,    38,    54,
+      52,    53,     0,     0,     0,   327,     0,     0,     4,     0,
+       0,    49,     0,    46,    47,    21,   112,   118,   119,   123,
+       0,   115,   116,   121,   111,     0,    25,    26,    28,   360,
+       0,   153,   341,   340,   357,   358,   359,   429,     0,   151,
+     427,    58,    59,    60,    57,   323,     0,   323,    61,     0,
+      62,    63,     0,     0,     0,    56,     0,     0,     0,     0,
+       0,     8,    80,   275,     0,   274,    44,     0,   120,     0,
+     113,     0,     0,     0,   152,     0,   143,     0,    66,   324,
+       0,    67,    72,    64,    68,    69,    70,    43,     0,     0,
+       0,    41,    91,    79,   239,    48,   125,   112,   127,   126,
+     122,   124,   117,    29,    27,   154,     0,     0,    77,     0,
+      73,    74,    78,    76,   334,   335,   336,     0,     0,    81,
+     128,     0,     0,     0,    30,    31,     0,    34,    35,   325,
+      65,    71,     0,    51,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   137,   366,   367,   373,   368,
+     269,   360,   277,     0,    50,    92,    94,   108,   110,   106,
+     107,   109,   105,   104,    95,     0,   140,   136,   103,     0,
+      96,     0,     0,    97,    98,    99,   102,   240,   241,   242,
+       0,   263,   265,   264,     0,   268,     0,   101,   289,   290,
+     292,   291,   293,   100,     0,   328,   329,     0,   359,   365,
+     353,   354,   355,   356,    84,     0,     0,    36,    22,    32,
+      33,    75,     0,     0,   333,   331,   332,   330,   298,     0,
+       0,   309,   314,   244,     0,     0,    93,     0,     0,     0,
+       0,     0,   278,   279,   283,   130,   134,   135,   138,   139,
+     146,   158,   189,   364,   369,   370,   372,   371,   366,   367,
+     373,   368,   345,   342,   343,     0,     0,     0,   358,   260,
+     267,     0,     0,   326,   411,   409,   410,     0,     0,   400,
+     401,   402,   403,   405,   406,   404,   407,   408,     0,     0,
+       0,     0,    83,    37,     0,   234,   237,     0,   345,     0,
+     299,   300,   303,   302,   319,   306,   294,   296,     0,     0,
+     310,   311,     0,     0,   315,   316,     0,     0,   245,   246,
+     133,   295,   132,   232,     0,     0,   276,     0,   281,     0,
+     230,   231,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       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
+       0,     0,   347,   348,   349,   350,   352,   351,     0,     0,
+       0,     0,     0,     0,     0,   273,   271,   272,     0,   270,
+     261,   171,   172,   175,   173,   174,   176,   364,   269,   161,
+     162,   360,   374,   375,   376,     0,   165,   166,   262,   163,
+       0,   358,   365,     0,   170,     0,    82,    90,   323,   287,
+     285,   286,     0,    85,    87,    88,    86,   233,     0,   238,
+     236,     0,     0,   297,     0,   305,     0,     0,   312,     0,
+       0,   317,     0,     0,     0,     0,     0,   247,   180,   282,
+     280,   284,   144,   201,   203,   204,   205,   206,   207,   208,
+       0,     0,     0,     0,     0,     0,     0,     0,   368,   211,
+       0,   212,   209,   210,   222,   226,   227,   223,   217,   224,
+     218,   219,   215,   225,   220,   221,   216,   213,   199,   214,
+     202,   266,   399,   394,   396,   395,   398,   397,   387,   388,
+     389,   392,   390,   391,   393,   386,   378,   384,   377,   379,
+     380,   381,   382,   383,   385,     0,     0,     0,   169,   156,
+     167,     0,   168,   177,   179,   288,     0,   235,   337,   338,
+     339,   304,   301,   323,   321,   320,   313,   308,   318,   307,
+     248,     0,   252,   268,   250,   254,   190,   191,   192,   193,
+     194,   195,   196,   198,   197,   200,   184,   183,   185,   187,
+     181,   188,   186,   182,     0,     0,   178,     0,   322,     0,
+       0,   249,     0,   259,     0,   255,   256,   155,   157,    89,
+       0,   253,     0,     0,   257,   251,   258,   243
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -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,
+     135,   136,   137,   233,   234,   235,   236,   237,   238,    46,
+      25,    48,    49,    50,    26,   122,   123,   124,    52,   264,
+      53,   110,   104,   165,   193,   219,   220,   221,   202,   203,
+     229,   314,   391,   503,   504,   505,   227,   265,   266,   267,
+      27,    77,   130,   131,   132,   133,   179,   211,    61,   270,
+      54,   272,   273,   274,   275,    28,   347,    91,    92,   349,
+      93,    94,    95,    96,   140,   277,   278,   486,   279,   487,
+     280,   281,   365,   557,   282,   432,   283,   284,   394,   395,
+     510,    29,   286,   287,   288,   417,   418,   419,   526,   651,
+     654,   655,   656,   289,   290,   291,   292,   293,   294,   468,
+      97,   296,   341,   342,   343,   428,   506,   297,   298,   299,
+     300,   329,   399,   400,   401,   402,   403,   404,   301,   302,
+     409,   410,   411,   413,   414,   415,   515,   615,   188,   189,
+     303,    55,   304,   305,   324,   306,   325,   326,   608,   405,
+     142,    99,   458,   315,   143,   144,   145,   146,    74,   493,
+     595,   389,     6,     7,    30,    31,    32,    62,    33,    34,
       35
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -592
+#define YYPACT_NINF -593
 static const yytype_int16 yypact[] =
 {
-       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
+     -69,     1,     1,    79,  -593,  -593,  -593,    40,  -593,    77,
+    -593,    55,    56,    62,   -13,    32,  -593,   697,    82,    31,
+    -593,   127,  -593,  -593,    46,   132,   137,  -593,   666,  -593,
+      40,  -593,  -593,    32,  -593,  -593,   147,   138,   156,   160,
+     553,   139,   162,   174,  -593,  -593,  -593,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,  -593,  -593,    91,  -593,  -593,   172,
+    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,  -593,   105,   -20,   191,  -593,   697,
+    -593,  -593,  -593,  -593,  -593,  -593,   104,  -593,  -593,  -593,
+     810,   193,   109,  -593,  -593,  -593,  -593,   108,  -593,  -593,
+    -593,   110,  -593,  -593,   721,  -593,  -593,   113,  -593,  -593,
+    -593,  -593,   697,   697,   697,  -593,   126,    24,  -593,   387,
+    1034,  -593,   119,   123,  -593,  -593,    31,  -593,  -593,  -593,
+     130,   131,  -593,  -593,  -593,   133,   135,  -593,  -593,  -593,
+      22,  -593,  -593,  -593,  -593,  -593,  -593,  -593,   666,  -593,
+    -593,  -593,  -593,  -593,  -593,   141,   150,   141,  -593,   152,
+    -593,  -593,   141,   141,   141,  -593,   212,   146,   151,   153,
+     228,  -593,  -593,  -593,   242,  -593,  -593,   172,  -593,    29,
+    -593,   -20,   243,   697,  -593,   810,  -593,   233,  -593,  -593,
+     553,  -593,   149,  -593,  -593,  -593,  -593,  -593,   232,   234,
+     114,  -593,  -593,   273,  -593,  -593,  -593,    31,  -593,  -593,
+    -593,  -593,  -593,    64,  -593,  -593,   168,   169,  -593,   170,
+     175,  -593,  -593,  -593,  -593,  -593,  -593,   275,   200,  -593,
+    -593,   200,   186,   195,    64,  -593,   267,  -593,  -593,  -593,
+    -593,  -593,   149,  -593,   200,   176,   176,   188,   188,   274,
+     287,   288,   205,  1020,   533,   704,   827,   850,  1003,   697,
+    -593,    10,   459,   303,  -593,  -593,  -593,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,  -593,   305,   666,  -593,  -593,   306,
+    -593,   308,   867,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
+     310,  -593,  -593,  -593,   188,   218,   226,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,   314,  -593,  -593,   764,   -67,   108,
+    -593,  -593,  -593,  -593,  -593,   697,   240,  -593,  -593,  -593,
+    -593,  -593,   697,   697,  -593,  -593,  -593,  -593,   884,   316,
+     317,   333,   335,   327,   323,   324,  -593,   325,   326,   244,
+     311,   247,   241,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
+     246,  -593,  -593,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
+     292,   -19,   207,   207,   207,   319,   -23,   207,   -23,  -593,
+    -593,   411,  1020,  -593,  -593,  -593,  -593,   597,   711,  -593,
+    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,   616,   810,
+     248,   102,  -593,  -593,   -14,  -593,   272,   251,   320,   255,
+     256,  -593,  -593,  -593,  -593,  -593,  -593,  -593,   810,   353,
+     333,  -593,   810,   354,   335,  -593,   810,    43,   327,  -593,
+    -593,  -593,  -593,  -593,   810,  1003,  -593,   459,   122,   810,
+    -593,  -593,   697,   697,   697,   697,   697,   697,   697,   339,
+     340,   342,   344,   345,   346,   348,   350,  1061,   -23,   697,
+     697,   697,  -593,  -593,  -593,  -593,  -593,  -593,   901,   918,
+     935,   697,   697,   810,   697,  -593,  -593,  -593,   188,  -593,
+    -593,  -593,  -593,  -593,  -593,  -593,  -593,   649,   545,   665,
+     665,    10,  -593,  -593,  -593,   666,  -593,  -593,  -593,  -593,
+     665,   361,   -18,   810,  -593,   810,  -593,  -593,   141,  -593,
+    -593,  -593,   261,  -593,  -593,  -593,  -593,  -593,   697,  -593,
+    -593,  1048,   810,  -593,   884,    45,   362,   363,  -593,   365,
+     366,  -593,   367,  1034,  1020,  1034,   368,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
+     697,   697,   697,   697,   697,   697,   697,   697,   697,  -593,
+     697,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,  -593,   986,   952,   969,  -593,   283,
+     290,   810,  -593,  -593,  -593,  -593,   149,  -593,  -593,  -593,
+    -593,  -593,  -593,   141,  -593,  -593,  -593,  -593,  -593,  -593,
+    -593,   374,   291,  -593,  -593,    42,  -593,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,   666,   666,  -593,   294,  -593,   408,
+    1034,  -593,   459,  -593,   397,    42,  -593,   109,   109,  -593,
+     411,  -593,   390,   391,  -593,  -593,  -593,  -593
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -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
+    -593,  -593,  -593,    17,  -593,   312,     3,  -593,  -593,  -593,
+    -593,  -593,   245,  -593,  -593,   197,  -593,  -593,  -593,  -593,
+       7,  -593,  -593,  -593,     5,  -593,  -593,   250,  -593,  -593,
+    -593,   249,   382,  -593,  -593,  -593,  -593,  -234,  -593,  -593,
+    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,   182,  -593,
+    -195,   -95,  -593,  -593,   259,  -593,  -593,  -593,  -189,  -593,
+    -188,  -593,  -593,  -593,  -593,  -212,  -593,   161,  -448,  -593,
+     293,   -43,  -593,   -93,  -593,  -593,  -593,  -593,  -593,  -593,
+    -593,  -593,  -593,  -593,  -593,  -241,  -593,  -592,  -593,   -65,
+    -593,  -184,  -593,  -593,  -593,  -593,  -593,    28,  -593,  -593,
+    -593,  -593,  -196,  -593,  -593,  -233,  -593,  -593,   -60,  -194,
+    -118,   213,  -593,  -593,  -420,  -593,    39,  -593,  -593,  -593,
+    -593,  -239,  -593,  -593,   -45,  -593,  -282,   -26,  -593,  -593,
+    -593,  -593,    75,  -593,  -593,    73,  -593,  -593,  -151,   -10,
+    -593,  -593,  -593,  -593,   268,  -593,   447,  -593,  -593,   -85,
+     -27,  -190,  -278,  -160,  -214,  -593,   -25,   -17,  -209,  -593,
+    -321,  -593,  -593,  -593,  -593,   460,  -593,   456,  -593,  -593,
+      41
 };
 
 /* 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 -366
+#define YYTABLE_NINF -365
 static const yytype_int16 yytable[] =
 {
-      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,
+      73,    98,   174,   100,   149,   141,   191,   530,   321,   330,
+     226,   101,    45,   307,    51,   276,    47,  -160,   309,     9,
+     335,   507,   430,   111,    -6,    36,   450,    37,    38,    39,
+      40,   178,   268,   653,    12,    13,     4,    14,   269,   271,
+     307,    41,   276,   285,   337,   309,     1,     2,   344,    11,
+      12,    13,  -274,    14,   244,   370,    63,   523,    42,   268,
+     118,  -274,   138,   653,   206,   269,   271,    60,   367,    16,
+     285,   316,   524,   652,    63,   525,    15,    16,    36,    10,
+      37,    38,    39,    40,   322,   459,   460,    12,    13,   463,
+      14,   126,   127,   128,    41,   167,   168,   169,   431,   222,
+     215,    56,   451,   175,    57,    90,   129,   508,    58,   295,
+      59,    42,   230,   433,   434,   435,   436,   437,   438,    75,
+      45,    98,    51,   100,    47,   462,   516,   464,    17,  -275,
+     519,   101,    18,    90,   522,   295,   295,   496,  -275,   470,
+     207,   208,   209,   613,    17,   614,   184,   185,    18,   222,
+      76,    19,   194,   195,   196,   488,   210,    20,   596,   597,
+      82,    83,    78,   473,   476,    79,   138,    80,   339,   601,
+     231,   232,    81,   111,   490,   223,   485,   112,   113,   492,
+     114,    17,   105,   350,   106,    18,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,   218,   657,   658,   489,   497,
+     498,   499,   107,   500,   501,   502,   108,   550,   116,   117,
+     308,   529,   120,   344,   112,   113,   390,   114,   121,   125,
+     498,   499,   323,   500,   501,   223,   134,  -275,   147,   571,
+     148,    90,   662,  -274,   263,   166,   175,   308,   310,   311,
+     312,   313,   338,   176,   558,   562,   566,   170,   177,    98,
+     180,   100,   181,   182,   295,   366,   183,   368,   197,   101,
+     187,   263,   452,   453,   454,   455,   456,   457,   198,   190,
+     295,   192,    90,   199,   201,   200,    36,   204,   213,   216,
+     224,   228,   243,   225,    11,    12,    13,   244,   239,   240,
+     241,   245,   246,   247,   248,   317,   242,   249,   392,   250,
+     318,   251,   320,   252,   494,   396,   397,   328,   253,   331,
+      60,   254,   255,    65,    66,    67,    68,   256,   257,   258,
+     259,   260,   332,   333,   262,   261,    87,    88,    89,   439,
+     440,   441,   442,   443,   444,   445,   446,   447,   345,   528,
+     346,   351,   448,   352,   532,   369,   371,   605,   372,   373,
+     393,   406,   407,   408,   469,   175,   412,   416,   420,   421,
+     422,   423,   427,   491,   461,   425,   424,   426,   429,   509,
+     495,   308,   647,   511,   512,   513,   517,   514,   569,   520,
+     606,   637,   640,   643,   540,   541,    19,   542,   598,   543,
+     544,   545,   600,   546,   262,   547,  -164,   616,   617,   602,
+     618,   619,   620,   625,   644,   621,   623,   624,   603,   649,
+     604,   645,   650,   449,   659,   533,   534,   535,   536,   537,
+     538,   539,   172,   660,   663,   666,   667,   205,   214,   171,
+     549,   319,   551,   552,   553,   119,   336,   348,   344,   217,
+     212,   186,   599,   607,   567,   568,   527,   570,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,   465,    98,   664,
+     100,   466,   648,   467,   622,   334,   665,   531,   101,   612,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   164,   609,   518,   611,   521,   115,   103,
+     102,   396,     0,     0,   610,     0,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,   340,   175,   175,   175,   139,
+      87,    88,    89,   222,   327,     0,   646,     0,     0,     0,
+       0,     0,     0,   626,   627,   628,   629,   630,   631,   632,
+     633,   634,   661,   635,    36,     0,     0,     0,     0,     0,
+       0,     0,    11,    12,    13,   244,     0,     0,     0,   245,
+     246,   247,   248,     0,     0,   249,     0,   250,     0,   251,
+       0,   252,     0,     0,     0,     0,   253,     0,    60,     0,
+     255,    65,    66,    67,    68,   256,   257,   258,   259,   260,
+    -345,     0,     0,   261,    87,    88,    89,     0,     0,   223,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,   109,
+     572,   573,   574,   575,   576,   577,   578,   579,   580,   581,
+     582,   583,   584,   585,     0,     0,     0,    98,    98,   100,
+     100,     0,     0,     0,     0,     0,     0,   101,   101,     0,
+       0,     0,     0,   175,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,   469,    19,   471,   472,   139,    87,    88,
+      89,     0,   262,   477,    65,    66,    67,    68,    69,    70,
+      71,    72,   478,    83,   479,   480,   481,    87,    88,    89,
+       0,     0,     0,     0,   586,     0,   587,   588,   589,   590,
+     591,   592,   593,   594,  -159,     0,  -137,  -137,  -137,  -137,
+    -137,  -137,  -137,  -137,  -137,  -137,  -137,  -137,  -137,  -137,
+    -137,  -137,  -137,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    82,    83,    84,    85,    86,    87,    88,    89,
+     572,   573,   574,   575,   576,   577,   578,   579,   580,   581,
+     582,   583,   584,   585,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,     0,     0,   482,   483,   484,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,   150,     0,   474,
+     475,   139,    87,    88,    89,     0,     0,     0,     0,     0,
+       0,     0,  -137,  -364,  -364,  -364,  -364,  -364,  -364,  -364,
+    -364,  -364,  -364,  -364,  -364,  -364,  -364,     0,     0,    90,
+       0,     0,     0,     0,   586,     0,   587,   588,   589,   590,
+     591,   592,   593,   594,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,     0,     0,
+       0,     0,     0,  -364,     0,     0,  -364,     0,     0,     0,
+       0,     0,  -364,   374,   375,   376,   377,   378,   379,   380,
+     381,   382,   383,   384,   385,   386,   387,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    82,    83,    84,    85,
+     139,    87,    88,    89,  -228,  -228,  -228,  -228,  -228,  -228,
+    -228,  -228,  -228,  -228,  -228,  -228,  -228,  -228,  -228,  -228,
+    -228,     0,     0,     0,     0,     0,   388,  -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,
+    -229,  -229,  -229,  -229,   353,   354,   355,   356,   357,   358,
+     359,   360,   361,   362,    83,   363,   364,   139,    87,    88,
+      89,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+     398,    83,    84,    85,   139,    87,    88,    89,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,   554,     0,   555,
+     556,   139,    87,    88,    89,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,   559,     0,   560,   561,   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,
+      72,   563,     0,   564,   565,   139,    87,    88,    89,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,     0,     0,
+     638,   639,   139,    87,    88,    89,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,     0,     0,   641,   642,   139,
       87,    88,    89,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,   564,     0,   565,   566,   139,    87,    88,    89,
+      71,    72,   636,     0,     0,     0,   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
+       0,     0,     0,   139,    87,    88,    89,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,   260,     0,     0,     0,
+     173,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+       0,     0,     0,     0,   173,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    82,    83,    84,    85,    64,    65,
+      66,    67,    68,    69,    70,    71,   548
 };
 
 static const yytype_int16 yycheck[] =
 {
-      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,
+      17,    28,   120,    28,    97,    90,   157,   427,   242,   248,
+     200,    28,     9,   227,     9,   227,     9,    35,   227,     2,
+     253,    35,    45,    40,     0,     1,    45,     3,     4,     5,
+       6,   126,   227,   625,    10,    11,    35,    13,   227,   227,
+     254,    17,   254,   227,   258,   254,   115,   116,   262,     9,
+      10,    11,   119,    13,    12,   294,    15,    14,    34,   254,
+      43,   128,    79,   655,    35,   254,   254,    35,   282,    37,
+     254,   231,    29,    31,    33,    32,    36,    37,     1,     0,
+       3,     4,     5,     6,   244,   363,   364,    10,    11,   367,
+      13,   111,   112,   113,    17,   112,   113,   114,   121,   192,
+     185,    46,   121,   120,    48,   123,   126,   121,    46,   227,
+     123,    34,   207,   354,   355,   356,   357,   358,   359,    37,
+     117,   148,   117,   148,   117,   366,   408,   368,   104,   119,
+     412,   148,   108,   123,   416,   253,   254,    35,   128,   372,
+     111,   112,   113,    98,   104,   100,   124,   125,   108,   242,
+     119,   111,   162,   163,   164,   388,   127,   117,   479,   480,
+      46,    47,    35,   377,   378,   119,   183,    35,   261,   490,
+     106,   107,    35,   190,   388,   192,   388,    38,    39,   388,
+      41,   104,    35,   276,    46,   108,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,   644,   645,   388,    97,
+      98,    99,    46,   101,   102,   103,    46,   448,    46,    35,
+     227,   425,   121,   427,    38,    39,   309,    41,    46,   114,
+      98,    99,    46,   101,   102,   242,    35,   123,    35,   468,
+     121,   123,   652,   123,   227,   122,   253,   254,    38,    39,
+      40,    41,   259,   124,   458,   459,   460,   121,   125,   276,
+     120,   276,   121,   120,   372,   282,   121,   282,    46,   276,
+     119,   254,    55,    56,    57,    58,    59,    60,   122,   119,
+     388,   119,   123,   122,    46,   122,     1,    35,    35,    46,
+      48,     8,     7,    49,     9,    10,    11,    12,   120,   120,
+     120,    16,    17,    18,    19,   109,   121,    22,   315,    24,
+     105,    26,    35,    28,   389,   322,   323,   119,    33,    35,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    35,    35,   119,    50,    51,    52,    53,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    35,   424,
+      35,    35,    50,    35,   429,    35,   128,   498,   122,    35,
+     110,    35,    35,    20,   371,   372,    21,    30,    35,    35,
+      35,    35,   121,   388,    45,    54,   122,   120,   122,    97,
+     122,   388,   606,   122,    54,   120,    23,   121,   463,    25,
+     119,   595,   596,   597,    45,    45,   111,    45,   481,    45,
+      45,    45,   485,    45,   119,    45,    35,    35,    35,   492,
+      35,    35,    35,    35,   121,   523,   524,   525,   493,    35,
+     495,   121,   121,   121,   120,   432,   433,   434,   435,   436,
+     437,   438,    35,    15,    27,    35,    35,   177,   183,   117,
+     447,   234,   449,   450,   451,    53,   254,   276,   652,   190,
+     181,   148,   485,   508,   461,   462,   418,   464,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,   485,   655,
+     485,    50,   613,    52,   524,   252,   660,   428,   485,   514,
+      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    96,   511,   410,   512,   414,    41,    33,
+      30,   508,    -1,    -1,   511,    -1,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,   523,   524,   525,    50,
+      51,    52,    53,   606,   246,    -1,   601,    -1,    -1,    -1,
+      -1,    -1,    -1,   540,   541,   542,   543,   544,   545,   546,
+     547,   548,   650,   550,     1,    -1,    -1,    -1,    -1,    -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,
-     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,
+      35,    -1,    -1,    50,    51,    52,    53,    -1,    -1,   606,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-     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,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    -1,    -1,    -1,   644,   645,   644,
+     645,    -1,    -1,    -1,    -1,    -1,    -1,   644,   645,    -1,
+      -1,    -1,    -1,   650,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,   660,   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,
+      -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,   129,    -1,   131,   132,   133,
-     134,   135,   136,   137,   138,    35,    -1,    37,    38,    39,
+      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,    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,
+      53,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    -1,    48,
       49,    50,    51,    52,    53,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      42,    43,    44,    45,    46,    -1,    48,    49,    50,    51,
       52,    53,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    -1,
+      45,    46,    -1,    48,    49,    50,    51,    52,    53,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    -1,    -1,
       48,    49,    50,    51,    52,    53,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    -1,    48,    49,    50,
+      41,    42,    43,    44,    45,    -1,    -1,    48,    49,    50,
       51,    52,    53,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    -1,    48,    49,    50,    51,    52,    53,
+      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,
-      -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
+      -1,    -1,    -1,    50,    51,    52,    53,    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
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1747,56 +1749,56 @@
      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
+     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,     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)
@@ -2628,202 +2630,202 @@
     { fixup_global_labels(lexer); ;}
     break;
 
-  case 22:
-#line 603 "pir.y"
+  case 21:
+#line 602 "pir.y"
     { new_macro_const(lexer->macros, (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].sval), yypirget_lineno(yyscanner)); ;}
     break;
 
-  case 23:
-#line 609 "pir.y"
+  case 22:
+#line 608 "pir.y"
     { /* fprintf(stderr, "macro body: [%s]\n", CURRENT_MACRO(lexer)->body);*/ ;}
     break;
 
-  case 24:
-#line 613 "pir.y"
+  case 23:
+#line 612 "pir.y"
     {
                           new_macro(lexer->macros, (yyvsp[(2) - (2)].sval), yypirget_lineno(yyscanner), TRUE,
                                     lexer->macro_size);
                         ;}
     break;
 
-  case 29:
-#line 628 "pir.y"
+  case 28:
+#line 627 "pir.y"
     { add_macro_param(CURRENT_MACRO(lexer), (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 37:
-#line 647 "pir.y"
+  case 36:
+#line 646 "pir.y"
     { store_macro_string(CURRENT_MACRO(lexer), "%s\n", (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 38:
-#line 651 "pir.y"
+  case 37:
+#line 650 "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 39:
-#line 662 "pir.y"
+  case 38:
+#line 661 "pir.y"
     { load_library(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 40:
-#line 666 "pir.y"
+  case 39:
+#line 665 "pir.y"
     { yypirset_lineno ((yyvsp[(2) - (2)].ival), yyscanner); ;}
     break;
 
-  case 41:
-#line 668 "pir.y"
+  case 40:
+#line 667 "pir.y"
     { lexer->filename = (yyvsp[(2) - (2)].sval); ;}
     break;
 
-  case 42:
-#line 672 "pir.y"
+  case 41:
+#line 671 "pir.y"
     { annotate(lexer, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 43:
-#line 678 "pir.y"
+  case 42:
+#line 677 "pir.y"
     { set_hll(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 44:
-#line 682 "pir.y"
+  case 43:
+#line 681 "pir.y"
     { set_hll_map(lexer, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 45:
-#line 686 "pir.y"
+  case 44:
+#line 685 "pir.y"
     { set_namespace(lexer, (yyvsp[(3) - (4)].key)); ;}
     break;
 
-  case 46:
-#line 690 "pir.y"
+  case 45:
+#line 689 "pir.y"
     { (yyval.key) = NULL; ;}
     break;
 
-  case 47:
-#line 692 "pir.y"
+  case 46:
+#line 691 "pir.y"
     { (yyval.key) = (yyvsp[(1) - (1)].key); ;}
     break;
 
-  case 48:
-#line 696 "pir.y"
+  case 47:
+#line 695 "pir.y"
     { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 49:
-#line 698 "pir.y"
+  case 48:
+#line 697 "pir.y"
     { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
-  case 50:
-#line 702 "pir.y"
+  case 49:
+#line 701 "pir.y"
     { (yyval.expr) = expr_from_string(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 52:
-#line 712 "pir.y"
+  case 51:
+#line 711 "pir.y"
     { close_sub(lexer); ;}
     break;
 
-  case 53:
-#line 716 "pir.y"
+  case 52:
+#line 715 "pir.y"
     { new_subr(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 58:
-#line 728 "pir.y"
+  case 57:
+#line 727 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_ANON);;}
     break;
 
-  case 59:
-#line 730 "pir.y"
+  case 58:
+#line 729 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_INIT); ;}
     break;
 
-  case 60:
-#line 732 "pir.y"
+  case 59:
+#line 731 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_LOAD); ;}
     break;
 
-  case 61:
-#line 734 "pir.y"
+  case 60:
+#line 733 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_MAIN); ;}
     break;
 
-  case 62:
-#line 736 "pir.y"
+  case 61:
+#line 735 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_LEX); ;}
     break;
 
-  case 63:
-#line 738 "pir.y"
+  case 62:
+#line 737 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_POSTCOMP); ;}
     break;
 
-  case 64:
-#line 740 "pir.y"
+  case 63:
+#line 739 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_IMMEDIATE); ;}
     break;
 
-  case 65:
-#line 742 "pir.y"
+  case 64:
+#line 741 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_MULTI); ;}
     break;
 
-  case 66:
-#line 744 "pir.y"
+  case 65:
+#line 743 "pir.y"
     { set_sub_outer(lexer, (yyvsp[(3) - (4)].sval)); ;}
     break;
 
-  case 67:
-#line 746 "pir.y"
+  case 66:
+#line 745 "pir.y"
     { set_sub_methodname(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 68:
-#line 748 "pir.y"
+  case 67:
+#line 747 "pir.y"
     { set_sub_vtable(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 69:
-#line 750 "pir.y"
+  case 68:
+#line 749 "pir.y"
     { set_sub_subid(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 70:
-#line 752 "pir.y"
+  case 69:
+#line 751 "pir.y"
     { set_sub_instanceof(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 71:
-#line 754 "pir.y"
+  case 70:
+#line 753 "pir.y"
     { set_sub_nsentry(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 72:
-#line 758 "pir.y"
+  case 71:
+#line 757 "pir.y"
     { set_sub_multi_types(lexer, (yyvsp[(2) - (3)].expr)); ;}
     break;
 
-  case 73:
-#line 762 "pir.y"
+  case 72:
+#line 761 "pir.y"
     {
                           CURRENT_SUB(lexer)->info.num_multi_types = 1;
                           /* n=1 means :multi() -- without any types. */
                         ;}
     break;
 
-  case 74:
-#line 767 "pir.y"
+  case 73:
+#line 766 "pir.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
-  case 75:
-#line 771 "pir.y"
+  case 74:
+#line 770 "pir.y"
     {
                           CURRENT_SUB(lexer)->info.num_multi_types = 2;
                           /* start counting multi types; always 1 higher than actual number
@@ -2834,8 +2836,8 @@
                         ;}
     break;
 
-  case 76:
-#line 780 "pir.y"
+  case 75:
+#line 779 "pir.y"
     {
                           ++CURRENT_SUB(lexer)->info.num_multi_types;
                           /* link the multi types in reverse other. That's fine,
@@ -2846,23 +2848,23 @@
                         ;}
     break;
 
-  case 77:
-#line 791 "pir.y"
+  case 76:
+#line 790 "pir.y"
     { (yyval.expr) = expr_from_ident(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 78:
-#line 793 "pir.y"
+  case 77:
+#line 792 "pir.y"
     { (yyval.expr) = expr_from_string(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 79:
-#line 795 "pir.y"
+  case 78:
+#line 794 "pir.y"
     { (yyval.expr) = expr_from_key(lexer, (yyvsp[(1) - (1)].key)); ;}
     break;
 
-  case 80:
-#line 799 "pir.y"
+  case 79:
+#line 798 "pir.y"
     {
                            /* if there are parameters, then emit a get_params instruction. */
                            if ((yyvsp[(1) - (1)].uval) > 0)
@@ -2870,13 +2872,13 @@
                          ;}
     break;
 
-  case 81:
-#line 807 "pir.y"
+  case 80:
+#line 806 "pir.y"
     { (yyval.uval) = 0; ;}
     break;
 
-  case 82:
-#line 809 "pir.y"
+  case 81:
+#line 808 "pir.y"
     {
                           /* if the :named flag was set, there's an extra
                            * constant string argument for the name. count that too.
@@ -2889,41 +2891,41 @@
                         ;}
     break;
 
-  case 83:
-#line 822 "pir.y"
+  case 82:
+#line 821 "pir.y"
     { (yyval.targ) = set_param_flag(lexer, (yyvsp[(2) - (4)].targ), (yyvsp[(3) - (4)].ival)); ;}
     break;
 
-  case 84:
-#line 826 "pir.y"
+  case 83:
+#line 825 "pir.y"
     { (yyval.targ) = add_param(lexer, (yyvsp[(1) - (2)].ival), (yyvsp[(2) - (2)].sval)); ;}
     break;
 
-  case 85:
-#line 830 "pir.y"
+  case 84:
+#line 829 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 86:
-#line 832 "pir.y"
+  case 85:
+#line 831 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 90:
-#line 841 "pir.y"
+  case 89:
+#line 840 "pir.y"
     { (yyval.ival) = TARGET_FLAG_INVOCANT;
                            /* XXX handle multi_type */
 
                          ;}
     break;
 
-  case 91:
-#line 848 "pir.y"
+  case 90:
+#line 847 "pir.y"
     { (yyval.ival) = TARGET_FLAG_UNIQUE_REG; ;}
     break;
 
-  case 93:
-#line 855 "pir.y"
+  case 92:
+#line 854 "pir.y"
     {
                          ++lexer->stmt_counter;
                          /* increment the logical statement counter; a statement can be
@@ -2933,38 +2935,38 @@
                         ;}
     break;
 
-  case 94:
-#line 865 "pir.y"
+  case 93:
+#line 864 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
-  case 112:
-#line 893 "pir.y"
+  case 111:
+#line 892 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (3)].mval), (yyvsp[(2) - (3)].pval)); ;}
     break;
 
-  case 113:
-#line 897 "pir.y"
+  case 112:
+#line 896 "pir.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 114:
-#line 899 "pir.y"
+  case 113:
+#line 898 "pir.y"
     { (yyval.pval) = (yyvsp[(2) - (3)].pval); ;}
     break;
 
-  case 115:
-#line 903 "pir.y"
+  case 114:
+#line 902 "pir.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 117:
-#line 908 "pir.y"
+  case 116:
+#line 907 "pir.y"
     { (yyval.pval) = new_macro_param((yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 118:
-#line 910 "pir.y"
+  case 117:
+#line 909 "pir.y"
     {
                           macro_param *param = new_macro_param((yyvsp[(3) - (3)].sval));
                           param->next = (yyvsp[(1) - (3)].pval);
@@ -2972,8 +2974,8 @@
                         ;}
     break;
 
-  case 119:
-#line 918 "pir.y"
+  case 118:
+#line 917 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                           if (sym == NULL) {
@@ -2983,23 +2985,23 @@
                         ;}
     break;
 
-  case 121:
-#line 927 "pir.y"
+  case 120:
+#line 926 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 123:
-#line 932 "pir.y"
+  case 122:
+#line 931 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
-  case 124:
-#line 937 "pir.y"
+  case 123:
+#line 936 "pir.y"
     { (yyval.sval) = ""; ;}
     break;
 
-  case 125:
-#line 939 "pir.y"
+  case 124:
+#line 938 "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));
@@ -3008,18 +3010,18 @@
                         ;}
     break;
 
-  case 129:
-#line 951 "pir.y"
+  case 128:
+#line 950 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 130:
-#line 959 "pir.y"
+  case 129:
+#line 958 "pir.y"
     { set_instr(lexer, NULL); ;}
     break;
 
-  case 132:
-#line 967 "pir.y"
+  case 131:
+#line 966 "pir.y"
     {
                            if (lexer->parse_errors > MAX_NUM_ERRORS)
                                panic(lexer, "Too many errors. Compilation aborted.\n");
@@ -3028,24 +3030,24 @@
                          ;}
     break;
 
-  case 133:
-#line 976 "pir.y"
+  case 132:
+#line 975 "pir.y"
     {
                            set_instrf(lexer, "null", "%T", (yyvsp[(2) - (3)].targ));
                            get_opinfo(lexer);
                          ;}
     break;
 
-  case 134:
-#line 983 "pir.y"
+  case 133:
+#line 982 "pir.y"
     {
                            set_instrf(lexer, "get_results", "%T", (yyvsp[(2) - (3)].targ));
                            get_opinfo(lexer);
                          ;}
     break;
 
-  case 138:
-#line 997 "pir.y"
+  case 137:
+#line 996 "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.
                             */
@@ -3054,8 +3056,8 @@
                          ;}
     break;
 
-  case 139:
-#line 1006 "pir.y"
+  case 138:
+#line 1005 "pir.y"
     { /* when this rule is activated, the initial identifier must
                            * be a parrot op.
                            */
@@ -3064,8 +3066,8 @@
                         ;}
     break;
 
-  case 145:
-#line 1024 "pir.y"
+  case 144:
+#line 1023 "pir.y"
     {
                          /* the "instruction" that was set now appears to be
                           * an identifier; get the name, and check its type.
@@ -3101,41 +3103,41 @@
                        ;}
     break;
 
-  case 146:
-#line 1060 "pir.y"
+  case 145:
+#line 1059 "pir.y"
     { push_operand(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 147:
-#line 1062 "pir.y"
+  case 146:
+#line 1061 "pir.y"
     { push_operand(lexer, expr_from_key(lexer, (yyvsp[(1) - (1)].key))); ;}
     break;
 
-  case 148:
-#line 1066 "pir.y"
+  case 147:
+#line 1065 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
-  case 149:
-#line 1068 "pir.y"
+  case 148:
+#line 1067 "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 150:
-#line 1073 "pir.y"
+  case 149:
+#line 1072 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
-  case 151:
-#line 1075 "pir.y"
+  case 150:
+#line 1074 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
-  case 152:
-#line 1079 "pir.y"
+  case 151:
+#line 1078 "pir.y"
     {
                            /* if $1 is a register, just return that */
                            if (TEST_FLAG((yyvsp[(1) - (2)].targ)->flags, TARGET_FLAG_IS_REG))
@@ -3158,23 +3160,23 @@
                          ;}
     break;
 
-  case 153:
-#line 1102 "pir.y"
+  case 152:
+#line 1101 "pir.y"
     { (yyval.key) = (yyvsp[(2) - (3)].key); ;}
     break;
 
-  case 154:
-#line 1106 "pir.y"
+  case 153:
+#line 1105 "pir.y"
     { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 155:
-#line 1108 "pir.y"
+  case 154:
+#line 1107 "pir.y"
     { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
-  case 156:
-#line 1117 "pir.y"
+  case 155:
+#line 1116 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (6)].expr));
@@ -3187,8 +3189,8 @@
                         ;}
     break;
 
-  case 157:
-#line 1128 "pir.y"
+  case 156:
+#line 1127 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (4)].expr));
@@ -3202,8 +3204,8 @@
                         ;}
     break;
 
-  case 158:
-#line 1140 "pir.y"
+  case 157:
+#line 1139 "pir.y"
     {
                           unshift_operand(lexer, expr_from_key(lexer, (yyvsp[(4) - (6)].key)));
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (6)].targ)));
@@ -3213,8 +3215,8 @@
                         ;}
     break;
 
-  case 162:
-#line 1157 "pir.y"
+  case 161:
+#line 1156 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3225,8 +3227,8 @@
                         ;}
     break;
 
-  case 163:
-#line 1166 "pir.y"
+  case 162:
+#line 1165 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 0.0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3237,24 +3239,24 @@
                         ;}
     break;
 
-  case 164:
-#line 1175 "pir.y"
+  case 163:
+#line 1174 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%C", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].cval));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 165:
-#line 1180 "pir.y"
+  case 164:
+#line 1179 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 166:
-#line 1185 "pir.y"
+  case 165:
+#line 1184 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (3)].sval));
                           if (sym) {
@@ -3277,16 +3279,16 @@
                         ;}
     break;
 
-  case 167:
-#line 1206 "pir.y"
+  case 166:
+#line 1205 "pir.y"
     {
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (3)].targ)));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 168:
-#line 1211 "pir.y"
+  case 167:
+#line 1210 "pir.y"
     {
                           /*   $P0 = foo ["bar"]    # PIR style
                            *
@@ -3329,8 +3331,8 @@
                         ;}
     break;
 
-  case 169:
-#line 1252 "pir.y"
+  case 168:
+#line 1251 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (4)].sval));
                           target *t;
@@ -3350,8 +3352,8 @@
                         ;}
     break;
 
-  case 170:
-#line 1270 "pir.y"
+  case 169:
+#line 1269 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(3) - (4)].ival));
                           set_target_key(preg, (yyvsp[(4) - (4)].key));
@@ -3360,16 +3362,16 @@
                         ;}
     break;
 
-  case 171:
-#line 1277 "pir.y"
+  case 170:
+#line 1276 "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 172:
-#line 1282 "pir.y"
+  case 171:
+#line 1281 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3382,8 +3384,8 @@
                         ;}
     break;
 
-  case 173:
-#line 1293 "pir.y"
+  case 172:
+#line 1292 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3396,8 +3398,8 @@
                         ;}
     break;
 
-  case 174:
-#line 1304 "pir.y"
+  case 173:
+#line 1303 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3410,8 +3412,8 @@
                         ;}
     break;
 
-  case 175:
-#line 1315 "pir.y"
+  case 174:
+#line 1314 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3424,32 +3426,32 @@
                         ;}
     break;
 
-  case 176:
-#line 1326 "pir.y"
+  case 175:
+#line 1325 "pir.y"
     {
                           set_instrf(lexer, "add", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 177:
-#line 1331 "pir.y"
+  case 176:
+#line 1330 "pir.y"
     {
                           set_instrf(lexer, "sub", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 178:
-#line 1336 "pir.y"
+  case 177:
+#line 1335 "pir.y"
     {
                           set_instrf(lexer, (yyvsp[(3) - (4)].sval), "%T%E", (yyvsp[(1) - (4)].targ), (yyvsp[(4) - (4)].expr));
                           get_opinfo(lexer);
                         ;}
     break;
 
-  case 179:
-#line 1341 "pir.y"
+  case 178:
+#line 1340 "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));
@@ -3461,8 +3463,8 @@
                         ;}
     break;
 
-  case 180:
-#line 1351 "pir.y"
+  case 179:
+#line 1350 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (4)].sval));
                           target *t;
@@ -3483,8 +3485,8 @@
                       ;}
     break;
 
-  case 181:
-#line 1370 "pir.y"
+  case 180:
+#line 1369 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (4)].ival));
                           set_target_key(preg, (yyvsp[(2) - (4)].key));
@@ -3493,98 +3495,98 @@
                         ;}
     break;
 
-  case 182:
-#line 1404 "pir.y"
+  case 181:
+#line 1403 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%i%T", (yyvsp[(1) - (3)].ival), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 183:
-#line 1406 "pir.y"
+  case 182:
+#line 1405 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%n%T", (yyvsp[(1) - (3)].dval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 184:
-#line 1408 "pir.y"
+  case 183:
+#line 1407 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%s%T", (yyvsp[(1) - (3)].sval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 185:
-#line 1410 "pir.y"
+  case 184:
+#line 1409 "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 186:
-#line 1412 "pir.y"
+  case 185:
+#line 1411 "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 187:
-#line 1414 "pir.y"
+  case 186:
+#line 1413 "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 188:
-#line 1416 "pir.y"
+  case 187:
+#line 1415 "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 189:
-#line 1418 "pir.y"
+  case 188:
+#line 1417 "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 190:
-#line 1423 "pir.y"
+  case 189:
+#line 1422 "pir.y"
     { get_opinfo(lexer); ;}
     break;
 
-  case 191:
-#line 1432 "pir.y"
+  case 190:
+#line 1431 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, (yyvsp[(3) - (5)].sval), (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 192:
-#line 1434 "pir.y"
+  case 191:
+#line 1433 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "int", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 193:
-#line 1436 "pir.y"
+  case 192:
+#line 1435 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "num", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 194:
-#line 1438 "pir.y"
+  case 193:
+#line 1437 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "pmc", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 195:
-#line 1440 "pir.y"
+  case 194:
+#line 1439 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "string", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 196:
-#line 1442 "pir.y"
+  case 195:
+#line 1441 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "if", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 197:
-#line 1444 "pir.y"
+  case 196:
+#line 1443 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "unless", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 198:
-#line 1446 "pir.y"
+  case 197:
+#line 1445 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "goto", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 199:
-#line 1448 "pir.y"
+  case 198:
+#line 1447 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "null", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
-  case 200:
-#line 1450 "pir.y"
+  case 199:
+#line 1449 "pir.y"
     {
                           int istrue = evaluate_c(lexer, (yyvsp[(2) - (4)].cval));
                           /* if "unless", invert the true-ness */
@@ -3598,76 +3600,76 @@
                         ;}
     break;
 
-  case 201:
-#line 1462 "pir.y"
+  case 200:
+#line 1461 "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 202:
-#line 1467 "pir.y"
+  case 201:
+#line 1466 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 203:
-#line 1469 "pir.y"
+  case 202:
+#line 1468 "pir.y"
     { set_instrf(lexer, (yyvsp[(1) - (4)].ival) ? "unless" : "if", "%T%I", (yyvsp[(2) - (4)].targ), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 204:
-#line 1471 "pir.y"
+  case 203:
+#line 1470 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "int", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 205:
-#line 1473 "pir.y"
+  case 204:
+#line 1472 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "num", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 206:
-#line 1475 "pir.y"
+  case 205:
+#line 1474 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "pmc", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 207:
-#line 1477 "pir.y"
+  case 206:
+#line 1476 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "string", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 208:
-#line 1479 "pir.y"
+  case 207:
+#line 1478 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "if", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 209:
-#line 1481 "pir.y"
+  case 208:
+#line 1480 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "unless", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 210:
-#line 1483 "pir.y"
+  case 209:
+#line 1482 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 211:
-#line 1485 "pir.y"
+  case 210:
+#line 1484 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 212:
-#line 1487 "pir.y"
+  case 211:
+#line 1486 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 213:
-#line 1489 "pir.y"
+  case 212:
+#line 1488 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
-  case 214:
-#line 1491 "pir.y"
+  case 213:
+#line 1490 "pir.y"
     {
                           if ((yyvsp[(2) - (4)].ival) == COMPUTE_DURING_RUNTIME) {
                              if ((yyvsp[(1) - (4)].ival) == NEED_INVERT_OPNAME) /* "unless" */
@@ -3694,8 +3696,8 @@
                         ;}
     break;
 
-  case 215:
-#line 1522 "pir.y"
+  case 214:
+#line 1521 "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
@@ -3723,8 +3725,8 @@
                         ;}
     break;
 
-  case 216:
-#line 1548 "pir.y"
+  case 215:
+#line 1547 "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));
@@ -3734,8 +3736,8 @@
                         ;}
     break;
 
-  case 217:
-#line 1556 "pir.y"
+  case 216:
+#line 1555 "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));
@@ -3746,8 +3748,8 @@
                         ;}
     break;
 
-  case 218:
-#line 1565 "pir.y"
+  case 217:
+#line 1564 "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));
@@ -3758,71 +3760,71 @@
                         ;}
     break;
 
-  case 219:
-#line 1574 "pir.y"
+  case 218:
+#line 1573 "pir.y"
     { (yyval.ival) = evaluate_i_i((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
-  case 220:
-#line 1576 "pir.y"
+  case 219:
+#line 1575 "pir.y"
     { (yyval.ival) = evaluate_i_n((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
-  case 221:
-#line 1578 "pir.y"
+  case 220:
+#line 1577 "pir.y"
     { (yyval.ival) = evaluate_n_i((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
-  case 222:
-#line 1580 "pir.y"
+  case 221:
+#line 1579 "pir.y"
     { (yyval.ival) = evaluate_n_n((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
-  case 223:
-#line 1582 "pir.y"
+  case 222:
+#line 1581 "pir.y"
     { (yyval.ival) = evaluate_s_s((yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval)); ;}
     break;
 
-  case 224:
-#line 1586 "pir.y"
+  case 223:
+#line 1585 "pir.y"
     {
                           yypirerror(yyscanner, lexer, "cannot compare string to %s",
                                      (yyvsp[(3) - (3)].ival) == INT_TYPE ? "integer" : "number");
                         ;}
     break;
 
-  case 225:
-#line 1591 "pir.y"
+  case 224:
+#line 1590 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare integer to string"); ;}
     break;
 
-  case 226:
-#line 1593 "pir.y"
+  case 225:
+#line 1592 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare number to string"); ;}
     break;
 
-  case 227:
-#line 1597 "pir.y"
+  case 226:
+#line 1596 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
-  case 228:
-#line 1598 "pir.y"
+  case 227:
+#line 1597 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
-  case 229:
-#line 1601 "pir.y"
+  case 228:
+#line 1600 "pir.y"
     { (yyval.ival) = DONT_INVERT_OPNAME; /* no need to invert */ ;}
     break;
 
-  case 230:
-#line 1602 "pir.y"
+  case 229:
+#line 1601 "pir.y"
     { (yyval.ival) = NEED_INVERT_OPNAME; /* yes, invert opname */ ;}
     break;
 
-  case 233:
-#line 1610 "pir.y"
+  case 232:
+#line 1609 "pir.y"
     {
                           set_instrf(lexer, "branch", "%I", (yyvsp[(2) - (3)].sval));
                           set_op_labelflag(lexer, BIT(0)); /* bit 0 means: "1 << 0" */
@@ -3830,38 +3832,38 @@
                         ;}
     break;
 
-  case 234:
-#line 1618 "pir.y"
+  case 233:
+#line 1617 "pir.y"
     { declare_local(lexer, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].symb)); ;}
     break;
 
-  case 235:
-#line 1622 "pir.y"
+  case 234:
+#line 1621 "pir.y"
     { (yyval.symb) = (yyvsp[(1) - (1)].symb); ;}
     break;
 
-  case 236:
-#line 1624 "pir.y"
+  case 235:
+#line 1623 "pir.y"
     { (yyval.symb) = add_local((yyvsp[(1) - (3)].symb), (yyvsp[(3) - (3)].symb)); ;}
     break;
 
-  case 237:
-#line 1628 "pir.y"
+  case 236:
+#line 1627 "pir.y"
     { (yyval.symb) = new_local(lexer, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 238:
-#line 1631 "pir.y"
+  case 237:
+#line 1630 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 239:
-#line 1632 "pir.y"
+  case 238:
+#line 1631 "pir.y"
     { (yyval.ival) = 1; ;}
     break;
 
-  case 240:
-#line 1636 "pir.y"
+  case 239:
+#line 1635 "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)) {
 
@@ -3873,86 +3875,86 @@
                         ;}
     break;
 
-  case 241:
-#line 1651 "pir.y"
+  case 240:
+#line 1650 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
-  case 244:
-#line 1663 "pir.y"
+  case 243:
+#line 1662 "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 245:
-#line 1670 "pir.y"
+  case 244:
+#line 1669 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 246:
-#line 1672 "pir.y"
+  case 245:
+#line 1671 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 247:
-#line 1676 "pir.y"
+  case 246:
+#line 1675 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 248:
-#line 1678 "pir.y"
+  case 247:
+#line 1677 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
-  case 249:
-#line 1682 "pir.y"
+  case 248:
+#line 1681 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 250:
-#line 1686 "pir.y"
+  case 249:
+#line 1685 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(2) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 251:
-#line 1688 "pir.y"
+  case 250:
+#line 1687 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_NCI, (yyvsp[(2) - (2)].targ)); ;}
     break;
 
-  case 252:
-#line 1691 "pir.y"
+  case 251:
+#line 1690 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_METHOD, (yyvsp[(2) - (5)].targ), (yyvsp[(5) - (5)].expr)); ;}
     break;
 
-  case 253:
-#line 1695 "pir.y"
+  case 252:
+#line 1694 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 254:
-#line 1697 "pir.y"
+  case 253:
+#line 1696 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (2)].targ); ;}
     break;
 
-  case 255:
-#line 1701 "pir.y"
+  case 254:
+#line 1700 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 256:
-#line 1703 "pir.y"
+  case 255:
+#line 1702 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 257:
-#line 1707 "pir.y"
+  case 256:
+#line 1706 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 258:
-#line 1709 "pir.y"
+  case 257:
+#line 1708 "pir.y"
     {
                              if ((yyvsp[(2) - (2)].targ))
                                  (yyval.targ) = add_target(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].targ));
@@ -3961,33 +3963,33 @@
                            ;}
     break;
 
-  case 259:
-#line 1718 "pir.y"
+  case 258:
+#line 1717 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
-  case 260:
-#line 1720 "pir.y"
+  case 259:
+#line 1719 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 262:
-#line 1728 "pir.y"
+  case 261:
+#line 1727 "pir.y"
     { (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
-  case 263:
-#line 1730 "pir.y"
+  case 262:
+#line 1729 "pir.y"
     { (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
-  case 264:
-#line 1732 "pir.y"
+  case 263:
+#line 1731 "pir.y"
     {  (yyval.invo) = set_invocation_results(lexer, (yyvsp[(1) - (1)].invo), NULL); ;}
     break;
 
-  case 267:
-#line 1740 "pir.y"
+  case 266:
+#line 1739 "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)) {
@@ -4007,21 +4009,21 @@
                            ;}
     break;
 
-  case 268:
-#line 1760 "pir.y"
+  case 267:
+#line 1759 "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 269:
-#line 1767 "pir.y"
+  case 268:
+#line 1766 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 270:
-#line 1769 "pir.y"
+  case 269:
+#line 1768 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -4031,8 +4033,8 @@
                            ;}
     break;
 
-  case 271:
-#line 1779 "pir.y"
+  case 270:
+#line 1778 "pir.y"
     { /* check that this identifier was declared */
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
 
@@ -4051,23 +4053,23 @@
                            ;}
     break;
 
-  case 272:
-#line 1796 "pir.y"
+  case 271:
+#line 1795 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
-  case 273:
-#line 1798 "pir.y"
+  case 272:
+#line 1797 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
-  case 274:
-#line 1800 "pir.y"
-    { (yyval.expr) = expr_from_const(lexer, new_const(lexer, STRING_TYPE, (yyvsp[(1) - (1)].sval))); ;}
+  case 273:
+#line 1799 "pir.y"
+    { (yyval.expr) = expr_from_const(lexer, new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval))); ;}
     break;
 
-  case 275:
-#line 1804 "pir.y"
+  case 274:
+#line 1803 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -4078,96 +4080,96 @@
                            ;}
     break;
 
-  case 276:
-#line 1813 "pir.y"
+  case 275:
+#line 1812 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
-  case 277:
-#line 1818 "pir.y"
+  case 276:
+#line 1817 "pir.y"
     {
                              (yyval.targ) = (yyvsp[(2) - (3)].targ);
                            ;}
     break;
 
-  case 278:
-#line 1824 "pir.y"
+  case 277:
+#line 1823 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
-  case 279:
-#line 1826 "pir.y"
+  case 278:
+#line 1825 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 280:
-#line 1830 "pir.y"
+  case 279:
+#line 1829 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
-  case 281:
-#line 1832 "pir.y"
+  case 280:
+#line 1831 "pir.y"
     { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
-  case 282:
-#line 1836 "pir.y"
+  case 281:
+#line 1835 "pir.y"
     { (yyval.targ) = set_param_flag(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 283:
-#line 1838 "pir.y"
+  case 282:
+#line 1837 "pir.y"
     { (yyval.targ) = set_param_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
-  case 284:
-#line 1842 "pir.y"
+  case 283:
+#line 1841 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 285:
-#line 1844 "pir.y"
+  case 284:
+#line 1843 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 286:
-#line 1848 "pir.y"
+  case 285:
+#line 1847 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPTIONAL; ;}
     break;
 
-  case 287:
-#line 1850 "pir.y"
+  case 286:
+#line 1849 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPT_FLAG; ;}
     break;
 
-  case 288:
-#line 1852 "pir.y"
+  case 287:
+#line 1851 "pir.y"
     { (yyval.ival) = TARGET_FLAG_SLURPY; ;}
     break;
 
-  case 289:
-#line 1854 "pir.y"
+  case 288:
+#line 1853 "pir.y"
     {
                              (yyval.ival) = TARGET_FLAG_NAMED;
                              set_param_alias(lexer, (yyvsp[(2) - (2)].sval));
                            ;}
     break;
 
-  case 290:
-#line 1864 "pir.y"
+  case 289:
+#line 1863 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
-  case 295:
-#line 1874 "pir.y"
+  case 294:
+#line 1873 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
                             ;}
     break;
 
-  case 296:
-#line 1879 "pir.y"
+  case 295:
+#line 1878 "pir.y"
     { /* was the invocation a method call? then it becomes a method tail
                                * call, otherwise it's just a normal (sub) tail call.
                                */
@@ -4178,195 +4180,195 @@
                             ;}
     break;
 
-  case 297:
-#line 1890 "pir.y"
+  case 296:
+#line 1889 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
                             ;}
     break;
 
-  case 298:
-#line 1897 "pir.y"
+  case 297:
+#line 1896 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 299:
-#line 1901 "pir.y"
+  case 298:
+#line 1900 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 300:
-#line 1903 "pir.y"
+  case 299:
+#line 1902 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 301:
-#line 1907 "pir.y"
+  case 300:
+#line 1906 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 302:
-#line 1909 "pir.y"
+  case 301:
+#line 1908 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (3)].argm), (yyvsp[(3) - (3)].argm)); ;}
     break;
 
-  case 305:
-#line 1917 "pir.y"
+  case 304:
+#line 1916 "pir.y"
     { (yyval.argm) = set_arg_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
-  case 306:
-#line 1921 "pir.y"
+  case 305:
+#line 1920 "pir.y"
     { (yyval.argm) = set_arg_flag((yyval.argm), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 307:
-#line 1925 "pir.y"
+  case 306:
+#line 1924 "pir.y"
     { (yyval.argm) = set_curarg(lexer, new_argument(lexer, (yyvsp[(1) - (1)].expr)));  ;}
     break;
 
-  case 308:
-#line 1931 "pir.y"
+  case 307:
+#line 1930 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
                             ;}
     break;
 
-  case 309:
-#line 1940 "pir.y"
+  case 308:
+#line 1939 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
                             ;}
     break;
 
-  case 310:
-#line 1947 "pir.y"
+  case 309:
+#line 1946 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 311:
-#line 1949 "pir.y"
+  case 310:
+#line 1948 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 312:
-#line 1954 "pir.y"
+  case 311:
+#line 1953 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 313:
-#line 1956 "pir.y"
+  case 312:
+#line 1955 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
-  case 314:
-#line 1961 "pir.y"
+  case 313:
+#line 1960 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 315:
-#line 1965 "pir.y"
+  case 314:
+#line 1964 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
-  case 316:
-#line 1967 "pir.y"
+  case 315:
+#line 1966 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 317:
-#line 1971 "pir.y"
+  case 316:
+#line 1970 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
-  case 318:
-#line 1973 "pir.y"
+  case 317:
+#line 1972 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
-  case 319:
-#line 1977 "pir.y"
+  case 318:
+#line 1976 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
-  case 320:
-#line 1982 "pir.y"
+  case 319:
+#line 1981 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
-  case 321:
-#line 1984 "pir.y"
+  case 320:
+#line 1983 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
-  case 322:
-#line 1988 "pir.y"
+  case 321:
+#line 1987 "pir.y"
     { (yyval.ival) = ARG_FLAG_FLAT; ;}
     break;
 
-  case 323:
-#line 1990 "pir.y"
+  case 322:
+#line 1989 "pir.y"
     {
                                (yyval.ival) = ARG_FLAG_NAMED;
                                set_arg_alias(lexer, (yyvsp[(2) - (2)].sval));
                              ;}
     break;
 
-  case 324:
-#line 1997 "pir.y"
+  case 323:
+#line 1996 "pir.y"
     { (yyval.sval) = NULL; ;}
     break;
 
-  case 325:
-#line 1999 "pir.y"
+  case 324:
+#line 1998 "pir.y"
     { (yyval.sval) = (yyvsp[(1) - (1)].sval); ;}
     break;
 
-  case 326:
-#line 2003 "pir.y"
+  case 325:
+#line 2002 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
-  case 328:
-#line 2010 "pir.y"
+  case 327:
+#line 2009 "pir.y"
     { store_global_constant(lexer, (yyvsp[(2) - (2)].cdec)); ;}
     break;
 
-  case 331:
-#line 2018 "pir.y"
+  case 330:
+#line 2017 "pir.y"
     { (yyval.cdec) = (yyvsp[(2) - (2)].cdec); ;}
     break;
 
-  case 334:
-#line 2026 "pir.y"
+  case 333:
+#line 2025 "pir.y"
     { store_global_constant(lexer, (yyvsp[(2) - (2)].cdec)); ;}
     break;
 
-  case 335:
-#line 2030 "pir.y"
+  case 334:
+#line 2029 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, INT_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ival)); ;}
     break;
 
-  case 336:
-#line 2032 "pir.y"
+  case 335:
+#line 2031 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, NUM_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].dval)); ;}
     break;
 
-  case 337:
-#line 2034 "pir.y"
+  case 336:
+#line 2033 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, STRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
     break;
 
-  case 338:
-#line 2038 "pir.y"
+  case 337:
+#line 2037 "pir.y"
     { (yyval.cdec) = new_pmc_const(lexer, (yyvsp[(1) - (4)].sval), (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
     break;
 
-  case 340:
-#line 2043 "pir.y"
+  case 339:
+#line 2042 "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
@@ -4376,98 +4378,98 @@
                             ;}
     break;
 
+  case 340:
+#line 2054 "pir.y"
+    { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
+    break;
+
   case 341:
 #line 2055 "pir.y"
-    { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
+    { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
   case 342:
-#line 2056 "pir.y"
-    { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
+#line 2059 "pir.y"
+    { (yyval.cval) = new_const(lexer, INT_VAL, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 343:
 #line 2060 "pir.y"
-    { (yyval.cval) = new_const(lexer, INT_VAL, (yyvsp[(1) - (1)].ival)); ;}
+    { (yyval.cval) = new_const(lexer, NUM_VAL, (yyvsp[(1) - (1)].dval)); ;}
     break;
 
   case 344:
 #line 2061 "pir.y"
-    { (yyval.cval) = new_const(lexer, NUM_VAL, (yyvsp[(1) - (1)].dval)); ;}
+    { (yyval.cval) = (yyvsp[(1) - (1)].cval); ;}
     break;
 
   case 345:
-#line 2062 "pir.y"
-    { (yyval.cval) = (yyvsp[(1) - (1)].cval); ;}
+#line 2064 "pir.y"
+    { (yyval.cval) = new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 346:
 #line 2065 "pir.y"
-    { (yyval.cval) = new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval)); ;}
+    { (yyval.cval) = new_const(lexer, USTRING_VAL, (yyvsp[(1) - (1)].ustr)); ;}
     break;
 
   case 347:
-#line 2066 "pir.y"
-    { (yyval.cval) = new_const(lexer, USTRING_VAL, (yyvsp[(1) - (1)].ustr)); ;}
+#line 2068 "pir.y"
+    { (yyval.ival) = OP_NE; ;}
     break;
 
   case 348:
 #line 2069 "pir.y"
-    { (yyval.ival) = OP_NE; ;}
+    { (yyval.ival) = OP_EQ; ;}
     break;
 
   case 349:
 #line 2070 "pir.y"
-    { (yyval.ival) = OP_EQ; ;}
+    { (yyval.ival) = OP_LT; ;}
     break;
 
   case 350:
 #line 2071 "pir.y"
-    { (yyval.ival) = OP_LT; ;}
+    { (yyval.ival) = OP_LE; ;}
     break;
 
   case 351:
 #line 2072 "pir.y"
-    { (yyval.ival) = OP_LE; ;}
+    { (yyval.ival) = OP_GE; ;}
     break;
 
   case 352:
 #line 2073 "pir.y"
-    { (yyval.ival) = OP_GE; ;}
+    { (yyval.ival) = OP_GT; ;}
     break;
 
   case 353:
-#line 2074 "pir.y"
-    { (yyval.ival) = OP_GT; ;}
+#line 2076 "pir.y"
+    { (yyval.ival) = INT_TYPE; ;}
     break;
 
   case 354:
 #line 2077 "pir.y"
-    { (yyval.ival) = INT_TYPE; ;}
+    { (yyval.ival) = NUM_TYPE; ;}
     break;
 
   case 355:
 #line 2078 "pir.y"
-    { (yyval.ival) = NUM_TYPE; ;}
+    { (yyval.ival) = PMC_TYPE; ;}
     break;
 
   case 356:
 #line 2079 "pir.y"
-    { (yyval.ival) = PMC_TYPE; ;}
-    break;
-
-  case 357:
-#line 2080 "pir.y"
     { (yyval.ival) = STRING_TYPE; ;}
     break;
 
-  case 358:
-#line 2088 "pir.y"
+  case 357:
+#line 2087 "pir.y"
     { set_curtarget(lexer, (yyvsp[(1) - (1)].targ));  ;}
     break;
 
-  case 360:
-#line 2092 "pir.y"
+  case 359:
+#line 2091 "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) {
@@ -4481,278 +4483,278 @@
                          ;}
     break;
 
+  case 360:
+#line 2104 "pir.y"
+    { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival));    ;}
+    break;
+
   case 361:
 #line 2105 "pir.y"
-    { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival));    ;}
+    { (yyval.targ) = new_reg(lexer, NUM_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 362:
 #line 2106 "pir.y"
-    { (yyval.targ) = new_reg(lexer, NUM_TYPE, (yyvsp[(1) - (1)].ival));    ;}
+    { (yyval.targ) = new_reg(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 363:
 #line 2107 "pir.y"
-    { (yyval.targ) = new_reg(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival));    ;}
+    { (yyval.targ) = new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
-  case 364:
-#line 2108 "pir.y"
-    { (yyval.targ) = new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival)); ;}
+  case 366:
+#line 2115 "pir.y"
+    { (yyval.sval) = "if"; ;}
     break;
 
   case 367:
 #line 2116 "pir.y"
-    { (yyval.sval) = "if"; ;}
+    { (yyval.sval) = "unless"; ;}
     break;
 
   case 368:
 #line 2117 "pir.y"
-    { (yyval.sval) = "unless"; ;}
+    { (yyval.sval) = "goto"; ;}
     break;
 
   case 369:
 #line 2118 "pir.y"
-    { (yyval.sval) = "goto"; ;}
+    { (yyval.sval) = "int"; ;}
     break;
 
   case 370:
 #line 2119 "pir.y"
-    { (yyval.sval) = "int"; ;}
+    { (yyval.sval) = "num"; ;}
     break;
 
   case 371:
 #line 2120 "pir.y"
-    { (yyval.sval) = "num"; ;}
+    { (yyval.sval) = "string"; ;}
     break;
 
   case 372:
 #line 2121 "pir.y"
-    { (yyval.sval) = "string"; ;}
+    { (yyval.sval) = "pmc"; ;}
     break;
 
   case 373:
 #line 2122 "pir.y"
-    { (yyval.sval) = "pmc"; ;}
+    { (yyval.sval) = "null"; ;}
     break;
 
   case 374:
-#line 2123 "pir.y"
-    { (yyval.sval) = "null"; ;}
+#line 2125 "pir.y"
+    { (yyval.sval) = "neg"; ;}
     break;
 
   case 375:
 #line 2126 "pir.y"
-    { (yyval.sval) = "neg"; ;}
+    { (yyval.sval) = "not"; ;}
     break;
 
   case 376:
 #line 2127 "pir.y"
-    { (yyval.sval) = "not"; ;}
+    { (yyval.sval) = "bnot"; ;}
     break;
 
   case 377:
-#line 2128 "pir.y"
-    { (yyval.sval) = "bnot"; ;}
+#line 2130 "pir.y"
+    { (yyval.ival) = OP_ADD; ;}
     break;
 
   case 378:
 #line 2131 "pir.y"
-    { (yyval.ival) = OP_ADD; ;}
+    { (yyval.ival) = OP_SUB; ;}
     break;
 
   case 379:
 #line 2132 "pir.y"
-    { (yyval.ival) = OP_SUB; ;}
+    { (yyval.ival) = OP_DIV; ;}
     break;
 
   case 380:
 #line 2133 "pir.y"
-    { (yyval.ival) = OP_DIV; ;}
+    { (yyval.ival) = OP_MUL; ;}
     break;
 
   case 381:
 #line 2134 "pir.y"
-    { (yyval.ival) = OP_MUL; ;}
+    { (yyval.ival) = OP_MOD; ;}
     break;
 
   case 382:
 #line 2135 "pir.y"
-    { (yyval.ival) = OP_MOD; ;}
+    { (yyval.ival) = OP_BOR; ;}
     break;
 
   case 383:
 #line 2136 "pir.y"
-    { (yyval.ival) = OP_BOR; ;}
+    { (yyval.ival) = OP_BAND; ;}
     break;
 
   case 384:
 #line 2137 "pir.y"
-    { (yyval.ival) = OP_BAND; ;}
+    { (yyval.ival) = OP_BXOR; ;}
     break;
 
   case 385:
 #line 2138 "pir.y"
-    { (yyval.ival) = OP_BXOR; ;}
+    { (yyval.ival) = OP_POW; ;}
     break;
 
   case 386:
 #line 2139 "pir.y"
-    { (yyval.ival) = OP_POW; ;}
+    { (yyval.ival) = OP_CONCAT; ;}
     break;
 
   case 387:
 #line 2140 "pir.y"
-    { (yyval.ival) = OP_CONCAT; ;}
+    { (yyval.ival) = OP_LSR; ;}
     break;
 
   case 388:
 #line 2141 "pir.y"
-    { (yyval.ival) = OP_LSR; ;}
+    { (yyval.ival) = OP_SHR; ;}
     break;
 
   case 389:
 #line 2142 "pir.y"
-    { (yyval.ival) = OP_SHR; ;}
+    { (yyval.ival) = OP_SHL; ;}
     break;
 
   case 390:
 #line 2143 "pir.y"
-    { (yyval.ival) = OP_SHL; ;}
+    { (yyval.ival) = OP_OR; ;}
     break;
 
   case 391:
 #line 2144 "pir.y"
-    { (yyval.ival) = OP_OR; ;}
+    { (yyval.ival) = OP_AND; ;}
     break;
 
   case 392:
 #line 2145 "pir.y"
-    { (yyval.ival) = OP_AND; ;}
+    { (yyval.ival) = OP_FDIV; ;}
     break;
 
   case 393:
 #line 2146 "pir.y"
-    { (yyval.ival) = OP_FDIV; ;}
+    { (yyval.ival) = OP_XOR; ;}
     break;
 
   case 394:
 #line 2147 "pir.y"
-    { (yyval.ival) = OP_XOR; ;}
+    { (yyval.ival) = OP_ISEQ; ;}
     break;
 
   case 395:
 #line 2148 "pir.y"
-    { (yyval.ival) = OP_ISEQ; ;}
+    { (yyval.ival) = OP_ISLE; ;}
     break;
 
   case 396:
 #line 2149 "pir.y"
-    { (yyval.ival) = OP_ISLE; ;}
+    { (yyval.ival) = OP_ISLT; ;}
     break;
 
   case 397:
 #line 2150 "pir.y"
-    { (yyval.ival) = OP_ISLT; ;}
+    { (yyval.ival) = OP_ISGE; ;}
     break;
 
   case 398:
 #line 2151 "pir.y"
-    { (yyval.ival) = OP_ISGE; ;}
+    { (yyval.ival) = OP_ISGT; ;}
     break;
 
   case 399:
 #line 2152 "pir.y"
-    { (yyval.ival) = OP_ISGT; ;}
+    { (yyval.ival) = OP_ISNE; ;}
     break;
 
   case 400:
-#line 2153 "pir.y"
-    { (yyval.ival) = OP_ISNE; ;}
+#line 2158 "pir.y"
+    { (yyval.ival) = OP_MUL; ;}
     break;
 
   case 401:
 #line 2159 "pir.y"
-    { (yyval.ival) = OP_MUL; ;}
+    { (yyval.ival) = OP_MOD; ;}
     break;
 
   case 402:
 #line 2160 "pir.y"
-    { (yyval.ival) = OP_MOD; ;}
+    { (yyval.ival) = OP_POW; ;}
     break;
 
   case 403:
 #line 2161 "pir.y"
-    { (yyval.ival) = OP_POW; ;}
+    { (yyval.ival) = OP_DIV; ;}
     break;
 
   case 404:
 #line 2162 "pir.y"
-    { (yyval.ival) = OP_DIV; ;}
+    { (yyval.ival) = OP_FDIV; ;}
     break;
 
   case 405:
 #line 2163 "pir.y"
-    { (yyval.ival) = OP_FDIV; ;}
+    { (yyval.ival) = OP_BOR; ;}
     break;
 
   case 406:
 #line 2164 "pir.y"
-    { (yyval.ival) = OP_BOR; ;}
+    { (yyval.ival) = OP_BAND; ;}
     break;
 
   case 407:
 #line 2165 "pir.y"
-    { (yyval.ival) = OP_BAND; ;}
+    { (yyval.ival) = OP_BXOR; ;}
     break;
 
   case 408:
 #line 2166 "pir.y"
-    { (yyval.ival) = OP_BXOR; ;}
+    { (yyval.ival) = OP_CONCAT; ;}
     break;
 
   case 409:
 #line 2167 "pir.y"
-    { (yyval.ival) = OP_CONCAT; ;}
+    { (yyval.ival) = OP_SHR; ;}
     break;
 
   case 410:
 #line 2168 "pir.y"
-    { (yyval.ival) = OP_SHR; ;}
+    { (yyval.ival) = OP_SHL; ;}
     break;
 
   case 411:
 #line 2169 "pir.y"
-    { (yyval.ival) = OP_SHL; ;}
-    break;
-
-  case 412:
-#line 2170 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
-  case 414:
-#line 2191 "pir.y"
+  case 413:
+#line 2190 "pir.y"
     { new_subr(lexer, "@start"); ;}
     break;
 
-  case 423:
-#line 2207 "pir.y"
+  case 422:
+#line 2206 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
-  case 428:
-#line 2217 "pir.y"
+  case 427:
+#line 2216 "pir.y"
     { set_sub_name(lexer, (yyvsp[(3) - (3)].sval)); ;}
     break;
 
-  case 429:
-#line 2221 "pir.y"
+  case 428:
+#line 2220 "pir.y"
     { new_subr(lexer, NULL); ;}
     break;
 
-  case 430:
-#line 2226 "pir.y"
+  case 429:
+#line 2225 "pir.y"
     {
                                   if (is_parrot_op(lexer, (yyvsp[(1) - (3)].sval)))
                                       get_opinfo(lexer);
@@ -4764,7 +4766,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 4768 "pirparser.c"
+#line 4770 "pirparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -4978,7 +4980,7 @@
 }
 
 
-#line 2237 "pir.y"
+#line 2236 "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