Reviewed by John.
[WebKit-https.git] / JavaScriptCore / kjs / grammar.cpp
index 3583b66ccf75c533a66c5c6e3ff43b2a9862cf90..43a7d4ea99fc95fd6016038550745b163f73ed1b 100644 (file)
@@ -182,7 +182,7 @@ typedef
 
 
 
-#define        YYFINAL         358
+#define        YYFINAL         359
 #define        YYFLAG          -32768
 #define        YYNTBASE        85
 
@@ -242,9 +242,9 @@ static const short yyprhs[] = {     0,
    408,   416,   423,   429,   439,   450,   458,   467,   477,   478,
    480,   483,   486,   490,   494,   497,   500,   504,   508,   511,
    514,   518,   522,   528,   534,   538,   544,   545,   547,   549,
-   552,   556,   561,   564,   568,   572,   576,   580,   584,   589,
-   595,   598,   604,   611,   616,   622,   624,   628,   631,   635,
-   636,   638,   640,   643,   645
+   552,   556,   561,   564,   568,   572,   576,   580,   584,   588,
+   593,   599,   602,   608,   615,   620,   626,   628,   632,   635,
+   639,   640,   642,   644,   647,   649
 };
 
 static const short yyrhs[] = {     3,
@@ -305,14 +305,14 @@ static const short yyrhs[] = {     3,
    133,    65,     0,     0,   134,     0,   135,     0,   134,   135,
      0,     9,   114,    69,     0,     9,   114,    69,   117,     0,
     10,    69,     0,    10,    69,   117,     0,    58,    69,   115,
-     0,    30,   114,    84,     0,    31,   116,   140,     0,    31,
-   116,   141,     0,    31,   116,   140,   141,     0,    32,    62,
-    58,    63,   116,     0,    33,   116,     0,    15,    58,    62,
-    63,   145,     0,    15,    58,    62,   144,    63,   145,     0,
-    15,    62,    63,   145,     0,    15,    62,   144,    63,   145,
-     0,    58,     0,   144,    68,    58,     0,    64,    65,     0,
-    64,   147,    65,     0,     0,   147,     0,   148,     0,   147,
-   148,     0,   115,     0,   142,     0
+     0,    30,   114,    84,     0,    30,   114,     1,     0,    31,
+   116,   140,     0,    31,   116,   141,     0,    31,   116,   140,
+   141,     0,    32,    62,    58,    63,   116,     0,    33,   116,
+     0,    15,    58,    62,    63,   145,     0,    15,    58,    62,
+   144,    63,   145,     0,    15,    62,    63,   145,     0,    15,
+    62,   144,    63,   145,     0,    58,     0,   144,    68,    58,
+     0,    64,    65,     0,    64,   147,    65,     0,     0,   147,
+     0,   148,     0,   147,   148,     0,   115,     0,   142,     0
 };
 
 #endif
@@ -336,9 +336,9 @@ static const short yyrline[] = { 0,
    457,   461,   463,   464,   467,   470,   473,   476,   481,   483,
    486,   488,   492,   493,   499,   501,   505,   506,   513,   515,
    519,   520,   526,   531,   536,   538,   542,   544,   547,   549,
-   552,   554,   557,   559,   562,   567,   571,   573,   574,   577,
-   581,   585,   587,   590,   592,   597,   599,   602,   605,   609,
-   612,   616,   618,   621,   623
+   552,   554,   557,   559,   562,   567,   569,   572,   574,   575,
+   578,   582,   586,   588,   591,   593,   598,   600,   603,   606,
+   610,   613,   617,   619,   622,   624
 };
 #endif
 
@@ -388,9 +388,9 @@ static const short yyr1[] = {     0,
    124,   125,   125,   125,   125,   125,   125,   125,   126,   126,
    127,   127,   127,   127,   128,   128,   128,   128,   129,   129,
    129,   129,   130,   131,   132,   132,   133,   133,   134,   134,
-   135,   135,   136,   136,   137,   138,   139,   139,   139,   140,
-   141,   142,   142,   143,   143,   144,   144,   145,   145,   146,
-   146,   147,   147,   148,   148
+   135,   135,   136,   136,   137,   138,   138,   139,   139,   139,
+   140,   141,   142,   142,   143,   143,   144,   144,   145,   145,
+   146,   146,   147,   147,   148,   148
 };
 
 static const short yyr2[] = {     0,
@@ -411,20 +411,20 @@ static const short yyr2[] = {     0,
      7,     6,     5,     9,    10,     7,     8,     9,     0,     1,
      2,     2,     3,     3,     2,     2,     3,     3,     2,     2,
      3,     3,     5,     5,     3,     5,     0,     1,     1,     2,
-     3,     4,     2,     3,     3,     3,     3,     3,     4,     5,
-     2,     5,     6,     4,     5,     1,     3,     2,     3,     0,
-     1,     1,     2,     1,     1
+     3,     4,     2,     3,     3,     3,     3,     3,     3,     4,
+     5,     2,     5,     6,     4,     5,     1,     3,     2,     3,
+     0,     1,     1,     2,     1,     1
 };
 
-static const short yydefact[] = {   190,
+static const short yydefact[] = {   191,
      1,     2,     3,     5,     4,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     8,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     7,     9,     0,     0,     6,
      0,     0,    20,     0,     0,     0,     0,   137,    10,    29,
     11,    34,    44,    45,    46,    49,    61,    65,    68,    72,
     79,    84,    86,    88,    90,    92,    94,    96,   110,     0,
-   194,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-   121,   122,   123,   124,   125,   195,    30,   191,   192,   156,
+   195,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+   121,   122,   123,   124,   125,   196,    30,   192,   193,   156,
      0,   155,   149,     0,     9,     0,    34,    35,   134,     0,
    132,   152,     0,   151,     0,     0,   160,   159,     0,    46,
     51,    50,     0,     0,     0,    52,     0,     0,     0,     0,
@@ -435,359 +435,359 @@ static const short yydefact[] = {   190,
    107,   108,    98,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,   139,     0,
-   138,   193,   158,   157,     0,    46,   150,     0,    27,    28,
+   138,   194,   158,   157,     0,    46,   150,     0,    27,    28,
     26,    13,    33,     0,   135,   131,     0,   130,   154,   153,
-     0,   186,     0,     0,   162,   161,     0,     0,     0,     0,
-     0,   176,   126,     0,     0,   177,   178,   175,    12,    14,
-     0,     0,   127,    16,    20,    15,    18,    23,    40,     0,
-    42,     0,    32,     0,    39,    97,    63,    62,    64,    66,
-    67,    69,    70,    71,    78,    77,    75,    76,    73,    74,
-    80,    81,    82,    83,    85,    87,    89,    91,    93,     0,
-   111,   134,     0,     0,   149,   136,   133,     0,     0,     0,
-   184,     0,     0,     0,     0,     0,     0,     0,     0,   181,
-   179,     0,    24,     0,    41,     0,    31,    38,     0,     0,
-   135,   149,     0,     0,   182,     0,   188,     0,   185,   187,
-   140,     0,   143,   167,   164,   163,     0,     0,    17,    19,
-    43,    95,     0,     0,     0,     0,   149,   183,   189,     0,
-   142,     0,     0,   168,   169,     0,    25,     0,     0,   149,
-   146,     0,   141,     0,     0,   165,   167,   170,   180,   147,
-     0,     0,     0,   171,   173,     0,   148,     0,   144,   128,
-   172,   174,   166,   145,   129,     0,     0,     0
+     0,   187,     0,     0,   162,   161,     0,     0,     0,     0,
+     0,   177,   176,   126,     0,     0,   178,   179,   175,    12,
+    14,     0,     0,   127,    16,    20,    15,    18,    23,    40,
+     0,    42,     0,    32,     0,    39,    97,    63,    62,    64,
+    66,    67,    69,    70,    71,    78,    77,    75,    76,    73,
+    74,    80,    81,    82,    83,    85,    87,    89,    91,    93,
+     0,   111,   134,     0,     0,   149,   136,   133,     0,     0,
+     0,   185,     0,     0,     0,     0,     0,     0,     0,     0,
+   182,   180,     0,    24,     0,    41,     0,    31,    38,     0,
+     0,   135,   149,     0,     0,   183,     0,   189,     0,   186,
+   188,   140,     0,   143,   167,   164,   163,     0,     0,    17,
+    19,    43,    95,     0,     0,     0,     0,   149,   184,   190,
+     0,   142,     0,     0,   168,   169,     0,    25,     0,     0,
+   149,   146,     0,   141,     0,     0,   165,   167,   170,   181,
+   147,     0,     0,     0,   171,   173,     0,   148,     0,   144,
+   128,   172,   174,   166,   145,   129,     0,     0,     0
 };
 
 static const short yydefgoto[] = {    39,
     40,    41,   126,   127,   128,   122,   123,    42,    43,    44,
-   136,   230,    45,    46,    47,    48,    49,    50,    51,    52,
+   136,   231,    45,    46,    47,    48,    49,    50,    51,    52,
     53,    54,    55,    56,    57,    58,    59,   154,    60,    61,
-    62,   351,    63,    90,    91,   195,    64,    65,    66,    67,
-   188,    68,    69,    70,    71,    72,   305,   323,   324,   325,
-   337,    73,    74,    75,   216,   217,    76,    77,   204,   271,
-   356,   124,    79
+    62,   352,    63,    90,    91,   195,    64,    65,    66,    67,
+   188,    68,    69,    70,    71,    72,   306,   324,   325,   326,
+   338,    73,    74,    75,   217,   218,    76,    77,   204,   272,
+   357,   124,    79
 };
 
-static const short yypact[] = {   779,
--32768,-32768,-32768,-32768,-32768,     5,   -28,   111,   -30,     6,
-   -31,   335,  1252,  1252,   -16,-32768,   853,    -5,  1252,     9,
-    57,  1252,   -20,  1252,  1252,-32768,   -21,  1252,  1252,-32768,
-  1252,   409,    -1,  1252,  1252,  1252,  1252,-32768,-32768,-32768,
--32768,    42,-32768,    43,   179,-32768,-32768,   -14,    12,   195,
-    82,   118,    72,    85,    93,   151,   -23,-32768,-32768,    11,
+static const short yypact[] = {   780,
+-32768,-32768,-32768,-32768,-32768,     5,   -52,   111,     9,     6,
+    25,   336,  1253,  1253,    -3,-32768,   854,    47,  1253,    50,
+    57,  1253,    29,  1253,  1253,-32768,    36,  1253,  1253,-32768,
+  1253,   410,    12,  1253,  1253,  1253,  1253,-32768,-32768,-32768,
+-32768,    83,-32768,    84,   180,-32768,-32768,   -34,    61,   220,
+    82,   212,    76,    94,    95,   151,    31,-32768,-32768,    11,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   779,-32768,-32768,
-     7,-32768,   964,   161,-32768,    45,    42,-32768,   136,    17,
--32768,-32768,     8,-32768,   198,    24,-32768,-32768,    18,    90,
--32768,-32768,  1252,   236,  1252,-32768,  1252,  1252,   -45,   483,
-   219,-32768,-32768,   853,-32768,-32768,    59,   202,   204,   -21,
-   935,   123,   205,   557,-32768,   186,  1036,   197,-32768,-32768,
--32768,-32768,  1108,  1252,   217,-32768,  1252,   218,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   780,-32768,-32768,
+     7,-32768,   965,   102,-32768,    45,    83,-32768,   112,    16,
+-32768,-32768,     8,-32768,   197,   -19,-32768,-32768,    18,   105,
+-32768,-32768,  1253,   198,  1253,-32768,  1253,  1253,    20,   484,
+   119,-32768,-32768,   854,-32768,-32768,    -6,   192,   203,    36,
+   936,   -37,   207,   558,-32768,   174,  1037,   209,-32768,-32768,
+-32768,-32768,  1109,  1253,   221,-32768,  1253,   222,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,  1252,  1252,  1252,  1252,  1252,  1252,  1252,
-  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,
-  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,-32768,  1252,
--32768,-32768,-32768,-32768,   222,    87,   209,   203,-32768,-32768,
--32768,-32768,-32768,  1252,-32768,-32768,   -30,-32768,-32768,-32768,
-   105,-32768,   220,   103,-32768,-32768,   113,   223,   115,   116,
-   117,-32768,-32768,   224,   -20,   249,-32768,-32768,-32768,-32768,
-    35,  1252,-32768,-32768,    -1,-32768,-32768,-32768,-32768,   119,
--32768,   196,-32768,   200,-32768,-32768,-32768,-32768,-32768,   -14,
-   -14,    12,    12,    12,   195,   195,   195,   195,   195,   195,
-    82,    82,    82,    82,   118,    72,    85,    93,   151,   221,
--32768,    -3,   -44,  1252,  1252,-32768,-32768,   220,   126,   631,
--32768,   220,   230,   853,  1252,   853,   225,   853,   233,-32768,
--32768,   226,-32768,  1180,-32768,  1252,-32768,-32768,  1252,  1252,
-   268,  1252,   127,   210,-32768,   220,-32768,   705,-32768,-32768,
-   270,   157,-32768,   287,-32768,-32768,   234,  1252,-32768,-32768,
--32768,-32768,   174,  1252,   214,   853,  1252,-32768,-32768,   853,
--32768,  1252,    23,   287,-32768,   -20,-32768,   853,   175,  1252,
--32768,   237,-32768,   201,   232,-32768,   287,-32768,-32768,-32768,
-   853,   239,   853,   853,   853,   241,-32768,   853,-32768,-32768,
-   853,   853,-32768,-32768,-32768,   307,   309,-32768
+-32768,-32768,-32768,  1253,  1253,  1253,  1253,  1253,  1253,  1253,
+  1253,  1253,  1253,  1253,  1253,  1253,  1253,  1253,  1253,  1253,
+  1253,  1253,  1253,  1253,  1253,  1253,  1253,  1253,-32768,  1253,
+-32768,-32768,-32768,-32768,   223,    87,   210,   199,-32768,-32768,
+-32768,-32768,-32768,  1253,-32768,-32768,     9,-32768,-32768,-32768,
+    64,-32768,   224,    99,-32768,-32768,   103,   225,   121,   122,
+   123,-32768,-32768,-32768,   227,    29,   252,-32768,-32768,-32768,
+-32768,    27,  1253,-32768,-32768,    12,-32768,-32768,-32768,-32768,
+   125,-32768,   187,-32768,   201,-32768,-32768,-32768,-32768,-32768,
+   -34,   -34,    61,    61,    61,   220,   220,   220,   220,   220,
+   220,    82,    82,    82,    82,   212,    76,    94,    95,   151,
+   217,-32768,    -1,   -44,  1253,  1253,-32768,-32768,   224,   156,
+   632,-32768,   224,   232,   854,  1253,   854,   228,   854,   233,
+-32768,-32768,   226,-32768,  1181,-32768,  1253,-32768,-32768,  1253,
+  1253,   269,  1253,   158,   213,-32768,   224,-32768,   706,-32768,
+-32768,   271,   175,-32768,   287,-32768,-32768,   235,  1253,-32768,
+-32768,-32768,-32768,   176,  1253,   215,   854,  1253,-32768,-32768,
+   854,-32768,  1253,    43,   287,-32768,    29,-32768,   854,   177,
+  1253,-32768,   238,-32768,   202,   234,-32768,   287,-32768,-32768,
+-32768,   854,   239,   854,   854,   854,   242,-32768,   854,-32768,
+-32768,   854,   854,-32768,-32768,-32768,   308,   310,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,    89,-32768,-32768,    91,   302,   308,-32768,
-   -34,-32768,    41,-32768,     1,   120,    88,   -18,    75,   142,
-   143,   144,   146,   141,-32768,-32768,  -122,-32768,    -9,   -17,
-   -22,   -25,-32768,   138,   128,    67,-32768,-32768,-32768,-32768,
-  -249,-32768,-32768,-32768,-32768,-32768,-32768,    -7,-32768,    13,
--32768,-32768,-32768,-32768,-32768,   129,-32768,-32768,   131,  -223,
+-32768,-32768,-32768,    85,-32768,-32768,    91,   307,   309,-32768,
+   -26,-32768,    41,-32768,     1,   116,  -114,    15,    81,   143,
+   144,   145,   147,   142,-32768,-32768,  -122,-32768,    -9,   -17,
+   -22,   -25,-32768,   139,   129,    67,-32768,-32768,-32768,-32768,
+  -250,-32768,-32768,-32768,-32768,-32768,-32768,    -7,-32768,    13,
+-32768,-32768,-32768,-32768,-32768,   117,-32768,-32768,   132,  -224,
 -32768,     2,   -74
 };
 
 
-#define        YYLAST          1326
+#define        YYLAST          1327
 
 
 static const short yytable[] = {   104,
-   111,    78,    99,   182,   227,    80,    92,   183,   199,   139,
-   231,   179,   109,   101,   102,   294,   177,   196,   205,   106,
-   290,   117,   180,   197,   112,   113,    95,    89,   115,   116,
-    96,   236,   335,    83,   129,   130,   131,   132,   212,   292,
-   189,   190,   315,   110,   295,   103,   155,   114,   299,   182,
-   189,   190,   193,   100,   100,   260,   105,   261,   178,   100,
-   156,   157,    81,    93,   100,   100,   125,   332,   100,   100,
-   107,   266,   318,   187,   100,   100,   100,   100,   180,   194,
-   342,   202,   158,   159,   197,   180,   203,   336,    82,    94,
-   184,   200,   191,   207,   181,   209,   218,   210,   211,   283,
-   198,   206,   191,   133,   133,   163,   164,   134,   137,   192,
-   264,   135,   138,     1,     2,     3,     4,     5,   108,   165,
-   166,   219,     8,   186,   232,    84,   180,   234,   140,   141,
-    16,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-   149,   150,   151,   152,   245,   246,   247,   248,   249,   250,
-   173,   169,   170,   171,   172,   237,   238,   239,   167,   168,
-    26,   310,   202,   311,   174,   272,   312,   268,    85,   153,
-   273,    30,    31,   175,    86,   274,    33,   276,   277,   278,
-   180,   285,   180,   180,   180,   327,   286,   220,   296,   316,
-   221,   176,   280,   273,   180,   100,   100,   100,   100,   100,
+   111,    78,    99,   182,   228,    80,    92,   183,   199,    83,
+   232,   179,   109,   101,   102,   295,   196,   139,   205,   106,
+   212,   117,   291,   197,   112,   113,   155,   221,   115,   116,
+   222,   237,   189,   190,   129,   130,   131,   132,   202,   293,
+   156,   157,   316,   203,   296,   243,   244,   245,   300,   182,
+   189,   190,   336,   100,   100,   261,   220,   262,   103,   100,
+   193,   180,    81,    93,   100,   100,    89,   333,   100,   100,
+   177,   267,   319,   187,   100,   100,   100,   100,   180,   125,
+   343,   194,    95,   197,   191,   180,    96,   180,    82,    94,
+   184,   200,   110,   207,   181,   209,   219,   210,   211,   198,
+   284,   206,   191,   213,   114,   163,   164,   337,   105,   192,
+   265,   107,   178,     1,     2,     3,     4,     5,   108,   165,
+   166,   202,     8,   186,   233,    84,   269,   235,   140,   141,
+    16,   158,   159,   142,   143,   144,   145,   146,   147,   148,
+   149,   150,   151,   152,   133,   133,   140,   141,   134,   137,
+   215,   216,   135,   138,   173,   238,   239,   240,   167,   168,
+    26,   273,   311,    96,   312,   275,   274,   313,    85,   153,
+   180,    30,    31,   174,    86,   175,    33,   246,   247,   248,
+   249,   250,   251,   277,   278,   279,   328,   286,   180,   180,
+   180,   176,   287,   281,   194,   100,   100,   100,   100,   100,
    100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
-   100,   100,   100,   100,   100,   100,   100,   100,   194,   321,
-   140,   141,    96,   182,   180,   142,   143,   144,   145,   146,
-   147,   148,   149,   150,   151,   152,   328,   341,   160,   161,
-   162,   180,   180,   251,   252,   253,   254,   242,   243,   244,
-   214,   215,   224,   225,   293,   187,   301,   208,   303,   201,
-   306,   153,   287,   180,   228,   302,   288,   180,   180,   344,
-   -27,   298,   -28,   222,   233,   235,   180,   240,   241,   262,
-   313,   215,   187,   270,   275,   279,   265,   300,   304,   289,
-   307,   314,   320,   317,   308,   322,   326,   330,   331,   343,
-   345,   348,   333,   339,   329,   353,   357,   187,   358,    87,
-   340,   282,   334,   284,   255,    88,   256,   259,   257,   352,
-   187,   258,   263,   347,   267,   349,   350,   350,   291,   346,
-   354,   269,     0,   355,   355,    97,   338,     1,     2,     3,
-     4,     5,     0,     0,   281,     0,     8,     0,     0,    84,
-     0,    13,    14,     0,    16,     0,     0,     0,     0,     0,
-    19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    24,    25,     0,     0,
-     0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
-     0,     0,    85,    28,    29,    30,    31,     0,    86,     0,
-    33,     0,     0,     0,     0,    34,    35,    36,    37,     0,
-     0,     1,     2,     3,   118,   119,     6,     0,    98,     7,
-     8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-    18,     0,     0,     0,    19,    20,    21,     0,    22,    23,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    24,    25,     0,     0,     0,     0,     0,     0,    26,     0,
-     0,     0,     0,     0,     0,     0,   120,    28,    29,    30,
-    31,     0,    32,   121,    33,     0,     0,     0,     0,    34,
-    35,    36,    37,     0,     0,     1,     2,     3,     4,     5,
-     6,     0,    38,     7,     8,     9,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,     0,     0,     0,    19,    20,
-    21,     0,    22,    23,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    24,    25,     0,     0,     0,     0,
-     0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
-    27,    28,    29,    30,    31,     0,    32,   213,    33,     0,
-     0,     0,     0,    34,    35,    36,    37,     0,     0,     1,
-     2,     3,     4,     5,     6,     0,    38,     7,     8,     9,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,     0,
-     0,     0,    19,    20,    21,     0,    22,    23,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    24,    25,
-     0,     0,     0,     0,     0,     0,    26,     0,     0,     0,
-     0,     0,     0,     0,    27,    28,    29,    30,    31,     0,
-    32,   223,    33,     0,     0,     0,     0,    34,    35,    36,
-    37,     0,     0,     1,     2,     3,     4,     5,     6,     0,
-    38,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,     0,     0,     0,    19,    20,    21,     0,
-    22,    23,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    24,    25,     0,     0,     0,     0,     0,     0,
-    26,     0,     0,     0,     0,     0,     0,     0,    27,    28,
-    29,    30,    31,     0,    32,   297,    33,     0,     0,     0,
-     0,    34,    35,    36,    37,     0,     0,     1,     2,     3,
-     4,     5,     6,     0,    38,     7,     8,     9,    10,    11,
-    12,    13,    14,    15,    16,    17,    18,     0,     0,     0,
-    19,    20,    21,     0,    22,    23,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    24,    25,     0,     0,
-     0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
-     0,     0,    27,    28,    29,    30,    31,     0,    32,   319,
-    33,     0,     0,     0,     0,    34,    35,    36,    37,     0,
-     0,     1,     2,     3,     4,     5,     6,     0,    38,     7,
-     8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-    18,     0,     0,     0,    19,    20,    21,     0,    22,    23,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    24,    25,     0,     0,     0,     0,     0,     0,    26,     0,
-     0,     0,     0,     0,     0,     0,    27,    28,    29,    30,
-    31,     0,    32,     0,    33,     0,     0,     0,     0,    34,
-    35,    36,    37,     0,     0,     1,     2,     3,     4,     5,
-     6,     0,    38,     7,     8,     9,    10,    84,    12,    13,
-    14,    15,    16,    17,    18,     0,     0,     0,    19,    20,
-    21,     0,    22,    23,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    24,    25,     0,     0,     0,     0,
-     0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
-    27,    28,    29,    30,    31,     0,    32,     0,    33,     0,
-     0,     0,     0,    34,    35,    36,    37,     0,     0,     0,
-     0,     0,     0,     0,  -126,     0,    38,  -126,  -126,  -126,
-  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
-  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,     0,     0,
-  -126,  -126,  -126,     0,  -126,  -126,     1,     2,     3,     4,
-     5,     0,     0,     0,     0,     8,   185,     0,    84,     0,
-    13,    14,     0,    16,     0,     0,     0,     0,     0,    19,
-     0,     0,  -126,  -126,  -126,     0,     0,     0,  -126,  -126,
-     0,     0,     0,     0,     0,    24,    25,  -126,  -126,     0,
-     0,     0,     0,    26,     0,     0,     0,     0,     0,     0,
-     0,    85,    28,    29,    30,    31,     0,    86,     0,    33,
-     0,     0,     0,     0,    34,    35,    36,    37,     1,     2,
+   100,   100,   100,   100,   100,   100,   100,   100,   297,   208,
+   317,   140,   141,   274,   182,   180,   142,   143,   144,   145,
+   146,   147,   148,   149,   150,   151,   152,   322,   329,   342,
+   225,   226,   180,   180,   180,   169,   170,   171,   172,   252,
+   253,   254,   255,   288,   180,   294,   187,   302,   201,   304,
+   -27,   307,   153,   160,   161,   162,   303,   289,   180,   180,
+   345,   -28,   299,   241,   242,   223,   229,   180,   234,   236,
+   263,   314,   266,   187,   216,   290,   276,   271,   280,   301,
+   308,   305,   315,   321,   309,   323,   318,   327,   331,   332,
+   344,   349,   346,   334,   340,   330,   354,   358,   187,   359,
+   285,   341,   283,   335,    87,   256,    88,   257,   260,   258,
+   353,   187,   259,   264,   348,   268,   350,   351,   351,   292,
+   347,   355,   270,   282,   356,   356,    97,   339,     1,     2,
      3,     4,     5,     0,     0,     0,     0,     8,     0,     0,
     84,     0,    13,    14,     0,    16,     0,     0,     0,     0,
      0,    19,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,    24,    25,     0,
      0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
      0,     0,     0,    85,    28,    29,    30,    31,     0,    86,
-     0,    33,   226,     0,     0,     0,    34,    35,    36,    37,
-     1,     2,     3,     4,     5,     0,     0,     0,     0,     8,
-     0,     0,    84,     0,    13,    14,     0,    16,     0,     0,
-     0,     0,     0,    19,     0,     0,     0,     0,     0,     0,
+     0,    33,     0,     0,     0,     0,    34,    35,    36,    37,
+     0,     0,     1,     2,     3,   118,   119,     6,     0,    98,
+     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    18,     0,     0,     0,    19,    20,    21,     0,    22,
+    23,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    24,    25,     0,     0,     0,     0,     0,     0,    26,
+     0,     0,     0,     0,     0,     0,     0,   120,    28,    29,
+    30,    31,     0,    32,   121,    33,     0,     0,     0,     0,
+    34,    35,    36,    37,     0,     0,     1,     2,     3,     4,
+     5,     6,     0,    38,     7,     8,     9,    10,    11,    12,
+    13,    14,    15,    16,    17,    18,     0,     0,     0,    19,
+    20,    21,     0,    22,    23,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    24,    25,     0,     0,     0,
+     0,     0,     0,    26,     0,     0,     0,     0,     0,     0,
+     0,    27,    28,    29,    30,    31,     0,    32,   214,    33,
+     0,     0,     0,     0,    34,    35,    36,    37,     0,     0,
+     1,     2,     3,     4,     5,     6,     0,    38,     7,     8,
+     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+     0,     0,     0,    19,    20,    21,     0,    22,    23,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,    24,
     25,     0,     0,     0,     0,     0,     0,    26,     0,     0,
-     0,     0,     0,     0,     0,    85,    28,    29,    30,    31,
-   229,    86,     0,    33,     0,     0,     0,     0,    34,    35,
-    36,    37,     1,     2,     3,     4,     5,     0,     0,     0,
-     0,     8,     0,     0,    84,     0,    13,    14,     0,    16,
-     0,     0,     0,     0,     0,    19,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    27,    28,    29,    30,    31,
+     0,    32,   224,    33,     0,     0,     0,     0,    34,    35,
+    36,    37,     0,     0,     1,     2,     3,     4,     5,     6,
+     0,    38,     7,     8,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,     0,     0,     0,    19,    20,    21,
+     0,    22,    23,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    24,    25,     0,     0,     0,     0,     0,
+     0,    26,     0,     0,     0,     0,     0,     0,     0,    27,
+    28,    29,    30,    31,     0,    32,   298,    33,     0,     0,
+     0,     0,    34,    35,    36,    37,     0,     0,     1,     2,
+     3,     4,     5,     6,     0,    38,     7,     8,     9,    10,
+    11,    12,    13,    14,    15,    16,    17,    18,     0,     0,
+     0,    19,    20,    21,     0,    22,    23,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    24,    25,     0,
+     0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
+     0,     0,     0,    27,    28,    29,    30,    31,     0,    32,
+   320,    33,     0,     0,     0,     0,    34,    35,    36,    37,
+     0,     0,     1,     2,     3,     4,     5,     6,     0,    38,
+     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    18,     0,     0,     0,    19,    20,    21,     0,    22,
+    23,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,    24,    25,     0,     0,     0,     0,     0,     0,    26,
-     0,     0,     0,     0,     0,     0,     0,    85,    28,    29,
-    30,    31,     0,    86,     0,    33,   309,     0,     0,     0,
-    34,    35,    36,    37,     1,     2,     3,     4,     5,     0,
-     0,     0,     0,     8,     0,     0,    84,     0,    13,    14,
-     0,    16,     0,     0,     0,     0,     0,    19,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    27,    28,    29,
+    30,    31,     0,    32,     0,    33,     0,     0,     0,     0,
+    34,    35,    36,    37,     0,     0,     1,     2,     3,     4,
+     5,     6,     0,    38,     7,     8,     9,    10,    84,    12,
+    13,    14,    15,    16,    17,    18,     0,     0,     0,    19,
+    20,    21,     0,    22,    23,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    24,    25,     0,     0,     0,
+     0,     0,     0,    26,     0,     0,     0,     0,     0,     0,
+     0,    27,    28,    29,    30,    31,     0,    32,     0,    33,
+     0,     0,     0,     0,    34,    35,    36,    37,     0,     0,
+     0,     0,     0,     0,     0,  -126,     0,    38,  -126,  -126,
+  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
+  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,     0,
+     0,  -126,  -126,  -126,     0,  -126,  -126,     1,     2,     3,
+     4,     5,     0,     0,     0,     0,     8,   185,     0,    84,
+     0,    13,    14,     0,    16,     0,     0,     0,     0,     0,
+    19,     0,     0,  -126,  -126,  -126,     0,     0,     0,  -126,
+  -126,     0,     0,     0,     0,     0,    24,    25,  -126,  -126,
+     0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
+     0,     0,    85,    28,    29,    30,    31,     0,    86,     0,
+    33,     0,     0,     0,     0,    34,    35,    36,    37,     1,
+     2,     3,     4,     5,     0,     0,     0,     0,     8,     0,
+     0,    84,     0,    13,    14,     0,    16,     0,     0,     0,
+     0,     0,    19,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    24,    25,
+     0,     0,     0,     0,     0,     0,    26,     0,     0,     0,
+     0,     0,     0,     0,    85,    28,    29,    30,    31,     0,
+    86,     0,    33,   227,     0,     0,     0,    34,    35,    36,
+    37,     1,     2,     3,     4,     5,     0,     0,     0,     0,
+     8,     0,     0,    84,     0,    13,    14,     0,    16,     0,
+     0,     0,     0,     0,    19,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    24,    25,     0,     0,     0,     0,     0,
-     0,    26,     0,     0,     0,     0,     0,     0,     0,    85,
-    28,    29,    30,    31,     0,    86,     0,    33,     0,     0,
-     0,     0,    34,    35,    36,    37
+    24,    25,     0,     0,     0,     0,     0,     0,    26,     0,
+     0,     0,     0,     0,     0,     0,    85,    28,    29,    30,
+    31,   230,    86,     0,    33,     0,     0,     0,     0,    34,
+    35,    36,    37,     1,     2,     3,     4,     5,     0,     0,
+     0,     0,     8,     0,     0,    84,     0,    13,    14,     0,
+    16,     0,     0,     0,     0,     0,    19,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,    24,    25,     0,     0,     0,     0,     0,     0,
+    26,     0,     0,     0,     0,     0,     0,     0,    85,    28,
+    29,    30,    31,     0,    86,     0,    33,   310,     0,     0,
+     0,    34,    35,    36,    37,     1,     2,     3,     4,     5,
+     0,     0,     0,     0,     8,     0,     0,    84,     0,    13,
+    14,     0,    16,     0,     0,     0,     0,     0,    19,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    24,    25,     0,     0,     0,     0,
+     0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
+    85,    28,    29,    30,    31,     0,    86,     0,    33,     0,
+     0,     0,     0,    34,    35,    36,    37
 };
 
 static const short yycheck[] = {    17,
-    23,     0,    12,    78,   127,     1,     1,     1,     1,    44,
-   133,     1,    22,    13,    14,   265,    40,     1,     1,    19,
-    24,    31,    68,    68,    24,    25,    58,    58,    28,    29,
-    62,   154,    10,    62,    34,    35,    36,    37,    84,    84,
-     6,     7,   292,    64,   268,    62,    61,    69,   272,   124,
-     6,     7,    87,    13,    14,   178,    62,   180,    82,    19,
-    75,    76,    58,    58,    24,    25,    68,   317,    28,    29,
-    62,   194,   296,    83,    34,    35,    36,    37,    68,    83,
-   330,    58,    71,    72,    68,    68,    63,    65,    84,    84,
-    84,    84,    58,   103,    84,   105,   114,   107,   108,   222,
-    84,    84,    58,    62,    62,    24,    25,    66,    66,    65,
-    24,    70,    70,     3,     4,     5,     6,     7,    62,    38,
-    39,    63,    12,    83,   134,    15,    68,   137,    42,    43,
-    20,    42,    43,    47,    48,    49,    50,    51,    52,    53,
-    54,    55,    56,    57,   163,   164,   165,   166,   167,   168,
-    79,    34,    35,    36,    37,   155,   156,   157,    77,    78,
-    50,   284,    58,   286,    80,    63,   289,    63,    58,    83,
-    68,    61,    62,    81,    64,    63,    66,    63,    63,    63,
-    68,    63,    68,    68,    68,   308,    68,    65,    63,    63,
-    68,    41,   215,    68,    68,   155,   156,   157,   158,   159,
+    23,     0,    12,    78,   127,     1,     1,     1,     1,    62,
+   133,     1,    22,    13,    14,   266,     1,    44,     1,    19,
+     1,    31,    24,    68,    24,    25,    61,    65,    28,    29,
+    68,   154,     6,     7,    34,    35,    36,    37,    58,    84,
+    75,    76,   293,    63,   269,   160,   161,   162,   273,   124,
+     6,     7,    10,    13,    14,   178,    63,   180,    62,    19,
+    87,    68,    58,    58,    24,    25,    58,   318,    28,    29,
+    40,   194,   297,    83,    34,    35,    36,    37,    68,    68,
+   331,    83,    58,    68,    58,    68,    62,    68,    84,    84,
+    84,    84,    64,   103,    84,   105,   114,   107,   108,    84,
+   223,    84,    58,    84,    69,    24,    25,    65,    62,    65,
+    24,    62,    82,     3,     4,     5,     6,     7,    62,    38,
+    39,    58,    12,    83,   134,    15,    63,   137,    42,    43,
+    20,    71,    72,    47,    48,    49,    50,    51,    52,    53,
+    54,    55,    56,    57,    62,    62,    42,    43,    66,    66,
+    32,    33,    70,    70,    79,   155,   156,   157,    77,    78,
+    50,    63,   285,    62,   287,    63,    68,   290,    58,    83,
+    68,    61,    62,    80,    64,    81,    66,   163,   164,   165,
+   166,   167,   168,    63,    63,    63,   309,    63,    68,    68,
+    68,    41,    68,   216,    83,   155,   156,   157,   158,   159,
    160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,   176,   177,    83,    63,
-    42,    43,    62,   298,    68,    47,    48,    49,    50,    51,
-    52,    53,    54,    55,    56,    57,    63,    63,    44,    45,
-    46,    68,    68,   169,   170,   171,   172,   160,   161,   162,
-    32,    33,    67,    68,   264,   265,   274,    22,   276,    62,
-   278,    83,    67,    68,    68,   275,    67,    68,    68,    69,
-    69,   270,    69,    69,    58,    58,    68,   158,   159,    58,
-   290,    33,   292,    64,    62,    62,    84,    58,    64,    69,
-    58,    24,    23,    84,    69,     9,    63,    84,   316,    63,
-    69,    63,   320,   326,   314,    65,     0,   317,     0,     8,
-   328,   221,   322,   225,   173,     8,   174,   177,   175,   345,
-   330,   176,   185,   341,   197,   343,   344,   345,   262,   337,
-   348,   201,    -1,   351,   352,     1,   324,     3,     4,     5,
-     6,     7,    -1,    -1,   216,    -1,    12,    -1,    -1,    15,
-    -1,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,
-    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,
-    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,
-    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,
-    -1,     3,     4,     5,     6,     7,     8,    -1,    84,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    -1,    -1,    -1,    26,    27,    28,    -1,    30,    31,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
-    62,    -1,    64,    65,    66,    -1,    -1,    -1,    -1,    71,
-    72,    73,    74,    -1,    -1,     3,     4,     5,     6,     7,
-     8,    -1,    84,    11,    12,    13,    14,    15,    16,    17,
-    18,    19,    20,    21,    22,    -1,    -1,    -1,    26,    27,
-    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,
-    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    58,    59,    60,    61,    62,    -1,    64,    65,    66,    -1,
-    -1,    -1,    -1,    71,    72,    73,    74,    -1,    -1,     3,
-     4,     5,     6,     7,     8,    -1,    84,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    -1,
-    -1,    -1,    26,    27,    28,    -1,    30,    31,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
-    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    58,    59,    60,    61,    62,    -1,
-    64,    65,    66,    -1,    -1,    -1,    -1,    71,    72,    73,
-    74,    -1,    -1,     3,     4,     5,     6,     7,     8,    -1,
-    84,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    -1,    -1,    -1,    26,    27,    28,    -1,
-    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
-    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
-    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,    -1,
-    -1,    71,    72,    73,    74,    -1,    -1,     3,     4,     5,
-     6,     7,     8,    -1,    84,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,
-    26,    27,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,
-    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,    65,
-    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,
-    -1,     3,     4,     5,     6,     7,     8,    -1,    84,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    -1,    -1,    -1,    26,    27,    28,    -1,    30,    31,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
-    62,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,
-    72,    73,    74,    -1,    -1,     3,     4,     5,     6,     7,
-     8,    -1,    84,    11,    12,    13,    14,    15,    16,    17,
-    18,    19,    20,    21,    22,    -1,    -1,    -1,    26,    27,
-    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,
-    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    58,    59,    60,    61,    62,    -1,    64,    -1,    66,    -1,
-    -1,    -1,    -1,    71,    72,    73,    74,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,     0,    -1,    84,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    -1,    -1,
-    26,    27,    28,    -1,    30,    31,     3,     4,     5,     6,
-     7,    -1,    -1,    -1,    -1,    12,    13,    -1,    15,    -1,
-    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,
-    -1,    -1,    58,    59,    60,    -1,    -1,    -1,    64,    65,
-    -1,    -1,    -1,    -1,    -1,    42,    43,    73,    74,    -1,
-    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,    66,
-    -1,    -1,    -1,    -1,    71,    72,    73,    74,     3,     4,
+   170,   171,   172,   173,   174,   175,   176,   177,    63,    22,
+    63,    42,    43,    68,   299,    68,    47,    48,    49,    50,
+    51,    52,    53,    54,    55,    56,    57,    63,    63,    63,
+    67,    68,    68,    68,    68,    34,    35,    36,    37,   169,
+   170,   171,   172,    67,    68,   265,   266,   275,    62,   277,
+    69,   279,    83,    44,    45,    46,   276,    67,    68,    68,
+    69,    69,   271,   158,   159,    69,    68,    68,    58,    58,
+    58,   291,    84,   293,    33,    69,    62,    64,    62,    58,
+    58,    64,    24,    23,    69,     9,    84,    63,    84,   317,
+    63,    63,    69,   321,   327,   315,    65,     0,   318,     0,
+   226,   329,   222,   323,     8,   173,     8,   174,   177,   175,
+   346,   331,   176,   185,   342,   197,   344,   345,   346,   263,
+   338,   349,   201,   217,   352,   353,     1,   325,     3,     4,
      5,     6,     7,    -1,    -1,    -1,    -1,    12,    -1,    -1,
     15,    -1,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,
     -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,
     -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,
-    -1,    66,    67,    -1,    -1,    -1,    71,    72,    73,    74,
-     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
-    -1,    -1,    15,    -1,    17,    18,    -1,    20,    -1,    -1,
-    -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,
+    -1,    -1,     3,     4,     5,     6,     7,     8,    -1,    84,
+    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+    21,    22,    -1,    -1,    -1,    26,    27,    28,    -1,    30,
+    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,
+    61,    62,    -1,    64,    65,    66,    -1,    -1,    -1,    -1,
+    71,    72,    73,    74,    -1,    -1,     3,     4,     5,     6,
+     7,     8,    -1,    84,    11,    12,    13,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,    26,
+    27,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,
+    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    58,    59,    60,    61,    62,    -1,    64,    65,    66,
+    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,    -1,
+     3,     4,     5,     6,     7,     8,    -1,    84,    11,    12,
+    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+    -1,    -1,    -1,    26,    27,    28,    -1,    30,    31,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
     43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,    62,
-    63,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,    72,
-    73,    74,     3,     4,     5,     6,     7,    -1,    -1,    -1,
-    -1,    12,    -1,    -1,    15,    -1,    17,    18,    -1,    20,
-    -1,    -1,    -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    64,    65,    66,    -1,    -1,    -1,    -1,    71,    72,
+    73,    74,    -1,    -1,     3,     4,     5,     6,     7,     8,
+    -1,    84,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    21,    22,    -1,    -1,    -1,    26,    27,    28,
+    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,
+    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
+    59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
+    -1,    -1,    71,    72,    73,    74,    -1,    -1,     3,     4,
+     5,     6,     7,     8,    -1,    84,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    -1,    -1,
+    -1,    26,    27,    28,    -1,    30,    31,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,
+    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,
+    65,    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,
+    -1,    -1,     3,     4,     5,     6,     7,     8,    -1,    84,
+    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+    21,    22,    -1,    -1,    -1,    26,    27,    28,    -1,    30,
+    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,
-    61,    62,    -1,    64,    -1,    66,    67,    -1,    -1,    -1,
-    71,    72,    73,    74,     3,     4,     5,     6,     7,    -1,
-    -1,    -1,    -1,    12,    -1,    -1,    15,    -1,    17,    18,
-    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,    -1,    -1,
+    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,
+    71,    72,    73,    74,    -1,    -1,     3,     4,     5,     6,
+     7,     8,    -1,    84,    11,    12,    13,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,    26,
+    27,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,
+    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,    66,
+    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,     0,    -1,    84,     3,     4,
+     5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    23,    -1,
+    -1,    26,    27,    28,    -1,    30,    31,     3,     4,     5,
+     6,     7,    -1,    -1,    -1,    -1,    12,    13,    -1,    15,
+    -1,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,
+    26,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,    64,
+    65,    -1,    -1,    -1,    -1,    -1,    42,    43,    73,    74,
+    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,
+    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,     3,
+     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,    -1,
+    -1,    15,    -1,    17,    18,    -1,    20,    -1,    -1,    -1,
+    -1,    -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
+    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    58,    59,    60,    61,    62,    -1,
+    64,    -1,    66,    67,    -1,    -1,    -1,    71,    72,    73,
+    74,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
+    12,    -1,    -1,    15,    -1,    17,    18,    -1,    20,    -1,
+    -1,    -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,
-    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
-    59,    60,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
-    -1,    -1,    71,    72,    73,    74
+    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
+    62,    63,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,
+    72,    73,    74,     3,     4,     5,     6,     7,    -1,    -1,
+    -1,    -1,    12,    -1,    -1,    15,    -1,    17,    18,    -1,
+    20,    -1,    -1,    -1,    -1,    -1,    26,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
+    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
+    60,    61,    62,    -1,    64,    -1,    66,    67,    -1,    -1,
+    -1,    71,    72,    73,    74,     3,     4,     5,     6,     7,
+    -1,    -1,    -1,    -1,    12,    -1,    -1,    15,    -1,    17,
+    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,
+    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    58,    59,    60,    61,    62,    -1,    64,    -1,    66,    -1,
+    -1,    -1,    -1,    71,    72,    73,    74
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -1924,83 +1924,87 @@ case 176:
 { yyval.stat = new ThrowNode(yyvsp[-1].node); ;
     break;}
 case 177:
-#line 572 "grammar.y"
-{ yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].cnode); ;
+#line 569 "grammar.y"
+{ if (automatic()) yyval.stat = new ThrowNode(yyvsp[-1].node); else YYABORT; ;
     break;}
 case 178:
 #line 573 "grammar.y"
-{ yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].fnode); ;
+{ yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].cnode); ;
     break;}
 case 179:
 #line 574 "grammar.y"
-{ yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].cnode, yyvsp[0].fnode); ;
+{ yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].fnode); ;
     break;}
 case 180:
