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

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

From:
kjs
Date:
January 11, 2009 15:36
Subject:
[svn:parrot] r35427 - trunk/compilers/pirc/src
Message ID:
20090111233539.E578BCB9F9@x12.develooper.com
Author: kjs
Date: Sun Jan 11 15:35:38 2009
New Revision: 35427

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

Log:
[pirc] improve rule for :lookahead.

Modified: trunk/compilers/pirc/src/pir.y
==============================================================================
--- trunk/compilers/pirc/src/pir.y	(original)
+++ trunk/compilers/pirc/src/pir.y	Sun Jan 11 15:35:38 2009
@@ -834,8 +834,11 @@
                   | unique_reg_flag
                   ;
 
-lookahead_flag    : ":lookahead" '(' ')'
-                         { $$ = TARGET_FLAG_LOOKAHEAD; }
+lookahead_flag    : ":lookahead" paren_string
+                         {
+                           $$ = TARGET_FLAG_LOOKAHEAD;
+                           set_param_alias(lexer, $2);
+                         }
                   ;
 
 invocant_flag     : ":invocant" '(' multi_type ')'

Modified: trunk/compilers/pirc/src/pirparser.c
==============================================================================
--- trunk/compilers/pirc/src/pirparser.c	(original)
+++ trunk/compilers/pirc/src/pirparser.c	Sun Jan 11 15:35:38 2009
@@ -817,7 +817,7 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  10
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1099
+#define YYLAST   1094
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  140
@@ -826,7 +826,7 @@
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  432
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  674
+#define YYNSTATES  673
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -891,42 +891,42 @@
      134,   137,   139,   141,   142,   145,   147,   149,   151,   153,
      155,   157,   159,   162,   167,   170,   173,   176,   179,   182,
      186,   187,   189,   191,   195,   197,   199,   201,   203,   204,
-     207,   212,   215,   216,   219,   221,   223,   225,   227,   231,
-     236,   238,   239,   242,   245,   247,   249,   251,   253,   255,
-     257,   259,   261,   263,   265,   267,   269,   271,   273,   275,
-     277,   279,   285,   287,   291,   292,   296,   297,   299,   301,
-     305,   307,   309,   312,   314,   318,   319,   322,   324,   326,
-     328,   331,   333,   336,   339,   343,   347,   350,   353,   355,
-     357,   359,   361,   362,   364,   366,   370,   374,   376,   378,
-     380,   382,   384,   386,   389,   393,   395,   399,   406,   411,
-     418,   421,   423,   425,   429,   433,   437,   441,   445,   449,
-     454,   459,   464,   468,   472,   476,   480,   484,   488,   492,
-     497,   503,   508,   513,   517,   521,   525,   529,   533,   537,
-     541,   545,   548,   554,   560,   566,   572,   578,   584,   590,
-     596,   602,   607,   613,   618,   623,   628,   633,   638,   643,
-     648,   653,   658,   663,   668,   673,   678,   682,   686,   690,
-     694,   698,   702,   706,   710,   714,   718,   722,   726,   728,
-     730,   732,   734,   736,   738,   742,   747,   749,   753,   756,
-     757,   759,   765,   767,   769,   771,   780,   781,   783,   785,
-     788,   792,   796,   799,   805,   806,   809,   810,   812,   814,
-     817,   821,   823,   826,   830,   834,   836,   838,   840,   845,
-     848,   850,   852,   854,   856,   858,   860,   862,   864,   868,
-     869,   871,   873,   877,   880,   884,   885,   888,   890,   892,
-     894,   897,   899,   901,   903,   905,   907,   911,   915,   919,
-     923,   924,   926,   928,   932,   934,   936,   940,   943,   945,
-     951,   957,   958,   960,   962,   965,   969,   970,   972,   974,
-     977,   981,   982,   985,   987,   990,   991,   993,   997,  1000,
-    1003,  1005,  1007,  1010,  1012,  1014,  1017,  1022,  1027,  1032,
-    1037,  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,  1178,
-    1180,  1182,  1184,  1186,  1188,  1190,  1193,  1195,  1197,  1200,
-    1202,  1205,  1207,  1210,  1213,  1215,  1218,  1221,  1223,  1225,
-    1227,  1231,  1233
+     207,   212,   215,   216,   219,   221,   223,   225,   227,   230,
+     235,   237,   238,   241,   244,   246,   248,   250,   252,   254,
+     256,   258,   260,   262,   264,   266,   268,   270,   272,   274,
+     276,   278,   284,   286,   290,   291,   295,   296,   298,   300,
+     304,   306,   308,   311,   313,   317,   318,   321,   323,   325,
+     327,   330,   332,   335,   338,   342,   346,   349,   352,   354,
+     356,   358,   360,   361,   363,   365,   369,   373,   375,   377,
+     379,   381,   383,   385,   388,   392,   394,   398,   405,   410,
+     417,   420,   422,   424,   428,   432,   436,   440,   444,   448,
+     453,   458,   463,   467,   471,   475,   479,   483,   487,   491,
+     496,   502,   507,   512,   516,   520,   524,   528,   532,   536,
+     540,   544,   547,   553,   559,   565,   571,   577,   583,   589,
+     595,   601,   606,   612,   617,   622,   627,   632,   637,   642,
+     647,   652,   657,   662,   667,   672,   677,   681,   685,   689,
+     693,   697,   701,   705,   709,   713,   717,   721,   725,   727,
+     729,   731,   733,   735,   737,   741,   746,   748,   752,   755,
+     756,   758,   764,   766,   768,   770,   779,   780,   782,   784,
+     787,   791,   795,   798,   804,   805,   808,   809,   811,   813,
+     816,   820,   822,   825,   829,   833,   835,   837,   839,   844,
+     847,   849,   851,   853,   855,   857,   859,   861,   863,   867,
+     868,   870,   872,   876,   879,   883,   884,   887,   889,   891,
+     893,   896,   898,   900,   902,   904,   906,   910,   914,   918,
+     922,   923,   925,   927,   931,   933,   935,   939,   942,   944,
+     950,   956,   957,   959,   961,   964,   968,   969,   971,   973,
+     976,   980,   981,   984,   986,   989,   990,   992,   996,   999,
+    1002,  1004,  1006,  1009,  1011,  1013,  1016,  1021,  1026,  1031,
+    1036,  1041,  1043,  1045,  1047,  1049,  1051,  1053,  1055,  1057,
+    1059,  1061,  1063,  1065,  1067,  1069,  1071,  1073,  1075,  1077,
+    1079,  1081,  1083,  1085,  1087,  1089,  1091,  1093,  1095,  1097,
+    1099,  1101,  1103,  1105,  1107,  1109,  1111,  1113,  1115,  1117,
+    1119,  1121,  1123,  1125,  1127,  1129,  1131,  1133,  1135,  1137,
+    1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,  1157,
+    1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,  1177,
+    1179,  1181,  1183,  1185,  1187,  1189,  1192,  1194,  1196,  1199,
+    1201,  1204,  1206,  1209,  1212,  1214,  1217,  1220,  1222,  1224,
+    1226,  1230,  1232
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -954,108 +954,108 @@
       -1,   175,   122,   176,    -1,   298,    -1,    46,    -1,   214,
       -1,   178,    -1,    -1,   178,   179,    -1,     8,   180,   181,
       35,    -1,   294,   298,    -1,    -1,   181,   182,    -1,   257,
