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

[svn:parrot] r33559 - in trunk: compilers/imcc docs/book

From:
Whiteknight
Date:
December 6, 2008 06:49
Subject:
[svn:parrot] r33559 - in trunk: compilers/imcc docs/book
Message ID:
20081206144841.70EACCB9AF@x12.develooper.com
Author: Whiteknight
Date: Sat Dec  6 06:48:40 2008
New Revision: 33559

Modified:
   trunk/compilers/imcc/imcc.y
   trunk/compilers/imcc/imcparser.c
   trunk/docs/book/ch06_library.pod

Log:
[IMCC] remove .param type "name" => value syntax from IMCC, per RT#57410

Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y	(original)
+++ trunk/compilers/imcc/imcc.y	Sat Dec  6 06:48:40 2008
@@ -1022,18 +1022,6 @@
            $$->type |= $3;
            mem_sys_free($2);
           }
-
-   /* don't free $2 here; adv_named_set uses the pointer directly */
-   | type STRINGC ADV_ARROW IDENTIFIER paramtype_list
-          {
-            if ($5 & VT_UNIQUE_REG)
-                $$ = mk_ident_ur(interp, $4, $1);
-            else
-                $$ = mk_ident(interp, $4, $1);
-            $$->type |= $5;
-            adv_named_set(interp, $2);
-            mem_sys_free($4);
-          }
    ;
 
 

Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c	(original)
+++ trunk/compilers/imcc/imcparser.c	Sat Dec  6 06:48:40 2008
@@ -1267,16 +1267,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  31
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   732
+#define YYLAST   716
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  138
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  127
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  352
+#define YYNRULES  351
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  571
+#define YYNSTATES  567
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -1339,36 +1339,36 @@
       88,    90,    92,    94,    96,    98,    99,   103,   104,   109,
      112,   117,   118,   120,   121,   126,   127,   129,   133,   137,
      140,   141,   142,   143,   154,   155,   157,   161,   162,   166,
-     170,   176,   181,   186,   191,   193,   198,   200,   205,   207,
-     212,   217,   219,   224,   225,   229,   231,   233,   235,   237,
-     239,   241,   243,   247,   248,   250,   251,   261,   262,   265,
-     266,   270,   271,   273,   275,   278,   280,   282,   284,   286,
-     288,   290,   292,   294,   296,   298,   300,   302,   304,   306,
-     312,   316,   320,   324,   328,   334,   340,   341,   345,   348,
-     349,   353,   357,   358,   363,   364,   367,   369,   371,   373,
-     375,   380,   382,   383,   389,   391,   392,   398,   399,   402,
-     406,   407,   410,   414,   418,   422,   423,   429,   431,   433,
-     434,   436,   440,   444,   450,   452,   455,   456,   459,   462,
-     464,   466,   468,   469,   471,   474,   476,   478,   482,   485,
-     487,   491,   494,   495,   497,   499,   501,   504,   507,   508,
-     513,   518,   519,   526,   528,   529,   536,   539,   542,   545,
-     548,   550,   552,   554,   556,   557,   559,   561,   563,   565,
-     567,   571,   576,   582,   589,   596,   603,   611,   616,   621,
-     626,   633,   640,   648,   653,   658,   663,   670,   678,   682,
-     683,   693,   695,   697,   699,   703,   705,   707,   709,   711,
-     713,   715,   717,   719,   721,   723,   725,   727,   729,   731,
-     733,   735,   737,   739,   741,   743,   745,   747,   749,   751,
-     753,   755,   756,   762,   766,   768,   770,   772,   774,   776,
-     778,   780,   782,   784,   786,   788,   790,   792,   797,   799,
-     801,   803,   805,   809,   813,   817,   818,   824,   825,   829,
-     831,   837,   841,   844,   845,   848,   850,   852,   857,   860,
-     864,   870,   872,   876,   877,   879,   881,   888,   894,   899,
-     904,   911,   917,   919,   921,   923,   925,   927,   929,   931,
-     933,   935,   937,   938,   940,   944,   946,   948,   953,   957,
-     959,   961,   963,   965,   967,   969,   971,   973,   975,   977,
-     979,   980,   983,   984,   987,   989,   993,   994,   999,  1001,
-    1005,  1008,  1011,  1013,  1015,  1017,  1019,  1021,  1023,  1025,
-    1027,  1029,  1031
+     170,   175,   180,   185,   187,   192,   194,   199,   201,   206,
+     211,   213,   218,   219,   223,   225,   227,   229,   231,   233,
+     235,   237,   241,   242,   244,   245,   255,   256,   259,   260,
+     264,   265,   267,   269,   272,   274,   276,   278,   280,   282,
+     284,   286,   288,   290,   292,   294,   296,   298,   300,   306,
+     310,   314,   318,   322,   328,   334,   335,   339,   342,   343,
+     347,   351,   352,   357,   358,   361,   363,   365,   367,   369,
+     374,   376,   377,   383,   385,   386,   392,   393,   396,   400,
+     401,   404,   408,   412,   416,   417,   423,   425,   427,   428,
+     430,   434,   438,   444,   446,   449,   450,   453,   456,   458,
+     460,   462,   463,   465,   468,   470,   472,   476,   479,   481,
+     485,   488,   489,   491,   493,   495,   498,   501,   502,   507,
+     512,   513,   520,   522,   523,   530,   533,   536,   539,   542,
+     544,   546,   548,   550,   551,   553,   555,   557,   559,   561,
+     565,   570,   576,   583,   590,   597,   605,   610,   615,   620,
+     627,   634,   642,   647,   652,   657,   664,   672,   676,   677,
+     687,   689,   691,   693,   697,   699,   701,   703,   705,   707,
+     709,   711,   713,   715,   717,   719,   721,   723,   725,   727,
+     729,   731,   733,   735,   737,   739,   741,   743,   745,   747,
+     749,   750,   756,   760,   762,   764,   766,   768,   770,   772,
+     774,   776,   778,   780,   782,   784,   786,   791,   793,   795,
+     797,   799,   803,   807,   811,   812,   818,   819,   823,   825,
+     831,   835,   838,   839,   842,   844,   846,   851,   854,   858,
+     864,   866,   870,   871,   873,   875,   882,   888,   893,   898,
+     905,   911,   913,   915,   917,   919,   921,   923,   925,   927,
+     929,   931,   932,   934,   938,   940,   942,   947,   951,   953,
+     955,   957,   959,   961,   963,   965,   967,   969,   971,   973,
+     974,   977,   978,   981,   983,   987,   988,   993,   995,   999,
+    1002,  1005,  1007,  1009,  1011,  1013,  1015,  1017,  1019,  1021,
+    1023,  1025
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -1391,93 +1391,92 @@
       -1,    -1,    -1,    27,   163,   250,   164,   184,     4,   165,
      166,   179,    73,    -1,    -1,     4,    -1,   166,   167,     4,
       -1,    -1,     5,   168,   169,    -1,   221,   109,   193,    -1,
