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

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

From:
kjs
Date:
January 5, 2009 02:46
Subject:
[svn:parrot] r34977 - trunk/compilers/pirc/src
Message ID:
20090105104533.4BE16CB9F9@x12.develooper.com
Author: kjs
Date: Mon Jan  5 02:45:31 2009
New Revision: 34977

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

Log:
[pirc] work on parser. There may be a bug in bison, but added a workaround.

Modified: trunk/compilers/pirc/src/pir.y
==============================================================================
--- trunk/compilers/pirc/src/pir.y	(original)
+++ trunk/compilers/pirc/src/pir.y	Mon Jan  5 02:45:31 2009
@@ -494,11 +494,14 @@
 
 %type <cval> constant
              stringconst
+             pmc_const
 
 %type <cdec> const_tail
              const_decl
              globalconst_decl
              const_stat
+             basic_const_tail
+             pmc_const_tail
 
 
 /* all exported functions start with "yypir", instead of default "yy". */
@@ -2001,8 +2004,8 @@
 const_decl_stat       : const_stat "\n"
                       ;
 
-const_decl_chunk      : const_decl
-                            { store_global_constant(lexer, $1); }
+const_decl_chunk      : ".const" basic_const_tail
+                            { store_global_constant(lexer, $2); }
                       ;
 
 const_stat            : const_decl
@@ -2013,20 +2016,36 @@
                             { $$ = $2; }
                       ;
 
+const_tail            : basic_const_tail
+                      | pmc_const_tail
+                      ;
+
 globalconst_decl      : ".globalconst" const_tail
                             { store_global_constant(lexer, $2); }
                       ;
 
-const_tail            : "int" identifier '=' TK_INTC
+basic_const_tail      : "int" identifier '=' TK_INTC
                             { $$ = new_named_const(lexer, INT_VAL, $2, $4); }
                       | "num" identifier '=' TK_NUMC
                             { $$ = new_named_const(lexer, NUM_VAL, $2, $4); }
-                      | "string" identifier '=' TK_STRINGC
+                      | "string" identifier '=' stringconst
                             { $$ = new_named_const(lexer, STRING_VAL, $2, $4); }
-                      | TK_STRINGC identifier '=' constant
+                      ;
+
+pmc_const_tail        : TK_STRINGC identifier '=' pmc_const
                             { $$ = new_pmc_const(lexer, $1, $2, $4); }
                       ;
 
+pmc_const             : constant
+                      | identifier
+                            { /* this alternative is necessary, otherwise the parser
+                               * just stops when assigning an identifier to a pmc
+                               * const, without an error message. That may be
+                               * a bug in bison.
+                               */
+                              yypirerror(yyscanner, lexer, "unexpected identifier");
+                            }
+                      ;
 
 
 /* Expressions, variables and operators */
@@ -2038,7 +2057,7 @@
 
 constant    : TK_INTC        { $$ = new_const(lexer, INT_VAL, $1); }
             | TK_NUMC        { $$ = new_const(lexer, NUM_VAL, $1); }
-            | stringconst
+            | stringconst    { $$ = $1; }
             ;
 
 stringconst : TK_STRINGC     { $$ = new_const(lexer, STRING_VAL, $1); }

Modified: trunk/compilers/pirc/src/pirparser.c
==============================================================================
--- trunk/compilers/pirc/src/pirparser.c	(original)
+++ trunk/compilers/pirc/src/pirparser.c	Mon Jan  5 02:45:31 2009
@@ -815,16 +815,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  10
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1078
+#define YYLAST   1076
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  139
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  168
+#define YYNNTS  171
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  424
+#define YYNRULES  428
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  662
+#define YYNSTATES  667
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -913,44 +913,44 @@
      892,   894,   896,   898,   902,   906,   910,   914,   915,   917,
      919,   923,   925,   927,   931,   934,   936,   942,   948,   949,
      951,   953,   956,   960,   961,   963,   965,   968,   972,   973,
-     976,   978,   981,   982,   984,   988,   991,   993,   995,   997,
-    1000,  1003,  1008,  1013,  1018,  1023,  1025,  1027,  1029,  1031,
-    1033,  1035,  1037,  1039,  1041,  1043,  1045,  1047,  1049,  1051,
-    1053,  1055,  1057,  1059,  1061,  1063,  1065,  1067,  1069,  1071,
-    1073,  1075,  1077,  1079,  1081,  1083,  1085,  1087,  1089,  1091,
-    1093,  1095,  1097,  1099,  1101,  1103,  1105,  1107,  1109,  1111,
-    1113,  1115,  1117,  1119,  1121,  1123,  1125,  1127,  1129,  1131,
-    1133,  1135,  1137,  1139,  1141,  1143,  1145,  1147,  1149,  1151,
-    1153,  1155,  1157,  1159,  1161,  1163,  1165,  1167,  1170,  1172,
-    1174,  1177,  1179,  1182,  1184,  1187,  1190,  1192,  1195,  1198,
-    1200,  1202,  1204,  1208,  1210
+     976,   978,   981,   982,   984,   988,   991,   994,   996,   998,
+    1001,  1003,  1005,  1008,  1013,  1018,  1023,  1028,  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,
+    1094,  1096,  1098,  1100,  1102,  1104,  1106,  1108,  1110,  1112,
+    1114,  1116,  1118,  1120,  1122,  1124,  1126,  1128,  1130,  1132,
+    1134,  1136,  1138,  1140,  1142,  1144,  1146,  1148,  1150,  1152,
+    1154,  1156,  1158,  1160,  1162,  1164,  1166,  1168,  1170,  1172,
+    1174,  1176,  1179,  1181,  1183,  1186,  1188,  1191,  1193,  1196,
+    1199,  1201,  1204,  1207,  1209,  1211,  1213,  1217,  1219
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     140,     0,    -1,   116,   141,    -1,   115,   298,    -1,   142,
+     140,     0,    -1,   116,   141,    -1,   115,   301,    -1,   142,
      143,   142,    -1,    -1,    35,    -1,   144,    -1,   143,    35,
      144,    -1,   167,    -1,   280,    -1,   163,    -1,   161,    -1,
      162,    -1,   158,    -1,   159,    -1,   160,    -1,   145,    -1,
      146,    -1,   147,    -1,   108,    37,   114,    -1,   148,   119,
-     149,   120,    35,   152,   105,    -1,   104,   293,    -1,    -1,
-     150,    -1,   151,    -1,   150,   121,   151,    -1,   293,    -1,
+     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,   289,
+      -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,   293,    -1,    46,    -1,    -1,   171,   172,    -1,
+     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,
-     293,    -1,    46,    -1,   212,    -1,   178,    -1,    -1,   178,
-     179,    -1,     8,   180,   181,    35,    -1,   289,   293,    -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,
@@ -962,48 +962,48 @@
      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,   290,    35,    -1,    28,   250,    35,    -1,   203,    35,
+      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,   285,    -1,   210,    -1,   212,    -1,   286,
-      -1,   293,    -1,   292,    -1,   211,    -1,   249,   212,    -1,
-     123,   213,   124,    -1,   285,    -1,   213,   125,   285,    -1,
-     290,   122,   204,   210,   121,   207,    -1,   290,   122,   204,
-     210,    -1,   290,   122,   204,   212,   121,   207,    -1,   217,
-      35,    -1,    37,    -1,   294,    -1,   290,   122,    48,    -1,
-     290,   122,    49,    -1,   290,   122,   287,    -1,   290,   122,
-     292,    -1,   290,   122,   216,    -1,   290,   122,   218,    -1,
-     290,   122,   204,   212,    -1,   290,   122,   294,   212,    -1,
-     290,   122,    50,   212,    -1,   290,   297,   285,    -1,   290,
-      72,    48,    -1,   290,    72,    49,    -1,   290,    73,    48,
-      -1,   290,    73,    49,    -1,   290,    72,   290,    -1,   290,
-      73,   290,    -1,   290,   122,   295,   285,    -1,   290,   122,
-     290,   296,   285,    -1,   294,   212,   122,   285,    -1,    50,
-     212,   122,   285,    -1,    48,   296,   290,    -1,    49,   296,
-     290,    -1,    46,   296,   290,    -1,    46,   296,    46,    -1,
-      48,   296,    48,    -1,    49,   296,    49,    -1,    48,   296,
-      49,    -1,    49,   296,    48,    -1,   220,    35,    -1,   223,
-      44,    37,    45,   293,    -1,   223,    44,    38,    45,   293,
-      -1,   223,    44,    39,    45,   293,    -1,   223,    44,    40,
-      45,   293,    -1,   223,    44,    41,    45,   293,    -1,   223,
-      44,    42,    45,   293,    -1,   223,    44,    43,    45,   293,
-      -1,   223,    44,    45,    45,   293,    -1,   223,    44,    44,
-      45,   293,    -1,   223,   286,   224,   293,    -1,   223,    44,
-      50,   224,   293,    -1,   223,    37,   224,   293,    -1,   223,
-     292,   224,   293,    -1,   223,    38,   224,   293,    -1,   223,
-      39,   224,   293,    -1,   223,    40,   224,   293,    -1,   223,
-      41,   224,   293,    -1,   223,    42,   224,   293,    -1,   223,
-      43,   224,   293,    -1,   223,    45,    45,   293,    -1,   223,
-      45,   121,   293,    -1,   223,    44,    45,   293,    -1,   223,
-      44,   121,   293,    -1,   223,   221,    45,   293,    -1,   290,
-     288,   285,    -1,    48,   288,   290,    -1,    49,   288,   290,
-      -1,    46,   288,   290,    -1,    48,   288,    48,    -1,    48,
-     288,    49,    -1,    49,   288,    48,    -1,    49,   288,    49,
-      -1,    46,   288,    46,    -1,    46,   288,   222,    -1,    48,
-     288,    46,    -1,    49,   288,    46,    -1,    48,    -1,    49,
+      -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,
-     293,    35,    -1,    12,   289,   227,    35,    -1,   228,    -1,
-     227,   121,   228,    -1,   293,   229,    -1,    -1,    97,    -1,
+     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,
@@ -1011,94 +1011,95 @@
       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,   290,   122,   244,    -1,   244,    -1,   246,    -1,   245,
+      -1,   293,   122,   244,    -1,   244,    -1,   246,    -1,   245,
       -1,   249,   128,   248,   260,    -1,   247,   260,    -1,   249,
-      -1,    46,    -1,   293,    -1,    50,    -1,    52,    -1,    46,
-      -1,   293,    -1,    50,    -1,   119,   251,   120,    -1,    -1,
-     252,    -1,   253,    -1,   252,   121,   253,    -1,   290,   254,
-      -1,    46,    54,   290,    -1,    -1,   254,   255,    -1,   101,
+      -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,   285,    -1,    24,    35,   272,    25,
+      -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,   282,    -1,   282,    -1,   283,    -1,    17,   284,    -1,
-      16,   284,    -1,    38,   293,   122,    48,    -1,    39,   293,
-     122,    49,    -1,    41,   293,   122,    46,    -1,    46,   293,
-     122,   286,    -1,   290,    -1,   286,    -1,    48,    -1,    49,
-      -1,   287,    -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,   291,    -1,   292,
-      -1,   293,    -1,    50,    -1,    51,    -1,    53,    -1,    52,
-      -1,    37,    -1,   294,    -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,   299,   300,    -1,
-     142,    -1,   301,    -1,   300,   301,    -1,   302,    -1,   163,
-      35,    -1,   230,    -1,   159,    35,    -1,   145,    35,    -1,
-     189,    -1,    36,   303,    -1,   304,   303,    -1,   306,    -1,
-     197,    -1,   306,    -1,   305,   171,    36,    -1,   117,    -1,
-     204,   206,    35,    -1
+      -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,   558,   558,   559,   564,   570,   571,   574,   575,   578,
-     579,   580,   581,   582,   583,   584,   585,   586,   593,   594,
-     597,   601,   607,   614,   615,   618,   619,   622,   626,   627,
-     630,   631,   634,   637,   638,   641,   645,   656,   660,   662,
-     666,   672,   676,   680,   685,   686,   690,   692,   696,   700,
-     706,   710,   714,   715,   718,   719,   722,   724,   726,   728,
-     730,   732,   734,   736,   738,   740,   742,   744,   746,   748,
-     752,   757,   761,   765,   774,   785,   787,   789,   793,   802,
-     803,   816,   820,   825,   826,   830,   831,   832,   835,   842,
-     848,   849,   859,   861,   864,   865,   866,   867,   868,   869,
-     870,   871,   872,   873,   874,   875,   876,   877,   878,   884,
-     887,   892,   893,   898,   899,   902,   904,   912,   920,   921,
-     923,   926,   932,   933,   942,   943,   944,   945,   953,   957,
-     961,   970,   977,   984,   987,   988,   991,  1000,  1007,  1010,
-    1011,  1014,  1015,  1018,  1054,  1056,  1060,  1062,  1067,  1069,
-    1073,  1096,  1100,  1102,  1111,  1122,  1134,  1144,  1147,  1148,
-    1151,  1160,  1169,  1174,  1179,  1200,  1205,  1246,  1264,  1271,
-    1276,  1287,  1298,  1309,  1320,  1325,  1330,  1335,  1345,  1364,
-    1398,  1400,  1402,  1404,  1406,  1408,  1410,  1412,  1417,  1426,
-    1428,  1430,  1432,  1434,  1436,  1438,  1440,  1442,  1444,  1456,
-    1461,  1463,  1465,  1467,  1469,  1471,  1473,  1475,  1477,  1479,
-    1481,  1483,  1485,  1516,  1542,  1550,  1559,  1568,  1570,  1572,
-    1574,  1576,  1580,  1585,  1587,  1592,  1593,  1596,  1597,  1600,
-    1601,  1604,  1612,  1616,  1618,  1622,  1626,  1627,  1630,  1645,
-    1649,  1650,  1653,  1665,  1666,  1670,  1672,  1676,  1680,  1682,
-    1684,  1690,  1691,  1696,  1697,  1701,  1703,  1712,  1714,  1718,
-    1722,  1724,  1726,  1730,  1731,  1734,  1754,  1761,  1763,  1773,
-    1790,  1792,  1794,  1798,  1807,  1812,  1819,  1820,  1824,  1826,
-    1830,  1832,  1837,  1838,  1842,  1844,  1846,  1848,  1858,  1862,
-    1863,  1864,  1865,  1868,  1873,  1884,  1891,  1896,  1897,  1901,
-    1903,  1907,  1908,  1911,  1915,  1919,  1923,  1932,  1942,  1943,
-    1948,  1950,  1955,  1960,  1961,  1965,  1967,  1971,  1977,  1978,
-    1982,  1984,  1992,  1993,  1997,  2001,  2004,  2008,  2009,  2012,
-    2016,  2020,  2022,  2024,  2026,  2034,  2035,  2039,  2040,  2041,
-    2044,  2045,  2048,  2049,  2050,  2051,  2052,  2053,  2056,  2057,
-    2058,  2059,  2067,  2070,  2071,  2084,  2085,  2086,  2087,  2091,
-    2092,  2095,  2096,  2097,  2098,  2099,  2100,  2101,  2102,  2105,
-    2106,  2107,  2110,  2111,  2112,  2113,  2114,  2115,  2116,  2117,
-    2118,  2119,  2120,  2121,  2122,  2123,  2124,  2125,  2126,  2127,
-    2128,  2129,  2130,  2131,  2132,  2138,  2139,  2140,  2141,  2142,
-    2143,  2144,  2145,  2146,  2147,  2148,  2149,  2161,  2169,  2173,
-    2174,  2177,  2178,  2179,  2180,  2181,  2182,  2185,  2187,  2188,
-    2191,  2192,  2195,  2199,  2204
+       0,   561,   561,   562,   567,   573,   574,   577,   578,   581,
+     582,   583,   584,   585,   586,   587,   588,   589,   596,   597,
+     600,   604,   610,   617,   618,   621,   622,   625,   629,   630,
+     633,   634,   637,   640,   641,   644,   648,   659,   663,   665,
+     669,   675,   679,   683,   688,   689,   693,   695,   699,   703,
+     709,   713,   717,   718,   721,   722,   725,   727,   729,   731,
+     733,   735,   737,   739,   741,   743,   745,   747,   749,   751,
+     755,   760,   764,   768,   777,   788,   790,   792,   796,   805,
+     806,   819,   823,   828,   829,   833,   834,   835,   838,   845,
+     851,   852,   862,   864,   867,   868,   869,   870,   871,   872,
+     873,   874,   875,   876,   877,   878,   879,   880,   881,   887,
+     890,   895,   896,   901,   902,   905,   907,   915,   923,   924,
+     926,   929,   935,   936,   945,   946,   947,   948,   956,   960,
+     964,   973,   980,   987,   990,   991,   994,  1003,  1010,  1013,
+    1014,  1017,  1018,  1021,  1057,  1059,  1063,  1065,  1070,  1072,
+    1076,  1099,  1103,  1105,  1114,  1125,  1137,  1147,  1150,  1151,
+    1154,  1163,  1172,  1177,  1182,  1203,  1208,  1249,  1267,  1274,
+    1279,  1290,  1301,  1312,  1323,  1328,  1333,  1338,  1348,  1367,
+    1401,  1403,  1405,  1407,  1409,  1411,  1413,  1415,  1420,  1429,
+    1431,  1433,  1435,  1437,  1439,  1441,  1443,  1445,  1447,  1459,
+    1464,  1466,  1468,  1470,  1472,  1474,  1476,  1478,  1480,  1482,
+    1484,  1486,  1488,  1519,  1545,  1553,  1562,  1571,  1573,  1575,
+    1577,  1579,  1583,  1588,  1590,  1595,  1596,  1599,  1600,  1603,
+    1604,  1607,  1615,  1619,  1621,  1625,  1629,  1630,  1633,  1648,
+    1652,  1653,  1656,  1668,  1669,  1673,  1675,  1679,  1683,  1685,
+    1687,  1693,  1694,  1699,  1700,  1704,  1706,  1715,  1717,  1721,
+    1725,  1727,  1729,  1733,  1734,  1737,  1757,  1764,  1766,  1776,
+    1793,  1795,  1797,  1801,  1810,  1815,  1822,  1823,  1827,  1829,
+    1833,  1835,  1840,  1841,  1845,  1847,  1849,  1851,  1861,  1865,
+    1866,  1867,  1868,  1871,  1876,  1887,  1894,  1899,  1900,  1904,
+    1906,  1910,  1911,  1914,  1918,  1922,  1926,  1935,  1945,  1946,
+    1951,  1953,  1958,  1963,  1964,  1968,  1970,  1974,  1980,  1981,
+    1985,  1987,  1995,  1996,  2000,  2004,  2007,  2011,  2012,  2015,
+    2019,  2020,  2023,  2027,  2029,  2031,  2035,  2039,  2040,  2053,
+    2054,  2058,  2059,  2060,  2063,  2064,  2067,  2068,  2069,  2070,
+    2071,  2072,  2075,  2076,  2077,  2078,  2086,  2089,  2090,  2103,
+    2104,  2105,  2106,  2110,  2111,  2114,  2115,  2116,  2117,  2118,
+    2119,  2120,  2121,  2124,  2125,  2126,  2129,  2130,  2131,  2132,
+    2133,  2134,  2135,  2136,  2137,  2138,  2139,  2140,  2141,  2142,
+    2143,  2144,  2145,  2146,  2147,  2148,  2149,  2150,  2151,  2157,
+    2158,  2159,  2160,  2161,  2162,  2163,  2164,  2165,  2166,  2167,
+    2168,  2180,  2188,  2192,  2193,  2196,  2197,  2198,  2199,  2200,
+    2201,  2204,  2206,  2207,  2210,  2211,  2214,  2218,  2223
 };
 #endif
 