-      -1,   184,    -1,   183,    -1,   185,    -1,   104,   120,   121,
-      -1,   103,   120,   176,   121,    -1,    97,    -1,    -1,   186,
-     187,    -1,    36,   188,    -1,   188,    -1,   204,    -1,   221,
-      -1,   227,    -1,   228,    -1,   232,    -1,   281,    -1,   258,
-      -1,   233,    -1,   217,    -1,   203,    -1,   202,    -1,   199,
-      -1,   200,    -1,   190,    -1,   189,    -1,   201,    -1,    34,
-      46,   122,   291,    35,    -1,   191,    -1,   112,   192,    35,
-      -1,    -1,   120,   193,   121,    -1,    -1,   194,    -1,   195,
-      -1,   194,   122,   195,    -1,   113,    -1,   114,    -1,   112,
-     192,    -1,   196,    -1,   127,   197,   128,    -1,    -1,   197,
-     198,    -1,    35,    -1,   114,    -1,   113,    -1,   112,   192,
-      -1,    35,    -1,   160,    35,    -1,     1,    35,    -1,    44,
-     295,    35,    -1,    28,   252,    35,    -1,   205,    35,    -1,
-     206,   207,    -1,   216,    -1,    37,    -1,   208,    -1,   210,
-      -1,    -1,   209,    -1,   211,    -1,   209,   122,   211,    -1,
-     214,   123,   290,    -1,   212,    -1,   214,    -1,   291,    -1,
-     298,    -1,   297,    -1,   213,    -1,   251,   214,    -1,   124,
-     215,   125,    -1,   290,    -1,   215,   126,   290,    -1,   295,
-     123,   206,   212,   122,   209,    -1,   295,   123,   206,   212,
-      -1,   295,   123,   206,   214,   122,   209,    -1,   219,    35,
-      -1,    37,    -1,   299,    -1,   295,   123,    48,    -1,   295,
-     123,    49,    -1,   295,   123,   292,    -1,   295,   123,   297,
-      -1,   295,   123,   218,    -1,   295,   123,   220,    -1,   295,
-     123,   206,   214,    -1,   295,   123,   299,   214,    -1,   295,
-     123,    50,   214,    -1,   295,   302,   290,    -1,   295,    72,
-      48,    -1,   295,    72,    49,    -1,   295,    73,    48,    -1,
-     295,    73,    49,    -1,   295,    72,   295,    -1,   295,    73,
-     295,    -1,   295,   123,   300,   290,    -1,   295,   123,   295,
-     301,   290,    -1,   299,   214,   123,   290,    -1,    50,   214,
-     123,   290,    -1,    48,   301,   295,    -1,    49,   301,   295,
-      -1,    46,   301,   295,    -1,    46,   301,    46,    -1,    48,
-     301,    48,    -1,    49,   301,    49,    -1,    48,   301,    49,
-      -1,    49,   301,    48,    -1,   222,    35,    -1,   225,    44,
-      37,    45,   298,    -1,   225,    44,    38,    45,   298,    -1,
-     225,    44,    39,    45,   298,    -1,   225,    44,    40,    45,
-     298,    -1,   225,    44,    41,    45,   298,    -1,   225,    44,
-      42,    45,   298,    -1,   225,    44,    43,    45,   298,    -1,
-     225,    44,    45,    45,   298,    -1,   225,    44,    44,    45,
-     298,    -1,   225,   291,   226,   298,    -1,   225,    44,    50,
-     226,   298,    -1,   225,    37,   226,   298,    -1,   225,   297,
-     226,   298,    -1,   225,    38,   226,   298,    -1,   225,    39,
-     226,   298,    -1,   225,    40,   226,   298,    -1,   225,    41,
-     226,   298,    -1,   225,    42,   226,   298,    -1,   225,    43,
-     226,   298,    -1,   225,    45,    45,   298,    -1,   225,    45,
-     122,   298,    -1,   225,    44,    45,   298,    -1,   225,    44,
-     122,   298,    -1,   225,   223,    45,   298,    -1,   295,   293,
-     290,    -1,    48,   293,   295,    -1,    49,   293,   295,    -1,
-      46,   293,   295,    -1,    48,   293,    48,    -1,    48,   293,
-      49,    -1,    49,   293,    48,    -1,    49,   293,    49,    -1,
-      46,   293,    46,    -1,    46,   293,   224,    -1,    48,   293,
-      46,    -1,    49,   293,    46,    -1,    48,    -1,    49,    -1,
-      42,    -1,    43,    -1,    45,    -1,   122,    -1,    45,   298,
-      35,    -1,    12,   294,   229,    35,    -1,   230,    -1,   229,
-     122,   230,    -1,   298,   231,    -1,    -1,    97,    -1,     9,
-      46,   122,   251,    35,    -1,   234,    -1,   235,    -1,   244,
-      -1,    26,    35,   236,   239,    35,   241,    27,    35,    -1,
-      -1,   237,    -1,   238,    -1,   237,   238,    -1,    30,   267,
-      35,    -1,    29,   249,   240,    -1,    32,   251,    -1,    14,
-     251,    35,    15,   250,    -1,    -1,   122,   251,    -1,    -1,
-     242,    -1,   243,    -1,   242,   243,    -1,    31,   255,    35,
-      -1,   228,    -1,   245,    35,    -1,   252,   123,   246,    -1,
-     295,   123,   246,    -1,   246,    -1,   248,    -1,   247,    -1,
-     251,   129,   250,   262,    -1,   249,   262,    -1,   251,    -1,
-      46,    -1,   298,    -1,    50,    -1,    52,    -1,    46,    -1,
-     298,    -1,    50,    -1,   120,   253,   121,    -1,    -1,   254,
-      -1,   255,    -1,   254,   122,   255,    -1,   295,   256,    -1,
-      46,    54,   295,    -1,    -1,   256,   257,    -1,   101,    -1,
-     102,    -1,    99,    -1,    98,   279,    -1,   259,    -1,   260,
-      -1,   269,    -1,   261,    -1,   270,    -1,    18,   262,    35,
-      -1,    33,   246,    35,    -1,    19,   262,    35,    -1,   120,
-     263,   121,    -1,    -1,   264,    -1,   265,    -1,   264,   122,
-     265,    -1,   267,    -1,   266,    -1,    46,    54,   268,    -1,
-     268,   277,    -1,   290,    -1,    24,    35,   274,    25,    35,
-      -1,    22,    35,   271,    23,    35,    -1,    -1,   272,    -1,
-     273,    -1,   272,   273,    -1,    20,   267,    35,    -1,    -1,
-     275,    -1,   276,    -1,   275,   276,    -1,    21,   267,    35,
-      -1,    -1,   277,   278,    -1,   100,    -1,    98,   279,    -1,
-      -1,   280,    -1,   120,    46,   121,    -1,   283,    35,    -1,
-      17,   287,    -1,   284,    -1,   286,    -1,    17,   285,    -1,
-     287,    -1,   288,    -1,    16,   287,    -1,    38,   298,   123,
-      48,    -1,    39,   298,   123,    49,    -1,    41,   298,   123,
-      46,    -1,    41,   298,   123,    47,    -1,    46,   298,   123,
-     289,    -1,   291,    -1,   298,    -1,   295,    -1,   291,    -1,
-      48,    -1,    49,    -1,   292,    -1,    46,    -1,    47,    -1,
-      55,    -1,    56,    -1,    57,    -1,    58,    -1,    60,    -1,
-      59,    -1,    38,    -1,    39,    -1,    40,    -1,    41,    -1,
-     296,    -1,   297,    -1,   298,    -1,    50,    -1,    51,    -1,
-      53,    -1,    52,    -1,    37,    -1,   299,    -1,    42,    -1,
-      43,    -1,    45,    -1,    38,    -1,    39,    -1,    41,    -1,
-      40,    -1,    44,    -1,   130,    -1,   131,    -1,   132,    -1,
-     133,    -1,   130,    -1,   134,    -1,   135,    -1,   136,    -1,
-     137,    -1,   138,    -1,   132,    -1,   139,    -1,    68,    -1,
-      61,    -1,    62,    -1,    63,    -1,    65,    -1,    66,    -1,
-      64,    -1,    67,    -1,    56,    -1,    58,    -1,    57,    -1,
-      60,    -1,    59,    -1,    55,    -1,    74,    -1,    75,    -1,
-      76,    -1,    77,    -1,    80,    -1,    78,    -1,    79,    -1,
-      81,    -1,    82,    -1,    70,    -1,    71,    -1,    69,    -1,
-     304,   305,    -1,   143,    -1,   306,    -1,   305,   306,    -1,
-     307,    -1,   163,    35,    -1,   232,    -1,   160,    35,    -1,
-     146,    35,    -1,   191,    -1,    36,   308,    -1,   309,   308,
-      -1,   311,    -1,   199,    -1,   311,    -1,   310,   171,    36,
-      -1,   118,    -1,   206,   208,    35,    -1
+      -1,   184,    -1,   183,    -1,   185,    -1,   104,   280,    -1,
+     103,   120,   176,   121,    -1,    97,    -1,    -1,   186,   187,
+      -1,    36,   188,    -1,   188,    -1,   204,    -1,   221,    -1,
+     227,    -1,   228,    -1,   232,    -1,   281,    -1,   258,    -1,
+     233,    -1,   217,    -1,   203,    -1,   202,    -1,   199,    -1,
+     200,    -1,   190,    -1,   189,    -1,   201,    -1,    34,    46,
+     122,   291,    35,    -1,   191,    -1,   112,   192,    35,    -1,
+      -1,   120,   193,   121,    -1,    -1,   194,    -1,   195,    -1,
+     194,   122,   195,    -1,   113,    -1,   114,    -1,   112,   192,
+      -1,   196,    -1,   127,   197,   128,    -1,    -1,   197,   198,
+      -1,    35,    -1,   114,    -1,   113,    -1,   112,   192,    -1,
+      35,    -1,   160,    35,    -1,     1,    35,    -1,    44,   295,
+      35,    -1,    28,   252,    35,    -1,   205,    35,    -1,   206,
+     207,    -1,   216,    -1,    37,    -1,   208,    -1,   210,    -1,
+      -1,   209,    -1,   211,    -1,   209,   122,   211,    -1,   214,
+     123,   290,    -1,   212,    -1,   214,    -1,   291,    -1,   298,
+      -1,   297,    -1,   213,    -1,   251,   214,    -1,   124,   215,
+     125,    -1,   290,    -1,   215,   126,   290,    -1,   295,   123,
+     206,   212,   122,   209,    -1,   295,   123,   206,   212,    -1,
+     295,   123,   206,   214,   122,   209,    -1,   219,    35,    -1,
+      37,    -1,   299,    -1,   295,   123,    48,    -1,   295,   123,
+      49,    -1,   295,   123,   292,    -1,   295,   123,   297,    -1,
+     295,   123,   218,    -1,   295,   123,   220,    -1,   295,   123,
+     206,   214,    -1,   295,   123,   299,   214,    -1,   295,   123,
+      50,   214,    -1,   295,   302,   290,    -1,   295,    72,    48,
+      -1,   295,    72,    49,    -1,   295,    73,    48,    -1,   295,
+      73,    49,    -1,   295,    72,   295,    -1,   295,    73,   295,
+      -1,   295,   123,   300,   290,    -1,   295,   123,   295,   301,
+     290,    -1,   299,   214,   123,   290,    -1,    50,   214,   123,
+     290,    -1,    48,   301,   295,    -1,    49,   301,   295,    -1,
+      46,   301,   295,    -1,    46,   301,    46,    -1,    48,   301,
+      48,    -1,    49,   301,    49,    -1,    48,   301,    49,    -1,
+      49,   301,    48,    -1,   222,    35,    -1,   225,    44,    37,
+      45,   298,    -1,   225,    44,    38,    45,   298,    -1,   225,
+      44,    39,    45,   298,    -1,   225,    44,    40,    45,   298,
+      -1,   225,    44,    41,    45,   298,    -1,   225,    44,    42,
+      45,   298,    -1,   225,    44,    43,    45,   298,    -1,   225,
+      44,    45,    45,   298,    -1,   225,    44,    44,    45,   298,
+      -1,   225,   291,   226,   298,    -1,   225,    44,    50,   226,
+     298,    -1,   225,    37,   226,   298,    -1,   225,   297,   226,
+     298,    -1,   225,    38,   226,   298,    -1,   225,    39,   226,
+     298,    -1,   225,    40,   226,   298,    -1,   225,    41,   226,
+     298,    -1,   225,    42,   226,   298,    -1,   225,    43,   226,
+     298,    -1,   225,    45,    45,   298,    -1,   225,    45,   122,
+     298,    -1,   225,    44,    45,   298,    -1,   225,    44,   122,
+     298,    -1,   225,   223,    45,   298,    -1,   295,   293,   290,
+      -1,    48,   293,   295,    -1,    49,   293,   295,    -1,    46,
+     293,   295,    -1,    48,   293,    48,    -1,    48,   293,    49,
+      -1,    49,   293,    48,    -1,    49,   293,    49,    -1,    46,
+     293,    46,    -1,    46,   293,   224,    -1,    48,   293,    46,
+      -1,    49,   293,    46,    -1,    48,    -1,    49,    -1,    42,
+      -1,    43,    -1,    45,    -1,   122,    -1,    45,   298,    35,
+      -1,    12,   294,   229,    35,    -1,   230,    -1,   229,   122,
+     230,    -1,   298,   231,    -1,    -1,    97,    -1,     9,    46,
+     122,   251,    35,    -1,   234,    -1,   235,    -1,   244,    -1,
+      26,    35,   236,   239,    35,   241,    27,    35,    -1,    -1,
+     237,    -1,   238,    -1,   237,   238,    -1,    30,   267,    35,
+      -1,    29,   249,   240,    -1,    32,   251,    -1,    14,   251,
+      35,    15,   250,    -1,    -1,   122,   251,    -1,    -1,   242,
+      -1,   243,    -1,   242,   243,    -1,    31,   255,    35,    -1,
+     228,    -1,   245,    35,    -1,   252,   123,   246,    -1,   295,
+     123,   246,    -1,   246,    -1,   248,    -1,   247,    -1,   251,
+     129,   250,   262,    -1,   249,   262,    -1,   251,    -1,    46,
+      -1,   298,    -1,    50,    -1,    52,    -1,    46,    -1,   298,
+      -1,    50,    -1,   120,   253,   121,    -1,    -1,   254,    -1,
+     255,    -1,   254,   122,   255,    -1,   295,   256,    -1,    46,
+      54,   295,    -1,    -1,   256,   257,    -1,   101,    -1,   102,
+      -1,    99,    -1,    98,   279,    -1,   259,    -1,   260,    -1,
+     269,    -1,   261,    -1,   270,    -1,    18,   262,    35,    -1,
+      33,   246,    35,    -1,    19,   262,    35,    -1,   120,   263,
+     121,    -1,    -1,   264,    -1,   265,    -1,   264,   122,   265,
+      -1,   267,    -1,   266,    -1,    46,    54,   268,    -1,   268,
+     277,    -1,   290,    -1,    24,    35,   274,    25,    35,    -1,
+      22,    35,   271,    23,    35,    -1,    -1,   272,    -1,   273,
+      -1,   272,   273,    -1,    20,   267,    35,    -1,    -1,   275,
+      -1,   276,    -1,   275,   276,    -1,    21,   267,    35,    -1,
+      -1,   277,   278,    -1,   100,    -1,    98,   279,    -1,    -1,
+     280,    -1,   120,    46,   121,    -1,   283,    35,    -1,    17,
+     287,    -1,   284,    -1,   286,    -1,    17,   285,    -1,   287,
+      -1,   288,    -1,    16,   287,    -1,    38,   298,   123,    48,
+      -1,    39,   298,   123,    49,    -1,    41,   298,   123,    46,
+      -1,    41,   298,   123,    47,    -1,    46,   298,   123,   289,
+      -1,   291,    -1,   298,    -1,   295,    -1,   291,    -1,    48,
+      -1,    49,    -1,   292,    -1,    46,    -1,    47,    -1,    55,
+      -1,    56,    -1,    57,    -1,    58,    -1,    60,    -1,    59,
+      -1,    38,    -1,    39,    -1,    40,    -1,    41,    -1,   296,
+      -1,   297,    -1,   298,    -1,    50,    -1,    51,    -1,    53,
+      -1,    52,    -1,    37,    -1,   299,    -1,    42,    -1,    43,
+      -1,    45,    -1,    38,    -1,    39,    -1,    41,    -1,    40,
+      -1,    44,    -1,   130,    -1,   131,    -1,   132,    -1,   133,
+      -1,   130,    -1,   134,    -1,   135,    -1,   136,    -1,   137,
+      -1,   138,    -1,   132,    -1,   139,    -1,    68,    -1,    61,
+      -1,    62,    -1,    63,    -1,    65,    -1,    66,    -1,    64,
+      -1,    67,    -1,    56,    -1,    58,    -1,    57,    -1,    60,
+      -1,    59,    -1,    55,    -1,    74,    -1,    75,    -1,    76,
+      -1,    77,    -1,    80,    -1,    78,    -1,    79,    -1,    81,
+      -1,    82,    -1,    70,    -1,    71,    -1,    69,    -1,   304,
+     305,    -1,   143,    -1,   306,    -1,   305,   306,    -1,   307,
+      -1,   163,    35,    -1,   232,    -1,   160,    35,    -1,   146,
+      35,    -1,   191,    -1,    36,   308,    -1,   309,   308,    -1,
+     311,    -1,   199,    -1,   311,    -1,   310,   171,    36,    -1,
+     118,    -1,   206,   208,    35,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -1069,42 +1069,42 @@
      711,   715,   716,   719,   720,   723,   725,   727,   729,   731,
      733,   735,   737,   739,   741,   743,   745,   747,   749,   753,
      758,   762,   766,   775,   786,   788,   790,   794,   803,   804,