-     221,   113,    21,   109,   193,    -1,    95,   126,   177,   127,
-      -1,    93,   126,   113,   127,    -1,    93,   126,   109,   127,
-      -1,    96,    -1,    96,   126,   113,   127,    -1,    91,    -1,
-      91,   126,   150,   127,    -1,   100,    -1,   100,   126,   150,
-     127,    -1,    98,   126,   113,   127,    -1,    99,    -1,    99,
-     126,   150,   127,    -1,    -1,   177,    72,   178,    -1,   178,
-      -1,    51,    -1,    52,    -1,    54,    -1,    53,    -1,   109,
-      -1,   113,    -1,   124,   255,   125,    -1,    -1,   207,    -1,
-      -1,    75,     4,   181,   188,   183,   187,   182,   190,    76,
-      -1,    -1,   212,     4,    -1,    -1,    85,   254,     4,    -1,
-      -1,   185,    -1,   186,    -1,   185,   186,    -1,    87,    -1,
-      88,    -1,    86,    -1,    89,    -1,    90,    -1,    92,    -1,
-      94,    -1,   170,    -1,   171,    -1,   172,    -1,   173,    -1,
-     174,    -1,   175,    -1,   176,    -1,    77,   254,    72,   254,
-       4,    -1,    77,   254,     4,    -1,    83,   254,     4,    -1,
-      84,   246,     4,    -1,    84,   113,     4,    -1,    84,   246,
-      72,   254,     4,    -1,    84,   113,    72,   254,     4,    -1,
-      -1,   188,   189,     4,    -1,    10,   236,    -1,    -1,   190,
-     191,     4,    -1,    63,   246,   193,    -1,    -1,    29,   192,
-     221,   215,    -1,    -1,   193,   194,    -1,    17,    -1,    18,
-      -1,    19,    -1,    20,    -1,    20,   126,   113,   127,    -1,
-     101,    -1,    -1,    79,     4,   196,   199,    80,    -1,   203,
-      -1,    -1,    81,     4,   198,   200,    82,    -1,    -1,   199,
-       4,    -1,   199,   201,     4,    -1,    -1,   200,     4,    -1,
-     200,   202,     4,    -1,    14,   254,   237,    -1,    15,   254,
-     237,    -1,    -1,   205,   126,   204,   206,   127,    -1,    64,
-      -1,    66,    -1,    -1,   236,    -1,   113,    21,   254,    -1,
-     206,    72,   236,    -1,   206,    72,   113,    21,   254,    -1,
-     209,    -1,   207,   209,    -1,    -1,   208,   213,    -1,   111,
-       4,    -1,   120,    -1,   119,    -1,   143,    -1,    -1,   211,
-      -1,   211,   212,    -1,   212,    -1,   102,    -1,   210,   217,
-       4,    -1,     1,     4,    -1,   215,    -1,   214,    72,   215,
-      -1,   109,   216,    -1,    -1,   101,    -1,   223,    -1,   241,
-      -1,    24,   109,    -1,    25,   109,    -1,    -1,    29,   218,
-     221,   214,    -1,    30,   113,    72,   246,    -1,    -1,    31,
-     219,   221,   109,   123,   263,    -1,   147,    -1,    -1,    34,
-     220,   221,   109,   123,   263,    -1,    65,   233,    -1,     9,
-     252,    -1,   117,   247,    -1,    13,   254,    -1,   233,    -1,
-     180,    -1,   195,    -1,   197,    -1,    -1,    51,    -1,    52,
-      -1,    53,    -1,    54,    -1,   109,    -1,   246,   123,   254,
-      -1,   246,   123,   225,   254,    -1,   246,   123,   254,   226,
-     254,    -1,   246,   123,   254,   124,   255,   125,    -1,   246,
-     124,   255,   125,   123,   254,    -1,   246,   123,    22,   222,
-      72,   254,    -1,   246,   123,    22,   222,   124,   255,   125,
-      -1,   246,   123,    22,   222,    -1,   246,   123,    22,   254,
-      -1,   246,   123,    22,   161,    -1,   246,   123,    22,   161,
-      72,   254,    -1,   246,   123,    22,   254,    72,   254,    -1,
-     246,   123,    22,   254,   124,   255,   125,    -1,   246,   123,
-      62,   264,    -1,    62,   264,   123,   254,    -1,    22,   246,
-      72,   254,    -1,    22,   246,    72,   254,    72,   254,    -1,
-      22,   246,    72,   254,   124,   255,   125,    -1,   246,   123,
-     233,    -1,    -1,   126,   224,   240,   127,   123,   232,   126,
-     235,   127,    -1,   227,    -1,   229,    -1,   231,    -1,   246,
-     123,    13,    -1,   128,    -1,   129,    -1,   130,    -1,   130,
-      -1,   131,    -1,   132,    -1,   133,    -1,   134,    -1,    43,
-      -1,    68,    -1,   122,    -1,    56,    -1,    57,    -1,    58,
-      -1,    59,    -1,    60,    -1,    61,    -1,    49,    -1,    50,
-      -1,    69,    -1,    70,    -1,    71,    -1,    55,    -1,   135,
-      -1,   136,    -1,   129,    -1,    -1,    67,   228,   126,   240,
-     127,    -1,   246,   230,   254,    -1,    35,    -1,    36,    -1,
-      37,    -1,    38,    -1,    45,    -1,    44,    -1,    39,    -1,
-      40,    -1,    41,    -1,    42,    -1,    46,    -1,    47,    -1,
-      48,    -1,   246,   123,   117,   156,    -1,   109,    -1,   113,
-      -1,   116,    -1,   246,    -1,   246,   121,   251,    -1,   246,
-     121,   113,    -1,   246,   121,   246,    -1,    -1,   232,   234,
-     126,   235,   127,    -1,    -1,   235,    72,   236,    -1,   236,
-      -1,   235,    72,   113,    21,   254,    -1,   113,    21,   254,
-      -1,   254,   237,    -1,    -1,   237,   238,    -1,    16,    -1,
-      20,    -1,    20,   126,   113,   127,    -1,   246,   193,    -1,
-     240,    72,   239,    -1,   240,    72,   113,    21,   246,    -1,
-     239,    -1,   113,    21,   246,    -1,    -1,   243,    -1,   242,
-      -1,    12,   254,   245,   254,     9,   252,    -1,    12,    13,
-     254,     9,   252,    -1,    12,   254,   244,   252,    -1,    11,
-     254,   244,   252,    -1,    11,   254,   245,   254,     9,   252,
-      -1,    11,    13,   254,     9,   252,    -1,    72,    -1,     9,
-      -1,    56,    -1,    57,    -1,    58,    -1,    59,    -1,    60,
-      -1,    61,    -1,   118,    -1,   262,    -1,    -1,   248,    -1,
-     248,    72,   249,    -1,   249,    -1,   253,    -1,   246,   124,
-     255,   125,    -1,   124,   257,   125,    -1,   251,    -1,   113,
-      -1,   116,    -1,   109,    -1,   117,    -1,   109,    -1,   117,
-      -1,   252,    -1,   254,    -1,   246,    -1,   263,    -1,    -1,
-     256,   259,    -1,    -1,   258,   259,    -1,   261,    -1,   259,
-     137,   261,    -1,    -1,   259,    72,   260,   261,    -1,   254,
-      -1,   254,    74,   254,    -1,    74,   254,    -1,   254,    74,
-      -1,   105,    -1,   106,    -1,   107,    -1,   108,    -1,   110,
-      -1,   114,    -1,   115,    -1,   113,    -1,   116,    -1,   107,
-      -1,   113,    -1
+      95,   126,   177,   127,    -1,    93,   126,   113,   127,    -1,
+      93,   126,   109,   127,    -1,    96,    -1,    96,   126,   113,
+     127,    -1,    91,    -1,    91,   126,   150,   127,    -1,   100,
+      -1,   100,   126,   150,   127,    -1,    98,   126,   113,   127,
+      -1,    99,    -1,    99,   126,   150,   127,    -1,    -1,   177,
+      72,   178,    -1,   178,    -1,    51,    -1,    52,    -1,    54,
+      -1,    53,    -1,   109,    -1,   113,    -1,   124,   255,   125,
+      -1,    -1,   207,    -1,    -1,    75,     4,   181,   188,   183,
+     187,   182,   190,    76,    -1,    -1,   212,     4,    -1,    -1,
+      85,   254,     4,    -1,    -1,   185,    -1,   186,    -1,   185,
+     186,    -1,    87,    -1,    88,    -1,    86,    -1,    89,    -1,
+      90,    -1,    92,    -1,    94,    -1,   170,    -1,   171,    -1,
+     172,    -1,   173,    -1,   174,    -1,   175,    -1,   176,    -1,
+      77,   254,    72,   254,     4,    -1,    77,   254,     4,    -1,
+      83,   254,     4,    -1,    84,   246,     4,    -1,    84,   113,
+       4,    -1,    84,   246,    72,   254,     4,    -1,    84,   113,
+      72,   254,     4,    -1,    -1,   188,   189,     4,    -1,    10,
+     236,    -1,    -1,   190,   191,     4,    -1,    63,   246,   193,
+      -1,    -1,    29,   192,   221,   215,    -1,    -1,   193,   194,
+      -1,    17,    -1,    18,    -1,    19,    -1,    20,    -1,    20,
+     126,   113,   127,    -1,   101,    -1,    -1,    79,     4,   196,
+     199,    80,    -1,   203,    -1,    -1,    81,     4,   198,   200,
+      82,    -1,    -1,   199,     4,    -1,   199,   201,     4,    -1,
+      -1,   200,     4,    -1,   200,   202,     4,    -1,    14,   254,
+     237,    -1,    15,   254,   237,    -1,    -1,   205,   126,   204,
+     206,   127,    -1,    64,    -1,    66,    -1,    -1,   236,    -1,
+     113,    21,   254,    -1,   206,    72,   236,    -1,   206,    72,
+     113,    21,   254,    -1,   209,    -1,   207,   209,    -1,    -1,
+     208,   213,    -1,   111,     4,    -1,   120,    -1,   119,    -1,
+     143,    -1,    -1,   211,    -1,   211,   212,    -1,   212,    -1,
+     102,    -1,   210,   217,     4,    -1,     1,     4,    -1,   215,
+      -1,   214,    72,   215,    -1,   109,   216,    -1,    -1,   101,
+      -1,   223,    -1,   241,    -1,    24,   109,    -1,    25,   109,
+      -1,    -1,    29,   218,   221,   214,    -1,    30,   113,    72,
+     246,    -1,    -1,    31,   219,   221,   109,   123,   263,    -1,
+     147,    -1,    -1,    34,   220,   221,   109,   123,   263,    -1,
+      65,   233,    -1,     9,   252,    -1,   117,   247,    -1,    13,
+     254,    -1,   233,    -1,   180,    -1,   195,    -1,   197,    -1,
+      -1,    51,    -1,    52,    -1,    53,    -1,    54,    -1,   109,
+      -1,   246,   123,   254,    -1,   246,   123,   225,   254,    -1,
+     246,   123,   254,   226,   254,    -1,   246,   123,   254,   124,
+     255,   125,    -1,   246,   124,   255,   125,   123,   254,    -1,
+     246,   123,    22,   222,    72,   254,    -1,   246,   123,    22,
+     222,   124,   255,   125,    -1,   246,   123,    22,   222,    -1,
+     246,   123,    22,   254,    -1,   246,   123,    22,   161,    -1,
+     246,   123,    22,   161,    72,   254,    -1,   246,   123,    22,
+     254,    72,   254,    -1,   246,   123,    22,   254,   124,   255,
+     125,    -1,   246,   123,    62,   264,    -1,    62,   264,   123,
+     254,    -1,    22,   246,    72,   254,    -1,    22,   246,    72,
+     254,    72,   254,    -1,    22,   246,    72,   254,   124,   255,
+     125,    -1,   246,   123,   233,    -1,    -1,   126,   224,   240,
+     127,   123,   232,   126,   235,   127,    -1,   227,    -1,   229,
+      -1,   231,    -1,   246,   123,    13,    -1,   128,    -1,   129,
+      -1,   130,    -1,   130,    -1,   131,    -1,   132,    -1,   133,
+      -1,   134,    -1,    43,    -1,    68,    -1,   122,    -1,    56,
+      -1,    57,    -1,    58,    -1,    59,    -1,    60,    -1,    61,
+      -1,    49,    -1,    50,    -1,    69,    -1,    70,    -1,    71,
+      -1,    55,    -1,   135,    -1,   136,    -1,   129,    -1,    -1,
+      67,   228,   126,   240,   127,    -1,   246,   230,   254,    -1,
+      35,    -1,    36,    -1,    37,    -1,    38,    -1,    45,    -1,
+      44,    -1,    39,    -1,    40,    -1,    41,    -1,    42,    -1,
+      46,    -1,    47,    -1,    48,    -1,   246,   123,   117,   156,
+      -1,   109,    -1,   113,    -1,   116,    -1,   246,    -1,   246,
+     121,   251,    -1,   246,   121,   113,    -1,   246,   121,   246,
+      -1,    -1,   232,   234,   126,   235,   127,    -1,    -1,   235,
+      72,   236,    -1,   236,    -1,   235,    72,   113,    21,   254,
+      -1,   113,    21,   254,    -1,   254,   237,    -1,    -1,   237,
+     238,    -1,    16,    -1,    20,    -1,    20,   126,   113,   127,
+      -1,   246,   193,    -1,   240,    72,   239,    -1,   240,    72,
+     113,    21,   246,    -1,   239,    -1,   113,    21,   246,    -1,
+      -1,   243,    -1,   242,    -1,    12,   254,   245,   254,     9,
+     252,    -1,    12,    13,   254,     9,   252,    -1,    12,   254,
+     244,   252,    -1,    11,   254,   244,   252,    -1,    11,   254,
+     245,   254,     9,   252,    -1,    11,    13,   254,     9,   252,
+      -1,    72,    -1,     9,    -1,    56,    -1,    57,    -1,    58,
+      -1,    59,    -1,    60,    -1,    61,    -1,   118,    -1,   262,
+      -1,    -1,   248,    -1,   248,    72,   249,    -1,   249,    -1,
+     253,    -1,   246,   124,   255,   125,    -1,   124,   257,   125,
+      -1,   251,    -1,   113,    -1,   116,    -1,   109,    -1,   117,
+      -1,   109,    -1,   117,    -1,   252,    -1,   254,    -1,   246,
+      -1,   263,    -1,    -1,   256,   259,    -1,    -1,   258,   259,
+      -1,   261,    -1,   259,   137,   261,    -1,    -1,   259,    72,
+     260,   261,    -1,   254,    -1,   254,    74,   254,    -1,    74,
+     254,    -1,   254,    74,    -1,   105,    -1,   106,    -1,   107,
+      -1,   108,    -1,   110,    -1,   114,    -1,   115,    -1,   113,
+      -1,   116,    -1,   107,    -1,   113,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -1489,36 +1488,36 @@
      891,   892,   893,   894,   895,   898,   898,   907,   906,   918,
      922,   930,   934,   938,   938,   950,   952,   956,   971,   979,
      984,   988,   991,   983,   997,   998,   999,  1012,  1012,  1016,
-    1027,  1042,  1046,  1052,  1061,  1067,  1076,  1082,  1091,  1097,
-    1106,  1114,  1123,  1135,  1138,  1143,  1151,  1152,  1153,  1154,
-    1155,  1166,  1177,  1180,  1182,  1187,  1186,  1219,  1220,  1224,
-    1225,  1229,  1230,  1234,  1235,  1239,  1240,  1241,  1242,  1243,
-    1244,  1245,  1246,  1247,  1248,  1249,  1250,  1251,  1252,  1256,
-    1261,  1265,  1270,  1274,  1278,  1283,  1292,  1293,  1297,  1302,
-    1303,  1311,  1312,  1312,  1327,  1328,  1332,  1333,  1334,  1335,
-    1336,  1337,  1342,  1342,  1345,  1353,  1353,  1359,  1360,  1365,
-    1373,  1374,  1379,  1387,  1391,  1396,  1395,  1408,  1409,  1413,
-    1414,  1424,  1428,  1438,  1446,  1447,  1459,  1463,  1465,  1466,
-    1467,  1468,  1472,  1473,  1477,  1478,  1482,  1491,  1492,  1503,
-    1510,  1519,  1529,  1530,  1535,  1536,  1537,  1538,  1539,  1539,
-    1555,  1559,  1559,  1566,  1567,  1567,  1573,  1579,  1580,  1592,
-    1593,  1594,  1595,  1596,  1597,  1601,  1602,  1603,  1604,  1608,
-    1621,  1623,  1625,  1627,  1629,  1631,  1633,  1635,  1637,  1639,
-    1641,  1643,  1645,  1647,  1649,  1653,  1655,  1657,  1660,  1667,
-    1666,  1675,  1676,  1677,  1678,  1686,  1687,  1688,  1692,  1693,
-    1694,  1695,  1696,  1697,  1698,  1699,  1700,  1701,  1702,  1703,
-    1704,  1705,  1706,  1707,  1708,  1709,  1710,  1711,  1712,  1713,
-    1714,  1720,  1719,  1731,  1738,  1739,  1740,  1741,  1742,  1743,
-    1744,  1745,  1746,  1747,  1748,  1749,  1750,  1755,  1766,  1767,
-    1768,  1769,  1775,  1787,  1793,  1799,  1798,  1807,  1808,  1818,
-    1828,  1834,  1843,  1847,  1848,  1852,  1853,  1856,  1860,  1864,
-    1874,  1879,  1889,  1894,  1898,  1899,  1903,  1907,  1911,  1918,
-    1922,  1926,  1933,  1934,  1938,  1939,  1940,  1941,  1942,  1943,
-    1947,  1948,  1952,  1953,  1957,  1958,  1962,  1963,  1970,  1977,
-    1978,  1979,  1983,  1984,  1988,  1989,  1993,  1994,  1998,  1999,
-    2003,  2003,  2016,  2016,  2029,  2030,  2035,  2035,  2044,  2050,
-    2057,  2058,  2062,  2063,  2064,  2065,  2066,  2070,  2071,  2072,
-    2073,  2077,  2078
+    1042,  1046,  1052,  1061,  1067,  1076,  1082,  1091,  1097,  1106,
+    1114,  1123,  1135,  1138,  1143,  1151,  1152,  1153,  1154,  1155,
+    1166,  1177,  1180,  1182,  1187,  1186,  1219,  1220,  1224,  1225,
+    1229,  1230,  1234,  1235,  1239,  1240,  1241,  1242,  1243,  1244,
+    1245,  1246,  1247,  1248,  1249,  1250,  1251,  1252,  1256,  1261,
+    1265,  1270,  1274,  1278,  1283,  1292,  1293,  1297,  1302,  1303,
+    1311,  1312,  1312,  1327,  1328,  1332,  1333,  1334,  1335,  1336,
+    1337,  1342,  1342,  1345,  1353,  1353,  1359,  1360,  1365,  1373,
+    1374,  1379,  1387,  1391,  1396,  1395,  1408,  1409,  1413,  1414,
+    1424,  1428,  1438,  1446,  1447,  1459,  1463,  1465,  1466,  1467,
+    1468,  1472,  1473,  1477,  1478,  1482,  1491,  1492,  1503,  1510,
+    1519,  1529,  1530,  1535,  1536,  1537,  1538,  1539,  1539,  1555,
+    1559,  1559,  1566,  1567,  1567,  1573,  1579,  1580,  1592,  1593,
+    1594,  1595,  1596,  1597,  1601,  1602,  1603,  1604,  1608,  1621,
+    1623,  1625,  1627,  1629,  1631,  1633,  1635,  1637,  1639,  1641,
+    1643,  1645,  1647,  1649,  1653,  1655,  1657,  1660,  1667,  1666,
+    1675,  1676,  1677,  1678,  1686,  1687,  1688,  1692,  1693,  1694,
+    1695,  1696,  1697,  1698,  1699,  1700,  1701,  1702,  1703,  1704,
+    1705,  1706,  1707,  1708,  1709,  1710,  1711,  1712,  1713,  1714,
+    1720,  1719,  1731,  1738,  1739,  1740,  1741,  1742,  1743,  1744,
+    1745,  1746,  1747,  1748,  1749,  1750,  1755,  1766,  1767,  1768,
+    1769,  1775,  1787,  1793,  1799,  1798,  1807,  1808,  1818,  1828,
+    1834,  1843,  1847,  1848,  1852,  1853,  1856,  1860,  1864,  1874,
+    1879,  1889,  1894,  1898,  1899,  1903,  1907,  1911,  1918,  1922,
+    1926,  1933,  1934,  1938,  1939,  1940,  1941,  1942,  1943,  1947,
+    1948,  1952,  1953,  1957,  1958,  1962,  1963,  1970,  1977,  1978,
+    1979,  1983,  1984,  1988,  1989,  1993,  1994,  1998,  1999,  2003,
+    2003,  2016,  2016,  2029,  2030,  2035,  2035,  2044,  2050,  2057,
+    2058,  2062,  2063,  2064,  2065,  2066,  2070,  2071,  2072,  2073,
+    2077,  2078
 };
 #endif
 