@@ -1171,11 +1172,12 @@
   "opt_return_expressions", "return_expressions", "return_expression",
   "arg_flags", "arg_flag", "opt_paren_string", "paren_string",
   "const_decl_stat", "const_decl_chunk", "const_stat", "const_decl",
-  "globalconst_decl", "const_tail", "expression", "constant",
-  "stringconst", "rel_op", "type", "target", "symbol", "reg", "identifier",
-  "keyword", "unop", "binop", "augmented_op", "pasm_contents", "pasm_init",
-  "pasm_lines", "pasm_line", "pasm_statement", "opt_pasm_instruction",
-  "pasm_sub_directive", "pasm_sub_head", "pasm_instruction", 0
+  "const_tail", "globalconst_decl", "basic_const_tail", "pmc_const_tail",
+  "pmc_const", "expression", "constant", "stringconst", "rel_op", "type",
+  "target", "symbol", "reg", "identifier", "keyword", "unop", "binop",
+  "augmented_op", "pasm_contents", "pasm_init", "pasm_lines", "pasm_line",
+  "pasm_statement", "opt_pasm_instruction", "pasm_sub_directive",
+  "pasm_sub_head", "pasm_instruction", 0
 };
 #endif
 
@@ -1237,16 +1239,16 @@
      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,   284,   284,   284,   284,   285,   285,   286,   286,   286,
-     287,   287,   288,   288,   288,   288,   288,   288,   289,   289,
-     289,   289,   290,   291,   291,   292,   292,   292,   292,   293,
-     293,   294,   294,   294,   294,   294,   294,   294,   294,   295,
-     295,   295,   296,   296,   296,   296,   296,   296,   296,   296,
-     296,   296,   296,   296,   296,   296,   296,   296,   296,   296,
-     296,   296,   296,   296,   296,   297,   297,   297,   297,   297,
-     297,   297,   297,   297,   297,   297,   297,   298,   299,   300,
-     300,   301,   301,   301,   301,   301,   301,   302,   302,   302,
-     303,   303,   304,   305,   306
+     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,   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.  */
@@ -1284,17 +1286,17 @@
        1,     1,     1,     3,     3,     3,     3,     0,     1,     1,
        3,     1,     1,     3,     2,     1,     5,     5,     0,     1,
        1,     2,     3,     0,     1,     1,     2,     3,     0,     2,
-       1,     2,     0,     1,     3,     2,     1,     1,     1,     2,
-       2,     4,     4,     4,     4,     1,     1,     1,     1,     1,
+       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,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
-       2,     1,     2,     1,     2,     2,     1,     2,     2,     1,
-       1,     1,     3,     1,     3
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     2,     1,     1,     2,     1,     2,     1,     2,     2,
+       1,     2,     2,     1,     1,     1,     3,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1302,493 +1304,495 @@
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     5,     5,     0,     6,   408,     3,     0,     2,     0,
+       0,     5,     5,     0,     6,   412,     3,     0,     2,     0,
        1,     0,     0,     0,     0,     0,   136,     0,     0,   111,
-     423,     0,    18,    19,     0,     0,     0,   416,   139,   413,
-     407,   409,   411,     0,    54,   419,     0,     0,     0,     0,
+     427,     0,    18,    19,     0,     0,     0,   420,   139,   417,
+     411,   413,   415,     0,    54,   423,     0,     0,     0,     0,
        0,     0,     5,     7,    17,    14,    15,    16,    12,    13,
-      11,     9,    54,    10,   326,     0,    38,    39,    44,   128,
-     420,   417,   421,   359,   364,   365,   367,   366,   361,   362,
-     368,   363,    22,   360,     0,   113,     0,   415,    23,   414,
-     412,   340,   341,   337,   338,   355,   356,   358,   357,     0,
-       0,   140,   141,   144,   149,   145,     0,   146,   339,   148,
-     147,   410,   418,     0,    41,     0,    37,    53,    51,    52,
-       0,     0,     0,     0,   329,     0,     6,     4,     0,     0,
-      48,     0,    45,    46,    20,   111,   117,   118,   122,     0,
-     114,   115,   120,   110,     0,    24,    25,    27,   355,     0,
-     152,   336,   335,   352,   353,   354,   424,     0,   150,   422,
-      57,    58,    59,    56,   322,     0,   322,    60,     0,    61,
-      62,     0,     0,     0,    55,     0,     0,     0,     0,     0,
-       0,     8,    79,   274,     0,   273,    43,     0,   119,     0,
-     112,     0,     0,     0,   151,     0,   142,     0,    65,   323,
-       0,    66,    71,    63,    67,    68,    69,    42,     0,     0,
-       0,     0,    40,    90,    78,   238,    47,   124,   111,   126,
-     125,   121,   123,   116,    28,    26,   153,     0,     0,    76,
-       0,    72,    73,    77,    75,   331,   332,   333,   334,     0,
-       0,    80,   127,     0,     0,     0,    29,    30,     0,    33,
-      34,   324,    64,    70,     0,     0,    50,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   136,   361,   362,
-     368,   363,   268,   355,   276,     0,    49,    91,    93,   107,
-     109,   105,   106,   108,   104,   103,    94,     0,   139,   135,
-     102,     0,    95,     0,     0,    96,    97,    98,   101,   239,
-     240,   241,     0,   262,   264,   263,     0,   267,     0,   100,
-     288,   289,   291,   290,   292,    99,     0,   327,   328,     0,
-     354,   360,   348,   349,   350,   351,    83,     0,     0,    35,
-      21,    31,    32,    74,   130,     0,   330,   297,     0,     0,
+      11,     9,    54,    10,     0,    38,    39,    44,   128,   424,
+     421,   425,   363,   368,   369,   371,   370,   365,   366,   372,
+     367,    22,   364,     0,   113,     0,   419,    23,   418,   416,
+     344,   345,   341,   342,   359,   360,   362,   361,     0,     0,
+     140,   141,   144,   149,   145,     0,   146,   343,   148,   147,
+     414,   422,     0,    41,     0,    37,    53,    51,    52,     0,
+       0,     0,   326,     0,     6,     4,     0,     0,    48,     0,
+      45,    46,    20,   111,   117,   118,   122,     0,   114,   115,
+     120,   110,     0,    24,    25,    27,   359,     0,   152,   340,
+     339,   356,   357,   358,   428,     0,   150,   426,    57,    58,
+      59,    56,   322,     0,   322,    60,     0,    61,    62,     0,
+       0,     0,    55,     0,     0,     0,     0,     0,     8,    79,
+     274,     0,   273,    43,     0,   119,     0,   112,     0,     0,
+       0,   151,     0,   142,     0,    65,   323,     0,    66,    71,
+      63,    67,    68,    69,    42,     0,     0,     0,    40,    90,
+      78,   238,    47,   124,   111,   126,   125,   121,   123,   116,
+      28,    26,   153,     0,     0,    76,     0,    72,    73,    77,
+      75,   333,   334,   335,     0,     0,    80,   127,     0,     0,
+       0,    29,    30,     0,    33,    34,   324,    64,    70,     0,
+       0,    50,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   136,   365,   366,   372,   367,   268,   359,
+     276,     0,    49,    91,    93,   107,   109,   105,   106,   108,
+     104,   103,    94,     0,   139,   135,   102,     0,    95,     0,
+       0,    96,    97,    98,   101,   239,   240,   241,     0,   262,
+     264,   263,     0,   267,     0,   100,   288,   289,   291,   290,
+     292,    99,     0,   327,   328,     0,   358,   364,   352,   353,
+     354,   355,    83,     0,     0,    35,    21,    31,    32,    74,
+     130,     0,     0,   332,   330,   331,   329,   297,     0,     0,
      308,   313,   243,     0,     0,    92,     0,     0,     0,     0,
        0,   277,   278,   282,   129,   133,   134,   137,   138,   145,