-     817,   821,   826,   827,   831,   832,   833,   834,   837,   841,
-     848,   854,   855,   865,   867,   870,   871,   872,   873,   874,
-     875,   876,   877,   878,   879,   880,   881,   882,   883,   884,
-     885,   888,   895,   898,   903,   904,   909,   910,   913,   915,
-     923,   931,   932,   934,   937,   943,   944,   953,   954,   955,
-     956,   964,   968,   972,   981,   988,   995,   998,   999,  1002,
-    1011,  1018,  1021,  1022,  1025,  1026,  1029,  1065,  1067,  1071,
-    1073,  1078,  1080,  1084,  1107,  1111,  1113,  1122,  1133,  1145,
-    1155,  1158,  1159,  1162,  1171,  1180,  1185,  1190,  1211,  1216,
-    1257,  1275,  1282,  1287,  1298,  1309,  1320,  1331,  1336,  1341,
-    1346,  1356,  1375,  1409,  1411,  1413,  1415,  1417,  1419,  1421,
-    1423,  1428,  1437,  1439,  1441,  1443,  1445,  1447,  1449,  1451,
-    1453,  1455,  1467,  1472,  1474,  1476,  1478,  1480,  1482,  1484,
-    1486,  1488,  1490,  1492,  1494,  1496,  1527,  1553,  1561,  1570,
-    1579,  1581,  1583,  1585,  1587,  1591,  1596,  1598,  1603,  1604,
-    1607,  1608,  1611,  1612,  1615,  1623,  1627,  1629,  1633,  1637,
-    1638,  1641,  1656,  1660,  1661,  1664,  1676,  1677,  1681,  1683,
-    1687,  1691,  1693,  1695,  1701,  1702,  1707,  1708,  1712,  1714,
-    1723,  1725,  1729,  1733,  1735,  1737,  1741,  1742,  1745,  1765,
-    1772,  1774,  1784,  1801,  1803,  1805,  1809,  1818,  1823,  1830,
-    1831,  1835,  1837,  1841,  1843,  1848,  1849,  1853,  1855,  1857,
-    1859,  1869,  1873,  1874,  1875,  1876,  1879,  1884,  1895,  1902,
-    1907,  1908,  1912,  1914,  1918,  1919,  1922,  1926,  1930,  1934,
-    1943,  1953,  1954,  1959,  1961,  1966,  1971,  1972,  1976,  1978,
-    1982,  1988,  1989,  1993,  1995,  2003,  2004,  2008,  2012,  2015,
-    2019,  2020,  2023,  2027,  2028,  2031,  2035,  2037,  2039,  2041,
-    2045,  2049,  2050,  2063,  2064,  2068,  2069,  2070,  2073,  2074,
-    2077,  2078,  2079,  2080,  2081,  2082,  2085,  2086,  2087,  2088,
-    2096,  2099,  2100,  2113,  2114,  2115,  2116,  2120,  2121,  2124,
-    2125,  2126,  2127,  2128,  2129,  2130,  2131,  2134,  2135,  2136,
-    2139,  2140,  2141,  2142,  2143,  2144,  2145,  2146,  2147,  2148,
-    2149,  2150,  2151,  2152,  2153,  2154,  2155,  2156,  2157,  2158,
-    2159,  2160,  2161,  2167,  2168,  2169,  2170,  2171,  2172,  2173,
-    2174,  2175,  2176,  2177,  2178,  2190,  2198,  2202,  2203,  2206,
-    2207,  2208,  2209,  2210,  2211,  2214,  2216,  2217,  2220,  2221,
-    2224,  2228,  2233
+     817,   821,   826,   827,   831,   832,   833,   834,   837,   844,
+     851,   857,   858,   868,   870,   873,   874,   875,   876,   877,
+     878,   879,   880,   881,   882,   883,   884,   885,   886,   887,
+     888,   891,   898,   901,   906,   907,   912,   913,   916,   918,
+     926,   934,   935,   937,   940,   946,   947,   956,   957,   958,
+     959,   967,   971,   975,   984,   991,   998,  1001,  1002,  1005,
+    1014,  1021,  1024,  1025,  1028,  1029,  1032,  1068,  1070,  1074,
+    1076,  1081,  1083,  1087,  1110,  1114,  1116,  1125,  1136,  1148,
+    1158,  1161,  1162,  1165,  1174,  1183,  1188,  1193,  1214,  1219,
+    1260,  1278,  1285,  1290,  1301,  1312,  1323,  1334,  1339,  1344,
+    1349,  1359,  1378,  1412,  1414,  1416,  1418,  1420,  1422,  1424,
+    1426,  1431,  1440,  1442,  1444,  1446,  1448,  1450,  1452,  1454,
+    1456,  1458,  1470,  1475,  1477,  1479,  1481,  1483,  1485,  1487,
+    1489,  1491,  1493,  1495,  1497,  1499,  1530,  1556,  1564,  1573,
+    1582,  1584,  1586,  1588,  1590,  1594,  1599,  1601,  1606,  1607,
+    1610,  1611,  1614,  1615,  1618,  1626,  1630,  1632,  1636,  1640,
+    1641,  1644,  1659,  1663,  1664,  1667,  1679,  1680,  1684,  1686,
+    1690,  1694,  1696,  1698,  1704,  1705,  1710,  1711,  1715,  1717,
+    1726,  1728,  1732,  1736,  1738,  1740,  1744,  1745,  1748,  1768,
+    1775,  1777,  1787,  1804,  1806,  1808,  1812,  1821,  1826,  1833,
+    1834,  1838,  1840,  1844,  1846,  1851,  1852,  1856,  1858,  1860,
+    1862,  1872,  1876,  1877,  1878,  1879,  1882,  1887,  1898,  1905,
+    1910,  1911,  1915,  1917,  1921,  1922,  1925,  1929,  1933,  1937,
+    1946,  1956,  1957,  1962,  1964,  1969,  1974,  1975,  1979,  1981,
+    1985,  1991,  1992,  1996,  1998,  2006,  2007,  2011,  2015,  2018,
+    2022,  2023,  2026,  2030,  2031,  2034,  2038,  2040,  2042,  2044,
+    2048,  2052,  2053,  2066,  2067,  2071,  2072,  2073,  2076,  2077,
+    2080,  2081,  2082,  2083,  2084,  2085,  2088,  2089,  2090,  2091,
+    2099,  2102,  2103,  2116,  2117,  2118,  2119,  2123,  2124,  2127,
+    2128,  2129,  2130,  2131,  2132,  2133,  2134,  2137,  2138,  2139,
+    2142,  2143,  2144,  2145,  2146,  2147,  2148,  2149,  2150,  2151,
+    2152,  2153,  2154,  2155,  2156,  2157,  2158,  2159,  2160,  2161,
+    2162,  2163,  2164,  2170,  2171,  2172,  2173,  2174,  2175,  2176,
+    2177,  2178,  2179,  2180,  2181,  2193,  2201,  2205,  2206,  2209,
+    2210,  2211,  2212,  2213,  2214,  2217,  2219,  2220,  2223,  2224,
+    2227,  2231,  2236
 };
 #endif
 
@@ -1269,7 +1269,7 @@
        2,     1,     1,     0,     2,     1,     1,     1,     1,     1,
        1,     1,     2,     4,     2,     2,     2,     2,     2,     3,
        0,     1,     1,     3,     1,     1,     1,     1,     0,     2,
-       4,     2,     0,     2,     1,     1,     1,     1,     3,     4,
+       4,     2,     0,     2,     1,     1,     1,     1,     2,     4,
        1,     0,     2,     2,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     5,     1,     3,     0,     3,     0,     1,     1,     3,
@@ -1373,13 +1373,13 @@
      400,   390,   391,   392,   395,   393,   394,   396,   389,   381,
      387,   380,   382,   383,   384,   385,   386,   388,     0,     0,
        0,   171,   158,   169,     0,   170,   179,   181,   290,     0,
-       0,   237,   340,   341,   342,   306,   303,   325,   323,   322,
+      88,   237,   340,   341,   342,   306,   303,   325,   323,   322,
      315,   310,   320,   309,   250,     0,   254,   270,   252,   256,
      111,   192,   193,   194,   195,   196,   197,   198,   200,   199,
      202,   186,   185,   187,   189,   183,   190,   188,   184,     0,
-       0,   180,     0,    88,   324,     0,     0,   251,     0,   261,
-       0,   257,   258,   157,   159,    89,     0,   255,     0,     0,
-     259,   253,   260,   245
+       0,   180,     0,   324,     0,     0,   251,     0,   261,     0,
+     257,   258,   157,   159,    89,     0,   255,     0,     0,   259,
+     253,   260,   245
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -1395,7 +1395,7 @@
      348,    91,    92,    93,    94,   137,   275,   276,   486,   277,
      487,   278,   279,   364,   560,   280,   432,   281,   282,   393,
      394,   512,    29,   284,   285,   286,   416,   417,   418,   528,
-     657,   660,   661,   662,   287,   288,   289,   290,   291,   292,
+     656,   659,   660,   661,   287,   288,   289,   290,   291,   292,
      468,    95,   294,   340,   341,   342,   428,   508,   295,   296,
      297,   298,   327,   398,   399,   400,   401,   402,   403,   299,
      300,   408,   409,   410,   412,   413,   414,   517,   619,   184,