@@ -1606,36 +1605,36 @@
      152,   152,   152,   152,   152,   154,   153,   155,   153,   153,
      153,   153,   156,   158,   157,   159,   159,   160,   161,   161,
      163,   164,   165,   162,   166,   166,   166,   168,   167,   169,
-     169,   170,   171,   171,   172,   172,   173,   173,   174,   174,
-     175,   176,   176,   177,   177,   177,   178,   178,   178,   178,
-     178,   178,   178,   179,   179,   181,   180,   182,   182,   183,
-     183,   184,   184,   185,   185,   186,   186,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   186,   186,   186,   187,
-     187,   187,   187,   187,   187,   187,   188,   188,   189,   190,
-     190,   191,   192,   191,   193,   193,   194,   194,   194,   194,
-     194,   194,   196,   195,   195,   198,   197,   199,   199,   199,
-     200,   200,   200,   201,   202,   204,   203,   205,   205,   206,
-     206,   206,   206,   206,   207,   207,   208,   209,   209,   209,
-     209,   209,   210,   210,   211,   211,   212,   213,   213,   214,
-     214,   215,   216,   216,   217,   217,   217,   217,   218,   217,
-     217,   219,   217,   217,   220,   217,   217,   217,   217,   217,
-     217,   217,   217,   217,   217,   221,   221,   221,   221,   222,
+     170,   171,   171,   172,   172,   173,   173,   174,   174,   175,
+     176,   176,   177,   177,   177,   178,   178,   178,   178,   178,
+     178,   178,   179,   179,   181,   180,   182,   182,   183,   183,
+     184,   184,   185,   185,   186,   186,   186,   186,   186,   186,
+     186,   186,   186,   186,   186,   186,   186,   186,   187,   187,
+     187,   187,   187,   187,   187,   188,   188,   189,   190,   190,
+     191,   192,   191,   193,   193,   194,   194,   194,   194,   194,
+     194,   196,   195,   195,   198,   197,   199,   199,   199,   200,
+     200,   200,   201,   202,   204,   203,   205,   205,   206,   206,
+     206,   206,   206,   207,   207,   208,   209,   209,   209,   209,
+     209,   210,   210,   211,   211,   212,   213,   213,   214,   214,
+     215,   216,   216,   217,   217,   217,   217,   218,   217,   217,
+     219,   217,   217,   220,   217,   217,   217,   217,   217,   217,
+     217,   217,   217,   217,   221,   221,   221,   221,   222,   223,
      223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
-     223,   223,   223,   223,   223,   223,   223,   223,   223,   224,
-     223,   223,   223,   223,   223,   225,   225,   225,   226,   226,
+     223,   223,   223,   223,   223,   223,   223,   223,   224,   223,
+     223,   223,   223,   223,   225,   225,   225,   226,   226,   226,
      226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
      226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
-     226,   228,   227,   229,   230,   230,   230,   230,   230,   230,
-     230,   230,   230,   230,   230,   230,   230,   231,   232,   232,
-     232,   232,   232,   232,   232,   234,   233,   235,   235,   235,
-     235,   235,   236,   237,   237,   238,   238,   238,   239,   240,
-     240,   240,   240,   240,   241,   241,   242,   242,   242,   243,
-     243,   243,   244,   244,   245,   245,   245,   245,   245,   245,
-     246,   246,   247,   247,   248,   248,   249,   249,   249,   250,
-     250,   250,   251,   251,   252,   252,   253,   253,   254,   254,
-     256,   255,   258,   257,   259,   259,   260,   259,   261,   261,
-     261,   261,   262,   262,   262,   262,   262,   263,   263,   263,
-     263,   264,   264
+     228,   227,   229,   230,   230,   230,   230,   230,   230,   230,
+     230,   230,   230,   230,   230,   230,   231,   232,   232,   232,
+     232,   232,   232,   232,   234,   233,   235,   235,   235,   235,
+     235,   236,   237,   237,   238,   238,   238,   239,   240,   240,
+     240,   240,   240,   241,   241,   242,   242,   242,   243,   243,
+     243,   244,   244,   245,   245,   245,   245,   245,   245,   246,
+     246,   247,   247,   248,   248,   249,   249,   249,   250,   250,
+     250,   251,   251,   252,   252,   253,   253,   254,   254,   256,
+     255,   258,   257,   259,   259,   260,   259,   261,   261,   261,
+     261,   262,   262,   262,   262,   262,   263,   263,   263,   263,
+     264,   264
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1647,36 +1646,36 @@
        1,     1,     1,     1,     1,     0,     3,     0,     4,     2,
        4,     0,     1,     0,     4,     0,     1,     3,     3,     2,
        0,     0,     0,    10,     0,     1,     3,     0,     3,     3,