-     157,   188,   359,   364,   365,   367,   366,   361,   362,   368,
-     363,   340,   337,   338,     0,     0,     0,   353,   259,   266,
-       0,     0,   325,   406,   404,   405,     0,     0,   395,   396,
-     397,   398,   400,   401,   399,   402,   403,     0,     0,     0,
-       0,    82,    36,     0,   233,   236,   340,     0,   298,   299,
-     302,   301,   318,   305,   293,   295,     0,     0,   309,   310,
-       0,     0,   314,   315,     0,     0,   244,   245,   132,   294,
-     131,   231,     0,     0,   275,     0,   280,     0,   229,   230,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     157,   188,   363,   368,   369,   371,   370,   365,   366,   372,
+     367,   344,   341,   342,     0,     0,     0,   357,   259,   266,
+       0,     0,   325,   410,   408,   409,     0,     0,   399,   400,
+     401,   402,   404,   405,   403,   406,   407,     0,     0,     0,
+       0,    82,    36,     0,   233,   236,     0,   344,     0,   298,
+     299,   302,   301,   318,   305,   293,   295,     0,     0,   309,
+     310,     0,     0,   314,   315,     0,     0,   244,   245,   132,
+     294,   131,   231,     0,     0,   275,     0,   280,     0,   229,
+     230,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     342,   343,   344,   345,   347,   346,     0,     0,     0,     0,
-       0,     0,     0,   272,   270,   271,     0,   269,   260,   170,
-     171,   174,   172,   173,   175,   359,   268,   160,   161,   355,
-     369,   370,   371,     0,   164,   165,   261,   162,     0,   353,
-     360,     0,   169,     0,    81,    89,   322,   286,   284,   285,
-       0,    84,    86,    87,    85,   232,     0,   237,   235,     0,
-     296,     0,   304,     0,     0,   311,     0,     0,   316,     0,
-       0,     0,     0,     0,   246,   179,   281,   279,   283,   143,
-     200,   202,   203,   204,   205,   206,   207,     0,     0,     0,
-       0,     0,     0,     0,     0,   363,   210,     0,   211,   208,
-     209,   221,   225,   226,   222,   216,   223,   217,   218,   214,
-     224,   219,   220,   215,   212,   198,   213,   201,   265,   394,
-     389,   391,   390,   393,   392,   382,   383,   384,   387,   385,
-     386,   388,   381,   373,   379,   372,   374,   375,   376,   377,
-     378,   380,     0,     0,     0,   168,   155,   166,     0,   167,
-     176,   178,   287,     0,   234,   303,   300,   322,   320,   319,
-     312,   307,   317,   306,   247,     0,   251,   267,   249,   253,
-     189,   190,   191,   192,   193,   194,   195,   197,   196,   199,
-     183,   182,   184,   186,   180,   187,   185,   181,     0,     0,
-     177,     0,   321,     0,     0,   248,     0,   258,     0,   254,
-     255,   154,   156,    88,     0,   252,     0,     0,   256,   250,
-     257,   242
+       0,   346,   347,   348,   349,   351,   350,     0,     0,     0,
+       0,     0,     0,     0,   272,   270,   271,     0,   269,   260,
+     170,   171,   174,   172,   173,   175,   363,   268,   160,   161,
+     359,   373,   374,   375,     0,   164,   165,   261,   162,     0,
+     357,   364,     0,   169,     0,    81,    89,   322,   286,   284,
+     285,     0,    84,    86,    87,    85,   232,     0,   237,   235,
+       0,     0,   296,     0,   304,     0,     0,   311,     0,     0,
+     316,     0,     0,     0,     0,     0,   246,   179,   281,   279,
+     283,   143,   200,   202,   203,   204,   205,   206,   207,     0,
+       0,     0,     0,     0,     0,     0,     0,   367,   210,     0,
+     211,   208,   209,   221,   225,   226,   222,   216,   223,   217,
+     218,   214,   224,   219,   220,   215,   212,   198,   213,   201,
+     265,   398,   393,   395,   394,   397,   396,   386,   387,   388,
+     391,   389,   390,   392,   385,   377,   383,   376,   378,   379,
+     380,   381,   382,   384,     0,     0,     0,   168,   155,   166,
+       0,   167,   176,   178,   287,     0,   234,   336,   337,   338,
+     303,   300,   322,   320,   319,   312,   307,   317,   306,   247,
+       0,   251,   267,   249,   253,   189,   190,   191,   192,   193,
+     194,   195,   197,   196,   199,   183,   182,   184,   186,   180,
+     187,   185,   181,     0,     0,   177,     0,   321,     0,     0,
+     248,     0,   258,     0,   254,   255,   154,   156,    88,     0,
+     252,     0,     0,   256,   250,   257,   242
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,     3,     8,     5,    42,    43,    21,    22,    23,    24,
-     134,   135,   136,   235,   236,   237,   238,   239,   240,    45,
-      25,    47,    48,    49,    26,   121,   122,   123,    51,   266,
-      52,   108,   103,   164,   193,   220,   221,   222,   203,   204,
-     231,   316,   390,   501,   502,   503,   229,   267,   268,   269,
-      27,    76,   129,   130,   131,   132,   179,   212,    60,   272,
-     273,   274,   275,   276,   277,    28,   346,    90,    91,   348,
-      92,    93,    94,    95,   139,   279,   280,   484,   281,   485,
-     282,   283,   364,   554,   284,   430,   285,   286,   393,   394,
-     508,    29,   288,   289,   290,   415,   416,   417,   523,   645,
-     648,   649,   650,   291,   292,   293,   294,   295,   296,   466,
-      96,   298,   340,   341,   342,   426,   504,   299,   300,   301,
-     302,   328,   397,   398,   399,   400,   401,   402,   303,   304,
-     407,   408,   409,   411,   412,   413,   512,   609,   188,   189,
-     305,    53,   306,    54,   308,   114,   403,   141,    98,   456,
-     317,   142,   143,   144,   145,    73,   491,   592,   388,     6,
-       7,    30,    31,    32,    61,    33,    34,    35
+     132,   133,   134,   230,   231,   232,   233,   234,   235,    45,
+      25,    47,    48,    49,    26,   119,   120,   121,    51,   262,
+      52,   107,   102,   162,   190,   216,   217,   218,   199,   200,
+     226,   312,   390,   502,   503,   504,   224,   263,   264,   265,
+      27,    75,   127,   128,   129,   130,   176,   208,    59,   268,
+     269,   270,   271,   272,   273,    28,   346,    89,    90,   348,
+      91,    92,    93,    94,   137,   275,   276,   485,   277,   486,
+     278,   279,   364,   556,   280,   431,   281,   282,   393,   394,
+     509,    29,   284,   285,   286,   416,   417,   418,   525,   650,
+     653,   654,   655,   287,   288,   289,   290,   291,   292,   467,
+      95,   294,   340,   341,   342,   427,   505,   295,   296,   297,
+     298,   328,   398,   399,   400,   401,   402,   403,   299,   300,
+     408,   409,   410,   412,   413,   414,   514,   614,   185,   186,
+     301,    53,   302,   303,   323,   304,   324,   325,   607,   404,
+     139,    97,   457,   313,   140,   141,   142,   143,    72,   492,
+     594,   388,     6,     7,    30,    31,    32,    60,    33,    34,
+      35
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -601
+#define YYPACT_NINF -594
 static const yytype_int16 yypact[] =
 {
-       2,    -5,    -5,    33,  -601,  -601,  -601,    15,  -601,    54,
-    -601,    23,    37,    97,   -23,    94,  -601,  1024,    70,    35,
-    -601,   121,  -601,  -601,    57,   137,   152,  -601,   430,  -601,
-      15,  -601,  -601,    94,  -601,  -601,   165,   186,   187,  1014,
-     114,   188,   200,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,   115,  -601,  -601,   191,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
-    -601,  -601,  -601,  -601,   126,    25,   206,  -601,  1024,  -601,
-    -601,  -601,  -601,  -601,  -601,   119,  -601,  -601,  -601,   759,
-     208,   124,  -601,  -601,  -601,  -601,   123,  -601,  -601,  -601,
-     125,  -601,  -601,   619,  -601,   127,  -601,  -601,  -601,  -601,
-    1024,  1024,  1024,  1024,  -601,   129,    54,  -601,   508,  1000,
-    -601,   128,   122,  -601,  -601,    35,  -601,  -601,  -601,   134,
-     139,  -601,  -601,  -601,   138,   144,  -601,  -601,  -601,    39,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,   430,  -601,  -601,
-    -601,  -601,  -601,  -601,   147,   148,   147,  -601,   149,  -601,
-    -601,   147,   147,   147,  -601,   223,   176,   177,   179,   180,
-     224,  -601,  -601,  -601,   268,  -601,  -601,   191,  -601,    -3,
-    -601,    25,   269,  1024,  -601,   759,  -601,   259,  -601,  -601,
-    1014,  -601,    36,  -601,  -601,  -601,  -601,  -601,   287,   288,
-     290,   132,  -601,  -601,   330,  -601,  -601,  -601,    35,  -601,
-    -601,  -601,  -601,  -601,    61,  -601,  -601,   221,   222,  -601,
-     227,   228,  -601,  -601,  -601,  -601,  -601,  -601,  -601,   530,
-     175,  -601,  -601,   175,   234,   239,    61,  -601,   313,  -601,
-    -601,  -601,  -601,  -601,    36,   315,  -601,   175,   114,   232,
-     232,   317,   320,   321,   238,   986,   634,   653,   776,   799,
-     396,  1024,  -601,    16,   952,   323,  -601,  -601,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,   324,   430,  -601,
-    -601,   325,  -601,   326,   816,  -601,  -601,  -601,  -601,  -601,
-    -601,  -601,   328,  -601,  -601,  -601,   232,   237,   245,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,   331,  -601,  -601,   713,
-     -36,   123,  -601,  -601,  -601,  -601,  -601,  1024,   258,  -601,
-    -601,  -601,  -601,  -601,  -601,  1024,  -601,   833,   334,   336,
-     352,   355,   347,   343,   345,  -601,   346,   348,   260,   332,
-     264,   266,  -601,  -601,  -601,  -601,  -601,  -601,  -601,   270,
-    -601,  -601,   -24,   -24,   -24,   -24,   -24,   -24,   -24,   289,
-     -16,   163,   163,   163,   349,   -24,   163,   -24,  -601,  -601,
-     456,   986,  -601,  -601,  -601,  -601,   699,   901,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,   244,   759,   271,
-      93,  -601,  -601,   -20,  -601,   291,   337,   277,   280,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,   759,   367,   352,  -601,
-     759,   377,   355,  -601,   759,   113,   347,  -601,  -601,  -601,
-    -601,  -601,   759,   396,  -601,   952,    87,   759,  -601,  -601,
-    1024,  1024,  1024,  1024,  1024,  1024,  1024,   358,   359,   363,
-     375,   376,   378,   379,   380,  1033,   -24,  1024,  1024,  1024,
-    -601,  -601,  -601,  -601,  -601,  -601,   850,   867,   884,  1024,
-    1024,   759,  1024,  -601,  -601,  -601,   232,  -601,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,   272,   142,   633,   633,    16,
-    -601,  -601,  -601,   430,  -601,  -601,  -601,  -601,   633,   387,
-     -19,   759,  -601,   759,  -601,  -601,   147,  -601,  -601,  -601,
-     293,  -601,  -601,  -601,  -601,  -601,  1024,  -601,  -601,   759,
-    -601,   833,    -9,   391,   392,  -601,   394,   409,  -601,   415,
-    1000,   986,  1000,   416,  -601,  -601,  -601,  -601,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,  1024,  1024,  1024,
-    1024,  1024,  1024,  1024,  1024,  1024,  -601,  1024,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
-    -601,  -601,   969,   918,   935,  -601,   333,   338,   759,  -601,
-    -601,  -601,  -601,    36,  -601,  -601,  -601,   147,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,   418,   339,  -601,  -601,    19,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,   430,   430,
-    -601,   335,  -601,   446,  1000,  -601,   952,  -601,   435,    19,
-    -601,   124,   124,  -601,   456,  -601,   428,   429,  -601,  -601,
-    -601,  -601
+     -49,     3,     3,    41,  -594,  -594,  -594,    15,  -594,    65,
+    -594,    49,     9,    51,   -21,    11,  -594,  1022,    69,    -6,
+    -594,    89,  -594,  -594,    22,    92,   100,  -594,   647,  -594,
+      15,  -594,  -594,    11,  -594,  -594,   106,   111,   113,  1012,
+     182,   116,   139,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
+    -594,  -594,  -594,  -594,    54,  -594,  -594,   130,  -594,  -594,
+    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
+    -594,  -594,  -594,    84,    -1,   164,  -594,  1022,  -594,  -594,
+    -594,  -594,  -594,  -594,    95,  -594,  -594,  -594,   734,   180,
+     112,  -594,  -594,  -594,  -594,   109,  -594,  -594,  -594,   115,
+    -594,  -594,   385,  -594,   117,  -594,  -594,  -594,  -594,  1022,
+    1022,  1022,  -594,   125,    65,  -594,   244,   985,  -594,   126,
+     134,  -594,  -594,    -6,  -594,  -594,  -594,   131,   133,  -594,
+    -594,  -594,   148,   149,  -594,  -594,  -594,   -52,  -594,  -594,
+    -594,  -594,  -594,  -594,  -594,   647,  -594,  -594,  -594,  -594,
+    -594,  -594,   150,   152,   150,  -594,   154,  -594,  -594,   150,
+     150,   150,  -594,   229,   155,   156,   159,   230,  -594,  -594,
+    -594,   251,  -594,  -594,   130,  -594,     4,  -594,    -1,   252,
+    1022,  -594,   734,  -594,   242,  -594,  -594,  1012,  -594,   410,
+    -594,  -594,  -594,  -594,  -594,   245,   249,    87,  -594,  -594,
+     286,  -594,  -594,  -594,    -6,  -594,  -594,  -594,  -594,  -594,
+      44,  -594,  -594,   183,   200,  -594,   201,   179,  -594,  -594,
+    -594,  -594,  -594,  -594,   273,   141,  -594,  -594,   141,   193,
+     217,    44,  -594,   306,  -594,  -594,  -594,  -594,  -594,   410,
+     308,  -594,   141,   173,   173,   225,   225,   310,   311,   314,
+     231,   971,   530,   632,   751,   768,   570,  1022,  -594,    30,
+     458,   316,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
+    -594,  -594,  -594,   317,   647,  -594,  -594,   322,  -594,   325,
+     785,  -594,  -594,  -594,  -594,  -594,  -594,  -594,   326,  -594,
+    -594,  -594,   225,   235,   243,  -594,  -594,  -594,  -594,  -594,
+    -594,  -594,   329,  -594,  -594,   646,   -74,   109,  -594,  -594,
+    -594,  -594,  -594,  1022,   256,  -594,  -594,  -594,  -594,  -594,
+    -594,  1022,  1022,  -594,  -594,  -594,  -594,   802,   332,   333,
+     349,   350,   343,   339,   340,  -594,   341,   342,   260,   331,
+     263,   265,  -594,  -594,  -594,  -594,  -594,  -594,  -594,   266,
+    -594,  -594,   -18,   -18,   -18,   -18,   -18,   -18,   -18,    46,
+     -16,   170,   170,   170,   345,   -18,   170,   -18,  -594,  -594,
+     955,   971,  -594,  -594,  -594,  -594,   870,   887,  -594,  -594,
+    -594,  -594,  -594,  -594,  -594,  -594,  -594,   552,   734,   269,
+     103,  -594,  -594,   -14,  -594,   290,   272,   344,   275,   276,
+    -594,  -594,  -594,  -594,  -594,  -594,  -594,   734,   373,   349,
+    -594,   734,   374,   350,  -594,   734,    45,   343,  -594,  -594,
+    -594,  -594,  -594,   734,   570,  -594,   458,   257,   734,  -594,
+    -594,  1022,  1022,  1022,  1022,  1022,  1022,  1022,   356,   357,
+     358,   359,   360,   361,   365,   367,  1031,   -18,  1022,  1022,
+    1022,  -594,  -594,  -594,  -594,  -594,  -594,   819,   836,   853,
+    1022,  1022,   734,  1022,  -594,  -594,  -594,   225,  -594,  -594,
+    -594,  -594,  -594,  -594,  -594,  -594,   613,   129,   612,   612,
+      30,  -594,  -594,  -594,   647,  -594,  -594,  -594,  -594,   612,
+     387,   -15,   734,  -594,   734,  -594,  -594,   150,  -594,  -594,
+    -594,   304,  -594,  -594,  -594,  -594,  -594,  1022,  -594,  -594,
+     999,   734,  -594,   802,   -45,   389,   390,  -594,   391,   392,
+    -594,   393,   985,   971,   985,   395,  -594,  -594,  -594,  -594,
+    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  1022,
+    1022,  1022,  1022,  1022,  1022,  1022,  1022,  1022,  -594,  1022,
+    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
+    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
+    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
+    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
+    -594,  -594,  -594,  -594,   938,   904,   921,  -594,   313,   315,
+     734,  -594,  -594,  -594,  -594,   410,  -594,  -594,  -594,  -594,
+    -594,  -594,   150,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
+     402,   318,  -594,  -594,    18,  -594,  -594,  -594,  -594,  -594,
+    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,
+    -594,  -594,  -594,   647,   647,  -594,   320,  -594,   423,   985,
+    -594,   458,  -594,   414,    18,  -594,   112,   112,  -594,   955,
+    -594,   407,   425,  -594,  -594,  -594,  -594
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -601,  -601,  -601,    45,  -601,   368,     5,  -601,  -601,  -601,
-    -601,  -601,   282,  -601,  -601,   249,  -601,  -601,  -601,  -601,
-      -1,  -601,  -601,  -601,     9,  -601,  -601,   309,  -601,  -601,
-    -601,   297,   436,  -601,  -601,  -601,  -601,  -239,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,   235,  -601,
-    -202,  -102,  -601,  -601,   311,  -601,  -601,  -601,  -193,  -601,
-    -601,  -601,  -601,  -601,  -601,  -217,  -601,   212,  -414,  -601,
-     360,    27,  -601,   -94,  -601,  -601,  -601,  -601,  -601,  -601,
-    -601,  -601,  -601,  -601,  -601,  -312,  -601,  -600,  -601,     6,
-    -601,  -157,  -601,  -601,  -601,  -601,  -601,    95,  -601,  -601,
-    -601,  -601,  -136,  -601,  -601,  -238,  -601,  -601,    -7,  -139,
-    -115,   263,  -601,  -601,  -416,  -601,    92,  -601,  -601,  -601,
-    -601,  -240,  -601,  -601,     8,  -601,  -249,    24,  -601,  -601,
-    -601,  -601,   130,  -601,  -601,   120,  -601,  -601,  -150,   -15,
-    -601,  -601,  -601,  -145,  -601,   286,   -82,   -27,   157,  -250,
-    -213,  -194,  -601,   -25,   -17,  -216,  -601,  -440,  -601,  -601,
-    -601,  -601,   505,  -601,   503,  -601,  -601,    53
+    -594,  -594,  -594,    16,  -594,   347,     7,  -594,  -594,  -594,
+    -594,  -594,   278,  -594,  -594,   214,  -594,  -594,  -594,  -594,
+       0,  -594,  -594,  -594,     8,  -594,  -594,   288,  -594,  -594,
+    -594,   277,   413,  -594,  -594,  -594,  -594,  -233,  -594,  -594,
+    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,   232,  -594,
+    -190,  -100,  -594,  -594,   307,  -594,  -594,  -594,  -189,  -594,
+    -594,  -594,  -594,  -594,  -594,  -210,  -594,   192,  -478,  -594,
+     337,     2,  -594,   -91,  -594,  -594,  -594,  -594,  -594,  -594,
+    -594,  -594,  -594,  -594,  -594,  -211,  -594,  -593,  -594,   -20,
+    -594,  -187,  -594,  -594,  -594,  -594,  -594,    71,  -594,  -594,
+    -594,  -594,  -165,  -594,  -594,  -232,  -594,  -594,   -32,  -167,
+    -115,   262,  -594,  -594,  -414,  -594,    67,  -594,  -594,  -594,
+    -594,  -236,  -594,  -594,     5,  -594,  -198,     6,  -594,  -594,
+    -594,  -594,   104,  -594,  -594,   102,  -594,  -594,  -149,   -80,
+    -594,  -594,  -594,  -594,   291,  -594,   476,  -594,  -594,   -81,
+     -27,  -184,  -118,  -195,  -216,  -594,   -25,   -17,  -209,  -594,
+    -349,  -594,  -594,  -594,  -594,   490,  -594,   488,  -594,  -594,
+      17
 };
 
 /* 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 -360
+#define YYTABLE_NINF -364
 static const yytype_int16 yytable[] =
 {
-      72,    97,   148,    99,   174,   323,   191,   140,    46,   527,
-     329,   100,   278,   311,    44,   505,  -159,   334,    50,   647,
-     318,   428,   109,   178,    11,    12,    13,   270,    14,   448,
-       4,   247,   207,    10,   325,   309,   271,   593,   594,   278,
-     311,   431,   432,   433,   434,   435,   436,     9,   598,   647,
-     646,    15,    16,   460,   270,   462,   369,    36,    37,    38,
-      39,   137,   309,   271,    12,    13,   336,    14,    62,    55,
-     343,    40,   287,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,   219,  -273,   307,    56,    62,   117,    41,   607,
-     366,   608,  -273,   166,   167,   168,   169,   429,   223,   287,
-      58,   506,   175,   216,    89,   449,   232,    74,   208,   209,
-     210,   307,   457,   458,   297,    46,   461,     1,     2,    17,
-      97,    44,    99,    18,   211,    50,    19,   520,   494,    59,
-     100,    16,    20,   468,   547,  -274,   125,   126,   127,    89,
-     297,   297,   521,    57,  -274,   522,   194,   195,   196,   486,
-     223,   128,   110,   111,    75,   112,    77,   513,    17,    89,
-     113,   516,    18,   184,   185,   519,   137,   233,   234,   338,
-     483,   490,    79,   109,   228,   224,    78,  -340,    81,    82,
-      83,    84,   471,   474,   349,   496,   497,    80,   498,   499,
-     495,   496,   497,   488,   498,   499,   500,   569,   570,   571,
-     572,   573,   574,   575,   576,   577,   578,   579,   580,   581,
-     582,   104,   310,   312,   313,   314,   315,   389,   450,   451,
-     452,   453,   454,   455,   651,   652,   568,   224,   265,   526,
-     656,   343,   105,   106,   115,   116,   119,   120,   175,   310,
-     124,   133,  -274,   146,   337,   147,    89,   177,  -273,   165,
-     170,    97,   176,    99,   180,   265,   297,   365,   182,   367,
-     181,   100,   555,   559,   563,   183,   187,   190,   192,   197,
-     202,   583,   297,   584,   585,   586,   587,   588,   589,   590,
-     591,   475,    64,    65,    66,    67,    68,    69,    70,    71,
-     476,    82,   477,   478,   479,    86,    87,    88,   198,   199,
-     391,   200,   201,   205,   214,   217,   492,  -158,   395,  -136,
+      71,    96,   171,    98,   146,   188,   319,   138,   305,    46,
+     329,    99,   529,   223,   274,   307,    44,    50,     9,   334,
+    -159,   506,   108,   175,    11,    12,    13,   429,    14,   449,
+     242,   652,    61,   314,   266,   267,   305,   283,     4,   203,
+     336,    10,   274,   307,   343,  -273,    58,   321,    16,   651,
+      61,    15,    16,   612,  -273,   613,   369,    55,   115,   522,
+     135,   652,   266,   267,   366,   283,     1,     2,    36,    37,
+      38,    39,   181,   182,   523,    12,    13,   524,    14,   191,
+     192,   193,    40,   438,   439,   440,   441,   442,   443,   444,
+     445,   446,   164,   165,   166,    54,   447,    56,   219,    41,
+     172,   212,    57,   430,   227,   450,    73,   507,    88,   293,
+     123,   124,   125,    74,    46,   204,   205,   206,    96,    17,
+      98,    44,    50,    18,    76,   126,    19,    78,    99,   595,
+     596,   207,    20,    80,    81,    79,   293,   293,   495,   469,
+     600,    77,   432,   433,   434,   435,   436,   437,   219,  -274,
+     228,   229,   103,    88,   461,   487,   463,   104,  -274,   105,
+     472,   475,   113,   135,  -344,   656,   657,   448,   338,    17,
+     108,   489,   220,    18,   114,   117,   118,   484,   491,   308,
+     309,   310,   311,   349,   571,   572,   573,   574,   575,   576,
+     577,   578,   579,   580,   581,   582,   583,   584,   122,   131,
+     496,   497,   498,   488,   499,   500,   501,   306,   528,   515,
+     343,   109,   110,   518,   111,   144,   389,   521,  -274,   322,
+     109,   110,   220,   111,   261,   451,   452,   453,   454,   455,
+     456,   570,    88,   145,   172,   306,   549,   661,  -273,   163,
+     337,   557,   561,   565,   458,   459,   167,    96,   462,    98,
+     173,   177,   261,   365,   178,   367,   293,    99,   585,   174,
+     586,   587,   588,   589,   590,   591,   592,   593,   179,   184,
+     180,   187,   293,   189,   240,   194,   198,   195,   196,   169,
+     241,   197,    11,    12,    13,   242,   201,   210,   213,   243,
+     244,   245,   246,   221,   225,   247,   391,   248,   222,   249,
+     239,   250,   315,   236,   395,   396,   251,   493,    58,   252,
+     253,    63,    64,    65,    66,   254,   255,   256,   257,   258,
+     237,   238,   316,   259,    85,    86,    87,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,   318,   527,   320,   327,   330,   331,   531,   604,   332,
+     260,   344,   345,   468,   172,   497,   498,   350,   499,   500,
+     351,   368,   490,   370,   372,   371,   392,   405,   406,   407,
+     306,   411,   646,   415,   419,   420,   421,   422,   636,   639,
+     642,   568,   423,   425,    19,   424,   426,   508,   428,   597,
+     460,   494,   260,   599,   510,   512,   516,   513,   511,   519,
+     601,   539,   540,   541,   542,   543,   544,   620,   622,   623,
+     545,   602,   546,   603,   532,   533,   534,   535,   536,   537,
+     538,   147,  -163,   605,   615,   616,   617,   618,   619,   548,
+     624,   550,   551,   552,   643,   343,   644,   648,   659,   649,
+     658,   662,   665,   566,   567,   317,   569,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,   215,    96,   211,    98,
+     666,   168,   202,   647,   214,   116,   347,    99,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   183,   608,   335,   209,   598,   606,   526,   663,
+     395,   621,   664,   609,   530,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,   339,   172,   172,   172,   136,    85,
+      86,    87,   333,   517,   219,   520,   112,   610,   611,   645,
+     100,   101,   625,   626,   627,   628,   629,   630,   631,   632,
+     633,   240,   634,    88,   660,   326,     0,     0,     0,    11,
+      12,    13,   242,     0,     0,     0,   243,   244,   245,   246,
+       0,     0,   247,     0,   248,     0,   249,     0,   250,     0,
+       0,     0,     0,   251,     0,    58,     0,   253,    63,    64,
+      65,    66,   254,   255,   256,   257,   258,     0,     0,     0,
+     259,    85,    86,    87,     0,     0,     0,     0,   220,   476,
+      63,    64,    65,    66,    67,    68,    69,    70,   477,    81,
+     478,   479,   480,    85,    86,    87,     0,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    96,    96,    98,    98,
+     136,    85,    86,    87,     0,     0,    99,    99,     0,     0,
+       0,     0,   172,     0,     0,     0,     0,     0,     0,     0,
+       0,    19,   468,     0,     0,     0,     0,     0,  -158,   260,
     -136,  -136,  -136,  -136,  -136,  -136,  -136,  -136,  -136,  -136,
-    -136,  -136,  -136,  -136,  -136,  -136,   437,   438,   439,   440,
-     441,   442,   443,   444,   445,   225,   227,   226,   230,   446,
-     525,   241,   242,   319,   320,   529,   602,   243,   322,   244,
-     324,   327,   330,   467,   175,   331,   332,   264,   344,   345,
-     350,   351,   489,   368,   641,   370,   372,   371,   392,   404,
-     310,   405,   406,   480,   481,   482,   410,   414,   418,   566,
-     419,   420,   422,   421,   424,   595,   423,   425,   507,   597,
-     514,   509,   427,   493,   459,  -136,   599,   510,   631,   634,
-     637,   511,   517,   537,   538,   615,   617,   618,   539,   600,
-     447,   601,   603,   530,   531,   532,   533,   534,   535,   536,
-     540,   541,  -163,   542,   543,   544,   610,   611,   546,   612,
-     548,   549,   550,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,   564,   565,   613,   567,   138,    86,    87,    88,
-     614,   619,   343,   643,   638,   653,    97,   642,    99,   639,
-     644,   654,   657,   660,   661,   215,   100,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    81,    82,    83,    84,
-      85,    86,    87,    88,   171,   321,   206,   218,   118,   395,
-     347,   335,   213,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,   463,   175,   175,   175,   464,   186,   465,   223,
-     596,   524,   604,   658,   616,   659,   640,   333,   528,   606,
-     620,   621,   622,   623,   624,   625,   626,   627,   628,   655,
-     629,   245,   518,   605,   326,   101,   102,   246,   515,    11,
-      12,    13,   247,   172,   487,     0,   248,    40,   249,   250,
-       0,     0,   251,    89,   252,     0,   253,     0,   254,     0,
-       0,     0,     0,   255,     0,    59,   256,   257,    64,    65,
-      66,    67,   258,   259,   260,   261,   262,     0,     0,     0,
-     263,    86,    87,    88,     0,     0,   224,     0,     0,     0,
-       0,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,     0,     0,     0,     0,     0,
-       0,    97,    97,    99,    99,     0,     0,     0,     0,     0,
-       0,   100,   100,     0,     0,     0,     0,   175,     0,     0,
-       0,     0,     0,     0,     0,   245,     0,   467,     0,     0,
-       0,    19,     0,    11,    12,    13,   247,     0,     0,   264,
-     248,    40,   249,   250,     0,   149,   251,     0,   252,     0,
-     253,     0,   254,     0,     0,     0,     0,   255,     0,    59,
-       0,   257,    64,    65,    66,    67,   258,   259,   260,   261,
-     262,     0,     0,     0,   263,    86,    87,    88,   569,   570,
-     571,   572,   573,   574,   575,   576,   577,   578,   579,   580,
-     581,   582,   150,   151,   152,   153,   154,   155,   156,   157,
-     158,   159,   160,   161,   162,   163,     0,     0,     0,     0,
-       0,     0,  -359,  -359,  -359,  -359,  -359,  -359,  -359,  -359,
-    -359,  -359,  -359,  -359,  -359,  -359,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    19,     0,   469,   470,   138,
-      86,    87,    88,   264,     0,     0,     0,     0,     0,     0,
-       0,     0,   583,     0,   584,   585,   586,   587,   588,   589,
-     590,   591,  -359,     0,     0,  -359,     0,     0,     0,     0,
-       0,  -359,   373,   374,   375,   376,   377,   378,   379,   380,
-     381,   382,   383,   384,   385,   386,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    81,    82,    83,    84,   138,
-      86,    87,    88,  -227,  -227,  -227,  -227,  -227,  -227,  -227,
+    -136,  -136,  -136,  -136,  -136,  -136,  -136,   571,   572,   573,
+     574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
+     584,   481,   482,   483,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    80,    81,    82,    83,    84,    85,    86,
+      87,  -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,
+    -363,  -363,  -363,  -363,  -363,   373,   374,   375,   376,   377,
+     378,   379,   380,   381,   382,   383,   384,   385,   386,     0,
+       0,     0,     0,     0,     0,     0,  -136,     0,     0,     0,
+       0,   585,     0,   586,   587,   588,   589,   590,   591,   592,
+     593,  -363,     0,     0,  -363,     0,     0,     0,     0,     0,
+    -363,     0,     0,     0,     0,     0,     0,     0,   387,     0,
+      88,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      80,    81,    82,    83,   136,    85,    86,    87,  -227,  -227,
     -227,  -227,  -227,  -227,  -227,  -227,  -227,  -227,  -227,  -227,
-       0,     0,     0,     0,     0,   387,  -228,  -228,  -228,  -228,
+    -227,  -227,  -227,  -227,  -227,  -228,  -228,  -228,  -228,  -228,
     -228,  -228,  -228,  -228,  -228,  -228,  -228,  -228,  -228,  -228,
-    -228,  -228,  -228,   352,   353,   354,   355,   356,   357,   358,
-     359,   360,   361,    82,   362,   363,   138,    86,    87,    88,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,   396,
-      82,    83,    84,   138,    86,    87,    88,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,   551,     0,   552,   553,
-     138,    86,    87,    88,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,   556,     0,   557,   558,   138,    86,    87,
-      88,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-     560,     0,   561,   562,   138,    86,    87,    88,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,     0,     0,   472,
-     473,   138,    86,    87,    88,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,     0,     0,   632,   633,   138,    86,
-      87,    88,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,     0,     0,   635,   636,   138,    86,    87,    88,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,   339,     0,
-       0,     0,   138,    86,    87,    88,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,   630,     0,     0,     0,   138,
-      86,    87,    88,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,   262,     0,     0,     0,   173,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,     0,     0,     0,     0,
-     173,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-     107,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      63,    64,    65,    66,    67,    68,    69,    70,   545
+    -228,  -228,   352,   353,   354,   355,   356,   357,   358,   359,
+     360,   361,    81,   362,   363,   136,    85,    86,    87,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,   397,    81,
+      82,    83,   136,    85,    86,    87,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,   553,     0,   554,   555,   136,
+      85,    86,    87,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,   558,     0,   559,   560,   136,    85,    86,    87,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,   562,
+       0,   563,   564,   136,    85,    86,    87,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,     0,     0,   470,   471,
+     136,    85,    86,    87,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,     0,     0,   473,   474,   136,    85,    86,
+      87,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+       0,     0,   637,   638,   136,    85,    86,    87,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,     0,     0,   640,
+     641,   136,    85,    86,    87,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,   635,     0,     0,     0,   136,    85,
+      86,    87,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,   464,     0,     0,     0,   465,     0,   466,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,   258,     0,     0,
+       0,   170,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,     0,     0,     0,     0,   170,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    80,    81,    82,    83,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,   106,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    62,    63,
+      64,    65,    66,    67,    68,    69,   547
 };
 
 static const yytype_int16 yycheck[] =
 {
-      17,    28,    96,    28,   119,   244,   156,    89,     9,   425,
-     250,    28,   229,   229,     9,    35,    35,   255,     9,   619,
-     233,    45,    39,   125,     9,    10,    11,   229,    13,    45,
-      35,    12,    35,     0,   247,   229,   229,   477,   478,   256,
-     256,   353,   354,   355,   356,   357,   358,     2,   488,   649,
-      31,    36,    37,   365,   256,   367,   296,     3,     4,     5,
-       6,    78,   256,   256,    10,    11,   260,    13,    15,    46,
-     264,    17,   229,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,   119,   229,    48,    33,    42,    34,    98,
-     284,   100,   128,   110,   111,   112,   113,   121,   192,   256,
-     123,   121,   119,   185,   123,   121,   208,    37,   111,   112,
-     113,   256,   362,   363,   229,   116,   366,   115,   116,   104,
-     147,   116,   147,   108,   127,   116,   111,    14,    35,    35,
-     147,    37,   117,   371,   446,   119,   111,   112,   113,   123,
-     255,   256,    29,    46,   128,    32,   161,   162,   163,   387,
-     244,   126,    38,    39,   119,    41,    35,   406,   104,   123,
-      46,   410,   108,   124,   125,   414,   183,   106,   107,   263,
-     387,   387,    35,   190,   201,   192,   119,    35,    46,    47,
-      48,    49,   376,   377,   278,    98,    99,    35,   101,   102,
-      97,    98,    99,   387,   101,   102,   103,    55,    56,    57,
+      17,    28,   117,    28,    95,   154,   239,    88,   224,     9,
+     246,    28,   426,   197,   224,   224,     9,     9,     2,   251,
+      35,    35,    39,   123,     9,    10,    11,    45,    13,    45,
+      12,   624,    15,   228,   224,   224,   252,   224,    35,    35,
+     256,     0,   252,   252,   260,   119,    35,   242,    37,    31,
+      33,    36,    37,    98,   128,   100,   292,    48,    42,    14,
+      77,   654,   252,   252,   280,   252,   115,   116,     3,     4,
+       5,     6,   124,   125,    29,    10,    11,    32,    13,   159,
+     160,   161,    17,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,   109,   110,   111,    46,    50,    46,   189,    34,
+     117,   182,   123,   121,   204,   121,    37,   121,   123,   224,
+     111,   112,   113,   119,   114,   111,   112,   113,   145,   104,
+     145,   114,   114,   108,    35,   126,   111,    35,   145,   478,
+     479,   127,   117,    46,    47,    35,   251,   252,    35,   371,
+     489,   119,   353,   354,   355,   356,   357,   358,   239,   119,
+     106,   107,    46,   123,   365,   387,   367,    46,   128,    46,
+     376,   377,    46,   180,    35,   643,   644,   121,   259,   104,
+     187,   387,   189,   108,    35,   121,    46,   387,   387,    38,
+      39,    40,    41,   274,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,   114,    35,
+      97,    98,    99,   387,   101,   102,   103,   224,   424,   407,
+     426,    38,    39,   411,    41,    35,   307,   415,   123,    46,
+      38,    39,   239,    41,   224,    55,    56,    57,    58,    59,
+      60,   467,   123,   121,   251,   252,   447,   651,   123,   122,
+     257,   457,   458,   459,   362,   363,   121,   274,   366,   274,
+     124,   120,   252,   280,   121,   280,   371,   274,   129,   125,
+     131,   132,   133,   134,   135,   136,   137,   138,   120,   119,
+     121,   119,   387,   119,     1,    46,    46,   122,   122,    35,
+       7,   122,     9,    10,    11,    12,    35,    35,    46,    16,
+      17,    18,    19,    48,     8,    22,   313,    24,    49,    26,
+     121,    28,   109,   120,   321,   322,    33,   388,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+     120,   120,   105,    50,    51,    52,    53,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    35,   423,    35,   119,    35,    35,   428,   497,    35,
+     119,    35,    35,   370,   371,    98,    99,    35,   101,   102,
+      35,    35,   387,   128,    35,   122,   110,    35,    35,    20,
+     387,    21,   605,    30,    35,    35,    35,    35,   594,   595,
+     596,   462,   122,   120,   111,    54,   121,    97,   122,   480,
+      45,   122,   119,   484,   122,   120,    23,   121,    54,    25,
+     491,    45,    45,    45,    45,    45,    45,   522,   523,   524,
+      45,   492,    45,   494,   431,   432,   433,   434,   435,   436,
+     437,    36,    35,   119,    35,    35,    35,    35,    35,   446,
+      35,   448,   449,   450,   121,   651,   121,    35,    15,   121,
+     120,    27,    35,   460,   461,   231,   463,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,   484,   180,   484,
+      35,   114,   174,   612,   187,    52,   274,   484,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,   145,   510,   252,   178,   484,   507,   417,   654,
+     507,   523,   659,   510,   427,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,   522,   523,   524,    50,    51,
+      52,    53,   250,   409,   605,   413,    40,   511,   513,   600,
+      30,    33,   539,   540,   541,   542,   543,   544,   545,   546,
+     547,     1,   549,   123,   649,   244,    -1,    -1,    -1,     9,
+      10,    11,    12,    -1,    -1,    -1,    16,    17,    18,    19,
+      -1,    -1,    22,    -1,    24,    -1,    26,    -1,    28,    -1,
+      -1,    -1,    -1,    33,    -1,    35,    -1,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    -1,    -1,    -1,
+      50,    51,    52,    53,    -1,    -1,    -1,    -1,   605,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    -1,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,   643,   644,   643,   644,
+      50,    51,    52,    53,    -1,    -1,   643,   644,    -1,    -1,
+      -1,    -1,   649,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   111,   659,    -1,    -1,    -1,    -1,    -1,    35,   119,
+      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,    46,   229,    38,    39,    40,    41,   311,    55,    56,
-      57,    58,    59,    60,   638,   639,   466,   244,   229,   423,
-     646,   425,    46,    46,    46,    35,   121,    46,   255,   256,
-     114,    35,   123,    35,   261,   121,   123,   125,   123,   122,
-     121,   278,   124,   278,   120,   256,   371,   284,   120,   284,
-     121,   278,   456,   457,   458,   121,   119,   119,   119,    46,
-      46,   129,   387,   131,   132,   133,   134,   135,   136,   137,
-     138,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,   122,   122,
-     317,   122,   122,    35,    35,    46,   388,    35,   325,    37,
+      68,   129,   130,   131,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,    -1,    -1,
+      -1,   129,    -1,   131,   132,   133,   134,   135,   136,   137,
+     138,   119,    -1,    -1,   122,    -1,    -1,    -1,    -1,    -1,
+     128,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   122,    -1,
+     123,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    37,
       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
       48,    49,    50,    51,    52,    53,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    48,    46,    49,     8,    50,
-     422,   120,   120,   109,   105,   427,   496,   120,    35,   121,
-      35,   119,    35,   370,   371,    35,    35,   119,    35,    35,
-      35,    35,   387,    35,   603,   128,    35,   122,   110,    35,
-     387,    35,    20,   129,   130,   131,    21,    30,    35,   461,
-      35,    35,   122,    35,   120,   479,    54,   121,    97,   483,
-      23,    54,   122,   122,    45,   123,   490,   120,   592,   593,
-     594,   121,    25,    45,    45,   520,   521,   522,    45,   491,
-     121,   493,   119,   430,   431,   432,   433,   434,   435,   436,
-      45,    45,    35,    45,    45,    45,    35,    35,   445,    35,
-     447,   448,   449,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,   459,   460,    35,   462,    50,    51,    52,    53,
-      35,    35,   646,    35,   121,   120,   483,   607,   483,   121,
-     121,    15,    27,    35,    35,   183,   483,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,   116,   236,   177,   190,    52,   506,
-     278,   256,   181,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,   520,   521,   522,    50,   147,    52,   603,
-     483,   416,   506,   649,   521,   654,   598,   254,   426,   511,
-     537,   538,   539,   540,   541,   542,   543,   544,   545,   644,
-     547,     1,   412,   509,   248,    30,    33,     7,   408,     9,
-      10,    11,    12,    35,   387,    -1,    16,    17,    18,    19,
-      -1,    -1,    22,   123,    24,    -1,    26,    -1,    28,    -1,
-      -1,    -1,    -1,    33,    -1,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    -1,    -1,    -1,
-      50,    51,    52,    53,    -1,    -1,   603,    -1,    -1,    -1,
-      -1,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,
-      -1,   638,   639,   638,   639,    -1,    -1,    -1,    -1,    -1,
-      -1,   638,   639,    -1,    -1,    -1,    -1,   644,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,     1,    -1,   654,    -1,    -1,
-      -1,   111,    -1,     9,    10,    11,    12,    -1,    -1,   119,
-      16,    17,    18,    19,    -1,    36,    22,    -1,    24,    -1,
-      26,    -1,    28,    -1,    -1,    -1,    -1,    33,    -1,    35,
-      -1,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    -1,    -1,    -1,    50,    51,    52,    53,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    83,    84,    85,    86,    87,    88,    89,    90,
-      91,    92,    93,    94,    95,    96,    -1,    -1,    -1,    -1,
-      -1,    -1,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,   111,    -1,    48,    49,    50,
-      51,    52,    53,   119,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   129,    -1,   131,   132,   133,   134,   135,   136,
-     137,   138,   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,
+      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,    52,    53,
-      -1,    -1,    -1,    -1,    -1,   122,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      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,    48,    49,
+      -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,    51,    52,
+      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,    37,    38,
+      -1,    -1,    48,    49,    50,    51,    52,    53,    37,    38,
       39,    40,    41,    42,    43,    44,    45,    -1,    -1,    48,
       49,    50,    51,    52,    53,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    -1,    -1,    48,    49,    50,    51,
+      42,    43,    44,    45,    46,    -1,    -1,    -1,    50,    51,
       52,    53,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    -1,    -1,    48,    49,    50,    51,    52,    53,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    -1,
-      -1,    -1,    50,    51,    52,    53,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    -1,    -1,    -1,    50,
-      51,    52,    53,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    -1,    -1,    -1,    50,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    -1,    -1,    -1,    -1,
-      50,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      37,    38,    39,    40,    41,    42,    43,    44,    45
+      45,    46,    -1,    -1,    -1,    50,    -1,    52,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    -1,    -1,
+      -1,    50,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    -1,    -1,    -1,    -1,    50,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    37,    38,
+      39,    40,    41,    42,    43,    44,    45
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   115,   116,   140,    35,   142,   298,   299,   141,   142,
+       0,   115,   116,   140,    35,   142,   301,   302,   141,   142,
        0,     9,    10,    11,    13,    36,    37,   104,   108,   111,
      117,   145,   146,   147,   148,   159,   163,   189,   204,   230,
-     300,   301,   302,   304,   305,   306,     3,     4,     5,     6,
+     303,   304,   305,   307,   308,   309,     3,     4,     5,     6,
       17,    34,   143,   144,   145,   158,   159,   160,   161,   162,
-     163,   167,   169,   280,   282,    46,    48,    46,   123,    35,
-     197,   303,   306,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,   293,   294,    37,   119,   190,    35,   119,    35,
-      35,    46,    47,    48,    49,    50,    51,    52,    53,   123,
-     206,   207,   209,   210,   211,   212,   249,   286,   287,   292,
-     293,   301,   303,   171,    46,    46,    46,    46,   170,   293,
-      38,    39,    41,    46,   284,    46,    35,   142,   171,   121,
-      46,   164,   165,   166,   114,   111,   112,   113,   126,   191,
-     192,   193,   194,    35,   149,   150,   151,   293,    50,   213,
-     285,   286,   290,   291,   292,   293,    35,   121,   212,    36,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,   172,   122,   293,   293,   293,   293,
-     121,   144,    35,    50,   249,   293,   124,   125,   190,   195,
-     120,   121,   120,   121,   124,   125,   209,   119,   277,   278,
-     119,   277,   119,   173,   278,   278,   278,    46,   122,   122,
-     122,   122,    46,   177,   178,    35,   166,    35,   111,   112,
-     113,   127,   196,   193,    35,   151,   285,    46,   170,    46,
-     174,   175,   176,   212,   293,    48,    49,    46,   286,   185,
-       8,   179,   190,   106,   107,   152,   153,   154,   155,   156,
-     157,   120,   120,   120,   121,     1,     7,    12,    16,    18,
-      19,    22,    24,    26,    28,    33,    36,    37,    42,    43,
-      44,    45,    46,    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,   283,   290,
-     293,   294,    38,    39,    40,    41,   180,   289,   289,   109,
-     105,   154,    35,   176,    35,   289,   284,   119,   260,   260,
-      35,    35,    35,   250,   244,   187,   290,   293,   212,    46,
-     251,   252,   253,   290,    35,    35,   205,   206,   208,   212,
+     163,   167,   169,   280,    46,    48,    46,   123,    35,   197,
+     306,   309,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,   296,   297,    37,   119,   190,    35,   119,    35,    35,
+      46,    47,    48,    49,    50,    51,    52,    53,   123,   206,
+     207,   209,   210,   211,   212,   249,   289,   290,   295,   296,
+     304,   306,   171,    46,    46,    46,    46,   170,   296,    38,
+      39,    41,   285,    46,    35,   142,   171,   121,    46,   164,
+     165,   166,   114,   111,   112,   113,   126,   191,   192,   193,
+     194,    35,   149,   150,   151,   296,    50,   213,   288,   289,
+     293,   294,   295,   296,    35,   121,   212,    36,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,   172,   122,   296,   296,   296,   121,   144,    35,
+      50,   249,   296,   124,   125,   190,   195,   120,   121,   120,
+     121,   124,   125,   209,   119,   277,   278,   119,   277,   119,
+     173,   278,   278,   278,    46,   122,   122,   122,    46,   177,
+     178,    35,   166,    35,   111,   112,   113,   127,   196,   193,
+      35,   151,   288,    46,   170,    46,   174,   175,   176,   212,
+     296,    48,    49,   290,   185,     8,   179,   190,   106,   107,
+     152,   153,   154,   155,   156,   157,   120,   120,   120,   121,
+       1,     7,    12,    16,    17,    18,    19,    22,    24,    26,
+      28,    33,    36,    37,    42,    43,    44,    45,    46,    50,
+     119,   159,   168,   186,   187,   188,   189,   197,   198,   199,
+     200,   201,   202,   203,   204,   214,   215,   217,   219,   220,
+     223,   225,   226,   230,   231,   232,   233,   242,   243,   244,
+     245,   246,   247,   249,   250,   256,   257,   258,   259,   267,
+     268,   279,   281,   282,   284,   293,   296,   297,    38,    39,
+      40,    41,   180,   292,   292,   109,   105,   154,    35,   176,
+      35,   292,    46,   283,   285,   286,   283,   119,   260,   260,
+      35,    35,    35,   250,   244,   187,   293,   296,   212,    46,
+     251,   252,   253,   293,    35,    35,   205,   206,   208,   212,
       35,    35,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    48,    49,   221,   286,   290,   292,    35,   260,
+      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,   297,   212,
-     181,   293,   110,   227,   228,   293,    46,   261,   262,   263,
-     264,   265,   266,   285,    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,   288,   288,   288,    45,
-     224,   288,   224,    46,    50,    52,   248,   293,   244,    48,
-      49,   290,    48,    49,   290,    37,    46,    48,    49,    50,
-     129,   130,   131,   204,   216,   218,   244,   287,   290,   292,
-     294,   295,   285,   122,    35,    97,    98,    99,   101,   102,
-     103,   182,   183,   184,   255,    35,   121,    97,   229,    54,
-     120,   121,   275,   265,    23,   271,   265,    25,   274,   265,
-      14,    29,    32,   237,   236,   285,   290,   253,   255,   285,
-     293,   293,   293,   293,   293,   293,   293,    45,    45,    45,
-      45,    45,    45,    45,    45,    45,   293,   224,   293,   293,
-     293,    46,    48,    49,   222,   290,    46,    48,    49,   290,
-      46,    48,    49,   290,   293,   293,   285,   293,   260,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,   129,   131,   132,   133,   134,   135,   136,
-     137,   138,   296,   296,   296,   212,   210,   212,   296,   212,
-     285,   285,   277,   119,   228,   266,   263,    98,   100,   276,
-      35,    35,    35,    35,    35,   249,   247,   249,   249,    35,
-     293,   293,   293,   293,   293,   293,   293,   293,   293,   293,
-      46,   290,    48,    49,   290,    48,    49,   290,   121,   121,
-     285,   176,   277,    35,   121,   238,    31,   226,   239,   240,
-     241,   207,   207,   120,    15,   249,   253,    27,   241,   248,
-      35,    35
+      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)
@@ -2616,22 +2620,22 @@
   switch (yyn)
     {
         case 4:
-#line 567 "pir.y"
+#line 570 "pir.y"
     { fixup_global_labels(lexer); ;}
     break;
 
   case 20:
-#line 598 "pir.y"
+#line 601 "pir.y"
     { new_macro_const(lexer->macros, (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].sval), yypirget_lineno(yyscanner)); ;}
     break;
 
   case 21:
-#line 604 "pir.y"
+#line 607 "pir.y"
     { /* fprintf(stderr, "macro body: [%s]\n", CURRENT_MACRO(lexer)->body);*/ ;}
     break;
 
   case 22:
-#line 608 "pir.y"
+#line 611 "pir.y"
     {
                           new_macro(lexer->macros, (yyvsp[(2) - (2)].sval), yypirget_lineno(yyscanner), TRUE,
                                     lexer->macro_size);
@@ -2639,17 +2643,17 @@
     break;
 
   case 27:
-#line 623 "pir.y"
+#line 626 "pir.y"
     { add_macro_param(CURRENT_MACRO(lexer), (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 35:
-#line 642 "pir.y"
+#line 645 "pir.y"
     { store_macro_string(CURRENT_MACRO(lexer), "%s\n", (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 36:
-#line 646 "pir.y"
+#line 649 "pir.y"
     {
                           store_macro_string(CURRENT_MACRO(lexer), ".local %s %s\n",
                                              pir_type_names[(yyvsp[(2) - (3)].ival)], (yyvsp[(3) - (3)].sval));
@@ -2657,152 +2661,152 @@
     break;
 
   case 37:
-#line 657 "pir.y"
+#line 660 "pir.y"
     { load_library(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 38:
-#line 661 "pir.y"
+#line 664 "pir.y"
     { yypirset_lineno ((yyvsp[(2) - (2)].ival), yyscanner); ;}
     break;
 
   case 39:
-#line 663 "pir.y"
+#line 666 "pir.y"
     { lexer->filename = (yyvsp[(2) - (2)].sval); ;}
     break;
 
   case 40:
-#line 667 "pir.y"
+#line 670 "pir.y"
     { annotate(lexer, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 41:
-#line 673 "pir.y"
+#line 676 "pir.y"
     { set_hll(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 42:
-#line 677 "pir.y"
+#line 680 "pir.y"
     { set_hll_map(lexer, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 43:
-#line 681 "pir.y"
+#line 684 "pir.y"
     { set_namespace(lexer, (yyvsp[(3) - (4)].key)); ;}
     break;
 
   case 44:
-#line 685 "pir.y"
+#line 688 "pir.y"
     { (yyval.key) = NULL; ;}
     break;
 
   case 45:
-#line 687 "pir.y"
+#line 690 "pir.y"
     { (yyval.key) = (yyvsp[(1) - (1)].key); ;}
     break;
 
   case 46:
-#line 691 "pir.y"
+#line 694 "pir.y"
     { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 47:
-#line 693 "pir.y"
+#line 696 "pir.y"
     { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 48:
-#line 697 "pir.y"
+#line 700 "pir.y"
     { (yyval.expr) = expr_from_string(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 50:
-#line 707 "pir.y"
+#line 710 "pir.y"
     { close_sub(lexer); ;}
     break;
 
   case 51:
-#line 711 "pir.y"
+#line 714 "pir.y"
     { new_subr(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 56:
-#line 723 "pir.y"
+#line 726 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_ANON);;}
     break;
 
   case 57:
-#line 725 "pir.y"
+#line 728 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_INIT); ;}
     break;
 
   case 58:
-#line 727 "pir.y"
+#line 730 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_LOAD); ;}
     break;
 
   case 59:
-#line 729 "pir.y"
+#line 732 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_MAIN); ;}
     break;
 
   case 60:
-#line 731 "pir.y"
+#line 734 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_LEX); ;}
     break;
 
   case 61:
-#line 733 "pir.y"
+#line 736 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_POSTCOMP); ;}
     break;
 
   case 62:
-#line 735 "pir.y"
+#line 738 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_IMMEDIATE); ;}
     break;
 
   case 63:
-#line 737 "pir.y"
+#line 740 "pir.y"
     { set_sub_flag(lexer, PIRC_SUB_FLAG_MULTI); ;}
     break;
 
   case 64:
-#line 739 "pir.y"
+#line 742 "pir.y"
     { set_sub_outer(lexer, (yyvsp[(3) - (4)].sval)); ;}
     break;
 
   case 65:
-#line 741 "pir.y"
+#line 744 "pir.y"
     { set_sub_methodname(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 66:
-#line 743 "pir.y"
+#line 746 "pir.y"
     { set_sub_vtable(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 67:
-#line 745 "pir.y"
+#line 748 "pir.y"
     { set_sub_subid(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 68:
-#line 747 "pir.y"
+#line 750 "pir.y"
     { set_sub_instanceof(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 69:
-#line 749 "pir.y"
+#line 752 "pir.y"
     { set_sub_nsentry(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 70:
-#line 753 "pir.y"
+#line 756 "pir.y"
     { set_sub_multi_types(lexer, (yyvsp[(2) - (3)].expr)); ;}
     break;
 
   case 71:
-#line 757 "pir.y"
+#line 760 "pir.y"
     {
                           CURRENT_SUB(lexer)->info.num_multi_types = 1;
                           /* n=1 means :multi() -- without any types. */
@@ -2810,12 +2814,12 @@
     break;
 
   case 72:
-#line 762 "pir.y"
+#line 765 "pir.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 73:
-#line 766 "pir.y"
+#line 769 "pir.y"
     {
                           CURRENT_SUB(lexer)->info.num_multi_types = 2;
                           /* start counting multi types; always 1 higher than actual number
@@ -2827,7 +2831,7 @@
     break;
 
   case 74:
-#line 775 "pir.y"
+#line 778 "pir.y"
     {
                           ++CURRENT_SUB(lexer)->info.num_multi_types;
                           /* link the multi types in reverse other. That's fine,
@@ -2839,22 +2843,22 @@
     break;
 
   case 75:
-#line 786 "pir.y"
+#line 789 "pir.y"
     { (yyval.expr) = expr_from_ident(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 76:
-#line 788 "pir.y"
+#line 791 "pir.y"
     { (yyval.expr) = expr_from_string(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 77:
-#line 790 "pir.y"
+#line 793 "pir.y"
     { (yyval.expr) = expr_from_key(lexer, (yyvsp[(1) - (1)].key)); ;}
     break;
 
   case 78:
-#line 794 "pir.y"
+#line 797 "pir.y"
     {
                            /* if there are parameters, then emit a get_params instruction. */
                            if ((yyvsp[(1) - (1)].uval) > 0)
@@ -2863,12 +2867,12 @@
     break;
 
   case 79:
-#line 802 "pir.y"
+#line 805 "pir.y"
     { (yyval.uval) = 0; ;}
     break;
 
   case 80:
-#line 804 "pir.y"
+#line 807 "pir.y"
     {
                           /* if the :named flag was set, there's an extra
                            * constant string argument for the name. count that too.
@@ -2882,27 +2886,27 @@
     break;
 
   case 81:
-#line 817 "pir.y"
+#line 820 "pir.y"
     { (yyval.targ) = set_param_flag(lexer, (yyvsp[(2) - (4)].targ), (yyvsp[(3) - (4)].ival)); ;}
     break;
 
   case 82:
-#line 821 "pir.y"
+#line 824 "pir.y"
     { (yyval.targ) = add_param(lexer, (yyvsp[(1) - (2)].ival), (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 83:
-#line 825 "pir.y"
+#line 828 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 84:
-#line 827 "pir.y"
+#line 830 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 88:
-#line 836 "pir.y"
+#line 839 "pir.y"
     { (yyval.ival) = TARGET_FLAG_INVOCANT;
                            /* XXX handle multi_type */
 
@@ -2910,12 +2914,12 @@
     break;
 
   case 89:
-#line 843 "pir.y"
+#line 846 "pir.y"
     { (yyval.ival) = TARGET_FLAG_UNIQUE_REG; ;}
     break;
 
   case 91:
-#line 850 "pir.y"
+#line 853 "pir.y"
     {
                          ++lexer->stmt_counter;
                          /* increment the logical statement counter; a statement can be
@@ -2926,37 +2930,37 @@
     break;
 
   case 92:
-#line 860 "pir.y"
+#line 863 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
   case 110:
-#line 888 "pir.y"
+#line 891 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (3)].mval), (yyvsp[(2) - (3)].pval)); ;}
     break;
 
   case 111:
-#line 892 "pir.y"
+#line 895 "pir.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 112:
-#line 894 "pir.y"
+#line 897 "pir.y"
     { (yyval.pval) = (yyvsp[(2) - (3)].pval); ;}
     break;
 
   case 113:
-#line 898 "pir.y"
+#line 901 "pir.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 115:
-#line 903 "pir.y"
+#line 906 "pir.y"
     { (yyval.pval) = new_macro_param((yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 116:
-#line 905 "pir.y"
+#line 908 "pir.y"
     {
                           macro_param *param = new_macro_param((yyvsp[(3) - (3)].sval));
                           param->next = (yyvsp[(1) - (3)].pval);
@@ -2965,7 +2969,7 @@
     break;
 
   case 117:
-#line 913 "pir.y"
+#line 916 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                           if (sym == NULL) {
@@ -2976,22 +2980,22 @@
     break;
 
   case 119:
-#line 922 "pir.y"
+#line 925 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 121:
-#line 927 "pir.y"
+#line 930 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
   case 122:
-#line 932 "pir.y"
+#line 935 "pir.y"
     { (yyval.sval) = ""; ;}
     break;
 
   case 123:
-#line 934 "pir.y"
+#line 937 "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));
@@ -3001,17 +3005,17 @@
     break;
 
   case 127:
-#line 946 "pir.y"
+#line 949 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 128:
-#line 954 "pir.y"
+#line 957 "pir.y"
     { set_instr(lexer, NULL); ;}
     break;
 
   case 130:
-#line 962 "pir.y"
+#line 965 "pir.y"
     {
                            if (lexer->parse_errors > MAX_NUM_ERRORS)
                                panic(lexer, "Too many errors. Compilation aborted.\n");
@@ -3021,7 +3025,7 @@
     break;
 
   case 131:
-#line 971 "pir.y"
+#line 974 "pir.y"
     {
                            set_instrf(lexer, "null", "%T", (yyvsp[(2) - (3)].targ));
                            get_opinfo(lexer);
@@ -3029,7 +3033,7 @@
     break;
 
   case 132:
-#line 978 "pir.y"
+#line 981 "pir.y"
     {
                            set_instrf(lexer, "get_results", "%T", (yyvsp[(2) - (3)].targ));
                            get_opinfo(lexer);
@@ -3037,7 +3041,7 @@
     break;
 
   case 136:
-#line 992 "pir.y"
+#line 995 "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.
                             */
@@ -3047,7 +3051,7 @@
     break;
 
   case 137:
-#line 1001 "pir.y"
+#line 1004 "pir.y"
     { /* when this rule is activated, the initial identifier must
                            * be a parrot op.
                            */
@@ -3057,7 +3061,7 @@
     break;
 
   case 143:
-#line 1019 "pir.y"
+#line 1022 "pir.y"
     {
                          /* the "instruction" that was set now appears to be
                           * an identifier; get the name, and check its type.
@@ -3094,22 +3098,22 @@
     break;
 
   case 144:
-#line 1055 "pir.y"
+#line 1058 "pir.y"
     { push_operand(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 145:
-#line 1057 "pir.y"
+#line 1060 "pir.y"
     { push_operand(lexer, expr_from_key(lexer, (yyvsp[(1) - (1)].key))); ;}
     break;
 
   case 146:
-#line 1061 "pir.y"
+#line 1064 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
   case 147:
-#line 1063 "pir.y"
+#line 1066 "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));
@@ -3117,17 +3121,17 @@
     break;
 
   case 148:
-#line 1068 "pir.y"
+#line 1071 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 149:
-#line 1070 "pir.y"
+#line 1073 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 150:
-#line 1074 "pir.y"
+#line 1077 "pir.y"
     {
                            /* if $1 is a register, just return that */
                            if (TEST_FLAG((yyvsp[(1) - (2)].targ)->flags, TARGET_FLAG_IS_REG))
@@ -3151,22 +3155,22 @@
     break;
 
   case 151:
-#line 1097 "pir.y"
+#line 1100 "pir.y"
     { (yyval.key) = (yyvsp[(2) - (3)].key); ;}
     break;
 
   case 152:
-#line 1101 "pir.y"
+#line 1104 "pir.y"
     { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 153:
-#line 1103 "pir.y"
+#line 1106 "pir.y"
     { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 154:
-#line 1112 "pir.y"
+#line 1115 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (6)].expr));
@@ -3180,7 +3184,7 @@
     break;
 
   case 155:
-#line 1123 "pir.y"
+#line 1126 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (4)].expr));
@@ -3195,7 +3199,7 @@
     break;
 
   case 156:
-#line 1135 "pir.y"
+#line 1138 "pir.y"
     {
                           unshift_operand(lexer, expr_from_key(lexer, (yyvsp[(4) - (6)].key)));
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (6)].targ)));
@@ -3206,7 +3210,7 @@
     break;
 
   case 160:
-#line 1152 "pir.y"
+#line 1155 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3218,7 +3222,7 @@
     break;
 
   case 161:
-#line 1161 "pir.y"
+#line 1164 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 0.0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3230,7 +3234,7 @@
     break;
 
   case 162:
-#line 1170 "pir.y"
+#line 1173 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%C", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].cval));
                           get_opinfo(lexer);
@@ -3238,7 +3242,7 @@
     break;
 
   case 163:
-#line 1175 "pir.y"
+#line 1178 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
@@ -3246,7 +3250,7 @@
     break;
 
   case 164:
-#line 1180 "pir.y"
+#line 1183 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (3)].sval));
                           if (sym) {
@@ -3270,7 +3274,7 @@
     break;
 
   case 165:
-#line 1201 "pir.y"
+#line 1204 "pir.y"
     {
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (3)].targ)));
                           get_opinfo(lexer);
@@ -3278,7 +3282,7 @@
     break;
 
   case 166:
-#line 1206 "pir.y"
+#line 1209 "pir.y"
     {
                           /*   $P0 = foo ["bar"]    # PIR style
                            *
@@ -3322,7 +3326,7 @@
     break;
 
   case 167:
-#line 1247 "pir.y"
+#line 1250 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (4)].sval));
                           target *t;
@@ -3343,7 +3347,7 @@
     break;
 
   case 168:
-#line 1265 "pir.y"
+#line 1268 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(3) - (4)].ival));
                           set_target_key(preg, (yyvsp[(4) - (4)].key));
@@ -3353,7 +3357,7 @@
     break;
 
   case 169:
-#line 1272 "pir.y"
+#line 1275 "pir.y"
     {
                           set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%T%E", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].expr));
                           get_opinfo(lexer);
@@ -3361,7 +3365,7 @@
     break;
 
   case 170:
-#line 1277 "pir.y"
+#line 1280 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3375,7 +3379,7 @@
     break;
 
   case 171:
-#line 1288 "pir.y"
+#line 1291 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3389,7 +3393,7 @@
     break;
 
   case 172:
-#line 1299 "pir.y"
+#line 1302 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3403,7 +3407,7 @@
     break;
 
   case 173:
-#line 1310 "pir.y"
+#line 1313 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3417,7 +3421,7 @@
     break;
 
   case 174:
-#line 1321 "pir.y"
+#line 1324 "pir.y"
     {
                           set_instrf(lexer, "add", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
@@ -3425,7 +3429,7 @@
     break;
 
   case 175:
-#line 1326 "pir.y"
+#line 1329 "pir.y"
     {
                           set_instrf(lexer, "sub", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
@@ -3433,7 +3437,7 @@
     break;
 
   case 176:
-#line 1331 "pir.y"
+#line 1334 "pir.y"
     {
                           set_instrf(lexer, (yyvsp[(3) - (4)].sval), "%T%E", (yyvsp[(1) - (4)].targ), (yyvsp[(4) - (4)].expr));
                           get_opinfo(lexer);
@@ -3441,7 +3445,7 @@
     break;
 
   case 177:
-#line 1336 "pir.y"
+#line 1339 "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));
@@ -3454,7 +3458,7 @@
     break;
 
   case 178:
-#line 1346 "pir.y"
+#line 1349 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (4)].sval));
                           target *t;
@@ -3476,7 +3480,7 @@
     break;
 
   case 179:
-#line 1365 "pir.y"
+#line 1368 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (4)].ival));
                           set_target_key(preg, (yyvsp[(2) - (4)].key));
@@ -3486,97 +3490,97 @@
     break;
 
   case 180:
-#line 1399 "pir.y"
+#line 1402 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%i%T", (yyvsp[(1) - (3)].ival), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 181:
-#line 1401 "pir.y"
+#line 1404 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%n%T", (yyvsp[(1) - (3)].dval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 182:
-#line 1403 "pir.y"
+#line 1406 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%s%T", (yyvsp[(1) - (3)].sval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 183:
-#line 1405 "pir.y"
+#line 1408 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_s_s(yyscanner, (yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval))); ;}
     break;
 
   case 184:
-#line 1407 "pir.y"
+#line 1410 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_i_i(yyscanner, (yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival))); ;}
     break;
 
   case 185:
-#line 1409 "pir.y"
+#line 1412 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_n_n(yyscanner, (yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval))); ;}
     break;
 
   case 186:
-#line 1411 "pir.y"
+#line 1414 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_i_n(yyscanner, (yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval))); ;}
     break;
 
   case 187:
-#line 1413 "pir.y"
+#line 1416 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_n_i(yyscanner, (yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival))); ;}
     break;
 
   case 188:
-#line 1418 "pir.y"
+#line 1421 "pir.y"
     { get_opinfo(lexer); ;}
     break;
 
   case 189:
-#line 1427 "pir.y"
+#line 1430 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, (yyvsp[(3) - (5)].sval), (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 190:
-#line 1429 "pir.y"
+#line 1432 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "int", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 191:
-#line 1431 "pir.y"
+#line 1434 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "num", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 192:
-#line 1433 "pir.y"
+#line 1436 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "pmc", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 193:
-#line 1435 "pir.y"
+#line 1438 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "string", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 194:
-#line 1437 "pir.y"
+#line 1440 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "if", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 195:
-#line 1439 "pir.y"
+#line 1442 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "unless", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 196:
-#line 1441 "pir.y"
+#line 1444 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "goto", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 197:
-#line 1443 "pir.y"
+#line 1446 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "null", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 198:
-#line 1445 "pir.y"
+#line 1448 "pir.y"
     {
                           int istrue = evaluate_c(lexer, (yyvsp[(2) - (4)].cval));
                           /* if "unless", invert the true-ness */
@@ -3591,7 +3595,7 @@
     break;
 
   case 199:
-#line 1457 "pir.y"
+#line 1460 "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));
@@ -3599,67 +3603,67 @@
     break;
 
   case 200:
-#line 1462 "pir.y"
+#line 1465 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 201:
-#line 1464 "pir.y"
+#line 1467 "pir.y"
     { set_instrf(lexer, (yyvsp[(1) - (4)].ival) ? "unless" : "if", "%T%I", (yyvsp[(2) - (4)].targ), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 202:
-#line 1466 "pir.y"
+#line 1469 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "int", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 203:
-#line 1468 "pir.y"
+#line 1471 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "num", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 204:
-#line 1470 "pir.y"
+#line 1473 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "pmc", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 205:
-#line 1472 "pir.y"
+#line 1475 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "string", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 206:
-#line 1474 "pir.y"
+#line 1477 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "if", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 207:
-#line 1476 "pir.y"
+#line 1479 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "unless", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 208:
-#line 1478 "pir.y"
+#line 1481 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 209:
-#line 1480 "pir.y"
+#line 1483 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 210:
-#line 1482 "pir.y"
+#line 1485 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 211:
-#line 1484 "pir.y"
+#line 1487 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 212:
-#line 1486 "pir.y"
+#line 1489 "pir.y"
     {
                           if ((yyvsp[(2) - (4)].ival) == COMPUTE_DURING_RUNTIME) {
                              if ((yyvsp[(1) - (4)].ival) == NEED_INVERT_OPNAME) /* "unless" */
@@ -3687,7 +3691,7 @@
     break;
 
   case 213:
-#line 1517 "pir.y"
+#line 1520 "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
@@ -3716,7 +3720,7 @@
     break;
 
   case 214:
-#line 1543 "pir.y"
+#line 1546 "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));
@@ -3727,7 +3731,7 @@
     break;
 
   case 215:
-#line 1551 "pir.y"
+#line 1554 "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));
@@ -3739,7 +3743,7 @@
     break;
 
   case 216:
-#line 1560 "pir.y"
+#line 1563 "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));
@@ -3751,32 +3755,32 @@
     break;
 
   case 217:
-#line 1569 "pir.y"
+#line 1572 "pir.y"
     { (yyval.ival) = evaluate_i_i((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
   case 218:
-#line 1571 "pir.y"
+#line 1574 "pir.y"
     { (yyval.ival) = evaluate_i_n((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
   case 219:
-#line 1573 "pir.y"
+#line 1576 "pir.y"
     { (yyval.ival) = evaluate_n_i((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
   case 220:
-#line 1575 "pir.y"
+#line 1578 "pir.y"
     { (yyval.ival) = evaluate_n_n((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
   case 221:
-#line 1577 "pir.y"
+#line 1580 "pir.y"
     { (yyval.ival) = evaluate_s_s((yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval)); ;}
     break;
 
   case 222:
-#line 1581 "pir.y"
+#line 1584 "pir.y"
     {
                           yypirerror(yyscanner, lexer, "cannot compare string to %s",
                                      (yyvsp[(3) - (3)].ival) == INT_TYPE ? "integer" : "number");
@@ -3784,37 +3788,37 @@
     break;
 
   case 223:
-#line 1586 "pir.y"
+#line 1589 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare integer to string"); ;}
     break;
 
   case 224:
-#line 1588 "pir.y"
+#line 1591 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare number to string"); ;}
     break;
 
   case 225:
-#line 1592 "pir.y"
+#line 1595 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
   case 226:
-#line 1593 "pir.y"
+#line 1596 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
   case 227:
-#line 1596 "pir.y"
+#line 1599 "pir.y"
     { (yyval.ival) = DONT_INVERT_OPNAME; /* no need to invert */ ;}
     break;
 
   case 228:
-#line 1597 "pir.y"
+#line 1600 "pir.y"
     { (yyval.ival) = NEED_INVERT_OPNAME; /* yes, invert opname */ ;}
     break;
 
   case 231:
-#line 1605 "pir.y"
+#line 1608 "pir.y"
     {
                           set_instrf(lexer, "branch", "%I", (yyvsp[(2) - (3)].sval));
                           set_op_labelflag(lexer, BIT(0)); /* bit 0 means: "1 << 0" */
@@ -3823,37 +3827,37 @@
     break;
 
   case 232:
-#line 1613 "pir.y"
+#line 1616 "pir.y"
     { declare_local(lexer, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].symb)); ;}
     break;
 
   case 233:
-#line 1617 "pir.y"
+#line 1620 "pir.y"
     { (yyval.symb) = (yyvsp[(1) - (1)].symb); ;}
     break;
 
   case 234:
-#line 1619 "pir.y"
+#line 1622 "pir.y"
     { (yyval.symb) = add_local((yyvsp[(1) - (3)].symb), (yyvsp[(3) - (3)].symb)); ;}
     break;
 
   case 235:
-#line 1623 "pir.y"
+#line 1626 "pir.y"
     { (yyval.symb) = new_local(lexer, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 236:
-#line 1626 "pir.y"
+#line 1629 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 237:
-#line 1627 "pir.y"
+#line 1630 "pir.y"
     { (yyval.ival) = 1; ;}
     break;
 
   case 238:
-#line 1631 "pir.y"
+#line 1634 "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)) {
 
@@ -3866,12 +3870,12 @@
     break;
 
   case 239:
-#line 1646 "pir.y"
+#line 1649 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
   case 242:
-#line 1658 "pir.y"
+#line 1661 "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));
@@ -3879,72 +3883,72 @@
     break;
 
   case 243:
-#line 1665 "pir.y"
+#line 1668 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 244:
-#line 1667 "pir.y"
+#line 1670 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 245:
-#line 1671 "pir.y"
+#line 1674 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 246:
-#line 1673 "pir.y"
+#line 1676 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 247:
-#line 1677 "pir.y"
+#line 1680 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 248:
-#line 1681 "pir.y"
+#line 1684 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(2) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 249:
-#line 1683 "pir.y"
+#line 1686 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_NCI, (yyvsp[(2) - (2)].targ)); ;}
     break;
 
   case 250:
-#line 1686 "pir.y"
+#line 1689 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_METHOD, (yyvsp[(2) - (5)].targ), (yyvsp[(5) - (5)].expr)); ;}
     break;
 
   case 251:
-#line 1690 "pir.y"
+#line 1693 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 252:
-#line 1692 "pir.y"
+#line 1695 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (2)].targ); ;}
     break;
 
   case 253:
-#line 1696 "pir.y"
+#line 1699 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 254:
-#line 1698 "pir.y"
+#line 1701 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 255:
-#line 1702 "pir.y"
+#line 1705 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 256:
-#line 1704 "pir.y"
+#line 1707 "pir.y"
     {
                              if ((yyvsp[(2) - (2)].targ))
                                  (yyval.targ) = add_target(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].targ));
@@ -3954,32 +3958,32 @@
     break;
 
   case 257:
-#line 1713 "pir.y"
+#line 1716 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
   case 258:
-#line 1715 "pir.y"
+#line 1718 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 260:
-#line 1723 "pir.y"
+#line 1726 "pir.y"
     { (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
   case 261:
-#line 1725 "pir.y"
+#line 1728 "pir.y"
     { (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
   case 262:
-#line 1727 "pir.y"
+#line 1730 "pir.y"
     {  (yyval.invo) = set_invocation_results(lexer, (yyvsp[(1) - (1)].invo), NULL); ;}
     break;
 
   case 265:
-#line 1735 "pir.y"
+#line 1738 "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)) {
@@ -4000,7 +4004,7 @@
     break;
 
   case 266:
-#line 1755 "pir.y"
+#line 1758 "pir.y"
     {
                              (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(1) - (2)].targ), NULL);
                              set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (2)].argm));
@@ -4008,12 +4012,12 @@
     break;
 
   case 267:
-#line 1762 "pir.y"
+#line 1765 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 268:
-#line 1764 "pir.y"
+#line 1767 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -4024,7 +4028,7 @@
     break;
 
   case 269:
-#line 1774 "pir.y"
+#line 1777 "pir.y"
     { /* check that this identifier was declared */
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
 
@@ -4044,22 +4048,22 @@
     break;
 
   case 270:
-#line 1791 "pir.y"
+#line 1794 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
   case 271:
-#line 1793 "pir.y"
+#line 1796 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
   case 272:
-#line 1795 "pir.y"
+#line 1798 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, new_const(lexer, STRING_TYPE, (yyvsp[(1) - (1)].sval))); ;}
     break;
 
   case 273:
-#line 1799 "pir.y"
+#line 1802 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -4071,74 +4075,74 @@
     break;
 
   case 274:
-#line 1808 "pir.y"
+#line 1811 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 275:
-#line 1813 "pir.y"
+#line 1816 "pir.y"
     {
                              (yyval.targ) = (yyvsp[(2) - (3)].targ);
                            ;}
     break;
 
   case 276:
-#line 1819 "pir.y"
+#line 1822 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 277:
-#line 1821 "pir.y"
+#line 1824 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 278:
-#line 1825 "pir.y"
+#line 1828 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 279:
-#line 1827 "pir.y"
+#line 1830 "pir.y"
     { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 280:
-#line 1831 "pir.y"
+#line 1834 "pir.y"
     { (yyval.targ) = set_param_flag(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 281:
-#line 1833 "pir.y"
+#line 1836 "pir.y"
     { (yyval.targ) = set_param_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
   case 282:
-#line 1837 "pir.y"
+#line 1840 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 283:
-#line 1839 "pir.y"
+#line 1842 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 284:
-#line 1843 "pir.y"
+#line 1846 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPTIONAL; ;}
     break;
 
   case 285:
-#line 1845 "pir.y"
+#line 1848 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPT_FLAG; ;}
     break;
 
   case 286:
-#line 1847 "pir.y"
+#line 1850 "pir.y"
     { (yyval.ival) = TARGET_FLAG_SLURPY; ;}
     break;
 
   case 287:
-#line 1849 "pir.y"
+#line 1852 "pir.y"
     {
                              (yyval.ival) = TARGET_FLAG_NAMED;
                              set_param_alias(lexer, (yyvsp[(2) - (2)].sval));
@@ -4146,12 +4150,12 @@
     break;
 
   case 288:
-#line 1859 "pir.y"
+#line 1862 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
   case 293:
-#line 1869 "pir.y"
+#line 1872 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
@@ -4159,7 +4163,7 @@
     break;
 
   case 294:
-#line 1874 "pir.y"
+#line 1877 "pir.y"
     { /* was the invocation a method call? then it becomes a method tail
                                * call, otherwise it's just a normal (sub) tail call.
                                */
@@ -4171,7 +4175,7 @@
     break;
 
   case 295:
-#line 1885 "pir.y"
+#line 1888 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
@@ -4179,47 +4183,47 @@
     break;
 
   case 296:
-#line 1892 "pir.y"
+#line 1895 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 297:
-#line 1896 "pir.y"
+#line 1899 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 298:
-#line 1898 "pir.y"
+#line 1901 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 299:
-#line 1902 "pir.y"
+#line 1905 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 300:
-#line 1904 "pir.y"
+#line 1907 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (3)].argm), (yyvsp[(3) - (3)].argm)); ;}
     break;
 
   case 303:
-#line 1912 "pir.y"
+#line 1915 "pir.y"
     { (yyval.argm) = set_arg_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
   case 304:
-#line 1916 "pir.y"
+#line 1919 "pir.y"
     { (yyval.argm) = set_arg_flag((yyval.argm), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 305:
-#line 1920 "pir.y"
+#line 1923 "pir.y"
     { (yyval.argm) = set_curarg(lexer, new_argument(lexer, (yyvsp[(1) - (1)].expr)));  ;}
     break;
 
   case 306:
-#line 1926 "pir.y"
+#line 1929 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
@@ -4227,7 +4231,7 @@
     break;
 
   case 307:
-#line 1935 "pir.y"
+#line 1938 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
@@ -4235,72 +4239,72 @@
     break;
 
   case 308:
-#line 1942 "pir.y"
+#line 1945 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 309:
-#line 1944 "pir.y"
+#line 1947 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 310:
-#line 1949 "pir.y"
+#line 1952 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 311:
-#line 1951 "pir.y"
+#line 1954 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 312:
-#line 1956 "pir.y"
+#line 1959 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 313:
-#line 1960 "pir.y"
+#line 1963 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 314:
-#line 1962 "pir.y"
+#line 1965 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 315:
-#line 1966 "pir.y"
+#line 1969 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 316:
-#line 1968 "pir.y"
+#line 1971 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 317:
-#line 1972 "pir.y"
+#line 1975 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 318:
-#line 1977 "pir.y"
+#line 1980 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 319:
-#line 1979 "pir.y"
+#line 1982 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 320:
-#line 1983 "pir.y"
+#line 1986 "pir.y"
     { (yyval.ival) = ARG_FLAG_FLAT; ;}
     break;
 
   case 321:
-#line 1985 "pir.y"
+#line 1988 "pir.y"
     {
                                (yyval.ival) = ARG_FLAG_NAMED;
                                set_arg_alias(lexer, (yyvsp[(2) - (2)].sval));
@@ -4308,142 +4312,158 @@
     break;
 
   case 322:
-#line 1992 "pir.y"
+#line 1995 "pir.y"
     { (yyval.sval) = NULL; ;}
     break;
 
   case 323:
-#line 1994 "pir.y"
+#line 1997 "pir.y"
     { (yyval.sval) = (yyvsp[(1) - (1)].sval); ;}
     break;
 
   case 324:
-#line 1998 "pir.y"
+#line 2001 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
   case 326:
-#line 2005 "pir.y"
-    { store_global_constant(lexer, (yyvsp[(1) - (1)].cdec)); ;}
+#line 2008 "pir.y"
+    { store_global_constant(lexer, (yyvsp[(2) - (2)].cdec)); ;}
     break;
 
   case 329:
-#line 2013 "pir.y"
+#line 2016 "pir.y"
     { (yyval.cdec) = (yyvsp[(2) - (2)].cdec); ;}
     break;
 
-  case 330:
-#line 2017 "pir.y"
+  case 332:
+#line 2024 "pir.y"
     { store_global_constant(lexer, (yyvsp[(2) - (2)].cdec)); ;}
     break;
 
-  case 331:
-#line 2021 "pir.y"
+  case 333:
+#line 2028 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, INT_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ival)); ;}
     break;
 
-  case 332:
-#line 2023 "pir.y"
+  case 334:
+#line 2030 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, NUM_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].dval)); ;}
     break;
 
-  case 333:
-#line 2025 "pir.y"
-    { (yyval.cdec) = new_named_const(lexer, STRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
+  case 335:
+#line 2032 "pir.y"
+    { (yyval.cdec) = new_named_const(lexer, STRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
     break;
 
-  case 334:
-#line 2027 "pir.y"
+  case 336:
+#line 2036 "pir.y"
     { (yyval.cdec) = new_pmc_const(lexer, (yyvsp[(1) - (4)].sval), (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
     break;
 
-  case 335:
-#line 2034 "pir.y"
+  case 338:
+#line 2041 "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
+                               * a bug in bison.
+                               */
+                              yypirerror(yyscanner, lexer, "unexpected identifier");
+                            ;}
+    break;
+
+  case 339:
+#line 2053 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
-  case 336:
-#line 2035 "pir.y"
+  case 340:
+#line 2054 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
-  case 337:
-#line 2039 "pir.y"
+  case 341:
+#line 2058 "pir.y"
     { (yyval.cval) = new_const(lexer, INT_VAL, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
-  case 338:
-#line 2040 "pir.y"
+  case 342:
+#line 2059 "pir.y"
     { (yyval.cval) = new_const(lexer, NUM_VAL, (yyvsp[(1) - (1)].dval)); ;}
     break;
 
-  case 340:
-#line 2044 "pir.y"
+  case 343:
+#line 2060 "pir.y"
+    { (yyval.cval) = (yyvsp[(1) - (1)].cval); ;}
+    break;
+
+  case 344:
+#line 2063 "pir.y"
     { (yyval.cval) = new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
-  case 341:
-#line 2045 "pir.y"
+  case 345:
+#line 2064 "pir.y"
     { (yyval.cval) = new_const(lexer, USTRING_VAL, (yyvsp[(1) - (1)].ustr)); ;}
     break;
 
-  case 342:
-#line 2048 "pir.y"
+  case 346:
+#line 2067 "pir.y"
     { (yyval.ival) = OP_NE; ;}
     break;
 
-  case 343:
-#line 2049 "pir.y"
+  case 347:
+#line 2068 "pir.y"
     { (yyval.ival) = OP_EQ; ;}
     break;
 
-  case 344:
-#line 2050 "pir.y"
+  case 348:
+#line 2069 "pir.y"
     { (yyval.ival) = OP_LT; ;}
     break;
 
-  case 345:
-#line 2051 "pir.y"
+  case 349:
+#line 2070 "pir.y"
     { (yyval.ival) = OP_LE; ;}
     break;
 
-  case 346:
-#line 2052 "pir.y"
+  case 350:
+#line 2071 "pir.y"
     { (yyval.ival) = OP_GE; ;}
     break;
 
-  case 347:
-#line 2053 "pir.y"
+  case 351:
+#line 2072 "pir.y"
     { (yyval.ival) = OP_GT; ;}
     break;
 
-  case 348:
-#line 2056 "pir.y"
+  case 352:
+#line 2075 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
-  case 349:
-#line 2057 "pir.y"
+  case 353:
+#line 2076 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
-  case 350:
-#line 2058 "pir.y"
+  case 354:
+#line 2077 "pir.y"
     { (yyval.ival) = PMC_TYPE; ;}
     break;
 
-  case 351:
-#line 2059 "pir.y"
+  case 355:
+#line 2078 "pir.y"
     { (yyval.ival) = STRING_TYPE; ;}
     break;
 
-  case 352:
-#line 2067 "pir.y"
+  case 356:
+#line 2086 "pir.y"
     { set_curtarget(lexer, (yyvsp[(1) - (1)].targ));  ;}
     break;
 
-  case 354:
-#line 2071 "pir.y"
+  case 358:
+#line 2090 "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) {
@@ -4457,278 +4477,278 @@
                          ;}
     break;
 
-  case 355:
-#line 2084 "pir.y"
+  case 359:
+#line 2103 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
-  case 356:
-#line 2085 "pir.y"
+  case 360:
+#line 2104 "pir.y"
     { (yyval.targ) = new_reg(lexer, NUM_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
-  case 357:
-#line 2086 "pir.y"
+  case 361:
+#line 2105 "pir.y"
     { (yyval.targ) = new_reg(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
-  case 358:
-#line 2087 "pir.y"
+  case 362:
+#line 2106 "pir.y"
     { (yyval.targ) = new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
-  case 361:
-#line 2095 "pir.y"
+  case 365:
+#line 2114 "pir.y"
     { (yyval.sval) = "if"; ;}
     break;
 
-  case 362:
-#line 2096 "pir.y"
+  case 366:
+#line 2115 "pir.y"
     { (yyval.sval) = "unless"; ;}
     break;
 
-  case 363:
-#line 2097 "pir.y"
+  case 367:
+#line 2116 "pir.y"
     { (yyval.sval) = "goto"; ;}
     break;
 
-  case 364:
-#line 2098 "pir.y"
+  case 368:
+#line 2117 "pir.y"
     { (yyval.sval) = "int"; ;}
     break;
 
-  case 365:
-#line 2099 "pir.y"
+  case 369:
+#line 2118 "pir.y"
     { (yyval.sval) = "num"; ;}
     break;
 
-  case 366:
-#line 2100 "pir.y"
+  case 370:
+#line 2119 "pir.y"
     { (yyval.sval) = "string"; ;}
     break;
 
-  case 367:
-#line 2101 "pir.y"
+  case 371:
+#line 2120 "pir.y"
     { (yyval.sval) = "pmc"; ;}
     break;
 
-  case 368:
-#line 2102 "pir.y"
+  case 372:
+#line 2121 "pir.y"
     { (yyval.sval) = "null"; ;}
     break;
 
-  case 369:
-#line 2105 "pir.y"
+  case 373:
+#line 2124 "pir.y"
     { (yyval.sval) = "neg"; ;}
     break;
 
-  case 370:
-#line 2106 "pir.y"
+  case 374:
+#line 2125 "pir.y"
     { (yyval.sval) = "not"; ;}
     break;
 
-  case 371:
-#line 2107 "pir.y"
+  case 375:
+#line 2126 "pir.y"
     { (yyval.sval) = "bnot"; ;}
     break;
 
-  case 372:
-#line 2110 "pir.y"
+  case 376:
+#line 2129 "pir.y"
     { (yyval.ival) = OP_ADD; ;}
     break;
 
-  case 373:
-#line 2111 "pir.y"
+  case 377:
+#line 2130 "pir.y"
     { (yyval.ival) = OP_SUB; ;}
     break;
 
-  case 374:
-#line 2112 "pir.y"
+  case 378:
+#line 2131 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
-  case 375:
-#line 2113 "pir.y"
+  case 379:
+#line 2132 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
-  case 376:
-#line 2114 "pir.y"
+  case 380:
+#line 2133 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
-  case 377:
-#line 2115 "pir.y"
+  case 381:
+#line 2134 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
-  case 378:
-#line 2116 "pir.y"
+  case 382:
+#line 2135 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
-  case 379:
-#line 2117 "pir.y"
+  case 383:
+#line 2136 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
-  case 380:
-#line 2118 "pir.y"
+  case 384:
+#line 2137 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
-  case 381:
-#line 2119 "pir.y"
+  case 385:
+#line 2138 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
-  case 382:
-#line 2120 "pir.y"
+  case 386:
+#line 2139 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
-  case 383:
-#line 2121 "pir.y"
+  case 387:
+#line 2140 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
-  case 384:
-#line 2122 "pir.y"
+  case 388:
+#line 2141 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
-  case 385:
-#line 2123 "pir.y"
+  case 389:
+#line 2142 "pir.y"
     { (yyval.ival) = OP_OR; ;}
     break;
 
-  case 386:
-#line 2124 "pir.y"
+  case 390:
+#line 2143 "pir.y"
     { (yyval.ival) = OP_AND; ;}
     break;
 
-  case 387:
-#line 2125 "pir.y"
+  case 391:
+#line 2144 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
-  case 388:
-#line 2126 "pir.y"
+  case 392:
+#line 2145 "pir.y"
     { (yyval.ival) = OP_XOR; ;}
     break;
 
-  case 389:
-#line 2127 "pir.y"
+  case 393:
+#line 2146 "pir.y"
     { (yyval.ival) = OP_ISEQ; ;}
     break;
 
-  case 390:
-#line 2128 "pir.y"
+  case 394:
+#line 2147 "pir.y"
     { (yyval.ival) = OP_ISLE; ;}
     break;
 
-  case 391:
-#line 2129 "pir.y"
+  case 395:
+#line 2148 "pir.y"
     { (yyval.ival) = OP_ISLT; ;}
     break;
 
-  case 392:
-#line 2130 "pir.y"
+  case 396:
+#line 2149 "pir.y"
     { (yyval.ival) = OP_ISGE; ;}
     break;
 
-  case 393:
-#line 2131 "pir.y"
+  case 397:
+#line 2150 "pir.y"
     { (yyval.ival) = OP_ISGT; ;}
     break;
 
-  case 394:
-#line 2132 "pir.y"
+  case 398:
+#line 2151 "pir.y"
     { (yyval.ival) = OP_ISNE; ;}
     break;
 
-  case 395:
-#line 2138 "pir.y"
+  case 399:
+#line 2157 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
-  case 396:
-#line 2139 "pir.y"
+  case 400:
+#line 2158 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
-  case 397:
-#line 2140 "pir.y"
+  case 401:
+#line 2159 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
-  case 398:
-#line 2141 "pir.y"
+  case 402:
+#line 2160 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
-  case 399:
-#line 2142 "pir.y"
+  case 403:
+#line 2161 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
-  case 400:
-#line 2143 "pir.y"
+  case 404:
+#line 2162 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
-  case 401:
-#line 2144 "pir.y"
+  case 405:
+#line 2163 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
-  case 402:
-#line 2145 "pir.y"
+  case 406:
+#line 2164 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
-  case 403:
-#line 2146 "pir.y"
+  case 407:
+#line 2165 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
-  case 404:
-#line 2147 "pir.y"
+  case 408:
+#line 2166 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
-  case 405:
-#line 2148 "pir.y"
+  case 409:
+#line 2167 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
-  case 406:
-#line 2149 "pir.y"
+  case 410:
+#line 2168 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
-  case 408:
-#line 2170 "pir.y"
+  case 412:
+#line 2189 "pir.y"
     { new_subr(lexer, "@start"); ;}
     break;
 
-  case 417:
-#line 2186 "pir.y"
+  case 421:
+#line 2205 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
-  case 422:
-#line 2196 "pir.y"
+  case 426:
+#line 2215 "pir.y"
     { set_sub_name(lexer, (yyvsp[(3) - (3)].sval)); ;}
     break;
 
-  case 423:
-#line 2200 "pir.y"
+  case 427:
+#line 2219 "pir.y"
     { new_subr(lexer, NULL); ;}
     break;
 
-  case 424:
-#line 2205 "pir.y"
+  case 428:
+#line 2224 "pir.y"
     {
                                   if (is_parrot_op(lexer, (yyvsp[(1) - (3)].sval)))
                                       get_opinfo(lexer);
@@ -4740,7 +4760,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 4744 "pirparser.c"
+#line 4764 "pirparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -4954,7 +4974,7 @@
 }
 
 
-#line 2216 "pir.y"
+#line 2235 "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