@@ -1407,100 +1407,100 @@
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -586
+#define YYPACT_NINF -609
 static const yytype_int16 yypact[] =
 {
-      99,    -7,    -7,    25,  -586,  -586,  -586,    37,  -586,    74,
-    -586,    15,    19,    44,   -79,    51,  -586,  1045,    77,    13,
-    -586,    84,  -586,  -586,    24,    92,   146,  -586,   618,  -586,
-      37,  -586,  -586,    51,  -586,  -586,   170,   161,   163,   174,
-    1035,   113,   191,  -586,  -586,  -586,  -586,  -586,  -586,  -586,
-    -586,  -586,  -586,  -586,   109,  -586,  -586,   187,  -586,  -586,
-    -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,
-    -586,  -586,  -586,   122,    11,   211,  -586,  1045,  -586,  -586,
-    -586,  -586,  -586,  -586,   124,  -586,  -586,  -586,   767,   219,
-     136,  -586,  -586,  -586,  -586,   135,  -586,  -586,  -586,   137,
-    -586,  -586,   693,  -586,  -586,   147,  -586,  -586,  -586,  -586,
-    1045,  1045,  1045,  -586,    26,  -586,   612,  1008,  -586,   148,
-     145,  -586,  -586,    13,  -586,  -586,  -586,   158,   159,  -586,
-    -586,  -586,   165,   166,  -586,  -586,  -586,   -21,  -586,  -586,
-    -586,  -586,  -586,  -586,  -586,   618,  -586,  -586,  -586,  -586,
-    -586,  -586,   167,   178,   167,  -586,   180,  -586,  -586,   167,
-     167,   167,  -586,   247,   171,   179,   181,  -586,  -586,  -586,
-     285,  -586,  -586,   187,  -586,   -11,  -586,    11,   286,  1045,
-    -586,   767,  -586,   281,  -586,  -586,  1035,  -586,   433,  -586,
-    -586,  -586,  -586,  -586,   280,   297,   172,  -586,   339,  -586,
-    -586,  -586,    13,  -586,  -586,  -586,  -586,  -586,   128,  -586,
-    -586,   228,   230,  -586,   231,   233,  -586,  -586,  -586,  -586,
-    -586,  -586,  -586,   273,   173,  -586,  -586,   173,   240,   250,
-     128,  -586,   322,  -586,  -586,  -586,  -586,  -586,   433,  -586,
-     173,   113,   134,   239,   239,   325,   326,   329,   245,   994,
-     320,   534,   646,   784,   808,   576,  1045,  -586,    21,   411,
-     332,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,
-    -586,  -586,  -586,   333,   618,  -586,  -586,   334,  -586,   336,
-     825,  -586,  -586,  -586,  -586,  -586,  -586,  -586,   337,  -586,
-    -586,  -586,   239,   244,   251,  -586,  -586,  -586,  -586,  -586,
-    -586,  -586,   340,  -586,  -586,   721,   -13,   135,  -586,  -586,
-    -586,  -586,  -586,  1045,   265,  -586,  -586,  -586,  -586,  -586,
-    1045,  -586,  1045,  -586,  -586,  -586,   842,   342,   344,   360,
-     363,   356,   352,   353,   267,  -586,   355,   357,   275,   345,
-     279,   274,  -586,  -586,  -586,  -586,  -586,  -586,  -586,   278,
-    -586,  -586,   -12,   -12,   -12,   -12,   -12,   -12,   -12,   461,
-     -10,   144,   144,   144,   358,   -12,   144,   -12,  -586,  -586,
-     978,   994,  -586,  -586,  -586,  -586,   893,   910,  -586,  -586,
-    -586,  -586,  -586,  -586,  -586,  -586,  -586,   292,   767,   282,
-     126,  -586,  -586,   -16,  -586,   307,   283,   354,   288,   291,
-    -586,  -586,  -586,  -586,  -586,  -586,  -586,   767,   384,   360,
-    -586,   767,   389,   363,  -586,   767,    97,   356,  -586,  -586,
-    -586,   229,  -586,  -586,   767,   576,  -586,   411,    65,   767,
-    -586,  -586,  1045,  1045,  1045,  1045,  1045,  1045,  1045,   380,
-     381,   383,   386,   390,   391,   392,   393,  1054,   -12,  1045,
-    1045,  1045,  -586,  -586,  -586,  -586,  -586,  -586,   695,   859,
-     876,  1045,  1045,   767,  1045,  -586,  -586,  -586,   239,  -586,
-    -586,  -586,  -586,  -586,  -586,  -586,  -586,   556,   130,   626,
-     626,    21,  -586,  -586,  -586,   618,  -586,  -586,  -586,  -586,
-     626,   404,   -15,   767,  -586,   767,  -586,  -586,   167,  -586,
-    -586,  -586,   323,   346,  -586,  -586,  -586,  -586,  -586,  -586,
-    1045,  -586,  -586,  1022,   767,  -586,   842,    32,   405,   407,
-    -586,   424,   430,  -586,   434,  1008,   994,  1008,   445,  -586,
-     446,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,
-    -586,  -586,  -586,  1045,  1045,  1045,  1045,  1045,  1045,  1045,
-    1045,  1045,  -586,  1045,  -586,  -586,  -586,  -586,  -586,  -586,
-    -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,
-    -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,
-    -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,
-    -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,   961,   927,
-     944,  -586,   324,   361,   767,  -586,  -586,  -586,  -586,   433,
-     364,  -586,  -586,  -586,  -586,  -586,  -586,   167,  -586,  -586,
-    -586,  -586,  -586,  -586,  -586,   447,   362,  -586,  -586,    39,
-    -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,
-    -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,   618,
-     618,  -586,   366,  -586,  -586,   473,  1008,  -586,   411,  -586,
-     462,    39,  -586,   136,   136,  -586,   978,  -586,   455,   456,
-    -586,  -586,  -586,  -586
+       5,    -6,    -6,    36,  -609,  -609,  -609,    69,  -609,    86,
+    -609,    16,    54,    19,     8,   103,  -609,  1040,    98,    21,
+    -609,   119,  -609,  -609,    41,   128,   132,  -609,   652,  -609,
+      69,  -609,  -609,   103,  -609,  -609,   141,   142,   161,   185,
+     673,   151,   170,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
+    -609,  -609,  -609,  -609,   111,  -609,  -609,   190,  -609,  -609,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
+    -609,  -609,  -609,   120,    17,   202,  -609,  1040,  -609,  -609,
+    -609,  -609,  -609,  -609,   122,  -609,  -609,  -609,   772,   210,
+     126,  -609,  -609,  -609,  -609,   127,  -609,  -609,  -609,   149,
+    -609,  -609,   698,  -609,  -609,   129,  -609,  -609,  -609,  -609,
+    1040,  1040,  1040,  -609,    44,  -609,   674,  1013,  -609,   125,
+     153,  -609,  -609,    21,  -609,  -609,  -609,   165,   166,  -609,
+    -609,  -609,   172,   176,  -609,  -609,  -609,     1,  -609,  -609,
+    -609,  -609,  -609,  -609,  -609,   652,  -609,  -609,  -609,  -609,
+    -609,  -609,   167,   174,   167,  -609,   180,  -609,  -609,   167,
+     167,   167,  -609,   256,   181,   197,   198,  -609,  -609,  -609,
+     292,  -609,  -609,   190,  -609,    -3,  -609,    17,   293,  1040,
+    -609,   772,  -609,   283,  -609,  -609,   673,  -609,   433,  -609,
+    -609,  -609,  -609,  -609,   282,   285,    99,  -609,   323,  -609,
+    -609,  -609,    21,  -609,  -609,  -609,  -609,  -609,    50,  -609,
+    -609,   211,   222,  -609,   223,   224,  -609,  -609,  -609,  -609,
+    -609,  -609,  -609,   273,   189,  -609,  -609,   189,   235,   241,
+      50,  -609,   314,  -609,  -609,  -609,  -609,  -609,   433,  -609,
+     189,   151,   134,   230,   230,   316,   320,   321,   237,   999,
+     313,   534,   651,   789,   813,   576,  1040,  -609,    13,   411,
+     325,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
+    -609,  -609,  -609,   326,   652,  -609,  -609,   329,  -609,   330,
+     830,  -609,  -609,  -609,  -609,  -609,  -609,  -609,   331,  -609,
+    -609,  -609,   230,   238,   245,  -609,  -609,  -609,  -609,  -609,
+    -609,  -609,   334,  -609,  -609,   726,   -52,   127,  -609,  -609,
+    -609,  -609,  -609,  1040,   260,  -609,  -609,  -609,  -609,  -609,
+    1040,  -609,  1040,  -609,  -609,  -609,   847,   337,   338,   354,
+     355,   345,   342,   344,   258,  -609,   349,   351,   264,   335,
+     267,   268,  -609,  -609,  -609,  -609,  -609,  -609,  -609,   269,
+    -609,  -609,   -10,   -10,   -10,   -10,   -10,   -10,   -10,   159,
+      -8,   156,   156,   156,   353,   -10,   156,   -10,  -609,  -609,
+     983,   999,  -609,  -609,  -609,  -609,   915,   932,  -609,  -609,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,   556,   772,   276,
+     121,  -609,  -609,   -15,  -609,   299,   277,   347,   284,   281,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,   772,   381,   354,
+    -609,   772,   382,   355,  -609,   772,    87,   345,  -609,  -609,
+    -609,   229,  -609,  -609,   772,   576,  -609,   411,    84,   772,
+    -609,  -609,  1040,  1040,  1040,  1040,  1040,  1040,  1040,   361,
+     363,   364,   368,   369,   377,   378,   379,  1049,   -10,  1040,
+    1040,  1040,  -609,  -609,  -609,  -609,  -609,  -609,   864,   881,
+     898,  1040,  1040,   772,  1040,  -609,  -609,  -609,   230,  -609,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,   618,   203,   617,
+     617,    13,  -609,  -609,  -609,   652,  -609,  -609,  -609,  -609,
+     617,   390,   -11,   772,  -609,   772,  -609,  -609,   167,  -609,
+    -609,  -609,   306,   167,  -609,  -609,  -609,  -609,  -609,  -609,
+    1040,  -609,  -609,  1027,   772,  -609,   847,    52,   393,   396,
+    -609,   400,   401,  -609,   402,  1013,   999,  1013,   403,  -609,
+     404,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
+    -609,  -609,  -609,  1040,  1040,  1040,  1040,  1040,  1040,  1040,
+    1040,  1040,  -609,  1040,  -609,  -609,  -609,  -609,  -609,  -609,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,   461,   949,
+     966,  -609,   319,   324,   772,  -609,  -609,  -609,  -609,   433,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,   167,  -609,  -609,
+    -609,  -609,  -609,  -609,  -609,   407,   343,  -609,  -609,    15,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,   652,
+     652,  -609,   322,  -609,   444,  1013,  -609,   411,  -609,   439,
+      15,  -609,   126,   126,  -609,   983,  -609,   434,   445,  -609,
+    -609,  -609,  -609
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -586,  -586,  -586,    16,  -586,   378,     7,  -586,  -586,  -586,
-    -586,  -586,   315,  -586,  -586,   277,  -586,  -586,  -586,  -586,
-      -1,  -586,  -586,     8,  -586,  -586,   341,  -586,  -586,  -586,
-     309,   464,  -586,  -586,  -586,  -586,  -231,  -586,  -586,  -586,
-    -586,  -586,  -586,  -586,  -586,  -586,  -586,  -586,   246,  -586,
-    -586,  -202,  -113,  -586,  -586,   335,  -586,  -586,  -586,  -155,
-    -586,  -154,  -586,  -586,  -586,  -586,  -211,  -586,   242,  -405,
-    -586,   368,    33,  -586,   -90,  -586,  -586,  -586,  -586,  -586,
-    -586,  -586,  -586,  -586,  -586,  -586,  -301,  -586,  -585,  -586,
-      12,  -586,  -152,  -586,  -586,  -586,  -586,  -586,   100,  -586,
-    -586,  -586,  -586,  -141,  -586,  -586,  -234,  -586,  -586,    -5,
-    -143,  -115,   276,  -586,  -586,  -418,  -586,   111,  -586,  -586,
-    -586,  -586,  -230,  -586,  -586,     9,  -586,  -233,    23,  -586,
-    -586,  -586,  -586,   131,  -586,  -586,   129,  -586,  -586,  -150,
-      -3,  -586,  -586,  -586,  -586,  -586,  -586,    10,  -586,  -586,
-     -66,   -27,   160,  -223,  -168,  -217,  -586,   -25,   -17,  -210,
-    -586,  -398,  -586,  -586,  -586,  -586,   518,  -586,   516,  -586,
-    -586,    50
+    -609,  -609,  -609,    24,  -609,   367,     9,  -609,  -609,  -609,
+    -609,  -609,   303,  -609,  -609,   253,  -609,  -609,  -609,  -609,
+       3,  -609,  -609,    10,  -609,  -609,   311,  -609,  -609,  -609,
+     301,   437,  -609,  -609,  -609,  -609,  -231,  -609,  -609,  -609,
+    -609,  -609,  -609,  -609,  -609,  -609,  -609,  -609,   234,  -609,
+    -609,  -195,   -98,  -609,  -609,   312,  -609,  -609,  -609,  -193,
+    -609,  -192,  -609,  -609,  -609,  -609,  -210,  -609,   216,  -484,
+    -609,   346,     7,  -609,   -90,  -609,  -609,  -609,  -609,  -609,
+    -609,  -609,  -609,  -609,  -609,  -609,  -284,  -609,  -608,  -609,
+     -16,  -609,  -184,  -609,  -609,  -609,  -609,  -609,    78,  -609,
+    -609,  -609,  -609,  -163,  -609,  -609,  -232,  -609,  -609,    -9,
+    -149,  -115,   270,  -609,  -609,  -413,  -609,    92,  -609,  -609,
+    -609,  -609,  -228,  -609,  -609,    -1,  -609,  -264,    11,  -609,
+    -609,  -609,  -609,   112,  -609,  -609,   109,  -609,  -609,  -150,
+    -151,  -609,  -609,  -609,  -609,  -609,  -609,   -48,  -609,  -609,
+     -66,   -27,   136,  -278,  -187,  -217,  -609,   -25,   -17,  -208,
+    -609,  -404,  -609,  -609,  -609,  -609,   494,  -609,   504,  -609,
+    -609,    18
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1510,230 +1510,230 @@
 #define YYTABLE_NINF -368
 static const yytype_int16 yytable[] =
 {
-      71,    96,   170,    98,   187,   146,   305,   319,    46,   533,
-     174,    99,   274,   307,   328,   333,    44,    49,     9,   509,
-    -162,   266,   138,   109,   201,    10,    -6,    36,     4,    37,
-      38,    39,    40,   430,   305,   450,    12,    13,   336,    14,
-     274,   307,   343,    41,   659,    57,    11,    12,    13,   266,
-      14,   240,   433,   434,   435,   436,   437,   438,   115,   314,
-     135,    54,   369,   366,   462,    61,   464,    55,   267,   269,
-     658,   283,   320,    15,    16,    36,   659,    37,    38,    39,
-      40,   599,   600,    61,    12,    13,    58,    14,    16,   226,
-      56,    41,   604,   164,   165,   166,   267,   269,   217,   283,
-     171,   202,   203,   204,   180,   181,   510,  -276,   293,    88,
-     431,   525,   451,    46,    73,   210,  -276,   205,    96,    76,
-      98,    44,    49,   123,   124,   125,   526,    78,    99,   527,
-     617,    17,   618,    74,   293,    18,   293,   470,   126,   459,
-     460,  -277,    17,   463,    77,    88,    18,   553,   217,    19,
-    -277,   110,   111,   488,   112,    20,   190,   191,   192,   473,
-     476,   496,   135,   498,   499,  -348,   500,   501,   338,   109,
-     490,   218,   110,   111,   518,   112,   485,   492,   521,    17,
-     322,    79,   524,    18,   349,   575,   576,   577,   578,   579,
-     580,   581,   582,   583,   584,   585,   586,   587,   588,   452,
-     453,   454,   455,   456,   457,   103,   306,   104,   532,   105,
-     343,   308,   309,   310,   311,     1,     2,   389,   221,   222,
-     106,   218,   260,   497,   498,   499,   114,   500,   501,   502,
-     503,   117,   171,   118,   306,   227,   228,   122,   574,   337,
-     668,   561,   565,   569,   663,   664,   131,    96,  -277,    98,
-     260,   321,   324,   365,   144,   367,   293,    99,   145,    88,
-     589,  -276,   590,   591,   592,   593,   594,   595,   596,   597,
-     163,   173,   293,   172,    36,    80,    81,    82,    83,   176,
-     239,   177,    11,    12,    13,   240,   178,   183,   179,   241,
-     242,   243,   244,   193,   194,   245,   391,   246,   186,   247,
-     188,   248,   195,   395,   196,   396,   249,   250,    58,   251,
+      71,    96,   170,    98,   187,   146,   305,   319,   190,   191,
+     192,    99,    46,   274,   533,   307,   328,   333,    44,    49,
+     509,   658,   138,   109,  -162,   174,     9,   240,   266,     4,
+     267,   269,   201,    61,   305,   430,    10,   450,   336,   283,
+     314,   274,   343,   307,    -6,    36,   657,    37,    38,    39,
+      40,    61,   658,   320,    12,    13,   266,    14,   267,   269,
+     135,    41,    54,   366,   369,    56,   115,   283,  -276,   433,
+     434,   435,   436,   437,   438,   599,   600,  -276,    11,    12,
+      13,   462,    14,   464,   459,   460,   604,    36,   463,    37,
+      38,    39,    40,   164,   165,   166,    12,    13,   217,    14,
+     171,   525,    55,    41,   226,    15,    16,   510,   293,   202,
+     203,   204,   431,    88,   451,   210,   526,    46,    96,   527,
+      98,     1,     2,    44,    49,   205,   180,   181,    99,   123,
+     124,   125,    57,  -277,   293,    73,   293,    88,    58,   470,
+      16,    74,  -277,   518,   126,   221,   222,   521,   217,    17,
+     617,   524,   618,    18,    76,   488,   496,   227,   228,   473,
+     476,    77,   135,    78,   553,   662,   663,    79,   338,   109,
+     490,   218,   110,   111,    17,   112,   103,   485,    18,   492,
+     322,    19,   498,   499,   349,   500,   501,    20,   104,   110,
+     111,    17,   112,   321,   324,    18,   439,   440,   441,   442,
+     443,   444,   445,   446,   447,   114,   306,   105,   532,   448,
+     343,   452,   453,   454,   455,   456,   457,   389,   497,   498,
+     499,   218,   500,   501,   502,   503,   260,   308,   309,   310,
+     311,   106,   171,   117,   306,   122,   118,   131,  -348,   337,
+     574,   561,   565,   569,   667,   144,  -277,    96,   145,    98,
+     172,    88,   163,   365,   260,   367,   293,    99,   575,   576,
+     577,   578,   579,   580,   581,   582,   583,   584,   585,   586,
+     587,   588,   293,  -276,    36,    80,    81,    82,    83,   173,
+     239,   449,    11,    12,    13,   240,   176,   183,   177,   241,
+     242,   243,   244,   178,   186,   245,   391,   246,   179,   247,
+     188,   248,   193,   395,   194,   396,   249,   250,    58,   251,
      252,    63,    64,    65,    66,   253,   254,   255,   256,   257,
-     199,   208,   494,   258,    85,    86,    87,   211,   219,   477,
-      63,    64,    65,    66,    67,    68,    69,    70,   478,    81,
-     479,   480,   481,    85,    86,    87,   220,   224,   608,   235,
-     315,   236,   237,   469,   171,   238,   316,   318,   531,   326,
-     329,   330,   491,   535,   331,   259,   334,   344,   345,   350,
-     306,   351,   368,   370,   371,   372,   392,   405,   652,   406,
-     407,   642,   645,   648,   411,    19,   415,   419,   420,   421,
-     422,   601,   423,   259,   530,   603,   427,   572,   424,   425,
-     426,   429,   605,   461,   511,   495,   513,   519,   514,   515,
-     625,   627,   628,   516,   522,   536,   537,   538,   539,   540,
-     541,   542,   482,   483,   484,   543,   544,   606,   545,   607,
-     552,   546,   554,   555,   556,   547,   548,   549,   550,  -166,
-     620,   343,   621,   609,   570,   571,   649,   573,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,   339,    96,   622,
-      98,   136,    85,    86,    87,   623,   610,   654,    99,   624,
+     195,   196,   494,   258,    85,    86,    87,   199,   208,   211,
+     219,   224,   235,   589,   220,   590,   591,   592,   593,   594,
+     595,   596,   597,   236,   237,   315,   238,   316,   608,   318,
+     326,   329,   610,   469,   171,   330,   331,   259,   531,   334,
+     344,   345,   491,   535,   350,   351,   368,   370,   371,   372,
+     306,   392,   405,   406,   407,   415,   411,   419,   652,   420,
+     421,   642,   645,   648,   422,    19,   423,   424,   426,   425,
+     427,   601,   429,   259,   530,   603,   511,   572,   461,   495,
+     513,   514,   605,   516,   519,   515,   543,   522,   544,   545,
+     625,   627,   628,   546,   547,   536,   537,   538,   539,   540,
+     541,   542,   548,   549,   550,  -166,   609,   606,   620,   607,
+     552,   621,   554,   555,   556,   622,   623,   624,   629,   630,
+     343,   649,   654,   664,   570,   571,   650,   573,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,   339,    96,   665,
+      98,   136,    85,    86,    87,   655,   668,   653,    99,   671,
       62,    63,    64,    65,    66,    67,    68,    69,    70,   213,
-     629,   630,   655,   650,   656,   653,   613,   665,   666,   669,
-     672,   673,   167,   395,   209,   212,   614,   335,   439,   440,
-     441,   442,   443,   444,   445,   446,   447,   317,   171,   171,
-     171,   448,   207,   182,   200,   116,   347,   529,   602,   217,
-     670,   626,   611,   671,   332,   616,   631,   632,   633,   634,
-     635,   636,   637,   638,   639,    36,   640,   615,   651,   534,
-     520,   667,   523,    11,    12,    13,   240,   489,   100,   101,
+     672,   167,   209,   317,   200,   335,   613,   212,   116,   207,
+     347,   182,   602,   395,   611,   529,   614,   669,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,   641,   171,   171,
+     171,   136,    85,    86,    87,   616,   670,   626,   332,   217,
+     534,   520,   523,   489,   100,   615,   631,   632,   633,   634,
+     635,   636,   637,   638,   639,    36,   640,   101,   651,     0,
+     666,     0,     0,    11,    12,    13,   240,     0,     0,     0,
      241,   242,   243,   244,     0,     0,   245,    88,   246,     0,
      247,     0,   248,     0,     0,     0,     0,   249,   250,    58,
        0,   252,    63,    64,    65,    66,   253,   254,   255,   256,
-     257,     0,     0,   449,   258,    85,    86,    87,     0,     0,
-       0,  -161,   218,  -139,  -139,  -139,  -139,  -139,  -139,  -139,
-    -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,
+     257,     0,     0,     0,   258,    85,    86,    87,     0,     0,
+       0,     0,   218,   477,    63,    64,    65,    66,    67,    68,
+      69,    70,   478,    81,   479,   480,   481,    85,    86,    87,
        0,     0,     0,    62,    63,    64,    65,    66,    67,    68,
       69,    70,    96,    96,    98,    98,   136,    85,    86,    87,
-       0,     0,    99,    99,     0,     0,     0,     0,     0,   171,
-       0,     0,     0,     0,     0,     0,    19,   168,     0,   469,
-       0,     0,     0,     0,   259,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    80,    81,    82,    83,    84,    85,
-      86,    87,     0,     0,     0,     0,     0,     0,     0,     0,
-    -139,   575,   576,   577,   578,   579,   580,   581,   582,   583,
-     584,   585,   586,   587,   588,   148,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,     0,
-       0,     0,     0,     0,     0,  -367,  -367,  -367,  -367,  -367,
-    -367,  -367,  -367,  -367,  -367,  -367,  -367,  -367,  -367,   147,
-       0,     0,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,   557,    88,   558,   559,   136,    85,    86,    87,     0,
-       0,     0,     0,     0,     0,     0,   589,     0,   590,   591,
-     592,   593,   594,   595,   596,   597,  -367,     0,     0,  -367,
-       0,     0,     0,     0,     0,  -367,   148,   149,   150,   151,
-     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-     373,   374,   375,   376,   377,   378,   379,   380,   381,   382,
-     383,   384,   385,   386,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    80,    81,    82,    83,   136,    85,    86,
-      87,  -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,
-    -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,     0,     0,
-       0,     0,     0,     0,   387,  -231,  -231,  -231,  -231,  -231,
+       0,     0,    99,    99,     0,     0,     0,     0,   171,     0,
+       0,     0,     0,     0,     0,     0,    19,     0,   469,     0,
+       0,     0,     0,  -161,   259,  -139,  -139,  -139,  -139,  -139,
+    -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,
+    -139,  -139,   575,   576,   577,   578,   579,   580,   581,   582,
+     583,   584,   585,   586,   587,   588,   482,   483,   484,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    80,    81,
+      82,    83,    84,    85,    86,    87,     0,     0,     0,   168,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,   107,
+    -367,  -367,  -367,  -367,  -367,  -367,  -367,  -367,  -367,  -367,
+    -367,  -367,  -367,  -367,   147,     0,     0,     0,     0,     0,
+       0,     0,  -139,     0,     0,     0,     0,   589,     0,   590,
+     591,   592,   593,   594,   595,   596,   597,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,  -367,     0,     0,  -367,     0,    88,     0,     0,     0,
+    -367,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   373,   374,   375,   376,   377,
+     378,   379,   380,   381,   382,   383,   384,   385,   386,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    80,    81,
+      82,    83,   136,    85,    86,    87,  -230,  -230,  -230,  -230,
+    -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,  -230,
+    -230,  -230,  -230,     0,     0,     0,     0,     0,     0,   387,
     -231,  -231,  -231,  -231,  -231,  -231,  -231,  -231,  -231,  -231,
-    -231,  -231,   352,   353,   354,   355,   356,   357,   358,   359,
-     360,   361,    81,   362,   363,   136,    85,    86,    87,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,   397,    81,
-      82,    83,   136,    85,    86,    87,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,   562,     0,   563,   564,   136,
-      85,    86,    87,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,   566,     0,   567,   568,   136,    85,    86,    87,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,     0,
-       0,   471,   472,   136,    85,    86,    87,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,     0,     0,   474,   475,
+    -231,  -231,  -231,  -231,  -231,  -231,  -231,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,    81,   362,   363,
      136,    85,    86,    87,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,     0,     0,   643,   644,   136,    85,    86,
+      68,    69,    70,   397,    81,    82,    83,   136,    85,    86,
       87,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-       0,     0,   646,   647,   136,    85,    86,    87,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,   641,     0,     0,
-       0,   136,    85,    86,    87,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,   465,     0,     0,     0,   466,     0,
-     467,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-     257,     0,     0,     0,   169,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,     0,     0,     0,     0,   169,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    80,    81,
-      82,    83,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,   107,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    62,    63,    64,    65,    66,    67,    68,    69,   551
+     557,     0,   558,   559,   136,    85,    86,    87,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,   562,     0,   563,
+     564,   136,    85,    86,    87,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,   566,     0,   567,   568,   136,    85,
+      86,    87,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,     0,     0,   471,   472,   136,    85,    86,    87,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,     0,     0,
+     474,   475,   136,    85,    86,    87,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,     0,     0,   643,   644,   136,
+      85,    86,    87,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,     0,     0,   646,   647,   136,    85,    86,    87,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,   465,
+       0,     0,     0,   466,     0,   467,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,   257,     0,     0,     0,   169,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,     0,
+       0,     0,     0,   169,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    80,    81,    82,    83,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    62,    63,    64,    65,
+      66,    67,    68,    69,   551
 };
 
 static const yytype_int16 yycheck[] =
 {
-      17,    28,   117,    28,   154,    95,   223,   238,     9,   427,
-     123,    28,   223,   223,   244,   249,     9,     9,     2,    35,
-      35,   223,    88,    40,    35,     0,     0,     1,    35,     3,
-       4,     5,     6,    45,   251,    45,    10,    11,   255,    13,
-     251,   251,   259,    17,   629,   124,     9,    10,    11,   251,
-      13,    12,   353,   354,   355,   356,   357,   358,    42,   227,
-      77,    46,   292,   280,   365,    15,   367,    48,   223,   223,
-      31,   223,   240,    36,    37,     1,   661,     3,     4,     5,
-       6,   479,   480,    33,    10,    11,    35,    13,    37,   202,
-      46,    17,   490,   110,   111,   112,   251,   251,   188,   251,
-     117,   112,   113,   114,   125,   126,   122,   120,   223,   124,
-     122,    14,   122,   114,    37,   181,   129,   128,   145,    35,
-     145,   114,   114,   112,   113,   114,    29,    35,   145,    32,
-      98,   105,   100,   120,   249,   109,   251,   371,   127,   362,
-     363,   120,   105,   366,   120,   124,   109,   448,   238,   112,
-     129,    38,    39,   387,    41,   118,   159,   160,   161,   376,
-     377,    35,   179,    98,    99,    35,   101,   102,   258,   186,
-     387,   188,    38,    39,   407,    41,   387,   387,   411,   105,
-      46,    35,   415,   109,   274,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    55,
-      56,    57,    58,    59,    60,    35,   223,    46,   425,    46,
-     427,    38,    39,    40,    41,   116,   117,   307,    46,    47,
-      46,   238,   223,    97,    98,    99,    35,   101,   102,   103,
-     104,   122,   249,    46,   251,   107,   108,   115,   468,   256,
-     658,   458,   459,   460,   649,   650,    35,   274,   124,   274,
-     251,   241,   242,   280,    35,   280,   371,   274,   122,   124,
-     130,   124,   132,   133,   134,   135,   136,   137,   138,   139,
-     123,   126,   387,   125,     1,    46,    47,    48,    49,   121,
+      17,    28,   117,    28,   154,    95,   223,   238,   159,   160,
+     161,    28,     9,   223,   427,   223,   244,   249,     9,     9,
+      35,   629,    88,    40,    35,   123,     2,    12,   223,    35,
+     223,   223,    35,    15,   251,    45,     0,    45,   255,   223,
+     227,   251,   259,   251,     0,     1,    31,     3,     4,     5,
+       6,    33,   660,   240,    10,    11,   251,    13,   251,   251,
+      77,    17,    46,   280,   292,    46,    42,   251,   120,   353,
+     354,   355,   356,   357,   358,   479,   480,   129,     9,    10,
+      11,   365,    13,   367,   362,   363,   490,     1,   366,     3,
+       4,     5,     6,   110,   111,   112,    10,    11,   188,    13,
+     117,    14,    48,    17,   202,    36,    37,   122,   223,   112,
+     113,   114,   122,   124,   122,   181,    29,   114,   145,    32,
+     145,   116,   117,   114,   114,   128,   125,   126,   145,   112,
+     113,   114,   124,   120,   249,    37,   251,   124,    35,   371,
+      37,   120,   129,   407,   127,    46,    47,   411,   238,   105,
+      98,   415,   100,   109,    35,   387,    35,   107,   108,   376,
+     377,   120,   179,    35,   448,   649,   650,    35,   258,   186,
+     387,   188,    38,    39,   105,    41,    35,   387,   109,   387,
+      46,   112,    98,    99,   274,   101,   102,   118,    46,    38,
+      39,   105,    41,   241,   242,   109,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    35,   223,    46,   425,    50,
+     427,    55,    56,    57,    58,    59,    60,   307,    97,    98,
+      99,   238,   101,   102,   103,   104,   223,    38,    39,    40,
+      41,    46,   249,   122,   251,   115,    46,    35,    35,   256,
+     468,   458,   459,   460,   657,    35,   124,   274,   122,   274,
+     125,   124,   123,   280,   251,   280,   371,   274,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,   387,   124,     1,    46,    47,    48,    49,   126,
        7,   122,     9,    10,    11,    12,   121,   120,   122,    16,
-      17,    18,    19,    46,   123,    22,   313,    24,   120,    26,
-     120,    28,   123,   320,   123,   322,    33,    34,    35,    36,
+      17,    18,    19,   121,   120,    22,   313,    24,   122,    26,
+     120,    28,    46,   320,   123,   322,    33,    34,    35,    36,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      35,    35,   388,    50,    51,    52,    53,    46,    48,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    49,     8,   498,   121,
-     110,   121,   121,   370,   371,   122,   106,    35,   424,   120,
-      35,    35,   387,   429,    35,   120,    46,    35,    35,    35,
-     387,    35,    35,   129,   123,    35,   111,    35,   609,    35,
-      20,   598,   599,   600,    21,   112,    30,    35,    35,   122,
-      35,   481,    35,   120,   421,   485,   122,   463,   123,    54,
-     121,   123,   492,    45,    97,   123,   123,    23,    54,   121,
-     525,   526,   527,   122,    25,   432,   433,   434,   435,   436,
-     437,   438,   130,   131,   132,    45,    45,   493,    45,   495,
-     447,    45,   449,   450,   451,    45,    45,    45,    45,    35,
-      35,   658,    35,   120,   461,   462,   122,   464,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,   485,    35,
-     485,    50,    51,    52,    53,    35,   120,   617,   485,    35,
+     123,   123,   388,    50,    51,    52,    53,    35,    35,    46,
+      48,     8,   121,   130,    49,   132,   133,   134,   135,   136,
+     137,   138,   139,   121,   121,   110,   122,   106,   498,    35,
+     120,    35,   503,   370,   371,    35,    35,   120,   424,    46,
+      35,    35,   387,   429,    35,    35,    35,   129,   123,    35,
+     387,   111,    35,    35,    20,    30,    21,    35,   609,    35,
+     122,   598,   599,   600,    35,   112,    35,   123,   121,    54,
+     122,   481,   123,   120,   421,   485,    97,   463,    45,   123,
+     123,    54,   492,   122,    23,   121,    45,    25,    45,    45,
+     525,   526,   527,    45,    45,   432,   433,   434,   435,   436,
+     437,   438,    45,    45,    45,    35,   120,   493,    35,   495,
+     447,    35,   449,   450,   451,    35,    35,    35,    35,    35,
+     657,   122,    35,   121,   461,   462,   122,   464,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,   485,    15,
+     485,    50,    51,    52,    53,   122,    27,   617,   485,    35,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      35,    35,    35,   122,   122,   121,   513,   121,    15,    27,
-      35,    35,   114,   510,   179,   186,   513,   251,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,   230,   525,   526,
-     527,    50,   177,   145,   173,    51,   274,   417,   485,   609,
-     661,   526,   510,   666,   248,   516,   543,   544,   545,   546,
-     547,   548,   549,   550,   551,     1,   553,   514,   604,   428,
-     409,   656,   413,     9,    10,    11,    12,   387,    30,    33,
+      35,   114,   179,   230,   173,   251,   513,   186,    51,   177,
+     274,   145,   485,   510,   510,   417,   513,   660,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,   525,   526,
+     527,    50,    51,    52,    53,   516,   665,   526,   248,   609,
+     428,   409,   413,   387,    30,   514,   543,   544,   545,   546,
+     547,   548,   549,   550,   551,     1,   553,    33,   604,    -1,
+     655,    -1,    -1,     9,    10,    11,    12,    -1,    -1,    -1,
       16,    17,    18,    19,    -1,    -1,    22,   124,    24,    -1,
       26,    -1,    28,    -1,    -1,    -1,    -1,    33,    34,    35,
       -1,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    -1,    -1,   122,    50,    51,    52,    53,    -1,    -1,
-      -1,    35,   609,    37,    38,    39,    40,    41,    42,    43,
+      46,    -1,    -1,    -1,    50,    51,    52,    53,    -1,    -1,
+      -1,    -1,   609,    37,    38,    39,    40,    41,    42,    43,
       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
       -1,    -1,    -1,    37,    38,    39,    40,    41,    42,    43,
       44,    45,   649,   650,   649,   650,    50,    51,    52,    53,
-      -1,    -1,   649,   650,    -1,    -1,    -1,    -1,    -1,   656,
-      -1,    -1,    -1,    -1,    -1,    -1,   112,    35,    -1,   666,
-      -1,    -1,    -1,    -1,   120,    37,    38,    39,    40,    41,
+      -1,    -1,   649,   650,    -1,    -1,    -1,    -1,   655,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,   665,    -1,
+      -1,    -1,    -1,    35,   120,    37,    38,    39,    40,    41,
       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     124,    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,    36,
-      -1,    -1,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,   124,    48,    49,    50,    51,    52,    53,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   130,    -1,   132,   133,
-     134,   135,   136,   137,   138,   139,   120,    -1,    -1,   123,
-      -1,    -1,    -1,    -1,    -1,   129,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      52,    53,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,   130,   131,   132,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    35,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
       69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    37,    38,    39,    40,    41,    42,
+      79,    80,    81,    82,    36,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   124,    -1,    -1,    -1,    -1,   130,    -1,   132,
+     133,   134,   135,   136,   137,   138,   139,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,   120,    -1,    -1,   123,    -1,   124,    -1,    -1,    -1,
+     129,    83,    84,    85,    86,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    96,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    -1,    -1,    -1,    -1,    -1,    -1,   123,
+      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,    -1,    -1,
-      -1,    -1,    -1,    -1,   123,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      46,    -1,    48,    49,    50,    51,    52,    53,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    -1,    48,
+      49,    50,    51,    52,    53,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    -1,    48,    49,    50,    51,
       52,    53,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      45,    -1,    -1,    48,    49,    50,    51,    52,    53,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    -1,    -1,
       48,    49,    50,    51,    52,    53,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    -1,    48,    49,    50,
+      41,    42,    43,    44,    45,    -1,    -1,    48,    49,    50,
       51,    52,    53,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    -1,    48,    49,    50,    51,    52,    53,
+      44,    45,    -1,    -1,    48,    49,    50,    51,    52,    53,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      -1,    -1,    -1,    50,    -1,    52,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    -1,    -1,    -1,    50,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    -1,
-      -1,    48,    49,    50,    51,    52,    53,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    -1,    -1,    48,    49,
-      50,    51,    52,    53,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    -1,    -1,    48,    49,    50,    51,    52,
-      53,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      -1,    -1,    48,    49,    50,    51,    52,    53,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    -1,    -1,
-      -1,    50,    51,    52,    53,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    -1,    -1,    -1,    50,    -1,
-      52,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    -1,    -1,    -1,    50,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    -1,    -1,    -1,    -1,    50,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    37,    38,    39,    40,    41,    42,    43,    44,    45
+      -1,    -1,    -1,    50,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    37,    38,    39,    40,
+      41,    42,    43,    44,    45
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1801,13 +1801,13 @@
       60,    61,    62,    63,    64,    65,    66,    67,    68,   130,
      132,   133,   134,   135,   136,   137,   138,   139,   301,   301,
      301,   214,   212,   214,   301,   214,   290,   290,   279,   120,
-     120,   230,   289,   291,   298,   268,   265,    98,   100,   278,
+     280,   230,   289,   291,   298,   268,   265,    98,   100,   278,
       35,    35,    35,    35,    35,   251,   249,   251,   251,    35,
       35,   298,   298,   298,   298,   298,   298,   298,   298,   298,
      298,    46,   295,    48,    49,   295,    48,    49,   295,   122,
-     122,   290,   176,   121,   279,    35,   122,   240,    31,   228,
-     241,   242,   243,   209,   209,   121,    15,   251,   255,    27,
-     243,   250,    35,    35
+     122,   290,   176,   279,    35,   122,   240,    31,   228,   241,
+     242,   243,   209,   209,   121,    15,   251,   255,    27,   243,
+     250,    35,    35
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2917,11 +2917,14 @@
 
   case 88:
 #line 838 "pir.y"
-    { (yyval.ival) = TARGET_FLAG_LOOKAHEAD; ;}
+    {
+                           (yyval.ival) = TARGET_FLAG_LOOKAHEAD;
+                           set_param_alias(lexer, (yyvsp[(2) - (2)].sval));
+                         ;}
     break;
 
   case 89:
-#line 842 "pir.y"
+#line 845 "pir.y"
     { (yyval.ival) = TARGET_FLAG_INVOCANT;
                            /* XXX handle multi_type */
 
@@ -2929,12 +2932,12 @@
     break;
 
   case 90:
-#line 849 "pir.y"
+#line 852 "pir.y"
     { (yyval.ival) = TARGET_FLAG_UNIQUE_REG; ;}
     break;
 
   case 92:
-#line 856 "pir.y"
+#line 859 "pir.y"
     {
                          ++lexer->stmt_counter;
                          /* increment the logical statement counter; a statement can be
@@ -2945,42 +2948,42 @@
     break;
 
   case 93:
-#line 866 "pir.y"
+#line 869 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
   case 111:
-#line 889 "pir.y"
+#line 892 "pir.y"
     { annotate(lexer, (yyvsp[(2) - (5)].sval), (yyvsp[(4) - (5)].cval)); ;}
     break;
 
   case 113:
-#line 899 "pir.y"
+#line 902 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (3)].mval), (yyvsp[(2) - (3)].pval)); ;}
     break;
 
   case 114:
-#line 903 "pir.y"
+#line 906 "pir.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 115:
-#line 905 "pir.y"
+#line 908 "pir.y"
     { (yyval.pval) = (yyvsp[(2) - (3)].pval); ;}
     break;
 
   case 116:
-#line 909 "pir.y"
+#line 912 "pir.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 118:
-#line 914 "pir.y"
+#line 917 "pir.y"
     { (yyval.pval) = new_macro_param((yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 119:
-#line 916 "pir.y"
+#line 919 "pir.y"
     {
                           macro_param *param = new_macro_param((yyvsp[(3) - (3)].sval));
                           param->next = (yyvsp[(1) - (3)].pval);
@@ -2989,7 +2992,7 @@
     break;
 
   case 120:
-#line 924 "pir.y"
+#line 927 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                           if (sym == NULL) {
@@ -3000,22 +3003,22 @@
     break;
 
   case 122:
-#line 933 "pir.y"
+#line 936 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 124:
-#line 938 "pir.y"
+#line 941 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
   case 125:
-#line 943 "pir.y"
+#line 946 "pir.y"
     { (yyval.sval) = ""; ;}
     break;
 
   case 126:
-#line 945 "pir.y"
+#line 948 "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));
@@ -3025,17 +3028,17 @@
     break;
 
   case 130:
-#line 957 "pir.y"
+#line 960 "pir.y"
     { (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 131:
-#line 965 "pir.y"
+#line 968 "pir.y"
     { set_instr(lexer, NULL); ;}
     break;
 
   case 133:
-#line 973 "pir.y"
+#line 976 "pir.y"
     {
                            if (lexer->parse_errors > MAX_NUM_ERRORS)
                                panic(lexer, "Too many errors. Compilation aborted.\n");
@@ -3045,7 +3048,7 @@
     break;
 
   case 134:
-#line 982 "pir.y"
+#line 985 "pir.y"
     {
                            set_instrf(lexer, "null", "%T", (yyvsp[(2) - (3)].targ));
                            get_opinfo(lexer);
@@ -3053,7 +3056,7 @@
     break;
 
   case 135:
-#line 989 "pir.y"
+#line 992 "pir.y"
     {
                            set_instrf(lexer, "get_results", "%T", (yyvsp[(2) - (3)].targ));
                            get_opinfo(lexer);
@@ -3061,7 +3064,7 @@
     break;
 
   case 139:
-#line 1003 "pir.y"
+#line 1006 "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.
                             */
@@ -3071,7 +3074,7 @@
     break;
 
   case 140:
-#line 1012 "pir.y"
+#line 1015 "pir.y"
     { /* when this rule is activated, the initial identifier must
                            * be a parrot op.
                            */
@@ -3081,7 +3084,7 @@
     break;
 
   case 146:
-#line 1030 "pir.y"
+#line 1033 "pir.y"
     {
                          /* the "instruction" that was set now appears to be
                           * an identifier; get the name, and check its type.
@@ -3118,22 +3121,22 @@
     break;
 
   case 147:
-#line 1066 "pir.y"
+#line 1069 "pir.y"
     { push_operand(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 148:
-#line 1068 "pir.y"
+#line 1071 "pir.y"
     { push_operand(lexer, expr_from_key(lexer, (yyvsp[(1) - (1)].key))); ;}
     break;
 
   case 149:
-#line 1072 "pir.y"
+#line 1075 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
   case 150:
-#line 1074 "pir.y"
+#line 1077 "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));
@@ -3141,17 +3144,17 @@
     break;
 
   case 151:
-#line 1079 "pir.y"
+#line 1082 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 152:
-#line 1081 "pir.y"
+#line 1084 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 153:
-#line 1085 "pir.y"
+#line 1088 "pir.y"
     {
                            /* if $1 is a register, just return that */
                            if (TEST_FLAG((yyvsp[(1) - (2)].targ)->flags, TARGET_FLAG_IS_REG))
@@ -3175,22 +3178,22 @@
     break;
 
   case 154:
-#line 1108 "pir.y"
+#line 1111 "pir.y"
     { (yyval.key) = (yyvsp[(2) - (3)].key); ;}
     break;
 
   case 155:
-#line 1112 "pir.y"
+#line 1115 "pir.y"
     { (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 156:
-#line 1114 "pir.y"
+#line 1117 "pir.y"
     { (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 157:
-#line 1123 "pir.y"
+#line 1126 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (6)].expr));
@@ -3204,7 +3207,7 @@
     break;
 
   case 158:
-#line 1134 "pir.y"
+#line 1137 "pir.y"
     {
                           /* the instruction is already set in parrot_op rule */
                           unshift_operand(lexer, (yyvsp[(4) - (4)].expr));
@@ -3219,7 +3222,7 @@
     break;
 
   case 159:
-#line 1146 "pir.y"
+#line 1149 "pir.y"
     {
                           unshift_operand(lexer, expr_from_key(lexer, (yyvsp[(4) - (6)].key)));
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (6)].targ)));
@@ -3230,7 +3233,7 @@
     break;
 
   case 163:
-#line 1163 "pir.y"
+#line 1166 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3242,7 +3245,7 @@
     break;
 
   case 164:
-#line 1172 "pir.y"
+#line 1175 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 0.0)
                               set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3254,7 +3257,7 @@
     break;
 
   case 165:
-#line 1181 "pir.y"
+#line 1184 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%C", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].cval));
                           get_opinfo(lexer);
@@ -3262,7 +3265,7 @@
     break;
 
   case 166:
-#line 1186 "pir.y"
+#line 1189 "pir.y"
     {
                           set_instrf(lexer, "set", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
@@ -3270,7 +3273,7 @@
     break;
 
   case 167:
-#line 1191 "pir.y"
+#line 1194 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (3)].sval));
                           if (sym) {
@@ -3294,7 +3297,7 @@
     break;
 
   case 168:
-#line 1212 "pir.y"
+#line 1215 "pir.y"
     {
                           unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (3)].targ)));
                           get_opinfo(lexer);
@@ -3302,7 +3305,7 @@
     break;
 
   case 169:
-#line 1217 "pir.y"
+#line 1220 "pir.y"
     {
                           /*   $P0 = foo ["bar"]    # PIR style
                            *
@@ -3346,7 +3349,7 @@
     break;
 
   case 170:
-#line 1258 "pir.y"
+#line 1261 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(3) - (4)].sval));
                           target *t;
@@ -3367,7 +3370,7 @@
     break;
 
   case 171:
-#line 1276 "pir.y"
+#line 1279 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(3) - (4)].ival));
                           set_target_key(preg, (yyvsp[(4) - (4)].key));
@@ -3377,7 +3380,7 @@
     break;
 
   case 172:
-#line 1283 "pir.y"
+#line 1286 "pir.y"
     {
                           set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%T%E", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].expr));
                           get_opinfo(lexer);
@@ -3385,7 +3388,7 @@
     break;
 
   case 173:
-#line 1288 "pir.y"
+#line 1291 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3399,7 +3402,7 @@
     break;
 
   case 174:
-#line 1299 "pir.y"
+#line 1302 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3413,7 +3416,7 @@
     break;
 
   case 175:
-#line 1310 "pir.y"
+#line 1313 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].ival) == 1)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3427,7 +3430,7 @@
     break;
 
   case 176:
-#line 1321 "pir.y"
+#line 1324 "pir.y"
     {
                           if ((yyvsp[(3) - (3)].dval) == 1.0)
                               set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3441,7 +3444,7 @@
     break;
 
   case 177:
-#line 1332 "pir.y"
+#line 1335 "pir.y"
     {
                           set_instrf(lexer, "add", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
@@ -3449,7 +3452,7 @@
     break;
 
   case 178:
-#line 1337 "pir.y"
+#line 1340 "pir.y"
     {
                           set_instrf(lexer, "sub", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
                           get_opinfo(lexer);
@@ -3457,7 +3460,7 @@
     break;
 
   case 179:
-#line 1342 "pir.y"
+#line 1345 "pir.y"
     {
                           set_instrf(lexer, (yyvsp[(3) - (4)].sval), "%T%E", (yyvsp[(1) - (4)].targ), (yyvsp[(4) - (4)].expr));
                           get_opinfo(lexer);
@@ -3465,7 +3468,7 @@
     break;
 
   case 180:
-#line 1347 "pir.y"
+#line 1350 "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));
@@ -3478,7 +3481,7 @@
     break;
 
   case 181:
-#line 1357 "pir.y"
+#line 1360 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (4)].sval));
                           target *t;
@@ -3500,7 +3503,7 @@
     break;
 
   case 182:
-#line 1376 "pir.y"
+#line 1379 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (4)].ival));
                           set_target_key(preg, (yyvsp[(2) - (4)].key));
@@ -3510,97 +3513,97 @@
     break;
 
   case 183:
-#line 1410 "pir.y"
+#line 1413 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%i%T", (yyvsp[(1) - (3)].ival), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 184:
-#line 1412 "pir.y"
+#line 1415 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%n%T", (yyvsp[(1) - (3)].dval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 185:
-#line 1414 "pir.y"
+#line 1417 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%s%T", (yyvsp[(1) - (3)].sval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 186:
-#line 1416 "pir.y"
+#line 1419 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_s_s(yyscanner, (yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval))); ;}
     break;
 
   case 187:
-#line 1418 "pir.y"
+#line 1421 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_i_i(yyscanner, (yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival))); ;}
     break;
 
   case 188:
-#line 1420 "pir.y"
+#line 1423 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_n_n(yyscanner, (yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval))); ;}
     break;
 
   case 189:
-#line 1422 "pir.y"
+#line 1425 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_i_n(yyscanner, (yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval))); ;}
     break;
 
   case 190:
-#line 1424 "pir.y"
+#line 1427 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_n_i(yyscanner, (yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival))); ;}
     break;
 
   case 191:
-#line 1429 "pir.y"
+#line 1432 "pir.y"
     { get_opinfo(lexer); ;}
     break;
 
   case 192:
-#line 1438 "pir.y"
+#line 1441 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, (yyvsp[(3) - (5)].sval), (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 193:
-#line 1440 "pir.y"
+#line 1443 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "int", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 194:
-#line 1442 "pir.y"
+#line 1445 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "num", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 195:
-#line 1444 "pir.y"
+#line 1447 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "pmc", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 196:
-#line 1446 "pir.y"
+#line 1449 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "string", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 197:
-#line 1448 "pir.y"
+#line 1451 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "if", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 198:
-#line 1450 "pir.y"
+#line 1453 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "unless", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 199:
-#line 1452 "pir.y"
+#line 1455 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "goto", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 200:
-#line 1454 "pir.y"
+#line 1457 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (5)].ival), 1, "null", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 201:
-#line 1456 "pir.y"
+#line 1459 "pir.y"
     {
                           int istrue = evaluate_c(lexer, (yyvsp[(2) - (4)].cval));
                           /* if "unless", invert the true-ness */
@@ -3615,7 +3618,7 @@
     break;
 
   case 202:
-#line 1468 "pir.y"
+#line 1471 "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));
@@ -3623,67 +3626,67 @@
     break;
 
   case 203:
-#line 1473 "pir.y"
+#line 1476 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 204:
-#line 1475 "pir.y"
+#line 1478 "pir.y"
     { set_instrf(lexer, (yyvsp[(1) - (4)].ival) ? "unless" : "if", "%T%I", (yyvsp[(2) - (4)].targ), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 205:
-#line 1477 "pir.y"
+#line 1480 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "int", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 206:
-#line 1479 "pir.y"
+#line 1482 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "num", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 207:
-#line 1481 "pir.y"
+#line 1484 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "pmc", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 208:
-#line 1483 "pir.y"
+#line 1486 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "string", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 209:
-#line 1485 "pir.y"
+#line 1488 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "if", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 210:
-#line 1487 "pir.y"
+#line 1490 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "unless", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 211:
-#line 1489 "pir.y"
+#line 1492 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 212:
-#line 1491 "pir.y"
+#line 1494 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 213:
-#line 1493 "pir.y"
+#line 1496 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 214:
-#line 1495 "pir.y"
+#line 1498 "pir.y"
     { create_if_instr(lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 215:
-#line 1497 "pir.y"
+#line 1500 "pir.y"
     {
                           if ((yyvsp[(2) - (4)].ival) == COMPUTE_DURING_RUNTIME) {
                              if ((yyvsp[(1) - (4)].ival) == NEED_INVERT_OPNAME) /* "unless" */
@@ -3711,7 +3714,7 @@
     break;
 
   case 216:
-#line 1528 "pir.y"
+#line 1531 "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
@@ -3740,7 +3743,7 @@
     break;
 
   case 217:
-#line 1554 "pir.y"
+#line 1557 "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));
@@ -3751,7 +3754,7 @@
     break;
 
   case 218:
-#line 1562 "pir.y"
+#line 1565 "pir.y"
     {
                           if (((yyvsp[(0) - (3)].ival) != NEED_INVERT_OPNAME) && ((yyvsp[(2) - (3)].ival) == OP_GE || (yyvsp[(2) - (3)].ival) == OP_GT))
                               set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival) + 1], "%T%n", (yyvsp[(3) - (3)].targ), (yyvsp[(1) - (3)].dval));
@@ -3763,7 +3766,7 @@
     break;
 
   case 219:
-#line 1571 "pir.y"
+#line 1574 "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));
@@ -3775,32 +3778,32 @@
     break;
 
   case 220:
-#line 1580 "pir.y"
+#line 1583 "pir.y"
     { (yyval.ival) = evaluate_i_i((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
   case 221:
-#line 1582 "pir.y"
+#line 1585 "pir.y"
     { (yyval.ival) = evaluate_i_n((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
   case 222:
-#line 1584 "pir.y"
+#line 1587 "pir.y"
     { (yyval.ival) = evaluate_n_i((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
   case 223:
-#line 1586 "pir.y"
+#line 1589 "pir.y"
     { (yyval.ival) = evaluate_n_n((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
   case 224:
-#line 1588 "pir.y"
+#line 1591 "pir.y"
     { (yyval.ival) = evaluate_s_s((yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval)); ;}
     break;
 
   case 225:
-#line 1592 "pir.y"
+#line 1595 "pir.y"
     {
                           yypirerror(yyscanner, lexer, "cannot compare string to %s",
                                      (yyvsp[(3) - (3)].ival) == INT_TYPE ? "integer" : "number");
@@ -3808,37 +3811,37 @@
     break;
 
   case 226:
-#line 1597 "pir.y"
+#line 1600 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare integer to string"); ;}
     break;
 
   case 227:
-#line 1599 "pir.y"
+#line 1602 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare number to string"); ;}
     break;
 
   case 228:
-#line 1603 "pir.y"
+#line 1606 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
   case 229:
-#line 1604 "pir.y"
+#line 1607 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
   case 230:
-#line 1607 "pir.y"
+#line 1610 "pir.y"
     { (yyval.ival) = DONT_INVERT_OPNAME; /* no need to invert */ ;}
     break;
 
   case 231:
-#line 1608 "pir.y"
+#line 1611 "pir.y"
     { (yyval.ival) = NEED_INVERT_OPNAME; /* yes, invert opname */ ;}
     break;
 
   case 234:
-#line 1616 "pir.y"
+#line 1619 "pir.y"
     {
                           set_instrf(lexer, "branch", "%I", (yyvsp[(2) - (3)].sval));
                           set_op_labelflag(lexer, BIT(0)); /* bit 0 means: "1 << 0" */
@@ -3847,37 +3850,37 @@
     break;
 
   case 235:
-#line 1624 "pir.y"
+#line 1627 "pir.y"
     { declare_local(lexer, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].symb)); ;}
     break;
 
   case 236:
-#line 1628 "pir.y"
+#line 1631 "pir.y"
     { (yyval.symb) = (yyvsp[(1) - (1)].symb); ;}
     break;
 
   case 237:
-#line 1630 "pir.y"
+#line 1633 "pir.y"
     { (yyval.symb) = add_local((yyvsp[(1) - (3)].symb), (yyvsp[(3) - (3)].symb)); ;}
     break;
 
   case 238:
-#line 1634 "pir.y"
+#line 1637 "pir.y"
     { (yyval.symb) = new_local(lexer, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 239:
-#line 1637 "pir.y"
+#line 1640 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 240:
-#line 1638 "pir.y"
+#line 1641 "pir.y"
     { (yyval.ival) = 1; ;}
     break;
 
   case 241:
-#line 1642 "pir.y"
+#line 1645 "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)) {
 
@@ -3890,12 +3893,12 @@
     break;
 
   case 242:
-#line 1657 "pir.y"
+#line 1660 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
   case 245:
-#line 1669 "pir.y"
+#line 1672 "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));
@@ -3903,72 +3906,72 @@
     break;
 
   case 246:
-#line 1676 "pir.y"
+#line 1679 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 247:
-#line 1678 "pir.y"
+#line 1681 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 248:
-#line 1682 "pir.y"
+#line 1685 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 249:
-#line 1684 "pir.y"
+#line 1687 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 250:
-#line 1688 "pir.y"
+#line 1691 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 251:
-#line 1692 "pir.y"
+#line 1695 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(2) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 252:
-#line 1694 "pir.y"
+#line 1697 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_NCI, (yyvsp[(2) - (2)].targ)); ;}
     break;
 
   case 253:
-#line 1697 "pir.y"
+#line 1700 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_METHOD, (yyvsp[(2) - (5)].targ), (yyvsp[(5) - (5)].expr)); ;}
     break;
 
   case 254:
-#line 1701 "pir.y"
+#line 1704 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 255:
-#line 1703 "pir.y"
+#line 1706 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (2)].targ); ;}
     break;
 
   case 256:
-#line 1707 "pir.y"
+#line 1710 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 257:
-#line 1709 "pir.y"
+#line 1712 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 258:
-#line 1713 "pir.y"
+#line 1716 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 259:
-#line 1715 "pir.y"
+#line 1718 "pir.y"
     {
                              if ((yyvsp[(2) - (2)].targ))
                                  (yyval.targ) = add_target(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].targ));
@@ -3978,32 +3981,32 @@
     break;
 
   case 260:
-#line 1724 "pir.y"
+#line 1727 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
   case 261:
-#line 1726 "pir.y"
+#line 1729 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 263:
-#line 1734 "pir.y"
+#line 1737 "pir.y"
     { (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
   case 264:
-#line 1736 "pir.y"
+#line 1739 "pir.y"
     { (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
     break;
 
   case 265:
-#line 1738 "pir.y"
+#line 1741 "pir.y"
     {  (yyval.invo) = set_invocation_results(lexer, (yyvsp[(1) - (1)].invo), NULL); ;}
     break;
 
   case 268:
-#line 1746 "pir.y"
+#line 1749 "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)) {
@@ -4024,7 +4027,7 @@
     break;
 
   case 269:
-#line 1766 "pir.y"
+#line 1769 "pir.y"
     {
                              (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(1) - (2)].targ), NULL);
                              set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (2)].argm));
@@ -4032,12 +4035,12 @@
     break;
 
   case 270:
-#line 1773 "pir.y"
+#line 1776 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 271:
-#line 1775 "pir.y"
+#line 1778 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -4048,7 +4051,7 @@
     break;
 
   case 272:
-#line 1785 "pir.y"
+#line 1788 "pir.y"
     { /* check that this identifier was declared */
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
 
@@ -4068,22 +4071,22 @@
     break;
 
   case 273:
-#line 1802 "pir.y"
+#line 1805 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
   case 274:
-#line 1804 "pir.y"
+#line 1807 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
   case 275:
-#line 1806 "pir.y"
+#line 1809 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval))); ;}
     break;
 
   case 276:
-#line 1810 "pir.y"
+#line 1813 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -4095,74 +4098,74 @@
     break;
 
   case 277:
-#line 1819 "pir.y"
+#line 1822 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 278:
-#line 1824 "pir.y"
+#line 1827 "pir.y"
     {
                              (yyval.targ) = (yyvsp[(2) - (3)].targ);
                            ;}
     break;
 
   case 279:
-#line 1830 "pir.y"
+#line 1833 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 280:
-#line 1832 "pir.y"
+#line 1835 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 281:
-#line 1836 "pir.y"
+#line 1839 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 282:
-#line 1838 "pir.y"
+#line 1841 "pir.y"
     { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 283:
-#line 1842 "pir.y"
+#line 1845 "pir.y"
     { (yyval.targ) = set_param_flag(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 284:
-#line 1844 "pir.y"
+#line 1847 "pir.y"
     { (yyval.targ) = set_param_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
   case 285:
-#line 1848 "pir.y"
+#line 1851 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 286:
-#line 1850 "pir.y"
+#line 1853 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 287:
-#line 1854 "pir.y"
+#line 1857 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPTIONAL; ;}
     break;
 
   case 288:
-#line 1856 "pir.y"
+#line 1859 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPT_FLAG; ;}
     break;
 
   case 289:
-#line 1858 "pir.y"
+#line 1861 "pir.y"
     { (yyval.ival) = TARGET_FLAG_SLURPY; ;}
     break;
 
   case 290:
-#line 1860 "pir.y"
+#line 1863 "pir.y"
     {
                              (yyval.ival) = TARGET_FLAG_NAMED;
                              set_param_alias(lexer, (yyvsp[(2) - (2)].sval));
@@ -4170,12 +4173,12 @@
     break;
 
   case 291:
-#line 1870 "pir.y"
+#line 1873 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
   case 296:
-#line 1880 "pir.y"
+#line 1883 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
@@ -4183,7 +4186,7 @@
     break;
 
   case 297:
-#line 1885 "pir.y"
+#line 1888 "pir.y"
     { /* was the invocation a method call? then it becomes a method tail
                                * call, otherwise it's just a normal (sub) tail call.
                                */
@@ -4195,7 +4198,7 @@
     break;
 
   case 298:
-#line 1896 "pir.y"
+#line 1899 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
@@ -4203,47 +4206,47 @@
     break;
 
   case 299:
-#line 1903 "pir.y"
+#line 1906 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 300:
-#line 1907 "pir.y"
+#line 1910 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 301:
-#line 1909 "pir.y"
+#line 1912 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 302:
-#line 1913 "pir.y"
+#line 1916 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 303:
-#line 1915 "pir.y"
+#line 1918 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (3)].argm), (yyvsp[(3) - (3)].argm)); ;}
     break;
 
   case 306:
-#line 1923 "pir.y"
+#line 1926 "pir.y"
     { (yyval.argm) = set_arg_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
   case 307:
-#line 1927 "pir.y"
+#line 1930 "pir.y"
     { (yyval.argm) = set_arg_flag((yyval.argm), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 308:
-#line 1931 "pir.y"
+#line 1934 "pir.y"
     { (yyval.argm) = set_curarg(lexer, new_argument(lexer, (yyvsp[(1) - (1)].expr)));  ;}
     break;
 
   case 309:
-#line 1937 "pir.y"
+#line 1940 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
@@ -4251,7 +4254,7 @@
     break;
 
   case 310:
-#line 1946 "pir.y"
+#line 1949 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
@@ -4259,72 +4262,72 @@
     break;
 
   case 311:
-#line 1953 "pir.y"
+#line 1956 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 312:
-#line 1955 "pir.y"
+#line 1958 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 313:
-#line 1960 "pir.y"
+#line 1963 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 314:
-#line 1962 "pir.y"
+#line 1965 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 315:
-#line 1967 "pir.y"
+#line 1970 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 316:
-#line 1971 "pir.y"
+#line 1974 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 317:
-#line 1973 "pir.y"
+#line 1976 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 318:
-#line 1977 "pir.y"
+#line 1980 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 319:
-#line 1979 "pir.y"
+#line 1982 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 320:
-#line 1983 "pir.y"
+#line 1986 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 321:
-#line 1988 "pir.y"
+#line 1991 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 322:
-#line 1990 "pir.y"
+#line 1993 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 323:
-#line 1994 "pir.y"
+#line 1997 "pir.y"
     { (yyval.ival) = ARG_FLAG_FLAT; ;}
     break;
 
   case 324:
-#line 1996 "pir.y"
+#line 1999 "pir.y"
     {
                                (yyval.ival) = ARG_FLAG_NAMED;
                                set_arg_alias(lexer, (yyvsp[(2) - (2)].sval));
@@ -4332,62 +4335,62 @@
     break;
 
   case 325:
-#line 2003 "pir.y"
+#line 2006 "pir.y"
     { (yyval.sval) = NULL; ;}
     break;
 
   case 326:
-#line 2005 "pir.y"
+#line 2008 "pir.y"
     { (yyval.sval) = (yyvsp[(1) - (1)].sval); ;}
     break;
 
   case 327:
-#line 2009 "pir.y"
+#line 2012 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
   case 329:
-#line 2016 "pir.y"
+#line 2019 "pir.y"
     { store_global_constant(lexer, (yyvsp[(2) - (2)].cdec)); ;}
     break;
 
   case 332:
-#line 2024 "pir.y"
+#line 2027 "pir.y"
     { (yyval.cdec) = (yyvsp[(2) - (2)].cdec); ;}
     break;
 
   case 335:
-#line 2032 "pir.y"
+#line 2035 "pir.y"
     { store_global_constant(lexer, (yyvsp[(2) - (2)].cdec)); ;}
     break;
 
   case 336:
-#line 2036 "pir.y"
+#line 2039 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, INT_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ival)); ;}
     break;
 
   case 337:
-#line 2038 "pir.y"
+#line 2041 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, NUM_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].dval)); ;}
     break;
 
   case 338:
-#line 2040 "pir.y"
+#line 2043 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, STRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 339:
-#line 2042 "pir.y"
+#line 2045 "pir.y"
     { (yyval.cdec) = new_named_const(lexer, USTRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ustr)); ;}
     break;
 
   case 340:
-#line 2046 "pir.y"
+#line 2049 "pir.y"
     { (yyval.cdec) = new_pmc_const(lexer, (yyvsp[(1) - (4)].sval), (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
     break;
 
   case 342:
-#line 2051 "pir.y"
+#line 2054 "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
@@ -4398,97 +4401,97 @@
     break;
 
   case 343:
-#line 2063 "pir.y"
+#line 2066 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 344:
-#line 2064 "pir.y"
+#line 2067 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
   case 345:
-#line 2068 "pir.y"
+#line 2071 "pir.y"
     { (yyval.cval) = new_const(lexer, INT_VAL, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 346:
-#line 2069 "pir.y"
+#line 2072 "pir.y"
     { (yyval.cval) = new_const(lexer, NUM_VAL, (yyvsp[(1) - (1)].dval)); ;}
     break;
 
   case 347:
-#line 2070 "pir.y"
+#line 2073 "pir.y"
     { (yyval.cval) = (yyvsp[(1) - (1)].cval); ;}
     break;
 
   case 348:
-#line 2073 "pir.y"
+#line 2076 "pir.y"
     { (yyval.cval) = new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 349:
-#line 2074 "pir.y"
+#line 2077 "pir.y"
     { (yyval.cval) = new_const(lexer, USTRING_VAL, (yyvsp[(1) - (1)].ustr)); ;}
     break;
 
   case 350:
-#line 2077 "pir.y"
+#line 2080 "pir.y"
     { (yyval.ival) = OP_NE; ;}
     break;
 
   case 351:
-#line 2078 "pir.y"
+#line 2081 "pir.y"
     { (yyval.ival) = OP_EQ; ;}
     break;
 
   case 352:
-#line 2079 "pir.y"
+#line 2082 "pir.y"
     { (yyval.ival) = OP_LT; ;}
     break;
 
   case 353:
-#line 2080 "pir.y"
+#line 2083 "pir.y"
     { (yyval.ival) = OP_LE; ;}
     break;
 
   case 354:
-#line 2081 "pir.y"
+#line 2084 "pir.y"
     { (yyval.ival) = OP_GE; ;}
     break;
 
   case 355:
-#line 2082 "pir.y"
+#line 2085 "pir.y"
     { (yyval.ival) = OP_GT; ;}
     break;
 
   case 356:
-#line 2085 "pir.y"
+#line 2088 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
   case 357:
-#line 2086 "pir.y"
+#line 2089 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
   case 358:
-#line 2087 "pir.y"
+#line 2090 "pir.y"
     { (yyval.ival) = PMC_TYPE; ;}
     break;
 
   case 359:
-#line 2088 "pir.y"
+#line 2091 "pir.y"
     { (yyval.ival) = STRING_TYPE; ;}
     break;
 
   case 360:
-#line 2096 "pir.y"
+#line 2099 "pir.y"
     { set_curtarget(lexer, (yyvsp[(1) - (1)].targ));  ;}
     break;
 
   case 362:
-#line 2100 "pir.y"
+#line 2103 "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) {
@@ -4503,277 +4506,277 @@
     break;
 
   case 363:
-#line 2113 "pir.y"
+#line 2116 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 364:
-#line 2114 "pir.y"
+#line 2117 "pir.y"
     { (yyval.targ) = new_reg(lexer, NUM_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 365:
-#line 2115 "pir.y"
+#line 2118 "pir.y"
     { (yyval.targ) = new_reg(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 366:
-#line 2116 "pir.y"
+#line 2119 "pir.y"
     { (yyval.targ) = new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 369:
-#line 2124 "pir.y"
+#line 2127 "pir.y"
     { (yyval.sval) = "if"; ;}
     break;
 
   case 370:
-#line 2125 "pir.y"
+#line 2128 "pir.y"
     { (yyval.sval) = "unless"; ;}
     break;
 
   case 371:
-#line 2126 "pir.y"
+#line 2129 "pir.y"
     { (yyval.sval) = "goto"; ;}
     break;
 
   case 372:
-#line 2127 "pir.y"
+#line 2130 "pir.y"
     { (yyval.sval) = "int"; ;}
     break;
 
   case 373:
-#line 2128 "pir.y"
+#line 2131 "pir.y"
     { (yyval.sval) = "num"; ;}
     break;
 
   case 374:
-#line 2129 "pir.y"
+#line 2132 "pir.y"
     { (yyval.sval) = "string"; ;}
     break;
 
   case 375:
-#line 2130 "pir.y"
+#line 2133 "pir.y"
     { (yyval.sval) = "pmc"; ;}
     break;
 
   case 376:
-#line 2131 "pir.y"
+#line 2134 "pir.y"
     { (yyval.sval) = "null"; ;}
     break;
 
   case 377:
-#line 2134 "pir.y"
+#line 2137 "pir.y"
     { (yyval.sval) = "neg"; ;}
     break;
 
   case 378:
-#line 2135 "pir.y"
+#line 2138 "pir.y"
     { (yyval.sval) = "not"; ;}
     break;
 
   case 379:
-#line 2136 "pir.y"
+#line 2139 "pir.y"
     { (yyval.sval) = "bnot"; ;}
     break;
 
   case 380:
-#line 2139 "pir.y"
+#line 2142 "pir.y"
     { (yyval.ival) = OP_ADD; ;}
     break;
 
   case 381:
-#line 2140 "pir.y"
+#line 2143 "pir.y"
     { (yyval.ival) = OP_SUB; ;}
     break;
 
   case 382:
-#line 2141 "pir.y"
+#line 2144 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
   case 383:
-#line 2142 "pir.y"
+#line 2145 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
   case 384:
-#line 2143 "pir.y"
+#line 2146 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
   case 385:
-#line 2144 "pir.y"
+#line 2147 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
   case 386:
-#line 2145 "pir.y"
+#line 2148 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
   case 387:
-#line 2146 "pir.y"
+#line 2149 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
   case 388:
-#line 2147 "pir.y"
+#line 2150 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
   case 389:
-#line 2148 "pir.y"
+#line 2151 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
   case 390:
-#line 2149 "pir.y"
+#line 2152 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
   case 391:
-#line 2150 "pir.y"
+#line 2153 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
   case 392:
-#line 2151 "pir.y"
+#line 2154 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
   case 393:
-#line 2152 "pir.y"
+#line 2155 "pir.y"
     { (yyval.ival) = OP_OR; ;}
     break;
 
   case 394:
-#line 2153 "pir.y"
+#line 2156 "pir.y"
     { (yyval.ival) = OP_AND; ;}
     break;
 
   case 395:
-#line 2154 "pir.y"
+#line 2157 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
   case 396:
-#line 2155 "pir.y"
+#line 2158 "pir.y"
     { (yyval.ival) = OP_XOR; ;}
     break;
 
   case 397:
-#line 2156 "pir.y"
+#line 2159 "pir.y"
     { (yyval.ival) = OP_ISEQ; ;}
     break;
 
   case 398:
-#line 2157 "pir.y"
+#line 2160 "pir.y"
     { (yyval.ival) = OP_ISLE; ;}
     break;
 
   case 399:
-#line 2158 "pir.y"
+#line 2161 "pir.y"
     { (yyval.ival) = OP_ISLT; ;}
     break;
 
   case 400:
-#line 2159 "pir.y"
+#line 2162 "pir.y"
     { (yyval.ival) = OP_ISGE; ;}
     break;
 
   case 401:
-#line 2160 "pir.y"
+#line 2163 "pir.y"
     { (yyval.ival) = OP_ISGT; ;}
     break;
 
   case 402:
-#line 2161 "pir.y"
+#line 2164 "pir.y"
     { (yyval.ival) = OP_ISNE; ;}
     break;
 
   case 403:
-#line 2167 "pir.y"
+#line 2170 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
   case 404:
-#line 2168 "pir.y"
+#line 2171 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
   case 405:
-#line 2169 "pir.y"
+#line 2172 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
   case 406:
-#line 2170 "pir.y"
+#line 2173 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
   case 407:
-#line 2171 "pir.y"
+#line 2174 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
   case 408:
-#line 2172 "pir.y"
+#line 2175 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
   case 409:
-#line 2173 "pir.y"
+#line 2176 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
   case 410:
-#line 2174 "pir.y"
+#line 2177 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
   case 411:
-#line 2175 "pir.y"
+#line 2178 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
   case 412:
-#line 2176 "pir.y"
+#line 2179 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
   case 413:
-#line 2177 "pir.y"
+#line 2180 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
   case 414:
-#line 2178 "pir.y"
+#line 2181 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
   case 416:
-#line 2199 "pir.y"
+#line 2202 "pir.y"
     { new_subr(lexer, "@start"); ;}
     break;
 
   case 425:
-#line 2215 "pir.y"
+#line 2218 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
   case 430:
-#line 2225 "pir.y"
+#line 2228 "pir.y"
     { set_sub_name(lexer, (yyvsp[(3) - (3)].sval)); ;}
     break;
 
   case 431:
-#line 2229 "pir.y"
+#line 2232 "pir.y"
     { new_subr(lexer, NULL); ;}
     break;
 
   case 432:
-#line 2234 "pir.y"
+#line 2237 "pir.y"
     {
 
                                   if (is_parrot_op(lexer, (yyvsp[(1) - (3)].sval))) {
@@ -4788,7 +4791,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 4792 "pirparser.c"
+#line 4795 "pirparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5002,7 +5005,7 @@
 }
 
 
-#line 2248 "pir.y"
+#line 2251 "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