-       5,     4,     4,     4,     1,     4,     1,     4,     1,     4,
-       4,     1,     4,     0,     3,     1,     1,     1,     1,     1,
-       1,     1,     3,     0,     1,     0,     9,     0,     2,     0,
-       3,     0,     1,     1,     2,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     5,
-       3,     3,     3,     3,     5,     5,     0,     3,     2,     0,
-       3,     3,     0,     4,     0,     2,     1,     1,     1,     1,
-       4,     1,     0,     5,     1,     0,     5,     0,     2,     3,
-       0,     2,     3,     3,     3,     0,     5,     1,     1,     0,
-       1,     3,     3,     5,     1,     2,     0,     2,     2,     1,
-       1,     1,     0,     1,     2,     1,     1,     3,     2,     1,
-       3,     2,     0,     1,     1,     1,     2,     2,     0,     4,
-       4,     0,     6,     1,     0,     6,     2,     2,     2,     2,
-       1,     1,     1,     1,     0,     1,     1,     1,     1,     1,
-       3,     4,     5,     6,     6,     6,     7,     4,     4,     4,
-       6,     6,     7,     4,     4,     4,     6,     7,     3,     0,
-       9,     1,     1,     1,     3,     1,     1,     1,     1,     1,
+       4,     4,     4,     1,     4,     1,     4,     1,     4,     4,
+       1,     4,     0,     3,     1,     1,     1,     1,     1,     1,
+       1,     3,     0,     1,     0,     9,     0,     2,     0,     3,
+       0,     1,     1,     2,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     5,     3,
+       3,     3,     3,     5,     5,     0,     3,     2,     0,     3,
+       3,     0,     4,     0,     2,     1,     1,     1,     1,     4,
+       1,     0,     5,     1,     0,     5,     0,     2,     3,     0,
+       2,     3,     3,     3,     0,     5,     1,     1,     0,     1,
+       3,     3,     5,     1,     2,     0,     2,     2,     1,     1,
+       1,     0,     1,     2,     1,     1,     3,     2,     1,     3,
+       2,     0,     1,     1,     1,     2,     2,     0,     4,     4,
+       0,     6,     1,     0,     6,     2,     2,     2,     2,     1,
+       1,     1,     1,     0,     1,     1,     1,     1,     1,     3,
+       4,     5,     6,     6,     6,     7,     4,     4,     4,     6,
+       6,     7,     4,     4,     4,     6,     7,     3,     0,     9,
+       1,     1,     1,     3,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     5,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     4,     1,     1,
-       1,     1,     3,     3,     3,     0,     5,     0,     3,     1,
-       5,     3,     2,     0,     2,     1,     1,     4,     2,     3,
-       5,     1,     3,     0,     1,     1,     6,     5,     4,     4,
-       6,     5,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     1,     3,     1,     1,     4,     3,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     2,     0,     2,     1,     3,     0,     4,     1,     3,
-       2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1
+       0,     5,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     4,     1,     1,     1,
+       1,     3,     3,     3,     0,     5,     0,     3,     1,     5,
+       3,     2,     0,     2,     1,     1,     4,     2,     3,     5,
+       1,     3,     0,     1,     1,     6,     5,     4,     4,     6,
+       5,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     0,     1,     3,     1,     1,     4,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       2,     0,     2,     1,     3,     0,     4,     1,     3,     2,
+       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1686,62 +1685,61 @@
 {
        0,    12,     0,     0,     0,     0,    50,    18,     0,    43,
        0,     0,     2,     3,    10,    11,     0,     6,     8,     5,
-       7,    16,     0,     0,   330,     0,     0,     0,     0,   162,
+       7,    16,     0,     0,   329,     0,     0,     0,     0,   161,
        9,     1,     4,    13,     0,     0,    49,     0,     0,    47,
-     322,   320,   321,   323,    51,   319,   195,   196,   197,   198,
-       0,    14,    20,   166,     0,    31,    30,    34,    33,   162,
-      26,     0,    32,    35,   163,   165,    17,     0,    48,     0,
-     342,   343,   344,   345,   346,   349,   347,   348,   350,   310,
-     328,   338,   331,   334,   311,   329,    91,     0,     0,     0,
-      29,    27,    44,     0,     0,    37,     0,     0,   164,    15,
-     340,   341,   336,     0,    97,    95,    96,    98,    99,    66,
-     100,     0,   101,     0,    64,     0,    71,    68,   102,   103,
-     104,   105,   106,   107,   108,     0,    92,    93,     0,     0,
-       0,    39,     0,    91,    28,   312,   339,     0,   335,     0,
-       0,    73,     0,     0,     0,     0,    52,    94,    19,   324,
-     325,   326,     0,   327,     0,     0,     0,   332,    36,   328,
-      42,   313,   315,   316,   337,    24,    25,     0,     0,     0,
-      76,    77,    79,    78,    80,    81,   330,     0,    75,     0,
+     321,   319,   320,   322,    51,   318,   194,   195,   196,   197,
+       0,    14,    20,   165,     0,    31,    30,    34,    33,   161,
+      26,     0,    32,    35,   162,   164,    17,     0,    48,     0,
+     341,   342,   343,   344,   345,   348,   346,   347,   349,   309,
+     327,   337,   330,   333,   310,   328,    90,     0,     0,     0,
+      29,    27,    44,     0,     0,    37,     0,     0,   163,    15,
+     339,   340,   335,     0,    96,    94,    95,    97,    98,    65,
+      99,     0,   100,     0,    63,     0,    70,    67,   101,   102,
+     103,   104,   105,   106,   107,     0,    91,    92,     0,     0,
+       0,    39,     0,    90,    28,   311,   338,     0,   334,     0,
+       0,    72,     0,     0,     0,     0,    52,    93,    19,   323,
+     324,   325,     0,   326,     0,     0,     0,   331,    36,   327,
+      42,   312,   314,   315,   336,    24,    25,     0,     0,     0,
+      75,    76,    78,    77,    79,    80,   329,     0,    74,     0,
        0,     0,     0,    54,     0,     0,    40,    38,     0,     0,
-     330,     0,    67,    63,    62,     0,     0,    61,    65,    70,
-      72,    69,    55,   156,    21,    23,   318,   333,     0,   314,
-      82,    74,    57,     0,   160,   159,   161,     0,     0,   156,
-       0,   154,   317,     0,   158,    56,    53,   155,     0,   194,
-     157,    58,     0,   168,     0,     0,     0,     0,     0,     0,
-       0,   178,     0,   181,   184,     0,   147,     0,   148,   251,
-       0,     0,     0,   268,   269,   270,   312,   219,   183,   191,
-     192,   193,   134,     0,     0,   174,   221,   222,   223,   275,
-     190,   175,   295,   294,   271,   124,     0,   187,     0,     0,
-       0,     0,   189,     0,   176,   177,     0,     0,     0,     0,
-     351,   352,     0,   186,   271,     0,    85,   132,   135,   188,
-     293,   145,   167,     0,   254,   255,   256,   257,   260,   261,
-     262,   263,   259,   258,   264,   265,   266,     0,     0,   330,
-       0,    59,     0,     0,   303,   304,   305,   306,   307,   308,
-     309,   302,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   293,   116,   137,   140,     0,   291,     0,
-     124,   149,   277,   273,   274,   272,   224,     0,     0,   349,
-     350,   312,   225,   226,   227,     0,   218,   328,   200,     0,
-     253,   126,   127,   128,   129,   131,   125,   124,     0,   299,
-       0,     0,   298,     0,   215,   172,   179,   169,   180,     0,
-       0,   214,     0,    89,     0,     0,     0,     0,     0,   288,
-     349,     0,   150,   283,   349,     0,   279,   199,   209,   207,
-     208,   213,   267,   201,   233,   242,   243,   247,   236,   237,
-     238,   239,   240,   241,   234,   244,   245,   246,   235,   330,
-     250,   228,   229,   230,   231,   232,   248,   249,     0,     0,
-       0,    60,   301,     0,   297,     0,     0,   330,   173,   171,
-       0,     0,     0,   252,     0,     0,     0,     0,   138,     0,
-     133,     0,   141,     0,   136,     0,   292,     0,   289,     0,
-       0,     0,   146,   282,     0,     0,   276,     0,     0,   330,
-       0,   330,     0,   202,     0,     0,   300,   296,   216,     0,
-     170,   182,   185,   118,     0,     0,     0,     0,    87,   117,
-     283,   139,   283,   142,     0,     0,   151,   349,   152,   285,
-     286,   284,   281,   349,   278,   210,   205,     0,   211,     0,
-     203,   204,   130,   217,    90,     0,     0,     0,     0,   119,
-       0,   143,   144,   290,   277,     0,     0,     0,   206,   212,
-     110,     0,   111,   113,     0,   112,     0,     0,    88,     0,
-     153,     0,   280,     0,     0,     0,   122,     0,    86,     0,
-     220,   287,   109,   115,   114,     0,   124,   120,     0,   121,
-     123
+     329,     0,    66,    62,    61,     0,     0,    60,    64,    69,
+      71,    68,    55,   155,    21,    23,   317,   332,     0,   313,
+      81,    73,    57,     0,   159,   158,   160,     0,     0,   155,
+       0,   153,   316,     0,   157,    56,    53,   154,     0,   193,
+     156,    58,     0,   167,     0,     0,     0,     0,     0,     0,
+       0,   177,     0,   180,   183,     0,   146,     0,   147,   250,
+       0,     0,     0,   267,   268,   269,   311,   218,   182,   190,
+     191,   192,   133,     0,     0,   173,   220,   221,   222,   274,
+     189,   174,   294,   293,   270,   123,   186,     0,     0,     0,
+       0,   188,     0,   175,   176,     0,     0,     0,     0,   350,
+     351,     0,   185,   270,     0,    84,   131,   134,   187,   292,
+     144,   166,     0,   253,   254,   255,   256,   259,   260,   261,
+     262,   258,   257,   263,   264,   265,     0,     0,   329,     0,
+      59,     0,   302,   303,   304,   305,   306,   307,   308,   301,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   292,   115,   136,   139,     0,   290,     0,   123,   148,
+     276,   272,   273,   271,   223,     0,     0,   348,   349,   311,
+     224,   225,   226,     0,   217,   327,   199,     0,   252,   125,
+     126,   127,   128,   130,   124,     0,   298,     0,     0,   297,
+       0,   214,   171,   178,   168,   179,     0,     0,   213,     0,
+      88,     0,     0,     0,     0,     0,   287,   348,     0,   149,
+     282,   348,     0,   278,   198,   208,   206,   207,   212,   266,
+     200,   232,   241,   242,   246,   235,   236,   237,   238,   239,
+     240,   233,   243,   244,   245,   234,   329,   249,   227,   228,
+     229,   230,   231,   247,   248,     0,     0,     0,   300,     0,
+     296,     0,     0,   329,   172,   170,     0,     0,     0,   251,
+       0,     0,     0,     0,   137,     0,   132,     0,   140,     0,
+     135,     0,   291,     0,   288,     0,     0,     0,   145,   281,
+       0,     0,   275,     0,     0,   329,     0,   329,     0,   201,
+       0,     0,   299,   295,   215,     0,   169,   181,   184,   117,
+       0,     0,     0,     0,    86,   116,   282,   138,   282,   141,
+       0,     0,   150,   348,   151,   284,   285,   283,   280,   348,
+     277,   209,   204,     0,   210,     0,   202,   203,   129,   216,
+      89,     0,     0,     0,     0,   118,     0,   142,   143,   289,
+     276,     0,     0,     0,   205,   211,   109,     0,   110,   112,
+       0,   111,     0,     0,    87,     0,   152,     0,   279,     0,
+       0,     0,   121,     0,    85,     0,   219,   286,   108,   114,
+     113,     0,   123,   119,     0,   120,   122
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -1751,259 +1749,254 @@
       88,    89,   167,    59,    60,    96,    97,   133,   158,    18,
       29,    61,    19,    25,    20,    26,    86,   183,   203,   217,
      223,   231,   118,   119,   120,   121,   122,   123,   124,   177,
-     178,   218,   259,   344,   529,   456,   125,   126,   127,   498,
-     393,   457,   547,   559,   565,   321,   376,   260,   345,   261,
-     346,   394,   395,   461,   465,   262,   351,   263,   401,   219,
-     220,   221,    63,    64,    65,   230,   386,   387,   449,   264,
-     286,   288,   289,    50,   409,   265,   300,   365,   438,   266,
-     295,   267,   320,   268,   269,   270,   303,   405,   406,   473,
-     511,   348,   349,   271,   272,   273,   332,   333,    80,   160,
+     178,   218,   259,   342,   525,   452,   125,   126,   127,   494,
+     390,   453,   543,   555,   561,   320,   374,   260,   343,   261,
+     344,   391,   392,   457,   461,   262,   349,   263,   398,   219,
+     220,   221,    63,    64,    65,   230,   383,   384,   445,   264,
+     285,   287,   288,    50,   406,   265,   299,   363,   435,   266,
+     294,   267,   319,   268,   269,   270,   302,   402,   403,   469,
+     507,   346,   347,   271,   272,   273,   330,   331,    80,   160,
      161,   162,    44,    45,   151,   163,   153,    37,    38,   188,
-     189,    82,   137,    83,    84,    85,   292
+     189,    82,   137,    83,    84,    85,   291
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -442
+#define YYPACT_NINF -440
 static const yytype_int16 yypact[] =
 {
-      13,  -442,   -88,   -34,   -64,   -12,  -442,  -442,     5,  -442,
-     158,   165,    13,  -442,  -442,  -442,   179,  -442,  -442,  -442,
-    -442,  -442,    67,   139,    88,   223,   177,   172,   226,   181,
-    -442,  -442,  -442,  -442,   124,   128,  -442,   130,   296,  -442,
-    -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,
-     147,  -442,   145,  -442,   255,  -442,  -442,  -442,  -442,   214,
-    -442,   157,  -442,    70,   160,  -442,  -442,   268,  -442,   479,
-    -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,
-    -442,   199,   -42,  -442,  -442,  -442,   548,   153,   167,   171,
-    -442,  -442,  -442,   479,   174,  -442,   284,   180,  -442,  -442,
-    -442,   479,  -442,   296,  -442,  -442,  -442,  -442,  -442,   163,
-    -442,   170,  -442,   176,   182,   184,   186,   189,  -442,  -442,
-    -442,  -442,  -442,  -442,  -442,   299,   548,  -442,   207,   544,
-     544,  -442,   219,   548,  -442,   464,  -442,   296,  -442,   -46,
-      55,   105,   192,   204,   -46,   -46,  -442,  -442,  -442,  -442,
-    -442,  -442,   183,  -442,   201,   216,   228,  -442,  -442,   208,
-    -442,   259,  -442,  -442,  -442,  -442,  -442,   210,   215,   217,
-    -442,  -442,  -442,  -442,  -442,  -442,  -442,   -49,  -442,   229,
-     231,   232,   239,   331,   -46,   -46,  -442,  -442,   225,   296,
-    -442,   464,  -442,  -442,  -442,   242,   105,  -442,  -442,  -442,
-    -442,  -442,  -442,     2,  -442,  -442,  -442,   -42,   243,  -442,
-    -442,  -442,  -442,   365,  -442,  -442,  -442,   368,   300,    34,
-      23,  -442,  -442,   172,  -442,  -442,  -442,  -442,   370,   450,
-    -442,  -442,    94,  -442,   -33,   233,   247,   479,   287,   266,
-     267,  -442,   264,    82,  -442,   -85,  -442,   161,  -442,  -442,
-     382,   392,   394,  -442,  -442,  -442,   464,  -442,  -442,  -442,
-    -442,  -442,  -442,   273,   403,  -442,  -442,  -442,  -442,  -442,
-    -442,  -442,  -442,  -442,   343,  -442,   397,  -442,   479,   193,
-     479,   193,  -442,   341,  -442,  -442,   172,   347,   172,   172,
-    -442,  -442,   292,  -442,   301,   294,  -442,  -442,  -442,  -442,
-     342,  -442,  -442,   297,  -442,  -442,  -442,  -442,  -442,  -442,
-    -442,  -442,  -442,  -442,  -442,  -442,  -442,   126,    64,  -442,
-     479,    42,   317,   418,  -442,  -442,  -442,  -442,  -442,  -442,
-    -442,  -442,   -33,   479,   419,   -33,   479,   479,   320,   287,
-     321,   322,   479,   342,  -442,  -442,  -442,   413,  -442,   -26,
-    -442,   558,   572,  -442,  -442,  -442,  -442,   509,   -85,   312,
-     315,   464,  -442,  -442,  -442,   479,  -442,    65,   477,   318,
-    -442,  -442,  -442,  -442,   319,  -442,  -442,  -442,   -33,  -442,
-     435,   -33,  -442,   442,   -21,   352,   384,  -442,  -442,   345,
-     346,  -442,   -16,     6,    35,    11,   287,   380,   348,    42,
-     433,    -8,  -442,  -442,   444,    36,  -442,  -442,   398,    20,
-      22,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,
-    -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,
-    -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,   479,   350,
-     363,    42,  -442,   -33,  -442,   -33,   479,  -442,  -442,  -442,
-     320,   207,   207,  -442,   479,   479,   132,   473,  -442,   479,
-    -442,   474,  -442,   479,  -442,   478,  -442,   462,  -442,   161,
-     479,   586,  -442,   188,   479,   600,  -442,   479,   479,  -442,
-     479,  -442,   364,  -442,   479,   367,  -442,  -442,  -442,   366,
-    -442,  -442,  -442,  -442,   488,   479,   479,   614,   160,  -442,
-    -442,  -442,  -442,  -442,   287,   369,  -442,   480,  -442,  -442,
-     374,  -442,  -442,   481,  -442,  -442,  -442,   379,  -442,   385,
-    -442,  -442,  -442,  -442,  -442,     8,   501,     9,    25,  -442,
-     503,   188,   188,  -442,   572,   479,   396,   479,  -442,  -442,
-    -442,   479,  -442,  -442,   479,  -442,   479,   113,  -442,    48,
-    -442,   386,  -442,   507,   514,   515,  -442,   287,  -442,   517,
-    -442,  -442,  -442,  -442,  -442,   172,  -442,  -442,   320,    42,
-    -442
+     223,  -440,  -100,   -74,   -53,   -23,  -440,  -440,    -3,  -440,
+     134,   143,   223,  -440,  -440,  -440,   142,  -440,  -440,  -440,
+    -440,  -440,    38,    92,    66,   192,    59,   262,   207,   138,
+    -440,  -440,  -440,  -440,   101,   103,  -440,    93,   285,  -440,
+    -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,
+     108,  -440,   115,  -440,   217,  -440,  -440,  -440,  -440,   188,
+    -440,   130,  -440,    13,   135,  -440,  -440,   232,  -440,   495,
+    -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,
+    -440,   164,   -54,  -440,  -440,  -440,   532,   121,   131,   133,
+    -440,  -440,  -440,   495,   139,  -440,   247,   145,  -440,  -440,
+    -440,   495,  -440,   285,  -440,  -440,  -440,  -440,  -440,   122,
+    -440,   137,  -440,   151,   156,   157,   162,   163,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,   252,   532,  -440,   214,   528,
+     528,  -440,   187,   532,  -440,   460,  -440,   285,  -440,   -34,
+      54,   171,   158,   173,   -34,   -34,  -440,  -440,  -440,  -440,
+    -440,  -440,   141,  -440,   146,   181,   196,  -440,  -440,   170,
+    -440,   229,  -440,  -440,  -440,  -440,  -440,   176,   178,   182,
+    -440,  -440,  -440,  -440,  -440,  -440,  -440,   -56,  -440,   183,
+     191,   194,   197,   327,   -34,   -34,  -440,  -440,   208,   285,
+    -440,   460,  -440,  -440,  -440,   216,   171,  -440,  -440,  -440,
+    -440,  -440,  -440,    20,  -440,  -440,  -440,   -54,   222,  -440,
+    -440,  -440,  -440,   335,  -440,  -440,  -440,   351,   246,    22,
+      11,  -440,  -440,   262,  -440,  -440,  -440,  -440,   352,   446,
+    -440,  -440,   254,  -440,   -47,   160,   230,   495,   439,   257,
+     259,  -440,   256,   -61,  -440,    41,  -440,   356,  -440,  -440,
+     373,   374,   375,  -440,  -440,  -440,   460,  -440,  -440,  -440,
+    -440,  -440,  -440,   255,   378,  -440,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,   493,  -440,  -440,   495,    99,   495,
+      99,  -440,   308,  -440,  -440,   262,   316,   262,   262,  -440,
+    -440,   264,  -440,   268,   270,  -440,  -440,  -440,  -440,   301,
+    -440,  -440,   276,  -440,  -440,  -440,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,  -440,   244,    72,  -440,   495,
+      29,   385,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,
+     -47,   495,   396,   -47,   495,   495,   306,   439,   307,   309,
+     495,   301,  -440,  -440,  -440,   389,  -440,   -21,  -440,   542,
+     556,  -440,  -440,  -440,  -440,   480,    41,   296,   297,   460,
+    -440,  -440,  -440,   495,  -440,   -62,   315,   299,  -440,  -440,
+    -440,  -440,   300,  -440,  -440,   -47,  -440,   416,   -47,  -440,
+     418,     2,   329,   362,  -440,  -440,   317,   318,  -440,   -18,
+      -1,    23,     6,   439,   376,   320,    29,   431,   -16,  -440,
+    -440,   435,   -15,  -440,  -440,   388,    26,    81,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,   495,   344,   360,  -440,   -47,
+    -440,   -47,   495,  -440,  -440,  -440,   306,   214,   214,  -440,
+     495,   495,   126,   474,  -440,   495,  -440,   475,  -440,   495,
+    -440,   481,  -440,   466,  -440,   356,   495,   570,  -440,   154,
+     495,   584,  -440,   495,   495,  -440,   495,  -440,   363,  -440,
+     495,   364,  -440,  -440,  -440,   365,  -440,  -440,  -440,  -440,
+     492,   495,   495,   598,   135,  -440,  -440,  -440,  -440,  -440,
+     439,   371,  -440,   477,  -440,  -440,   377,  -440,  -440,   479,
+    -440,  -440,  -440,   380,  -440,   381,  -440,  -440,  -440,  -440,
+    -440,    25,   497,    28,    30,  -440,   503,   154,   154,  -440,
+     556,   495,   401,   495,  -440,  -440,  -440,   495,  -440,  -440,
+     495,  -440,   495,   224,  -440,    -5,  -440,   382,  -440,   511,
+     512,   513,  -440,   439,  -440,   514,  -440,  -440,  -440,  -440,
+    -440,   262,  -440,  -440,   306,    29,  -440
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -442,  -442,  -442,   510,    12,   -53,  -442,  -442,  -442,   295,
-    -442,  -442,    16,  -442,   469,  -442,  -442,  -442,   162,  -442,
-    -442,  -442,    14,   173,  -442,  -442,  -442,  -442,  -442,  -442,
-    -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,
-     344,  -442,  -442,  -442,  -442,  -442,   406,  -442,   415,  -442,
-    -442,  -442,  -442,  -442,  -442,  -344,  -442,  -442,  -442,  -442,
-    -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,
-    -442,   323,   324,  -442,   -63,  -442,  -442,  -441,  -442,  -442,
-    -442,  -442,  -442,  -220,  -442,  -442,  -442,  -442,  -442,  -442,
-    -442,  -442,  -442,  -442,    74,  -236,  -442,    15,  -337,  -365,
-    -442,   154,   209,  -442,  -442,  -442,   269,   272,  -133,   298,
-    -442,   371,  -442,   244,  -226,   118,   -38,  -172,  -442,  -442,
-    -442,   375,  -442,   -65,  -442,  -123,   238
+    -440,  -440,  -440,   507,    21,  -159,  -440,  -440,  -440,   291,
+    -440,  -440,    48,  -440,   463,  -440,  -440,  -440,   165,  -440,
+    -440,  -440,   106,   168,  -440,  -440,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,
+     330,  -440,  -440,  -440,  -440,  -440,   403,  -440,   417,  -440,
+    -440,  -440,  -440,  -440,  -440,  -342,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,
+    -440,   323,   328,  -440,   -63,  -440,  -440,  -439,  -440,  -440,
+    -440,  -440,  -440,  -219,  -440,  -440,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,    85,  -236,  -440,    31,  -335,  -409,
+    -440,   166,   238,  -440,  -440,  -440,   278,   302,  -133,   324,
+    -440,   390,  -440,   267,  -226,    77,   -38,  -171,  -440,  -440,
+    -440,   402,  -440,   -65,  -440,  -125,   215
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -272
+#define YYTABLE_NINF -271
 static const yytype_int16 yytable[] =
 {
-      81,    98,   159,   232,   195,   148,   399,   212,   277,   490,
-       4,   293,   540,   543,   402,   462,   454,     1,   208,     2,
-       3,     4,   290,   196,   228,    21,   463,  -162,   291,   545,
-     102,   100,  -162,   441,  -162,  -162,  -162,     5,   138,   458,
-       6,    57,     4,    62,     7,  -162,   397,  -162,  -162,   459,
-      23,   446,  -162,  -162,  -162,   131,   397,  -162,   159,   371,
-     372,   373,   374,   136,   471,    81,   338,   165,   340,   341,
-     166,    57,   164,    62,   -41,   -83,   149,   356,   197,    22,
-     541,   544,   366,    93,   150,  -162,   357,  -162,  -162,  -162,
-    -162,   455,   478,   464,   480,   103,   274,   546,  -162,    81,
-      94,   398,  -162,   447,  -162,   283,   379,   -84,   475,   382,
-       8,   453,    24,   213,   294,   460,     9,   493,    28,   472,
-     475,   214,   215,   159,    10,    53,   358,   570,  -162,  -162,
-    -162,  -162,  -162,  -162,   508,   531,  -162,   532,   514,  -162,
-    -162,  -162,   556,   375,   479,   213,   481,   369,    95,  -162,
-     216,    81,   442,   214,   215,   444,   170,   171,   172,   173,
-     181,   182,    30,   476,   168,    31,   216,   350,   169,    70,
-      71,    72,    73,   253,    74,   560,   557,   359,    76,    77,
-     360,   361,    79,    33,   354,   367,   317,     2,     3,   558,
-      34,  -271,   362,   363,   364,   -22,   -20,   279,   281,   282,
-     204,   205,   324,   275,   509,     5,   388,   276,   510,   495,
-     350,    35,    52,    36,   174,   496,   497,   486,   175,   487,
-       2,     3,   569,    46,    47,    48,    49,    39,   159,   176,
-      51,    70,    71,    72,    73,    40,    74,    66,     5,   353,
-     323,    67,   334,    43,    79,    52,   278,   152,   154,   325,
-     326,   327,   328,   329,   330,    68,    87,   482,   -22,    90,
-     280,    92,    53,   466,   350,   331,    70,    71,    72,    73,
-     253,    74,    99,   101,   254,   489,   128,   255,     8,    79,
-     368,   129,   370,    53,   130,   -45,    40,   132,   134,   139,
-      41,   155,    54,    42,    43,   380,   140,   135,   383,   384,
-      55,    56,   141,   146,   391,   179,   184,   517,   142,   519,
-     143,     8,   144,   403,   403,   145,    53,   180,   -46,   410,
-      75,    76,    77,    78,   185,    54,   186,   413,   491,   492,
-     187,   191,   190,    55,    56,   202,   294,   192,    70,    71,
-      72,    73,   193,    74,   194,   568,    75,    76,    77,    78,
-     206,    79,    70,    71,    72,    73,   198,    74,   199,   200,
-      75,    76,    77,    78,   528,    79,   201,   210,   222,   224,
-      69,   533,   225,   226,   233,   284,   285,   287,   304,   305,
-     306,   307,   308,   309,   310,   311,   296,   312,   313,   314,
-     315,   316,    70,    71,    72,    73,   297,    74,   298,   301,
-     483,    70,    71,    72,    73,    79,    74,   302,   488,    75,
-      76,    77,    78,   337,    79,   342,   403,   494,   322,   339,
-     343,   500,   317,   352,   566,   502,   377,   378,   381,   385,
-     389,   390,   506,   403,   396,   530,   512,   403,  -269,   515,
-     516,  -270,   518,   439,   443,   440,   521,    70,    71,    72,
-      73,   445,    74,   448,   470,   347,   450,   525,   526,   234,
-      79,   235,   236,   237,   317,   474,   318,   319,   451,   452,
-     477,   469,   238,   484,   239,   240,   485,   499,   501,   241,
-     242,   243,   503,   504,   244,    70,    71,    72,    73,   520,
-      74,   523,   524,   467,   522,   534,   403,   550,    79,   552,
-     536,   535,   537,   553,   538,   542,   554,   548,   555,   551,
-     539,   562,   245,   561,   246,   247,   248,   249,   563,   564,
-     414,   567,    32,   412,   258,   250,   415,   416,    91,   251,
-     408,   252,   417,   418,   419,   420,   421,   422,   423,   156,
-     211,   147,   227,   505,   229,   424,   425,   426,   427,   549,
-     335,   468,   392,   336,   299,    70,    71,    72,    73,   253,
-      74,   355,   209,   254,   207,     0,   255,   256,    79,    70,
-      71,    72,    73,   149,    74,     0,   257,    75,    76,    77,
-      78,   150,    79,     0,    70,    71,    72,    73,   157,    74,
-       0,     0,    75,    76,    77,    78,   411,    79,     0,   428,
-       0,   429,     0,     0,     0,     0,   430,   431,   432,   433,
-     434,   435,   436,   437,    70,    71,    72,    73,   407,    74,
-       0,     0,    75,    76,    77,    78,     0,    79,     0,     0,
-       0,     0,     0,    24,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,     0,   115,   116,   117,    70,
-      71,    72,    73,   149,    74,     0,     0,    75,    76,    77,
-      78,   150,    79,    70,    71,    72,    73,     0,    74,     0,
-       0,   400,    76,    77,    78,     0,    79,    70,    71,    72,
-      73,     0,    74,     0,     0,   404,    76,    77,    78,     0,
-      79,    70,    71,    72,    73,     0,    74,     0,     0,   507,
+      81,    98,   159,   148,   232,   195,   396,   486,   276,   450,
+     458,   292,   228,    21,   399,  -161,   196,   -41,   102,   208,
+    -161,   459,  -161,  -161,  -161,   212,    93,   454,     4,   536,
+       4,   100,   539,  -161,   541,  -161,  -161,   455,   138,    22,
+    -161,  -161,  -161,    94,   216,  -161,   369,   370,   371,   372,
+      57,   394,   -22,   -20,   394,   131,   467,   471,   159,   316,
+     216,    23,   149,   136,  -270,    81,   336,   471,   338,   339,
+     150,   197,   164,  -161,   442,  -161,  -161,  -161,  -161,   165,
+      57,   364,   166,   103,   451,   354,  -161,   527,   460,   528,
+    -161,    95,  -161,   -82,   355,   -83,   274,   537,   474,    81,
+     540,    24,   542,   456,   376,   282,   395,   379,   322,   449,
+      28,   468,   472,    53,   293,   489,  -161,  -161,  -161,  -161,
+    -161,  -161,   556,   159,  -161,   566,   443,  -161,  -161,  -161,
+     373,   213,   504,   213,   356,    62,   510,  -161,    30,   214,
+     215,   214,   215,    31,     2,     3,    33,   367,   289,   438,
+     475,    81,   440,   476,   290,   323,   324,   325,   326,   327,
+     328,    34,     5,   168,    35,    62,   348,   169,    40,    52,
+     505,   329,    41,   277,   506,    42,    43,    70,    71,    72,
+      73,   253,    74,   352,   365,   357,    76,    77,   358,   359,
+      79,    36,   181,   182,     2,     3,    39,   278,   280,   281,
+     360,   361,   362,   491,   385,   477,   152,   154,   348,   492,
+     493,    51,     5,   482,    66,   483,    67,    87,    68,    52,
+     565,    90,   170,   171,   172,   173,   159,     1,   -22,     2,
+       3,     4,   204,   205,    92,     8,    99,    53,   101,   321,
+      53,   332,   -45,   279,   128,   129,   130,     5,   139,    54,
+       6,   134,   132,   552,     7,   478,   146,    55,    56,   155,
+     462,   348,   135,   140,   184,    70,    71,    72,    73,   185,
+      74,   179,   485,    75,    76,    77,    78,   141,    79,   366,
+     174,   368,   142,   143,   175,     8,   180,   553,   144,   145,
+      53,   186,   -46,   377,   190,   176,   380,   381,   187,    54,
+     554,   191,   388,   192,   513,   193,   515,    55,    56,   194,
+     198,   400,   400,    46,    47,    48,    49,   407,   199,   226,
+       8,   200,   487,   488,   201,   410,     9,    75,    76,    77,
+      78,   202,   293,   206,    10,    70,    71,    72,    73,   224,
+      74,   210,   564,    75,    76,    77,    78,   222,    79,    70,
+      71,    72,    73,    40,    74,   225,   233,   351,   411,    69,
+     524,    43,    79,   275,   412,   413,   283,   529,   284,   286,
+     414,   415,   416,   417,   418,   419,   420,   295,   296,   297,
+     335,   300,   301,   421,   422,   423,   424,   340,   337,   316,
+      70,    71,    72,    73,   375,    74,   341,   479,    75,    76,
+      77,    78,   350,    79,   484,   378,    70,    71,    72,    73,
+     393,    74,   400,   490,   345,   382,   386,   496,   387,    79,
+     562,   498,  -268,  -269,   436,   439,   437,   441,   502,   400,
+     444,   526,   508,   400,   446,   511,   512,   425,   514,   426,
+     447,   448,   517,   465,   427,   428,   429,   430,   431,   432,
+     433,   434,   466,   521,   522,   234,   470,   235,   236,   237,
+     473,    70,    71,    72,    73,   253,    74,   480,   238,   254,
+     239,   240,   255,   481,    79,   241,   242,   243,   495,   497,
+     244,    70,    71,    72,    73,   499,    74,   500,   516,   463,
+     519,   518,   400,   546,    79,   548,   520,   530,   531,   549,
+     533,   538,   550,   532,   551,   534,   535,   544,   245,   557,
+     246,   247,   248,   249,   547,   558,   559,   560,   563,    32,
+     258,   250,    91,   405,   409,   251,   211,   252,   303,   304,
+     305,   306,   307,   308,   309,   310,   156,   311,   312,   313,
+     314,   315,   227,   147,    70,    71,    72,    73,   229,    74,
+     501,    70,    71,    72,    73,   253,    74,    79,   333,   254,
+     464,   545,   255,   256,    79,    70,    71,    72,    73,   149,
+      74,   408,   257,    75,    76,    77,    78,   150,    79,   389,
+     298,   209,   334,   353,   157,    70,    71,    72,    73,   404,
+      74,   207,     0,    75,    76,    77,    78,     0,    79,     0,
+      70,    71,    72,    73,    24,    74,     0,     0,    75,    76,
+      77,    78,     0,    79,   316,     0,   317,   318,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,     0,
+     115,   116,   117,    70,    71,    72,    73,   149,    74,     0,
+       0,    75,    76,    77,    78,   150,    79,    70,    71,    72,
+      73,     0,    74,     0,     0,   397,    76,    77,    78,     0,
+      79,    70,    71,    72,    73,     0,    74,     0,     0,   401,
       76,    77,    78,     0,    79,    70,    71,    72,    73,     0,
-      74,     0,     0,   513,    76,    77,    78,     0,    79,    70,
-      71,    72,    73,     0,    74,     0,     0,   527,     0,     0,
-       0,     0,    79
+      74,     0,     0,   503,    76,    77,    78,     0,    79,    70,
+      71,    72,    73,     0,    74,     0,     0,   509,    76,    77,
+      78,     0,    79,    70,    71,    72,    73,     0,    74,     0,
+       0,   523,     0,     0,     0,     0,    79
 };
 
 static const yytype_int16 yycheck[] =
 {
-      38,    64,   135,   223,   176,   128,   350,     5,   234,   450,
-       8,   247,     4,     4,   351,     4,    10,     4,   190,     6,
-       7,     8,   107,    72,     1,   113,    15,     4,   113,     4,
-      72,    69,     9,   377,    11,    12,    13,    24,   103,     4,
-      27,    29,     8,    29,    31,    22,    72,    24,    25,    14,
-     114,    72,    29,    30,    31,    93,    72,    34,   191,    17,
-      18,    19,    20,   101,    72,   103,   286,   113,   288,   289,
-     116,    59,   137,    59,     4,    73,   109,    13,   127,   113,
-      72,    72,   318,    13,   117,    62,    22,    64,    65,    66,
-      67,    85,    72,    82,    72,   137,   229,    72,    75,   137,
-      30,   127,    79,   124,    81,   238,   332,    73,    72,   335,
-      97,   127,   124,   111,   247,    80,   103,   454,   113,   127,
-      72,   119,   120,   256,   111,   102,    62,   568,   105,   106,
-     107,   108,   109,   110,   471,   500,   113,   502,   475,   116,
-     117,   118,    29,   101,   124,   111,   124,   319,    78,   126,
-     203,   189,   378,   119,   120,   381,    51,    52,    53,    54,
-     144,   145,     4,   127,   109,     0,   219,   300,   113,   105,
-     106,   107,   108,   109,   110,   127,    63,   113,   114,   115,
-     116,   117,   118,     4,   317,   318,   121,     6,     7,    76,
-     123,   126,   128,   129,   130,   113,   114,   235,   236,   237,
-     184,   185,     9,   109,    16,    24,   339,   113,    20,    77,
-     343,    72,    31,   125,   109,    83,    84,   443,   113,   445,
-       6,     7,   566,    51,    52,    53,    54,     4,   361,   124,
-       4,   105,   106,   107,   108,   109,   110,   113,    24,   113,
-     278,   113,   280,   117,   118,    31,    13,   129,   130,    56,
-      57,    58,    59,    60,    61,   125,   109,   429,   113,     4,
-      13,   104,   102,   396,   397,    72,   105,   106,   107,   108,
-     109,   110,     4,    74,   113,   447,   123,   116,    97,   118,
-     318,   114,   320,   102,   113,   104,   109,   113,     4,   126,
-     113,    72,   111,   116,   117,   333,   126,   117,   336,   337,
-     119,   120,   126,     4,   342,   113,   123,   479,   126,   481,
-     126,    97,   126,   351,   352,   126,   102,   113,   104,   357,
-     113,   114,   115,   116,   123,   111,   110,   365,   451,   452,
-     102,    72,   124,   119,   120,     4,   469,   127,   105,   106,
-     107,   108,   127,   110,   127,   565,   113,   114,   115,   116,
-     125,   118,   105,   106,   107,   108,   127,   110,   127,   127,
-     113,   114,   115,   116,   497,   118,   127,   125,   125,     4,
-      74,   504,     4,    73,     4,   109,   109,   113,    35,    36,
-      37,    38,    39,    40,    41,    42,     4,    44,    45,    46,
-      47,    48,   105,   106,   107,   108,     4,   110,     4,   126,
-     438,   105,   106,   107,   108,   118,   110,     4,   446,   113,
-     114,   115,   116,    72,   118,   123,   454,   455,    21,    72,
-     126,   459,   121,   126,   557,   463,   109,     9,     9,   109,
-     109,   109,   470,   471,    21,   498,   474,   475,   126,   477,
-     478,   126,   480,   125,     9,   126,   484,   105,   106,   107,
-     108,     9,   110,   101,    21,   113,    72,   495,   496,     9,
-     118,    11,    12,    13,   121,    21,   123,   124,   123,   123,
-      72,   123,    22,   123,    24,    25,   113,     4,     4,    29,
-      30,    31,     4,    21,    34,   105,   106,   107,   108,   125,
-     110,   125,     4,   113,   127,   126,   534,   535,   118,   537,
-     126,    21,    21,   541,   125,     4,   544,     4,   546,   113,
-     125,     4,    62,   127,    64,    65,    66,    67,     4,     4,
-      43,     4,    12,   361,   229,    75,    49,    50,    59,    79,
-     357,    81,    55,    56,    57,    58,    59,    60,    61,   133,
-     196,   126,   219,   469,   220,    68,    69,    70,    71,   534,
-     281,   397,   343,   281,   256,   105,   106,   107,   108,   109,
-     110,   317,   191,   113,   189,    -1,   116,   117,   118,   105,
-     106,   107,   108,   109,   110,    -1,   126,   113,   114,   115,
-     116,   117,   118,    -1,   105,   106,   107,   108,   124,   110,
-      -1,    -1,   113,   114,   115,   116,   358,   118,    -1,   122,
-      -1,   124,    -1,    -1,    -1,    -1,   129,   130,   131,   132,
-     133,   134,   135,   136,   105,   106,   107,   108,   109,   110,
-      -1,    -1,   113,   114,   115,   116,    -1,   118,    -1,    -1,
-      -1,    -1,    -1,   124,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    -1,    98,    99,   100,   105,
-     106,   107,   108,   109,   110,    -1,    -1,   113,   114,   115,
-     116,   117,   118,   105,   106,   107,   108,    -1,   110,    -1,
-      -1,   113,   114,   115,   116,    -1,   118,   105,   106,   107,
+      38,    64,   135,   128,   223,   176,   348,   446,   234,    10,
+       4,   247,     1,   113,   349,     4,    72,     4,    72,   190,
+       9,    15,    11,    12,    13,     5,    13,     4,     8,     4,
+       8,    69,     4,    22,     4,    24,    25,    14,   103,   113,
+      29,    30,    31,    30,   203,    34,    17,    18,    19,    20,
+      29,    72,   113,   114,    72,    93,    72,    72,   191,   121,
+     219,   114,   109,   101,   126,   103,   285,    72,   287,   288,
+     117,   127,   137,    62,    72,    64,    65,    66,    67,   113,
+      59,   317,   116,   137,    85,    13,    75,   496,    82,   498,
+      79,    78,    81,    73,    22,    73,   229,    72,    72,   137,
+      72,   124,    72,    80,   330,   238,   127,   333,     9,   127,
+     113,   127,   127,   102,   247,   450,   105,   106,   107,   108,
+     109,   110,   127,   256,   113,   564,   124,   116,   117,   118,
+     101,   111,   467,   111,    62,    29,   471,   126,     4,   119,
+     120,   119,   120,     0,     6,     7,     4,   318,   107,   375,
+     124,   189,   378,    72,   113,    56,    57,    58,    59,    60,
+      61,   123,    24,   109,    72,    59,   299,   113,   109,    31,
+      16,    72,   113,    13,    20,   116,   117,   105,   106,   107,
+     108,   109,   110,   316,   317,   113,   114,   115,   116,   117,
+     118,   125,   144,   145,     6,     7,     4,   235,   236,   237,
+     128,   129,   130,    77,   337,   124,   129,   130,   341,    83,
+      84,     4,    24,   439,   113,   441,   113,   109,   125,    31,
+     562,     4,    51,    52,    53,    54,   359,     4,   113,     6,
+       7,     8,   184,   185,   104,    97,     4,   102,    74,   277,
+     102,   279,   104,    13,   123,   114,   113,    24,   126,   111,
+      27,     4,   113,    29,    31,   426,     4,   119,   120,    72,
+     393,   394,   117,   126,   123,   105,   106,   107,   108,   123,
+     110,   113,   443,   113,   114,   115,   116,   126,   118,   317,
+     109,   319,   126,   126,   113,    97,   113,    63,   126,   126,
+     102,   110,   104,   331,   124,   124,   334,   335,   102,   111,
+      76,    72,   340,   127,   475,   127,   477,   119,   120,   127,
+     127,   349,   350,    51,    52,    53,    54,   355,   127,    73,
+      97,   127,   447,   448,   127,   363,   103,   113,   114,   115,
+     116,     4,   465,   125,   111,   105,   106,   107,   108,     4,
+     110,   125,   561,   113,   114,   115,   116,   125,   118,   105,
+     106,   107,   108,   109,   110,     4,     4,   113,    43,    74,
+     493,   117,   118,   109,    49,    50,   109,   500,   109,   113,
+      55,    56,    57,    58,    59,    60,    61,     4,     4,     4,
+      72,   126,     4,    68,    69,    70,    71,   123,    72,   121,
+     105,   106,   107,   108,     9,   110,   126,   435,   113,   114,
+     115,   116,   126,   118,   442,     9,   105,   106,   107,   108,
+      21,   110,   450,   451,   113,   109,   109,   455,   109,   118,
+     553,   459,   126,   126,   125,     9,   126,     9,   466,   467,
+     101,   494,   470,   471,    72,   473,   474,   122,   476,   124,
+     123,   123,   480,   123,   129,   130,   131,   132,   133,   134,
+     135,   136,    21,   491,   492,     9,    21,    11,    12,    13,
+      72,   105,   106,   107,   108,   109,   110,   123,    22,   113,
+      24,    25,   116,   113,   118,    29,    30,    31,     4,     4,
+      34,   105,   106,   107,   108,     4,   110,    21,   125,   113,
+     125,   127,   530,   531,   118,   533,     4,   126,    21,   537,
+      21,     4,   540,   126,   542,   125,   125,     4,    62,   127,
+      64,    65,    66,    67,   113,     4,     4,     4,     4,    12,
+     229,    75,    59,   355,   359,    79,   196,    81,    35,    36,
+      37,    38,    39,    40,    41,    42,   133,    44,    45,    46,
+      47,    48,   219,   126,   105,   106,   107,   108,   220,   110,
+     465,   105,   106,   107,   108,   109,   110,   118,   280,   113,
+     394,   530,   116,   117,   118,   105,   106,   107,   108,   109,
+     110,   356,   126,   113,   114,   115,   116,   117,   118,   341,
+     256,   191,   280,   316,   124,   105,   106,   107,   108,   109,
+     110,   189,    -1,   113,   114,   115,   116,    -1,   118,    -1,
+     105,   106,   107,   108,   124,   110,    -1,    -1,   113,   114,
+     115,   116,    -1,   118,   121,    -1,   123,   124,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    -1,
+      98,    99,   100,   105,   106,   107,   108,   109,   110,    -1,
+      -1,   113,   114,   115,   116,   117,   118,   105,   106,   107,
      108,    -1,   110,    -1,    -1,   113,   114,   115,   116,    -1,
      118,   105,   106,   107,   108,    -1,   110,    -1,    -1,   113,
      114,   115,   116,    -1,   118,   105,   106,   107,   108,    -1,
      110,    -1,    -1,   113,   114,   115,   116,    -1,   118,   105,
-     106,   107,   108,    -1,   110,    -1,    -1,   113,    -1,    -1,
-      -1,    -1,   118
+     106,   107,   108,    -1,   110,    -1,    -1,   113,   114,   115,
+     116,    -1,   118,   105,   106,   107,   108,    -1,   110,    -1,
+      -1,   113,    -1,    -1,    -1,    -1,   118
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -2037,37 +2030,36 @@
       25,    29,    30,    31,    34,    62,    64,    65,    66,    67,
       75,    79,    81,   109,   113,   116,   117,   126,   147,   180,
      195,   197,   203,   205,   217,   223,   227,   229,   231,   232,
-     233,   241,   242,   243,   246,   109,   113,   252,    13,   254,
-      13,   254,   254,   246,   109,   109,   218,   113,   219,   220,
-     107,   113,   264,   233,   246,   228,     4,     4,     4,   247,
-     224,   126,     4,   234,    35,    36,    37,    38,    39,    40,
-      41,    42,    44,    45,    46,    47,    48,   121,   123,   124,
-     230,   193,    21,   254,     9,    56,    57,    58,    59,    60,
-      61,    72,   244,   245,   254,   244,   245,    72,   221,    72,
-     221,   221,   123,   126,   181,   196,   198,   113,   239,   240,
-     246,   204,   126,   113,   246,   251,    13,    22,    62,   113,
-     116,   117,   128,   129,   130,   225,   233,   246,   254,   255,
-     254,    17,    18,    19,    20,   101,   194,   109,     9,   252,
-     254,     9,   252,   254,   254,   109,   214,   215,   246,   109,
-     109,   254,   240,   188,   199,   200,    21,    72,   127,   193,
-     113,   206,   236,   254,   113,   235,   236,   109,   161,   222,
-     254,   264,   156,   254,    43,    49,    50,    55,    56,    57,
-      58,    59,    60,    61,    68,    69,    70,    71,   122,   124,
-     129,   130,   131,   132,   133,   134,   135,   136,   226,   125,
-     126,   193,   252,     9,   252,     9,    72,   124,   101,   216,
-      72,   123,   123,   127,    10,    85,   183,   189,     4,    14,
-      80,   201,     4,    15,    82,   202,   246,   113,   239,   123,
-      21,    72,   127,   237,    21,    72,   127,    72,    72,   124,
-      72,   124,   255,   254,   123,   113,   252,   252,   254,   255,
-     215,   263,   263,   236,   254,    77,    83,    84,   187,     4,
-     254,     4,   254,     4,    21,   232,   254,   113,   236,    16,
-      20,   238,   254,   113,   236,   254,   254,   255,   254,   255,
-     125,   254,   127,   125,     4,   254,   254,   113,   246,   182,
-     212,   237,   237,   246,   126,    21,   126,    21,   125,   125,
-       4,    72,     4,     4,    72,     4,    72,   190,     4,   235,
-     254,   113,   254,   254,   254,   254,    29,    63,    76,   191,
-     127,   127,     4,     4,     4,   192,   246,     4,   221,   193,
-     215
+     233,   241,   242,   243,   246,   109,   252,    13,   254,    13,
+     254,   254,   246,   109,   109,   218,   113,   219,   220,   107,
+     113,   264,   233,   246,   228,     4,     4,     4,   247,   224,
+     126,     4,   234,    35,    36,    37,    38,    39,    40,    41,
+      42,    44,    45,    46,    47,    48,   121,   123,   124,   230,
+     193,   254,     9,    56,    57,    58,    59,    60,    61,    72,
+     244,   245,   254,   244,   245,    72,   221,    72,   221,   221,
+     123,   126,   181,   196,   198,   113,   239,   240,   246,   204,
+     126,   113,   246,   251,    13,    22,    62,   113,   116,   117,
+     128,   129,   130,   225,   233,   246,   254,   255,   254,    17,
+      18,    19,    20,   101,   194,     9,   252,   254,     9,   252,
+     254,   254,   109,   214,   215,   246,   109,   109,   254,   240,
+     188,   199,   200,    21,    72,   127,   193,   113,   206,   236,
+     254,   113,   235,   236,   109,   161,   222,   254,   264,   156,
+     254,    43,    49,    50,    55,    56,    57,    58,    59,    60,
+      61,    68,    69,    70,    71,   122,   124,   129,   130,   131,
+     132,   133,   134,   135,   136,   226,   125,   126,   252,     9,
+     252,     9,    72,   124,   101,   216,    72,   123,   123,   127,
+      10,    85,   183,   189,     4,    14,    80,   201,     4,    15,
+      82,   202,   246,   113,   239,   123,    21,    72,   127,   237,
+      21,    72,   127,    72,    72,   124,    72,   124,   255,   254,
+     123,   113,   252,   252,   254,   255,   215,   263,   263,   236,
+     254,    77,    83,    84,   187,     4,   254,     4,   254,     4,
+      21,   232,   254,   113,   236,    16,    20,   238,   254,   113,
+     236,   254,   254,   255,   254,   255,   125,   254,   127,   125,
+       4,   254,   254,   113,   246,   182,   212,   237,   237,   246,
+     126,    21,   126,    21,   125,   125,     4,    72,     4,     4,
+      72,     4,    72,   190,     4,   235,   254,   113,   254,   254,
+     254,   254,    29,    63,    76,   191,   127,   127,     4,     4,
+       4,   192,   246,     4,   221,   193,   215
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -3237,24 +3229,11 @@
     break;
 
   case 60:
-#line 1028 "compilers/imcc/imcc.y"
-    {
-            if ((yyvsp[(5) - (5)].t) & VT_UNIQUE_REG)
-                (yyval.sr) = mk_ident_ur(interp, (yyvsp[(4) - (5)].s), (yyvsp[(1) - (5)].t));
-            else
-                (yyval.sr) = mk_ident(interp, (yyvsp[(4) - (5)].s), (yyvsp[(1) - (5)].t));
-            (yyval.sr)->type |= (yyvsp[(5) - (5)].t);
-            adv_named_set(interp, (yyvsp[(2) - (5)].s));
-            mem_sys_free((yyvsp[(4) - (5)].s));
-          }
-    break;
-
-  case 61:
 #line 1042 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 62:
+  case 61:
 #line 1047 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3263,7 +3242,7 @@
          }
     break;
 
-  case 63:
+  case 62:
 #line 1053 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3272,7 +3251,7 @@
          }
     break;
 
-  case 64:
+  case 63:
 #line 1062 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3281,7 +3260,7 @@
          }
     break;
 