-#line 578 "grammar.y"
-{ yyval.cnode = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); ;
+#line 575 "grammar.y"
+{ yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].cnode, yyvsp[0].fnode); ;
     break;}
 case 181:
-#line 582 "grammar.y"
-{ yyval.fnode = new FinallyNode(yyvsp[0].stat); ;
+#line 579 "grammar.y"
+{ yyval.cnode = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); ;
     break;}
 case 182:
-#line 586 "grammar.y"
-{ yyval.func = new FuncDeclNode(*yyvsp[-3].ident, yyvsp[0].body); ;
+#line 583 "grammar.y"
+{ yyval.fnode = new FinallyNode(yyvsp[0].stat); ;
     break;}
 case 183:
-#line 588 "grammar.y"
-{ yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body); ;
+#line 587 "grammar.y"
+{ yyval.func = new FuncDeclNode(*yyvsp[-3].ident, yyvsp[0].body); ;
     break;}
 case 184:
-#line 591 "grammar.y"
-{ yyval.node = new FuncExprNode(yyvsp[0].body); ;
+#line 589 "grammar.y"
+{ yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body); ;
     break;}
 case 185:
-#line 593 "grammar.y"
-{ yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ;
+#line 592 "grammar.y"
+{ yyval.node = new FuncExprNode(yyvsp[0].body); ;
     break;}
 case 186:
-#line 598 "grammar.y"
-{ yyval.param = new ParameterNode(*yyvsp[0].ident); ;
+#line 594 "grammar.y"
+{ yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ;
     break;}
 case 187:
 #line 599 "grammar.y"
-{ yyval.param = new ParameterNode(yyvsp[-2].param, *yyvsp[0].ident); ;
+{ yyval.param = new ParameterNode(*yyvsp[0].ident); ;
     break;}
 case 188:
-#line 603 "grammar.y"
+#line 600 "grammar.y"
+{ yyval.param = new ParameterNode(yyvsp[-2].param, *yyvsp[0].ident); ;
+    break;}
+case 189:
+#line 604 "grammar.y"
 { yyval.body = new FunctionBodyNode(0);
                                     DBG(yyval.body, yylsp[-1], yylsp[0]);;
     break;}
-case 189:
-#line 605 "grammar.y"
+case 190:
+#line 606 "grammar.y"
 { yyval.body = new FunctionBodyNode(yyvsp[-1].srcs);
                                     DBG(yyval.body, yylsp[-2], yylsp[0]);;
     break;}
-case 190:
-#line 610 "grammar.y"
+case 191:
+#line 611 "grammar.y"
 { yyval.prog = new ProgramNode(0);
                                      Parser::progNode = yyval.prog; ;
     break;}
-case 191:
-#line 612 "grammar.y"
+case 192:
+#line 613 "grammar.y"
 { yyval.prog = new ProgramNode(yyvsp[0].srcs);
                                      Parser::progNode = yyval.prog; ;
     break;}
-case 192:
-#line 617 "grammar.y"
-{ yyval.srcs = new SourceElementsNode(yyvsp[0].stat); ;
-    break;}
 case 193:
 #line 618 "grammar.y"
-{ yyval.srcs = new SourceElementsNode(yyvsp[-1].srcs, yyvsp[0].stat); ;
+{ yyval.srcs = new SourceElementsNode(yyvsp[0].stat); ;
     break;}
 case 194:
-#line 622 "grammar.y"
-{ yyval.stat = yyvsp[0].stat; ;
+#line 619 "grammar.y"
+{ yyval.srcs = new SourceElementsNode(yyvsp[-1].srcs, yyvsp[0].stat); ;
     break;}
 case 195:
 #line 623 "grammar.y"
+{ yyval.stat = yyvsp[0].stat; ;
+    break;}
+case 196:
+#line 624 "grammar.y"
 { yyval.stat = yyvsp[0].func; ;
     break;}
 }
@@ -2225,7 +2229,7 @@ yyerrhandle:
     }
   return 1;
 }
-#line 626 "grammar.y"
+#line 627 "grammar.y"
 
 
 int yyerror (const char * /* s */)  /* Called by yyparse on error */