-  case 65:
+  case 64:
 #line 1068 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3290,7 +3269,7 @@
          }
     break;
 
-  case 66:
+  case 65:
 #line 1077 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
@@ -3299,7 +3278,7 @@
          }
     break;
 
-  case 67:
+  case 66:
 #line 1083 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
@@ -3308,7 +3287,7 @@
          }
     break;
 
-  case 68:
+  case 67:
 #line 1092 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3317,7 +3296,7 @@
          }
     break;
 
-  case 69:
+  case 68:
 #line 1098 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3326,7 +3305,7 @@
          }
     break;
 
-  case 70:
+  case 69:
 #line 1107 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3334,19 +3313,19 @@
          }
     break;
 
-  case 71:
+  case 70:
 #line 1115 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = NULL;
-           /* 
+           /*
            IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid = str_dup_remove_quotes($3);
            mem_sys_free($3);
            */
          }
     break;
 
-  case 72:
+  case 71:
 #line 1124 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3357,14 +3336,14 @@
          }
     break;
 
-  case 73:
+  case 72:
 #line 1135 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
          }
     break;
 
-  case 74:
+  case 73:
 #line 1139 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3372,7 +3351,7 @@
          }
     break;
 
-  case 75:
+  case 74:
 #line 1144 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3380,27 +3359,27 @@
          }
     break;
 
-  case 76:
+  case 75:
 #line 1151 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
     break;
 
-  case 77:
+  case 76:
 #line 1152 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
     break;
 
-  case 78:
+  case 77:
 #line 1153 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
     break;
 
-  case 79:
+  case 78:
 #line 1154 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
     break;
 
-  case 80:
+  case 79:
 #line 1156 "compilers/imcc/imcc.y"
     {
            SymReg *r;
@@ -3414,7 +3393,7 @@
          }
     break;
 
-  case 81:
+  case 80:
 #line 1167 "compilers/imcc/imcc.y"
     {
            SymReg *r;
@@ -3428,12 +3407,12 @@
          }
     break;
 
-  case 82:
+  case 81:
 #line 1177 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
-  case 85:
+  case 84:
 #line 1187 "compilers/imcc/imcc.y"
     {
            char name[128];
@@ -3460,82 +3439,82 @@
          }
     break;
 
-  case 86:
+  case 85:
 #line 1215 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
-  case 87:
+  case 86:
 #line 1219 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
-  case 88:
+  case 87:
 #line 1220 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
-  case 89:
+  case 88:
 #line 1224 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
-  case 90:
+  case 89:
 #line 1225 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
     break;
 
-  case 91:
+  case 90:
 #line 1229 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 93:
+  case 92:
 #line 1234 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
-  case 94:
+  case 93:
 #line 1235 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
-  case 95:
+  case 94:
 #line 1239 "compilers/imcc/imcc.y"
     { (yyval.t) = P_LOAD; }
     break;
 
-  case 96:
+  case 95:
 #line 1240 "compilers/imcc/imcc.y"
     { (yyval.t) = P_INIT; }
     break;
 
-  case 97:
+  case 96:
 #line 1241 "compilers/imcc/imcc.y"
     { (yyval.t) = P_MAIN; }
     break;
 
-  case 98:
+  case 97:
 #line 1242 "compilers/imcc/imcc.y"
     { (yyval.t) = P_IMMEDIATE; }
     break;
 
-  case 99:
+  case 98:
 #line 1243 "compilers/imcc/imcc.y"
     { (yyval.t) = P_POSTCOMP; }
     break;
 
-  case 100:
+  case 99:
 #line 1244 "compilers/imcc/imcc.y"
     { (yyval.t) = P_ANON; }
     break;
 
-  case 101:
+  case 100:
 #line 1245 "compilers/imcc/imcc.y"
     { (yyval.t) = P_NEED_LEX; }
     break;
 
-  case 109:
+  case 108:
 #line 1257 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
@@ -3543,14 +3522,14 @@
          }
     break;
 
-  case 110:
+  case 109:
 #line 1262 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
-  case 111:
+  case 110:
 #line 1266 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3558,21 +3537,21 @@
          }
     break;
 
-  case 112:
+  case 111:
 #line 1271 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
-  case 113:
+  case 112:
 #line 1275 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
          }
     break;
 
-  case 114:
+  case 113:
 #line 1279 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
@@ -3580,7 +3559,7 @@
          }
     break;
 
-  case 115:
+  case 114:
 #line 1284 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
@@ -3588,27 +3567,27 @@
          }
     break;
 
-  case 116:
+  case 115:
 #line 1292 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 117:
+  case 116:
 #line 1293 "compilers/imcc/imcc.y"
     { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
-  case 118:
+  case 117:
 #line 1297 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
-  case 119:
+  case 118:
 #line 1302 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 120:
+  case 119:
 #line 1304 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -3616,17 +3595,17 @@
          }
     break;
 
-  case 121:
+  case 120:
 #line 1311 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
-  case 122:
+  case 121:
 #line 1312 "compilers/imcc/imcc.y"
     { is_def=1; }
     break;
 
-  case 123:
+  case 122:
 #line 1313 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
@@ -3641,57 +3620,57 @@
          }
     break;
 
-  case 124:
+  case 123:
 #line 1327 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 125:
+  case 124:
 #line 1328 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
-  case 126:
+  case 125:
 #line 1332 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;   }
     break;
 
-  case 127:
+  case 126:
 #line 1333 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPTIONAL; }
     break;
 
-  case 128:
+  case 127:
 #line 1334 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPT_FLAG; }
     break;
 
-  case 129:
+  case 128:
 #line 1335 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
-  case 130:
+  case 129:
 #line 1336 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
-  case 131:
+  case 130:
 #line 1337 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_UNIQUE_REG; }
     break;
 
-  case 132:
+  case 131:
 #line 1342 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 0); }
     break;
 
-  case 133:
+  case 132:
 #line 1344 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
-  case 134:
+  case 133:
 #line 1346 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
@@ -3699,22 +3678,22 @@
          }
     break;
 
-  case 135:
+  case 134:
 #line 1353 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); }
     break;
 
-  case 136:
+  case 135:
 #line 1355 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
-  case 137:
+  case 136:
 #line 1359 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 138:
+  case 137:
 #line 1361 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
@@ -3722,7 +3701,7 @@
          }
     break;
 
-  case 139:
+  case 138:
 #line 1366 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -3730,12 +3709,12 @@
          }
     break;
 
-  case 140:
+  case 139:
 #line 1373 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 141:
+  case 140:
 #line 1375 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
@@ -3743,7 +3722,7 @@
          }
     break;
 
-  case 142:
+  case 141:
 #line 1380 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -3751,17 +3730,17 @@
          }
     break;
 
-  case 143:
+  case 142:
 #line 1387 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
-  case 144:
+  case 143:
 #line 1391 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
-  case 145:
+  case 144:
 #line 1396 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
@@ -3769,7 +3748,7 @@
         }
     break;
 
-  case 146:
+  case 145:
 #line 1401 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
@@ -3777,22 +3756,22 @@
         }
     break;
 
-  case 147:
+  case 146:
 #line 1408 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 148:
+  case 147:
 #line 1409 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
-  case 149:
+  case 148:
 #line 1413 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 150:
+  case 149:
 #line 1415 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -3805,14 +3784,14 @@
          }
     break;
 
-  case 151:
+  case 150:
 #line 1425 "compilers/imcc/imcc.y"
     {
            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
          }
     break;
 
-  case 152:
+  case 151:
 #line 1429 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -3825,61 +3804,61 @@
          }
     break;
 
-  case 153:
+  case 152:
 #line 1439 "compilers/imcc/imcc.y"
     {
            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
          }
     break;
 
-  case 156:
+  case 155:
 #line 1459 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
-  case 157:
+  case 156:
 #line 1464 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
-  case 158:
+  case 157:
 #line 1465 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 159:
+  case 158:
 #line 1466 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 160:
+  case 159:
 #line 1467 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 161:
+  case 160:
 #line 1468 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 162:
+  case 161:
 #line 1472 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
-  case 166:
+  case 165:
 #line 1483 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
          }
     break;
 
-  case 167:
+  case 166:
 #line 1491 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
-  case 168:
+  case 167:
 #line 1493 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
@@ -3890,7 +3869,7 @@
          }
     break;
 
-  case 169:
+  case 168:
 #line 1504 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(1) - (1)].idlist);
@@ -3899,7 +3878,7 @@
          }
     break;
 
-  case 170:
+  case 169:
 #line 1511 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(3) - (3)].idlist);
@@ -3908,7 +3887,7 @@
          }
     break;
 
-  case 171:
+  case 170:
 #line 1520 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
@@ -3918,32 +3897,32 @@
          }
     break;
 
-  case 172:
+  case 171:
 #line 1529 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 173:
+  case 172:
 #line 1530 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
-  case 176:
+  case 175:
 #line 1537 "compilers/imcc/imcc.y"
     { push_namespace(interp, (yyvsp[(2) - (2)].s)); mem_sys_free((yyvsp[(2) - (2)].s)); }
     break;
 
-  case 177:
+  case 176:
 #line 1538 "compilers/imcc/imcc.y"
     { pop_namespace(interp, (yyvsp[(2) - (2)].s)); mem_sys_free((yyvsp[(2) - (2)].s)); }
     break;
 
-  case 178:
+  case 177:
 #line 1539 "compilers/imcc/imcc.y"
     { is_def=1; }
     break;
 
-  case 179:
+  case 178:
 #line 1540 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
@@ -3962,19 +3941,19 @@
          }
     break;
 
-  case 180:
+  case 179:
 #line 1556 "compilers/imcc/imcc.y"
     {
            set_lexical(interp, (yyvsp[(4) - (4)].sr), (yyvsp[(2) - (4)].s)); (yyval.i) = 0;
          }
     break;
 
-  case 181:
+  case 180:
 #line 1559 "compilers/imcc/imcc.y"
     { is_def=1; }
     break;
 
-  case 182:
+  case 181:
 #line 1560 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
@@ -3983,12 +3962,12 @@
          }
     break;
 
-  case 184:
+  case 183:
 #line 1567 "compilers/imcc/imcc.y"
     { is_def=1; }
     break;
 
-  case 185:
+  case 184:
 #line 1568 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
@@ -3997,7 +3976,7 @@
          }
     break;
 
-  case 186:
+  case 185:
 #line 1574 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
@@ -4006,12 +3985,12 @@
          }
     break;
 
-  case 187:
+  case 186:
 #line 1579 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
-  case 188:
+  case 187:
 #line 1581 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
@@ -4026,47 +4005,47 @@
          }
     break;
 
-  case 189:
+  case 188:
 #line 1592 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
-  case 190:
+  case 189:
 #line 1593 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
-  case 191:
+  case 190:
 #line 1594 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 194:
+  case 193:
 #line 1597 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
-  case 195:
+  case 194:
 #line 1601 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; }
     break;
 
-  case 196:
+  case 195:
 #line 1602 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; }
     break;
 
-  case 197:
+  case 196:
 #line 1603 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; }
     break;
 
-  case 198:
+  case 197:
 #line 1604 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; }
     break;
 
-  case 199:
+  case 198:
 #line 1609 "compilers/imcc/imcc.y"
     {
            /* there'd normally be a str_dup() here, but the lexer already
@@ -4079,97 +4058,97 @@
          }
     break;
 
-  case 200:
+  case 199:
 #line 1622 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  }
     break;
 
-  case 201:
+  case 200:
 #line 1624 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  }
     break;
 
-  case 202:
+  case 201:
 #line 1626 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));  }
     break;
 
-  case 203:
+  case 202:
 #line 1628 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); }
     break;
 
-  case 204:
+  case 203:
 #line 1630 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 205:
+  case 204:
 #line 1632 "compilers/imcc/imcc.y"
     { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].s), (yyvsp[(6) - (6)].sr), 1); }
     break;
 
-  case 206:
+  case 205:
 #line 1634 "compilers/imcc/imcc.y"
     { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); }
     break;
 
-  case 207:
+  case 206:
 #line 1636 "compilers/imcc/imcc.y"
     { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].s), NULL, 1); }
     break;
 
-  case 208:
+  case 207:
 #line 1638 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
-  case 209:
+  case 208:
 #line 1640 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
-  case 210:
+  case 209:
 #line 1642 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 211:
+  case 210:
 #line 1644 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 212:
+  case 211:
 #line 1646 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); }
     break;
 
-  case 213:
+  case 212:
 #line 1648 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "find_global", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));}
     break;
 
-  case 214:
+  case 213:
 #line 1650 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "store_global", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
-  case 215:
+  case 214:
 #line 1654 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
-  case 216:
+  case 215:
 #line 1656 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 217:
+  case 216:
 #line 1658 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); }
     break;
 
-  case 218:
+  case 217:
 #line 1661 "compilers/imcc/imcc.y"
     {
            add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
@@ -4178,14 +4157,14 @@
          }
     break;
 
-  case 219:
+  case 218:
 #line 1667 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
          }
     break;
 
-  case 220:
+  case 219:
 #line 1671 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
@@ -4193,144 +4172,144 @@
          }
     break;
 
-  case 224:
+  case 223:
 #line 1679 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
          }
     break;
 
-  case 225:
+  case 224:
 #line 1686 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
-  case 226:
+  case 225:
 #line 1687 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
-  case 227:
+  case 226:
 #line 1688 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
-  case 228:
+  case 227:
 #line 1692 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 229:
+  case 228:
 #line 1693 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
-  case 230:
+  case 229:
 #line 1694 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 231:
+  case 230:
 #line 1695 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
-  case 232:
+  case 231:
 #line 1696 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 233:
+  case 232:
 #line 1697 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 234:
+  case 233:
 #line 1698 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
-  case 235:
+  case 234:
 #line 1699 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 236:
+  case 235:
 #line 1700 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
-  case 237:
+  case 236:
 #line 1701 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
-  case 238:
+  case 237:
 #line 1702 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
-  case 239:
+  case 238:
 #line 1703 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
-  case 240:
+  case 239:
 #line 1704 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
-  case 241:
+  case 240:
 #line 1705 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
-  case 242:
+  case 241:
 #line 1706 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 243:
+  case 242:
 #line 1707 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 244:
+  case 243:
 #line 1708 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 245:
+  case 244:
 #line 1709 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
-  case 246:
+  case 245:
 #line 1710 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
-  case 247:
+  case 246:
 #line 1711 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
-  case 248:
+  case 247:
 #line 1712 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
-  case 249:
+  case 248:
 #line 1713 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 250:
+  case 249:
 #line 1714 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 251:
+  case 250:
 #line 1720 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
@@ -4339,84 +4318,84 @@
          }
     break;
 
-  case 252:
+  case 251:
 #line 1725 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
-  case 253:
+  case 252:
 #line 1732 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
          }
     break;
 
-  case 254:
+  case 253:
 #line 1738 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
-  case 255:
+  case 254:
 #line 1739 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 256:
+  case 255:
 #line 1740 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 257:
+  case 256:
 #line 1741 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
-  case 258:
+  case 257:
 #line 1742 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 259:
+  case 258:
 #line 1743 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 260:
+  case 259:
 #line 1744 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 261:
+  case 260:
 #line 1745 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
-  case 262:
+  case 261:
 #line 1746 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 263:
+  case 262:
 #line 1747 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 264:
+  case 263:
 #line 1748 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 265:
+  case 264:
 #line 1749 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 266:
+  case 265:
 #line 1750 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 267:
+  case 266:
 #line 1756 "compilers/imcc/imcc.y"
     {
         (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
@@ -4427,22 +4406,22 @@
        }
     break;
 
-  case 268:
+  case 267:
 #line 1766 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 269:
+  case 268:
 #line 1767 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 270:
+  case 269:
 #line 1768 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 271:
+  case 270:
 #line 1770 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
@@ -4451,7 +4430,7 @@
          }
     break;
 
-  case 272:
+  case 271:
 #line 1776 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
@@ -4466,7 +4445,7 @@
         }
     break;
 
-  case 273:
+  case 272:
 #line 1788 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
@@ -4475,12 +4454,12 @@
          }
     break;
 
-  case 274:
+  case 273:
 #line 1793 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
-  case 275:
+  case 274:
 #line 1799 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
@@ -4488,17 +4467,17 @@
          }
     break;
 
-  case 276:
+  case 275:
 #line 1803 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
-  case 277:
+  case 276:
 #line 1807 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 278:
+  case 277:
 #line 1809 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4511,7 +4490,7 @@
          }
     break;
 
-  case 279:
+  case 278:
 #line 1819 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4524,7 +4503,7 @@
          }
     break;
 
-  case 280:
+  case 279:
 #line 1829 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4533,7 +4512,7 @@
          }
     break;
 
-  case 281:
+  case 280:
 #line 1835 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4542,42 +4521,42 @@
          }
     break;
 
-  case 282:
+  case 281:
 #line 1843 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 283:
+  case 282:
 #line 1847 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 284:
+  case 283:
 #line 1848 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
-  case 285:
+  case 284:
 #line 1852 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT; }
     break;
 
-  case 286:
+  case 285:
 #line 1853 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
-  case 287:
+  case 286:
 #line 1856 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
-  case 288:
+  case 287:
 #line 1860 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 289:
+  case 288:
 #line 1865 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4590,7 +4569,7 @@
          }
     break;
 
-  case 290:
+  case 289:
 #line 1875 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
@@ -4598,7 +4577,7 @@
          }
     break;
 
-  case 291:
+  case 290:
 #line 1880 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4611,7 +4590,7 @@
          }
     break;
 
-  case 292:
+  case 291:
 #line 1890 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
@@ -4619,124 +4598,124 @@
          }
     break;
 
-  case 293:
+  case 292:
 #line 1894 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 294:
+  case 293:
 #line 1898 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 295:
+  case 294:
 #line 1899 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 296:
+  case 295:
 #line 1904 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
          }
     break;
 
-  case 297:
+  case 296:
 #line 1908 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
          }
     break;
 
-  case 298:
+  case 297:
 #line 1912 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
          }
     break;
 
-  case 299:
+  case 298:
 #line 1919 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
          }
     break;
 
-  case 300:
+  case 299:
 #line 1923 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
          }
     break;
 
-  case 301:
+  case 300:
 #line 1927 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
          }
     break;
 
-  case 302:
+  case 301:
 #line 1933 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 303:
+  case 302:
 #line 1934 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 304:
+  case 303:
 #line 1938 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
-  case 305:
+  case 304:
 #line 1939 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
-  case 306:
+  case 305:
 #line 1940 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
-  case 307:
+  case 306:
 #line 1941 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
-  case 308:
+  case 307:
 #line 1942 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
-  case 309:
+  case 308:
 #line 1943 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
-  case 312:
+  case 311:
 #line 1952 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
-  case 313:
+  case 312:
 #line 1953 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 314:
+  case 313:
 #line 1957 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
-  case 316:
+  case 315:
 #line 1962 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 317:
+  case 316:
 #line 1964 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
@@ -4746,7 +4725,7 @@
          }
     break;
 
-  case 318:
+  case 317:
 #line 1971 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
@@ -4754,37 +4733,37 @@
          }
     break;
 
-  case 320:
+  case 319:
 #line 1978 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 321:
+  case 320:
 #line 1979 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 322:
+  case 321:
 #line 1983 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 323:
+  case 322:
 #line 1984 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 324:
+  case 323:
 #line 1988 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 325:
+  case 324:
 #line 1989 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 330:
+  case 329:
 #line 2003 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
@@ -4792,7 +4771,7 @@
          }
     break;
 
-  case 331:
+  case 330:
 #line 2008 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
@@ -4801,7 +4780,7 @@
          }
     break;
 
-  case 332:
+  case 331:
 #line 2016 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
@@ -4809,7 +4788,7 @@
          }
     break;
 
-  case 333:
+  case 332:
 #line 2021 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
@@ -4818,12 +4797,12 @@
          }
     break;
 
-  case 334:
+  case 333:
 #line 2029 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 335:
+  case 334:
 #line 2031 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
@@ -4831,12 +4810,12 @@
          }
     break;
 
-  case 336:
+  case 335:
 #line 2035 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->in_slice = 1; }
     break;
 
-  case 337:
+  case 336:
 #line 2037 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(4) - (4)].sr);
@@ -4844,7 +4823,7 @@
          }
     break;
 
-  case 338:
+  case 337:
 #line 2045 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->in_slice)
@@ -4853,7 +4832,7 @@
          }
     break;
 
-  case 339:
+  case 338:
 #line 2051 "compilers/imcc/imcc.y"
     {
            (yyvsp[(1) - (3)].sr)->type |= VT_START_SLICE;
@@ -4863,74 +4842,74 @@
          }
     break;
 
-  case 340:
+  case 339:
 #line 2057 "compilers/imcc/imcc.y"
     { (yyvsp[(2) - (2)].sr)->type |= VT_START_ZERO | VT_END_SLICE; (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
-  case 341:
+  case 340:
 #line 2058 "compilers/imcc/imcc.y"
     { (yyvsp[(1) - (2)].sr)->type |= VT_START_SLICE | VT_END_INF; (yyval.sr) = (yyvsp[(1) - (2)].sr); }
     break;
 
-  case 342:
+  case 341:
 #line 2062 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
-  case 343:
+  case 342:
 #line 2063 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
-  case 344:
+  case 343:
 #line 2064 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
-  case 345:
+  case 344:
 #line 2065 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
-  case 346:
+  case 345:
 #line 2066 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 347:
+  case 346:
 #line 2070 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 348:
+  case 347:
 #line 2071 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 349:
+  case 348:
 #line 2072 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 350:
+  case 349:
 #line 2073 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 351:
+  case 350:
 #line 2077 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 352:
+  case 351:
 #line 2078 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S');  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 4923 "compilers/imcc/imcparser.c"
+#line 4902 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);

Modified: trunk/docs/book/ch06_library.pod
==============================================================================
--- trunk/docs/book/ch06_library.pod	(original)
+++ trunk/docs/book/ch06_library.pod	Sat Dec  6 06:48:40 2008
@@ -27,7 +27,10 @@
 
 =head2 F<Config.fpmc>
 
-
+C<Config.fpmc> is generated during the build process. The file defines a
+hash PMC that contains information about the system where Parrot was
+built. By accessing the data in this PMC, you can determine how Parrot
+was compiled and what features and libraries it has available.
 
 =head1 Perl-Inspired Libraries
 
@@ -65,10 +68,17 @@
 
 =head2 PCRE
 
+PCRE is a library that implements regular expressions using Perl 5 syntax.
+
+
 =head2 NCurses
 
+NCurses is a library for manipulating the console and the cursor.
+
 =head2 OpenGL
 
+OpenGL is a 3D graphics library.
+
 =head2 Postgres SQL
 
 =head2 SDL



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About