[JSCRIPT]
[reactos.git] / reactos / dll / win32 / jscript / parser.tab.c
index 3262aa0..e3307bd 100644 (file)
@@ -99,7 +99,6 @@ typedef struct _statement_list_t {
 
 static literal_t *new_string_literal(parser_ctx_t*,const WCHAR*);
 static literal_t *new_null_literal(parser_ctx_t*);
-static literal_t *new_undefined_literal(parser_ctx_t*);
 static literal_t *new_boolean_literal(parser_ctx_t*,VARIANT_BOOL);
 
 typedef struct _property_list_t {
@@ -207,7 +206,7 @@ static source_elements_t *source_elements_add_statement(source_elements_t*,state
 
 
 /* Line 189 of yacc.c  */
-#line 211 "parser.tab.c"
+#line 210 "parser.tab.c"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -249,34 +248,33 @@ static source_elements_t *source_elements_add_statement(source_elements_t*,state
      kINSTANCEOF = 270,
      kNEW = 271,
      kNULL = 272,
-     kUNDEFINED = 273,
-     kRETURN = 274,
-     kSWITCH = 275,
-     kTHIS = 276,
-     kTHROW = 277,
-     kTRUE = 278,
-     kFALSE = 279,
-     kTRY = 280,
-     kTYPEOF = 281,
-     kVAR = 282,
-     kVOID = 283,
-     kWHILE = 284,
-     kWITH = 285,
-     tANDAND = 286,
-     tOROR = 287,
-     tINC = 288,
-     tDEC = 289,
-     tHTMLCOMMENT = 290,
-     kDIVEQ = 291,
-     kFUNCTION = 292,
-     tIdentifier = 293,
-     tAssignOper = 294,
-     tEqOper = 295,
-     tShiftOper = 296,
-     tRelOper = 297,
-     tNumericLiteral = 298,
-     tStringLiteral = 299,
-     LOWER_THAN_ELSE = 300
+     kRETURN = 273,
+     kSWITCH = 274,
+     kTHIS = 275,
+     kTHROW = 276,
+     kTRUE = 277,
+     kFALSE = 278,
+     kTRY = 279,
+     kTYPEOF = 280,
+     kVAR = 281,
+     kVOID = 282,
+     kWHILE = 283,
+     kWITH = 284,
+     tANDAND = 285,
+     tOROR = 286,
+     tINC = 287,
+     tDEC = 288,
+     tHTMLCOMMENT = 289,
+     kDIVEQ = 290,
+     kFUNCTION = 291,
+     tIdentifier = 292,
+     tAssignOper = 293,
+     tEqOper = 294,
+     tShiftOper = 295,
+     tRelOper = 296,
+     tNumericLiteral = 297,
+     tStringLiteral = 298,
+     LOWER_THAN_ELSE = 299
    };
 #endif
 
@@ -287,7 +285,7 @@ typedef union YYSTYPE
 {
 
 /* Line 214 of yacc.c  */
-#line 151 "parser.y"
+#line 150 "parser.y"
 
     int                     ival;
     const WCHAR             *srcptr;
@@ -311,7 +309,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 315 "parser.tab.c"
+#line 313 "parser.tab.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -323,7 +321,7 @@ typedef union YYSTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 327 "parser.tab.c"
+#line 325 "parser.tab.c"
 
 #ifdef short
 # undef short
@@ -538,20 +536,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1042
+#define YYLAST   1030
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  68
+#define YYNTOKENS  67
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  95
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  215
+#define YYNRULES  214
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  374
+#define YYNSTATES  373
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   300
+#define YYMAXUTOK   299
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -562,16 +560,16 @@ static const yytype_uint8 yytranslate[] =
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    62,     2,     2,     2,    60,    55,     2,
-      66,    67,    58,    56,    48,    57,    65,    59,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    51,    50,
-       2,    49,     2,    52,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,    61,     2,     2,     2,    59,    54,     2,
+      65,    66,    57,    55,    47,    56,    64,    58,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    50,    49,
+       2,    48,     2,    51,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    63,     2,    64,    54,     2,     2,     2,     2,     2,
+       2,    62,     2,    63,    53,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    47,    53,    38,    61,     2,     2,     2,
+       2,     2,     2,    46,    52,    37,    60,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -588,8 +586,7 @@ static const yytype_uint8 yytranslate[] =
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    39,    40,    41,    42,    43,    44,    45,
-      46
+      35,    36,    38,    39,    40,    41,    42,    43,    44,    45
 };
 
 #if YYDEBUG
@@ -618,105 +615,105 @@ static const yytype_uint16 yyprhs[] =
      567,   570,   574,   578,   584,   587,   592,   594,   597,   598,
      600,   603,   607,   611,   617,   619,   621,   623,   624,   626,
      628,   630,   632,   634,   636,   638,   640,   642,   644,   646,
-     648,   650,   652,   654,   656,   658
+     648,   650,   652,   654,   656
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-      69,     0,    -1,    71,    70,    -1,    35,    -1,    -1,    -1,
-      71,    77,    -1,    73,   156,   160,    76,   161,    47,    74,
-      38,    -1,    37,    -1,    71,    -1,    39,    -1,    75,    48,
-      39,    -1,    -1,    75,    -1,    80,    -1,    81,    -1,    90,
-      -1,    72,    -1,    91,    -1,    92,    -1,    93,    -1,    98,
-      -1,    99,    -1,   100,    -1,   101,    -1,   102,    -1,   103,
-      -1,   109,    -1,   110,    -1,    77,    -1,    78,    77,    -1,
-      -1,    78,    -1,    47,    78,    38,    -1,    47,    38,    -1,
-      27,    82,   159,    -1,    84,    -1,    82,    48,    84,    -1,
-      85,    -1,    83,    48,    85,    -1,    39,    86,    -1,    39,
-      88,    -1,    -1,    87,    -1,    49,   119,    -1,    -1,    89,
-      -1,    49,   120,    -1,    50,    -1,   115,   159,    -1,    11,
-     160,   114,   161,    77,    10,    77,    -1,    11,   160,   114,
-     161,    77,    -1,     9,    77,    29,   160,   114,   161,   159,
-      -1,    29,   160,   114,   161,    77,    -1,    -1,    -1,    13,
-     160,   116,    94,   162,   113,    95,   162,   113,   161,    77,
-      -1,    -1,    -1,    13,   160,    27,    83,    96,   162,   113,
-      97,   162,   113,   161,    77,    -1,    13,   160,   142,    14,
-     114,   161,    77,    -1,    13,   160,    27,    85,    14,   114,
-     161,    77,    -1,     6,   156,   159,    -1,     3,   156,   159,
-      -1,    19,   113,   159,    -1,    30,   160,   115,   161,    77,
-      -1,    39,    51,    77,    -1,    20,   160,   115,   161,   104,
-      -1,    47,   105,    38,    -1,    47,   105,   108,   105,    38,
-      -1,    -1,   106,    -1,   107,    -1,   106,   107,    -1,     4,
-     115,    51,    79,    -1,     7,    51,    79,    -1,    22,   115,
-     159,    -1,    25,    80,   111,    -1,    25,    80,   112,    -1,
-      25,    80,   111,   112,    -1,     5,   160,    39,   161,    80,
-      -1,    12,    80,    -1,    -1,   115,    -1,   115,    -1,     1,
-      -1,   119,    -1,   115,    48,   119,    -1,    -1,   117,    -1,
-     120,    -1,   117,    48,   120,    -1,    40,    -1,    36,    -1,
-     121,    -1,   142,    49,   119,    -1,   142,   118,   119,    -1,
-     122,    -1,   142,    49,   120,    -1,   142,   118,   120,    -1,
-     123,    -1,   123,    52,   119,    51,   119,    -1,   124,    -1,
-     124,    52,   120,    51,   120,    -1,   125,    -1,   123,    32,
-     125,    -1,   126,    -1,   124,    32,   126,    -1,   127,    -1,
-     125,    31,   127,    -1,   128,    -1,   126,    31,   128,    -1,
-     129,    -1,   127,    53,   129,    -1,   130,    -1,   128,    53,
-     130,    -1,   131,    -1,   129,    54,   131,    -1,   132,    -1,
-     130,    54,   132,    -1,   133,    -1,   131,    55,   133,    -1,
-     134,    -1,   132,    55,   134,    -1,   135,    -1,   133,    41,
-     135,    -1,   136,    -1,   134,    41,   136,    -1,   137,    -1,
-     135,    43,   137,    -1,   135,    15,   137,    -1,   135,    14,
-     137,    -1,   137,    -1,   136,    43,   137,    -1,   136,    15,
-     137,    -1,   138,    -1,   137,    42,   138,    -1,   139,    -1,
-     138,    56,   139,    -1,   138,    57,   139,    -1,   140,    -1,
-     139,    58,   140,    -1,   139,    59,   140,    -1,   139,    60,
-     140,    -1,   141,    -1,     8,   140,    -1,    28,   140,    -1,
-      26,   140,    -1,    33,   140,    -1,    34,   140,    -1,    56,
-     140,    -1,    57,   140,    -1,    61,   140,    -1,    62,   140,
-      -1,   142,    -1,   142,    33,    -1,   142,    34,    -1,   143,
-      -1,   145,    -1,   144,    -1,    16,   143,    -1,   148,    -1,
-      72,    -1,   144,    63,   115,    64,    -1,   144,    65,    39,
-      -1,    16,   144,   146,    -1,   144,   146,    -1,   145,   146,
-      -1,   145,    63,   115,    64,    -1,   145,    65,    39,    -1,
-      66,    67,    -1,    66,   147,    67,    -1,   119,    -1,   147,
-      48,   119,    -1,    21,    -1,    39,    -1,   157,    -1,   149,
-      -1,   153,    -1,    66,   115,    67,    -1,    63,    64,    -1,
-      63,   151,    64,    -1,    63,   150,    64,    -1,    63,   150,
-      48,   152,    64,    -1,   152,   119,    -1,   150,    48,   152,
-     119,    -1,    48,    -1,   151,    48,    -1,    -1,   151,    -1,
-      47,    38,    -1,    47,   154,    38,    -1,   155,    51,   119,
-      -1,   154,    48,   155,    51,   119,    -1,    39,    -1,    45,
-      -1,    44,    -1,    -1,    39,    -1,    17,    -1,    18,    -1,
-     158,    -1,    44,    -1,    45,    -1,    59,    -1,    36,    -1,
-      23,    -1,    24,    -1,    50,    -1,     1,    -1,    66,    -1,
-       1,    -1,    67,    -1,     1,    -1,    50,    -1,     1,    -1
+      68,     0,    -1,    70,    69,    -1,    34,    -1,    -1,    -1,
+      70,    76,    -1,    72,   155,   159,    75,   160,    46,    73,
+      37,    -1,    36,    -1,    70,    -1,    38,    -1,    74,    47,
+      38,    -1,    -1,    74,    -1,    79,    -1,    80,    -1,    89,
+      -1,    71,    -1,    90,    -1,    91,    -1,    92,    -1,    97,
+      -1,    98,    -1,    99,    -1,   100,    -1,   101,    -1,   102,
+      -1,   108,    -1,   109,    -1,    76,    -1,    77,    76,    -1,
+      -1,    77,    -1,    46,    77,    37,    -1,    46,    37,    -1,
+      26,    81,   158,    -1,    83,    -1,    81,    47,    83,    -1,
+      84,    -1,    82,    47,    84,    -1,    38,    85,    -1,    38,
+      87,    -1,    -1,    86,    -1,    48,   118,    -1,    -1,    88,
+      -1,    48,   119,    -1,    49,    -1,   114,   158,    -1,    11,
+     159,   113,   160,    76,    10,    76,    -1,    11,   159,   113,
+     160,    76,    -1,     9,    76,    28,   159,   113,   160,   158,
+      -1,    28,   159,   113,   160,    76,    -1,    -1,    -1,    13,
+     159,   115,    93,   161,   112,    94,   161,   112,   160,    76,
+      -1,    -1,    -1,    13,   159,    26,    82,    95,   161,   112,
+      96,   161,   112,   160,    76,    -1,    13,   159,   141,    14,
+     113,   160,    76,    -1,    13,   159,    26,    84,    14,   113,
+     160,    76,    -1,     6,   155,   158,    -1,     3,   155,   158,
+      -1,    18,   112,   158,    -1,    29,   159,   114,   160,    76,
+      -1,    38,    50,    76,    -1,    19,   159,   114,   160,   103,
+      -1,    46,   104,    37,    -1,    46,   104,   107,   104,    37,
+      -1,    -1,   105,    -1,   106,    -1,   105,   106,    -1,     4,
+     114,    50,    78,    -1,     7,    50,    78,    -1,    21,   114,
+     158,    -1,    24,    79,   110,    -1,    24,    79,   111,    -1,
+      24,    79,   110,   111,    -1,     5,   159,    38,   160,    79,
+      -1,    12,    79,    -1,    -1,   114,    -1,   114,    -1,     1,
+      -1,   118,    -1,   114,    47,   118,    -1,    -1,   116,    -1,
+     119,    -1,   116,    47,   119,    -1,    39,    -1,    35,    -1,
+     120,    -1,   141,    48,   118,    -1,   141,   117,   118,    -1,
+     121,    -1,   141,    48,   119,    -1,   141,   117,   119,    -1,
+     122,    -1,   122,    51,   118,    50,   118,    -1,   123,    -1,
+     123,    51,   119,    50,   119,    -1,   124,    -1,   122,    31,
+     124,    -1,   125,    -1,   123,    31,   125,    -1,   126,    -1,
+     124,    30,   126,    -1,   127,    -1,   125,    30,   127,    -1,
+     128,    -1,   126,    52,   128,    -1,   129,    -1,   127,    52,
+     129,    -1,   130,    -1,   128,    53,   130,    -1,   131,    -1,
+     129,    53,   131,    -1,   132,    -1,   130,    54,   132,    -1,
+     133,    -1,   131,    54,   133,    -1,   134,    -1,   132,    40,
+     134,    -1,   135,    -1,   133,    40,   135,    -1,   136,    -1,
+     134,    42,   136,    -1,   134,    15,   136,    -1,   134,    14,
+     136,    -1,   136,    -1,   135,    42,   136,    -1,   135,    15,
+     136,    -1,   137,    -1,   136,    41,   137,    -1,   138,    -1,
+     137,    55,   138,    -1,   137,    56,   138,    -1,   139,    -1,
+     138,    57,   139,    -1,   138,    58,   139,    -1,   138,    59,
+     139,    -1,   140,    -1,     8,   139,    -1,    27,   139,    -1,
+      25,   139,    -1,    32,   139,    -1,    33,   139,    -1,    55,
+     139,    -1,    56,   139,    -1,    60,   139,    -1,    61,   139,
+      -1,   141,    -1,   141,    32,    -1,   141,    33,    -1,   142,
+      -1,   144,    -1,   143,    -1,    16,   142,    -1,   147,    -1,
+      71,    -1,   143,    62,   114,    63,    -1,   143,    64,    38,
+      -1,    16,   143,   145,    -1,   143,   145,    -1,   144,   145,
+      -1,   144,    62,   114,    63,    -1,   144,    64,    38,    -1,
+      65,    66,    -1,    65,   146,    66,    -1,   118,    -1,   146,
+      47,   118,    -1,    20,    -1,    38,    -1,   156,    -1,   148,
+      -1,   152,    -1,    65,   114,    66,    -1,    62,    63,    -1,
+      62,   150,    63,    -1,    62,   149,    63,    -1,    62,   149,
+      47,   151,    63,    -1,   151,   118,    -1,   149,    47,   151,
+     118,    -1,    47,    -1,   150,    47,    -1,    -1,   150,    -1,
+      46,    37,    -1,    46,   153,    37,    -1,   154,    50,   118,
+      -1,   153,    47,   154,    50,   118,    -1,    38,    -1,    44,
+      -1,    43,    -1,    -1,    38,    -1,    17,    -1,   157,    -1,
+      43,    -1,    44,    -1,    58,    -1,    35,    -1,    22,    -1,
+      23,    -1,    49,    -1,     1,    -1,    65,    -1,     1,    -1,
+      66,    -1,     1,    -1,    49,    -1,     1,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   257,   257,   261,   262,   266,   267,   272,   276,   280,
-     284,   285,   290,   291,   295,   296,   297,   298,   299,   300,
-     301,   302,   303,   304,   305,   306,   307,   308,   309,   313,
-     314,   319,   320,   324,   325,   329,   334,   335,   340,   342,
-     347,   352,   357,   358,   362,   367,   368,   372,   377,   381,
-     386,   388,   393,   395,   398,   400,   397,   404,   406,   403,
-     409,   411,   416,   421,   426,   431,   436,   441,   446,   448,
-     453,   454,   458,   459,   464,   469,   474,   479,   480,   481,
-     486,   491,   495,   496,   499,   500,   504,   505,   510,   511,
-     515,   517,   521,   522,   526,   527,   529,   534,   536,   538,
-     543,   544,   549,   551,   556,   557,   562,   564,   569,   570,
-     575,   577,   582,   583,   588,   590,   595,   596,   601,   603,
-     608,   609,   614,   616,   621,   622,   627,   628,   633,   634,
-     636,   638,   643,   644,   646,   651,   652,   657,   659,   661,
-     666,   667,   669,   671,   676,   677,   679,   680,   682,   683,
-     684,   685,   686,   687,   691,   693,   695,   701,   702,   706,
-     707,   711,   712,   713,   715,   717,   722,   724,   726,   728,
-     733,   734,   738,   739,   744,   745,   746,   747,   748,   749,
-     753,   754,   755,   756,   761,   763,   768,   769,   773,   774,
-     778,   779,   784,   786,   791,   792,   793,   797,   798,   802,
-     803,   804,   805,   806,   807,   809,   814,   815,   818,   819,
-     822,   823,   826,   827,   830,   831
+       0,   256,   256,   260,   261,   265,   266,   271,   275,   279,
+     283,   284,   289,   290,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   312,
+     313,   318,   319,   323,   324,   328,   333,   334,   339,   341,
+     346,   351,   356,   357,   361,   366,   367,   371,   376,   380,
+     385,   387,   392,   394,   397,   399,   396,   403,   405,   402,
+     408,   410,   415,   420,   425,   430,   435,   440,   445,   447,
+     452,   453,   457,   458,   463,   468,   473,   478,   479,   480,
+     485,   490,   494,   495,   498,   499,   503,   504,   509,   510,
+     514,   516,   520,   521,   525,   526,   528,   533,   535,   537,
+     542,   543,   548,   550,   555,   556,   561,   563,   568,   569,
+     574,   576,   581,   582,   587,   589,   594,   595,   600,   602,
+     607,   608,   613,   615,   620,   621,   626,   627,   632,   633,
+     635,   637,   642,   643,   645,   650,   651,   656,   658,   660,
+     665,   666,   668,   670,   675,   676,   678,   679,   681,   682,
+     683,   684,   685,   686,   690,   692,   694,   700,   701,   705,
+     706,   710,   711,   712,   714,   716,   721,   723,   725,   727,
+     732,   733,   737,   738,   743,   744,   745,   746,   747,   748,
+     752,   753,   754,   755,   760,   762,   767,   768,   772,   773,
+     777,   778,   783,   785,   790,   791,   792,   796,   797,   801,
+     802,   803,   804,   805,   807,   812,   813,   816,   817,   820,
+     821,   824,   825,   828,   829
 };
 #endif
 
@@ -727,10 +724,10 @@ static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "kBREAK", "kCASE", "kCATCH", "kCONTINUE",
   "kDEFAULT", "kDELETE", "kDO", "kELSE", "kIF", "kFINALLY", "kFOR", "kIN",
-  "kINSTANCEOF", "kNEW", "kNULL", "kUNDEFINED", "kRETURN", "kSWITCH",
-  "kTHIS", "kTHROW", "kTRUE", "kFALSE", "kTRY", "kTYPEOF", "kVAR", "kVOID",
-  "kWHILE", "kWITH", "tANDAND", "tOROR", "tINC", "tDEC", "tHTMLCOMMENT",
-  "kDIVEQ", "kFUNCTION", "'}'", "tIdentifier", "tAssignOper", "tEqOper",
+  "kINSTANCEOF", "kNEW", "kNULL", "kRETURN", "kSWITCH", "kTHIS", "kTHROW",
+  "kTRUE", "kFALSE", "kTRY", "kTYPEOF", "kVAR", "kVOID", "kWHILE", "kWITH",
+  "tANDAND", "tOROR", "tINC", "tDEC", "tHTMLCOMMENT", "kDIVEQ",
+  "kFUNCTION", "'}'", "tIdentifier", "tAssignOper", "tEqOper",
   "tShiftOper", "tRelOper", "tNumericLiteral", "tStringLiteral",
   "LOWER_THAN_ELSE", "'{'", "','", "'='", "';'", "':'", "'?'", "'|'",
   "'^'", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'~'", "'!'", "'['",
@@ -775,38 +772,38 @@ static const yytype_uint16 yytoknum[] =
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   125,   293,
-     294,   295,   296,   297,   298,   299,   300,   123,    44,    61,
-      59,    58,    63,   124,    94,    38,    43,    45,    42,    47,
-      37,   126,    33,    91,    93,    46,    40,    41
+     285,   286,   287,   288,   289,   290,   291,   125,   292,   293,
+     294,   295,   296,   297,   298,   299,   123,    44,    61,    59,
+      58,    63,   124,    94,    38,    43,    45,    42,    47,    37,
+     126,    33,    91,    93,    46,    40,    41
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    68,    69,    70,    70,    71,    71,    72,    73,    74,
-      75,    75,    76,    76,    77,    77,    77,    77,    77,    77,
-      77,    77,    77,    77,    77,    77,    77,    77,    77,    78,
-      78,    79,    79,    80,    80,    81,    82,    82,    83,    83,
-      84,    85,    86,    86,    87,    88,    88,    89,    90,    91,
-      92,    92,    93,    93,    94,    95,    93,    96,    97,    93,
-      93,    93,    98,    99,   100,   101,   102,   103,   104,   104,
-     105,   105,   106,   106,   107,   108,   109,   110,   110,   110,
-     111,   112,   113,   113,   114,   114,   115,   115,   116,   116,
-     117,   117,   118,   118,   119,   119,   119,   120,   120,   120,
-     121,   121,   122,   122,   123,   123,   124,   124,   125,   125,
-     126,   126,   127,   127,   128,   128,   129,   129,   130,   130,
-     131,   131,   132,   132,   133,   133,   134,   134,   135,   135,
-     135,   135,   136,   136,   136,   137,   137,   138,   138,   138,
-     139,   139,   139,   139,   140,   140,   140,   140,   140,   140,
-     140,   140,   140,   140,   141,   141,   141,   142,   142,   143,
-     143,   144,   144,   144,   144,   144,   145,   145,   145,   145,
-     146,   146,   147,   147,   148,   148,   148,   148,   148,   148,
-     149,   149,   149,   149,   150,   150,   151,   151,   152,   152,
-     153,   153,   154,   154,   155,   155,   155,   156,   156,   157,
-     157,   157,   157,   157,   157,   157,   158,   158,   159,   159,
-     160,   160,   161,   161,   162,   162
+       0,    67,    68,    69,    69,    70,    70,    71,    72,    73,
+      74,    74,    75,    75,    76,    76,    76,    76,    76,    76,
+      76,    76,    76,    76,    76,    76,    76,    76,    76,    77,
+      77,    78,    78,    79,    79,    80,    81,    81,    82,    82,
+      83,    84,    85,    85,    86,    87,    87,    88,    89,    90,
+      91,    91,    92,    92,    93,    94,    92,    95,    96,    92,
+      92,    92,    97,    98,    99,   100,   101,   102,   103,   103,
+     104,   104,   105,   105,   106,   107,   108,   109,   109,   109,
+     110,   111,   112,   112,   113,   113,   114,   114,   115,   115,
+     116,   116,   117,   117,   118,   118,   118,   119,   119,   119,
+     120,   120,   121,   121,   122,   122,   123,   123,   124,   124,
+     125,   125,   126,   126,   127,   127,   128,   128,   129,   129,
+     130,   130,   131,   131,   132,   132,   133,   133,   134,   134,
+     134,   134,   135,   135,   135,   136,   136,   137,   137,   137,
+     138,   138,   138,   138,   139,   139,   139,   139,   139,   139,
+     139,   139,   139,   139,   140,   140,   140,   141,   141,   142,
+     142,   143,   143,   143,   143,   143,   144,   144,   144,   144,
+     145,   145,   146,   146,   147,   147,   147,   147,   147,   147,
+     148,   148,   148,   148,   149,   149,   150,   150,   151,   151,
+     152,   152,   153,   153,   154,   154,   154,   155,   155,   156,
+     156,   156,   156,   156,   156,   157,   157,   158,   158,   159,
+     159,   160,   160,   161,   161
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -833,7 +830,7 @@ static const yytype_uint8 yyr2[] =
        2,     3,     3,     5,     2,     4,     1,     2,     0,     1,
        2,     3,     3,     5,     1,     1,     1,     0,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1
+       1,     1,     1,     1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -842,118 +839,118 @@ static const yytype_uint8 yyr2[] =
 static const yytype_uint8 yydefact[] =
 {
        5,     0,     4,     1,   197,   197,     0,     0,     0,     0,
-       0,   199,   200,    82,     0,   174,     0,   206,   207,     0,
-       0,     0,     0,     0,     0,     0,     0,     3,   205,     8,
-     175,   202,   203,     0,    48,     0,     0,   204,     0,     0,
-     188,     0,     2,    17,   197,     6,    14,    15,    16,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-       0,    86,    94,   100,   104,   108,   112,   116,   120,   124,
-     128,   135,   137,   140,   144,   154,   157,   159,   158,   161,
-     177,   178,   176,   201,   198,     0,     0,   175,     0,   162,
-     145,   154,     0,   211,   210,     0,    88,   160,   159,     0,
-      83,     0,     0,     0,     0,   147,    42,     0,    36,   146,
-       0,     0,   148,   149,     0,    34,   175,   202,   203,    29,
-       0,     0,     0,   150,   151,   152,   153,   186,   180,     0,
-     189,     0,     0,     0,   209,     0,   208,    49,     0,     0,
+       0,   199,    82,     0,   174,     0,   205,   206,     0,     0,
+       0,     0,     0,     0,     0,     0,     3,   204,     8,   175,
+     201,   202,     0,    48,     0,     0,   203,     0,     0,   188,
+       0,     2,    17,   197,     6,    14,    15,    16,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,     0,
+      86,    94,   100,   104,   108,   112,   116,   120,   124,   128,
+     135,   137,   140,   144,   154,   157,   159,   158,   161,   177,
+     178,   176,   200,   198,     0,     0,   175,     0,   162,   145,
+     154,     0,   210,   209,     0,    88,   160,   159,     0,    83,
+       0,     0,     0,     0,   147,    42,     0,    36,   146,     0,
+       0,   148,   149,     0,    34,   175,   201,   202,    29,     0,
+       0,     0,   150,   151,   152,   153,   186,   180,     0,   189,
+       0,     0,     0,   208,     0,   207,    49,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   155,   156,    93,    92,     0,     0,
-       0,     0,     0,   166,     0,     0,   167,    63,    62,   190,
-     194,   196,   195,     0,    85,     0,    84,     0,    54,    89,
-      90,    97,   102,   106,   110,   114,   118,   122,   126,   132,
-     154,   165,    64,     0,    76,    34,     0,     0,    77,    78,
-       0,    40,    43,     0,    35,     0,     0,    66,    33,    30,
-     191,     0,     0,   188,   182,   187,   181,   184,   179,    12,
-      87,   105,     0,   109,   113,   117,   121,   125,   131,   130,
-     129,   136,   138,   139,   141,   142,   143,    95,    96,     0,
-     164,   170,   172,     0,     0,   169,     0,   213,   212,     0,
-      45,    57,    38,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    81,
-      79,    44,    37,     0,     0,     0,   192,   189,     0,    10,
-      13,     0,     0,   163,     0,   171,   168,     0,    51,     0,
-      41,    46,     0,     0,     0,   215,   214,    82,    91,   154,
-     107,     0,   111,   115,   119,   123,   127,   134,   133,     0,
-      98,    99,    70,    67,     0,    53,    65,     0,   183,   185,
-       0,     0,   101,   173,     0,     0,    47,    39,    82,     0,
-      55,     0,     0,     0,     0,    71,    72,     0,   193,    11,
-       5,    52,    50,    58,     0,     0,   103,    60,     0,     0,
-      68,    70,    73,    80,     9,     0,     0,    61,    82,    31,
-      31,     0,     7,    82,     0,    32,    74,    75,    69,     0,
-       0,     0,    56,    59
+       0,     0,     0,   155,   156,    93,    92,     0,     0,     0,
+       0,     0,   166,     0,     0,   167,    63,    62,   190,   194,
+     196,   195,     0,    85,     0,    84,     0,    54,    89,    90,
+      97,   102,   106,   110,   114,   118,   122,   126,   132,   154,
+     165,    64,     0,    76,    34,     0,     0,    77,    78,     0,
+      40,    43,     0,    35,     0,     0,    66,    33,    30,   191,
+       0,     0,   188,   182,   187,   181,   184,   179,    12,    87,
+     105,     0,   109,   113,   117,   121,   125,   131,   130,   129,
+     136,   138,   139,   141,   142,   143,    95,    96,     0,   164,
+     170,   172,     0,     0,   169,     0,   212,   211,     0,    45,
+      57,    38,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    81,    79,
+      44,    37,     0,     0,     0,   192,   189,     0,    10,    13,
+       0,     0,   163,     0,   171,   168,     0,    51,     0,    41,
+      46,     0,     0,     0,   214,   213,    82,    91,   154,   107,
+       0,   111,   115,   119,   123,   127,   134,   133,     0,    98,
+      99,    70,    67,     0,    53,    65,     0,   183,   185,     0,
+       0,   101,   173,     0,     0,    47,    39,    82,     0,    55,
+       0,     0,     0,     0,    71,    72,     0,   193,    11,     5,
+      52,    50,    58,     0,     0,   103,    60,     0,     0,    68,
+      70,    73,    80,     9,     0,     0,    61,    82,    31,    31,
+       0,     7,    82,     0,    32,    74,    75,    69,     0,     0,
+       0,    56,    59
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    42,     2,    89,    44,   355,   280,   281,   119,
-     120,   366,    46,    47,   107,   251,   108,   252,   201,   202,
-     290,   291,    48,    49,    50,    51,   253,   345,   293,   356,
-      52,    53,    54,    55,    56,    57,   313,   334,   335,   336,
-     351,    58,    59,   198,   199,    99,   175,    60,   178,   179,
-     266,    61,   180,    62,   181,    63,   182,    64,   183,    65,
-     184,    66,   185,    67,   186,    68,   187,    69,   188,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,   163,   243,
-      79,    80,   129,   130,   131,    81,   121,   122,    85,    82,
-      83,   137,    95,   249,   297
+      -1,     1,    41,     2,    88,    43,   354,   279,   280,   118,
+     119,   365,    45,    46,   106,   250,   107,   251,   200,   201,
+     289,   290,    47,    48,    49,    50,   252,   344,   292,   355,
+      51,    52,    53,    54,    55,    56,   312,   333,   334,   335,
+     350,    57,    58,   197,   198,    98,   174,    59,   177,   178,
+     265,    60,   179,    61,   180,    62,   181,    63,   182,    64,
+     183,    65,   184,    66,   185,    67,   186,    68,   187,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,   162,   242,
+      78,    79,   128,   129,   130,    80,   120,   121,    84,    81,
+      82,   136,    94,   248,   296
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -273
+#define YYPACT_NINF -287
 static const yytype_int16 yypact[] =
 {
-    -273,    19,   524,  -273,    -7,    -7,   976,   768,    12,    12,
-     192,  -273,  -273,   976,    12,  -273,   976,  -273,  -273,    57,
-     976,    24,   976,    12,    12,   976,   976,  -273,  -273,  -273,
-      -3,  -273,  -273,   585,  -273,   976,   976,  -273,   976,   976,
-      22,   976,  -273,   416,    -7,  -273,  -273,  -273,  -273,  -273,
-    -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-      40,  -273,  -273,     8,    30,    49,    54,    61,    84,    21,
-      96,   155,    83,  -273,  -273,    88,  -273,    99,   140,  -273,
-    -273,  -273,  -273,  -273,  -273,    17,    17,  -273,   115,  -273,
-    -273,   184,   118,  -273,  -273,   379,   872,  -273,    99,    17,
-     107,   976,    40,   646,   134,  -273,   109,    55,  -273,  -273,
-     379,   976,  -273,  -273,   768,   471,    -3,   119,   121,  -273,
-     707,    58,   153,  -273,  -273,  -273,  -273,  -273,  -273,    45,
-      59,   976,   -45,    12,  -273,   976,  -273,  -273,   976,   976,
-     976,   976,   976,   976,   976,   976,   976,   976,   976,   976,
-     976,   976,   976,   976,  -273,  -273,  -273,  -273,   976,   976,
-     976,   127,   820,  -273,   976,   168,  -273,  -273,  -273,  -273,
-    -273,  -273,  -273,    12,  -273,     7,   107,   175,  -273,   171,
-    -273,  -273,    14,   194,   174,   176,   177,   197,    34,    96,
-      77,  -273,  -273,     9,  -273,  -273,    12,    57,   221,  -273,
-     976,  -273,  -273,    24,  -273,     7,     9,  -273,  -273,  -273,
-    -273,   112,   976,   187,  -273,  -273,  -273,  -273,  -273,   203,
-    -273,    30,   193,    49,    54,    61,    84,    21,    96,    96,
-      96,   155,    83,    83,  -273,  -273,  -273,  -273,  -273,    67,
-    -273,  -273,  -273,    27,    71,  -273,   379,  -273,  -273,   768,
-     196,   195,   232,    37,   976,   976,   976,   976,   976,   976,
-     976,   976,   976,   976,   379,   976,   976,   207,   217,  -273,
-    -273,  -273,  -273,   768,   768,   206,  -273,   211,   924,  -273,
-     212,     7,   976,  -273,   976,  -273,  -273,     7,   251,   976,
-    -273,  -273,   175,    37,   379,  -273,  -273,   976,  -273,   100,
-     194,   213,   174,   176,   177,   197,    34,    96,    96,     7,
-    -273,  -273,   258,  -273,     7,  -273,  -273,   976,  -273,  -273,
-     224,   219,  -273,  -273,    17,   768,  -273,  -273,   976,     7,
-    -273,   976,   768,   976,    16,   258,  -273,    57,  -273,  -273,
-    -273,  -273,  -273,  -273,   768,    37,  -273,  -273,    79,   216,
-    -273,   258,  -273,  -273,   768,   231,    37,  -273,   976,   768,
-     768,   237,  -273,   976,     7,   768,  -273,  -273,  -273,     7,
-     768,   768,  -273,  -273
+    -287,    29,   490,  -287,   -18,   -18,   934,   730,    21,    21,
+     965,  -287,   934,    21,  -287,   934,  -287,  -287,    36,   934,
+      89,   934,    21,    21,   934,   934,  -287,  -287,  -287,   105,
+    -287,  -287,   550,  -287,   934,   934,  -287,   934,   934,    61,
+     934,  -287,   403,   -18,  -287,  -287,  -287,  -287,  -287,  -287,
+    -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,    15,
+    -287,  -287,    41,   106,   117,   129,   142,   158,    76,   162,
+     131,    47,  -287,  -287,   141,  -287,   113,   148,  -287,  -287,
+    -287,  -287,  -287,  -287,     5,     5,  -287,   147,  -287,  -287,
+     169,   177,  -287,  -287,   370,   832,  -287,   113,     5,   164,
+     934,    15,   610,   123,  -287,   159,    16,  -287,  -287,   370,
+     934,  -287,  -287,   730,   438,   105,   175,   176,  -287,   670,
+      86,   178,  -287,  -287,  -287,  -287,  -287,  -287,    62,    63,
+     934,    28,    21,  -287,   934,  -287,  -287,   934,   934,   934,
+     934,   934,   934,   934,   934,   934,   934,   934,   934,   934,
+     934,   934,   934,  -287,  -287,  -287,  -287,   934,   934,   934,
+     181,   781,  -287,   934,   189,  -287,  -287,  -287,  -287,  -287,
+    -287,  -287,    21,  -287,     8,   164,   191,  -287,   183,  -287,
+    -287,    56,   201,   180,   182,   179,   194,    53,   162,    10,
+    -287,  -287,    12,  -287,  -287,    21,    36,   225,  -287,   934,
+    -287,  -287,    89,  -287,     8,    12,  -287,  -287,  -287,  -287,
+      94,   934,   193,  -287,  -287,  -287,  -287,  -287,   200,  -287,
+     106,   192,   117,   129,   142,   158,    76,   162,   162,   162,
+     131,    47,    47,  -287,  -287,  -287,  -287,  -287,    68,  -287,
+    -287,  -287,    46,   109,  -287,   370,  -287,  -287,   730,   195,
+     197,   227,    18,   934,   934,   934,   934,   934,   934,   934,
+     934,   934,   934,   370,   934,   934,   199,   209,  -287,  -287,
+    -287,  -287,   730,   730,   202,  -287,   204,   883,  -287,   206,
+       8,   934,  -287,   934,  -287,  -287,     8,   239,   934,  -287,
+    -287,   191,    18,   370,  -287,  -287,   934,  -287,   160,   201,
+     218,   180,   182,   179,   194,    53,   162,   162,     8,  -287,
+    -287,   250,  -287,     8,  -287,  -287,   934,  -287,  -287,   231,
+     228,  -287,  -287,     5,   730,  -287,  -287,   934,     8,  -287,
+     934,   730,   934,    66,   250,  -287,    36,  -287,  -287,  -287,
+    -287,  -287,  -287,   730,    18,  -287,  -287,   -32,   226,  -287,
+     250,  -287,  -287,   730,   238,    18,  -287,   934,   730,   730,
+     240,  -287,   934,     8,   730,  -287,  -287,  -287,     8,   730,
+     730,  -287,  -287
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -273,  -273,  -273,   -70,    -2,  -273,  -273,  -273,  -273,     0,
-    -138,   -84,   -10,  -273,  -273,  -273,    74,   -14,  -273,  -273,
-    -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-    -273,  -273,  -273,  -273,  -273,  -273,  -273,   -72,  -273,   -55,
-    -273,  -273,  -273,  -273,    85,  -263,   -96,   -12,  -273,  -273,
-     209,  -115,  -239,  -273,  -273,  -273,  -273,   143,    31,   157,
-      43,   160,    44,   162,    46,   163,    47,   165,    50,   -66,
-     164,    91,   353,  -273,    33,   300,   303,  -273,   -16,  -273,
-    -273,  -273,  -273,   101,   102,  -273,  -273,   106,     1,  -273,
-    -273,   -74,    28,   -61,  -272
+    -287,  -287,  -287,   -61,    -2,  -287,  -287,  -287,  -287,     0,
+    -141,   -80,   -15,  -287,  -287,  -287,    78,   -10,  -287,  -287,
+    -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
+    -287,  -287,  -287,  -287,  -287,  -287,  -287,   -68,  -287,   -50,
+    -287,  -287,  -287,  -287,    88,  -286,  -105,    20,  -287,  -287,
+     212,   -77,  -209,  -287,  -287,  -287,  -287,   150,    34,   152,
+      33,   153,    35,   154,    38,   156,    40,   151,    42,   -94,
+     157,    75,    64,  -287,     2,   290,   291,  -287,    19,  -287,
+    -287,  -287,  -287,    93,    95,  -287,  -287,    96,    26,  -287,
+    -287,   -73,    25,    17,  -278
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -963,264 +960,262 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -197
 static const yytype_int16 yytable[] =
 {
-      43,   100,    45,   135,   102,    43,    86,    92,   247,   104,
-     247,   167,   168,    93,   205,   298,   217,   301,   134,     3,
-     220,   328,   218,   349,   222,   192,   310,   311,   194,   132,
-     189,    43,    84,   204,   330,   145,   146,    96,   295,    91,
-     138,   134,   101,   237,   238,   133,   255,   242,   114,   262,
-     326,   110,   111,    91,   350,    91,   134,   135,    91,    91,
-     139,   140,   166,   106,   147,   343,   256,   136,    91,    91,
-     127,    91,    91,   358,   248,   284,   248,   263,    94,   228,
-     229,   230,   191,   176,   363,   271,   128,   296,   135,   193,
-     136,   264,   346,   213,   285,   364,   210,   276,   176,   206,
-     369,    43,   141,   203,   103,   136,   211,   215,   142,   214,
-     154,   155,    43,   156,   207,   135,   143,   157,    43,   135,
-     209,   154,   155,   216,   156,   144,   265,   135,   157,   190,
-     359,   283,   267,   154,   155,   286,   156,   158,   148,   196,
-     157,   151,   152,   153,   273,   274,   197,   173,   239,   265,
-     287,   170,   244,   169,   170,   135,   171,   172,   200,   171,
-     172,   219,   160,   319,   161,   162,   240,   322,   309,   323,
-    -196,    91,  -195,    91,    91,    91,    91,    91,    91,    91,
-      91,    91,    91,    91,    91,    91,    91,   269,   189,   189,
-     189,   189,   189,   189,   189,   189,   307,   308,   329,   189,
-     189,   246,   338,   164,   212,   165,   162,   245,    10,    11,
-      12,   149,   150,    15,   250,    17,    18,   154,   155,   254,
-     321,   365,   365,   189,   268,   257,   324,   258,    28,    29,
-     259,    87,   260,   197,   176,   127,    31,    32,   261,    88,
-     232,   233,   279,   292,   282,   289,   294,    43,   332,   288,
-     341,    37,   176,   337,   312,    40,   314,   317,    41,   215,
-     320,   325,   333,   339,   331,   189,   340,   360,   344,   362,
-     354,    43,    43,   315,   316,   368,   367,   272,   327,   361,
-     352,   221,   176,   270,   159,   100,   300,   299,    91,   299,
-      91,    91,    91,    91,    91,    91,    91,   223,   299,   299,
-     302,   224,   303,   370,   225,   304,   226,   305,   371,   227,
-      97,   306,   231,    98,   277,   278,   100,   275,     0,     0,
-       0,   348,   299,    43,     0,   342,     0,   353,     0,     0,
-      43,     0,   347,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    43,     0,   357,     0,   100,     0,     0,     0,
-       0,   100,    43,     0,    45,     0,     0,    43,    43,    90,
-       0,     0,     0,    43,   299,   209,     0,     0,    43,    43,
-     372,   373,     0,   105,     0,   109,     0,     0,   112,   113,
-     174,     0,     0,     0,     0,     0,     0,     6,   123,   124,
-       0,   125,   126,     0,     0,    10,    11,    12,     0,     0,
-      15,     0,    17,    18,     0,    20,     0,    22,     0,     0,
-       0,     0,    25,    26,     0,    28,    29,  -162,    87,     0,
-       0,     0,     0,    31,    32,     0,    88,     0,     0,     0,
-    -162,  -162,     0,     0,     0,    35,    36,     0,    37,     0,
-      38,    39,    40,     0,     0,    41,     0,  -162,  -162,     0,
-       0,     0,     0,     0,     0,     0,  -162,  -162,  -162,  -162,
-       0,     0,     0,     0,  -162,  -162,     0,     0,  -162,  -162,
-    -162,  -162,  -190,     0,  -162,     0,  -162,     0,     0,     0,
-       0,  -162,     0,     0,     0,  -190,  -190,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,  -190,  -190,   234,   235,   236,     0,     0,     0,
-       0,  -190,  -190,  -190,  -190,     0,     0,     0,     0,  -190,
-    -190,     0,     0,  -190,  -190,  -190,  -190,     4,     0,  -190,
-       5,  -190,     6,     7,     0,     8,  -190,     9,     0,     0,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
-      28,    29,     0,    30,     0,     0,     0,     0,    31,    32,
-       0,    33,     0,     0,    34,     0,     0,     0,     0,     0,
-      35,    36,     0,    37,     0,    38,    39,    40,     4,     0,
-      41,     5,     0,     6,     7,     0,     8,     0,     9,     0,
-       0,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
-       0,    28,    29,   115,   116,     0,     0,     0,     0,   117,
-     118,     0,    33,     0,     0,    34,     0,     0,     0,     0,
-       0,    35,    36,     0,    37,     0,    38,    39,    40,     4,
-       0,    41,     5,     0,     6,     7,     0,     8,     0,     9,
-       0,     0,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
-      26,     0,    28,    29,   195,    30,     0,     0,     0,     0,
-      31,    32,     0,    33,     0,     0,    34,     0,     0,     0,
-       0,     0,    35,    36,     0,    37,     0,    38,    39,    40,
-       4,     0,    41,     5,     0,     6,     7,     0,     8,     0,
-       9,     0,     0,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
-      25,    26,     0,    28,    29,   208,    30,     0,     0,     0,
-       0,    31,    32,     0,    33,     0,     0,    34,     0,     0,
-       0,     0,     0,    35,    36,     0,    37,     0,    38,    39,
-      40,     4,     0,    41,     5,     0,     6,     7,     0,     8,
-       0,     9,     0,     0,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
-       0,    25,    26,     0,    28,    29,     0,    30,     0,     0,
-       0,     0,    31,    32,     0,    33,     0,     0,    34,     0,
-       0,     0,     0,     0,    35,    36,     0,    37,     6,    38,
-      39,    40,     0,     0,    41,     0,    10,    11,    12,     0,
-       0,    15,     0,    17,    18,     0,    20,     0,    22,     0,
-       0,     0,     0,    25,    26,     0,    28,    29,     0,    87,
-       0,     0,     0,     0,    31,    32,     0,    88,     0,     0,
-       0,     0,     0,     0,     0,     0,    35,    36,     0,    37,
-       6,    38,    39,    40,     0,     0,    41,   241,    10,    11,
-      12,     0,     0,    15,     0,    17,    18,     0,    20,   177,
-      22,     0,     0,     0,     0,    25,    26,     0,    28,    29,
-       0,    87,     0,     0,     0,     0,    31,    32,     0,    88,
-       0,     0,     0,     0,     0,     0,     0,     0,    35,    36,
-       0,    37,     6,    38,    39,    40,     0,     0,    41,     0,
-      10,    11,    12,     0,     0,    15,     0,    17,    18,     0,
-      20,     0,    22,     0,     0,     0,     0,    25,    26,     0,
-      28,    29,     0,    87,     0,     0,     0,     0,    31,    32,
-       0,    88,     0,     0,     0,     0,     0,     0,     0,     0,
-      35,    36,     0,    37,     6,    38,    39,    40,   318,     0,
-      41,     0,    10,    11,    12,     0,     0,    15,     0,    17,
-      18,     0,    20,     0,    22,     0,     0,     0,     0,    25,
-      26,     0,    28,    29,     0,    87,     0,     0,     0,     0,
-      31,    32,     0,    88,     0,     0,     0,     0,     0,     0,
-       0,     0,    35,    36,     0,    37,     0,    38,    39,    40,
-       0,     0,    41
+      42,   188,    44,   103,   204,    42,   133,    91,    90,   246,
+     329,   166,   167,   246,   327,   134,   133,   133,   358,   294,
+      83,    90,    92,    90,   263,   191,    90,    90,   193,     3,
+      42,    85,    99,   203,    95,   101,    90,    90,   100,    90,
+      90,   342,   153,   154,   297,   155,   300,   109,   110,   156,
+     227,   228,   229,   216,   135,   309,   310,   219,   264,   134,
+     131,   221,   134,   202,   135,   135,   357,   295,   261,   132,
+      89,   363,   137,   348,   247,   134,   368,   362,   247,   325,
+     236,   237,   102,   104,   241,   108,    93,   254,   111,   112,
+     144,   145,   138,   283,   217,   262,   165,   189,   122,   123,
+      42,   124,   125,   349,   150,   151,   152,   255,   126,   212,
+     214,    42,   284,   206,   175,   134,   190,    42,   146,   208,
+     192,   345,   270,   209,   127,   213,   215,   105,   195,   175,
+     205,   282,   169,   210,   275,   196,   139,   170,   171,    90,
+     286,    90,    90,    90,    90,    90,    90,    90,    90,    90,
+      90,    90,    90,    90,    90,   113,   134,   218,   308,   188,
+     188,   188,   188,   188,   188,   188,   188,   306,   307,   140,
+     188,   188,   285,   153,   154,   159,   155,   160,   161,   238,
+     156,   268,   141,   243,   168,   169,   148,   149,   328,   157,
+     170,   171,   153,   154,   188,   155,   142,   245,   143,   156,
+     318,   153,   154,   147,   321,   172,   322,   199,   264,   266,
+     163,   134,   164,   161,   233,   234,   235,   364,   364,   239,
+     267,   272,   273,   231,   232,  -196,  -195,   244,   211,   249,
+     253,   256,   257,   259,   260,   258,   188,   196,   278,   337,
+     126,   293,   281,   288,   291,   311,    42,   313,   287,   324,
+     340,   214,   316,   319,   332,   298,    90,   298,    90,    90,
+      90,    90,    90,    90,    90,   175,   298,   298,   330,   338,
+      42,    42,   314,   315,   339,   361,   359,   367,   353,   366,
+     271,   326,   360,   175,   351,   269,   158,   220,   299,   301,
+     298,   222,   302,   223,   226,   224,   303,   320,   225,   304,
+      96,    97,   305,   323,   230,   276,   274,   277,     0,     0,
+       0,     0,     0,   175,     0,     0,    99,     0,     0,     0,
+       0,   352,    42,     0,   341,   331,     0,     0,     0,    42,
+     336,   346,   298,     0,     0,     0,     0,     0,     0,     0,
+       0,    42,     0,   356,     0,   343,     0,    99,     0,     0,
+       0,    42,   347,    44,     0,     0,    42,    42,     0,     0,
+       0,     0,    42,     0,   208,     0,     0,    42,    42,   371,
+     372,   173,     0,     0,     0,     0,     0,    99,     6,     0,
+     369,     0,    99,     0,     0,   370,    10,    11,     0,     0,
+      14,     0,    16,    17,     0,    19,     0,    21,     0,     0,
+       0,     0,    24,    25,  -162,    27,    28,     0,    86,     0,
+       0,     0,     0,    30,    31,     0,    87,  -162,  -162,     0,
+       0,     0,     0,     0,     0,    34,    35,     0,    36,     0,
+      37,    38,    39,  -162,  -162,    40,     0,     0,     0,  -190,
+       0,     0,  -162,  -162,  -162,  -162,     0,     0,     0,     0,
+    -162,  -162,  -190,  -190,  -162,  -162,  -162,  -162,     0,     0,
+    -162,     0,  -162,     0,     0,     0,     0,  -162,  -190,  -190,
+       0,     0,     0,     0,     0,     0,     0,  -190,  -190,  -190,
+    -190,     0,     0,     0,     0,  -190,  -190,     0,     0,  -190,
+    -190,  -190,  -190,     4,     0,  -190,     5,  -190,     6,     7,
+       0,     8,  -190,     9,     0,     0,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+       0,     0,    24,    25,    26,    27,    28,     0,    29,     0,
+       0,     0,     0,    30,    31,     0,    32,     0,     0,    33,
+       0,     0,     0,     0,     0,    34,    35,     0,    36,     0,
+      37,    38,    39,     4,     0,    40,     5,     0,     6,     7,
+       0,     8,     0,     9,     0,     0,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+       0,     0,    24,    25,     0,    27,    28,   114,   115,     0,
+       0,     0,     0,   116,   117,     0,    32,     0,     0,    33,
+       0,     0,     0,     0,     0,    34,    35,     0,    36,     0,
+      37,    38,    39,     4,     0,    40,     5,     0,     6,     7,
+       0,     8,     0,     9,     0,     0,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+       0,     0,    24,    25,     0,    27,    28,   194,    29,     0,
+       0,     0,     0,    30,    31,     0,    32,     0,     0,    33,
+       0,     0,     0,     0,     0,    34,    35,     0,    36,     0,
+      37,    38,    39,     4,     0,    40,     5,     0,     6,     7,
+       0,     8,     0,     9,     0,     0,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+       0,     0,    24,    25,     0,    27,    28,   207,    29,     0,
+       0,     0,     0,    30,    31,     0,    32,     0,     0,    33,
+       0,     0,     0,     0,     0,    34,    35,     0,    36,     0,
+      37,    38,    39,     4,     0,    40,     5,     0,     6,     7,
+       0,     8,     0,     9,     0,     0,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+       0,     0,    24,    25,     0,    27,    28,     0,    29,     0,
+       0,     0,     0,    30,    31,     0,    32,     0,     0,    33,
+       0,     0,     0,     0,     0,    34,    35,     0,    36,     6,
+      37,    38,    39,     0,     0,    40,     0,    10,    11,     0,
+       0,    14,     0,    16,    17,     0,    19,     0,    21,     0,
+       0,     0,     0,    24,    25,     0,    27,    28,     0,    86,
+       0,     0,     0,     0,    30,    31,     0,    87,     0,     0,
+       0,     0,     0,     0,     0,     0,    34,    35,     0,    36,
+       6,    37,    38,    39,     0,     0,    40,   240,    10,    11,
+       0,     0,    14,     0,    16,    17,     0,    19,   176,    21,
+       0,     0,     0,     0,    24,    25,     0,    27,    28,     0,
+      86,     0,     0,     0,     0,    30,    31,     0,    87,     0,
+       0,     0,     0,     0,     0,     0,     0,    34,    35,     0,
+      36,     6,    37,    38,    39,     0,     0,    40,     0,    10,
+      11,     0,     0,    14,     0,    16,    17,     0,    19,     0,
+      21,     0,     0,     0,     0,    24,    25,     0,    27,    28,
+       0,    86,     0,     0,     0,     0,    30,    31,     0,    87,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,    35,
+       0,    36,     6,    37,    38,    39,   317,     0,    40,     0,
+      10,    11,     0,     0,    14,     0,    16,    17,     0,    19,
+       0,    21,     0,     0,     0,     0,    24,    25,     0,    27,
+      28,     0,    86,     0,     0,     0,     0,    30,    31,     0,
+      87,    10,    11,     0,     0,    14,     0,    16,    17,    34,
+      35,     0,    36,     0,    37,    38,    39,     0,     0,    40,
+      27,    28,     0,    86,     0,     0,     0,     0,    30,    31,
+       0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    36,     0,     0,     0,    39,     0,     0,
+      40
 };
 
 static const yytype_int16 yycheck[] =
 {
-       2,    13,     2,    48,    16,     7,     5,     7,     1,    19,
-       1,    85,    86,     1,   110,   254,   131,   256,     1,     0,
-     135,   293,    67,     7,   139,    99,   265,   266,   102,    41,
-      96,    33,    39,   107,   297,    14,    15,     9,     1,     6,
-      32,     1,    14,   158,   159,    44,    32,   162,    51,    15,
-     289,    23,    24,    20,    38,    22,     1,    48,    25,    26,
-      52,    31,    78,    39,    43,   328,    52,    50,    35,    36,
-      48,    38,    39,   345,    67,    48,    67,    43,    66,   145,
-     146,   147,    98,    95,   356,   200,    64,    50,    48,   101,
-      50,    14,   331,    48,    67,   358,    38,   212,   110,   111,
-     363,   103,    53,    48,    47,    50,    48,    48,    54,    64,
-      33,    34,   114,    36,   114,    48,    55,    40,   120,    48,
-     120,    33,    34,    64,    36,    41,    49,    48,    40,    96,
-      51,    64,   193,    33,    34,    64,    36,    49,    42,     5,
-      40,    58,    59,    60,   205,   206,    12,    29,   160,    49,
-     246,    39,   164,    38,    39,    48,    44,    45,    49,    44,
-      45,   133,    63,   278,    65,    66,    39,   282,   264,   284,
-      51,   138,    51,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,   197,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   294,   265,
-     266,   173,   317,    63,    51,    65,    66,    39,    16,    17,
-      18,    56,    57,    21,    39,    23,    24,    33,    34,    48,
-     281,   359,   360,   289,   196,    31,   287,    53,    36,    37,
-      54,    39,    55,    12,   246,    48,    44,    45,    41,    47,
-     149,   150,    39,    48,    51,    49,    14,   249,   309,   249,
-     324,    59,   264,   314,    47,    63,    39,    51,    66,    48,
-      48,    10,     4,    39,    51,   331,    47,    51,   329,    38,
-     340,   273,   274,   273,   274,    38,   360,   203,   292,   351,
-     335,   138,   294,   198,    75,   297,   255,   254,   255,   256,
-     257,   258,   259,   260,   261,   262,   263,   140,   265,   266,
-     257,   141,   258,   364,   142,   259,   143,   260,   369,   144,
-      10,   261,   148,    10,   213,   213,   328,   211,    -1,    -1,
-      -1,   333,   289,   325,    -1,   325,    -1,   337,    -1,    -1,
-     332,    -1,   332,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   344,    -1,   344,    -1,   358,    -1,    -1,    -1,
-      -1,   363,   354,    -1,   354,    -1,    -1,   359,   360,     6,
-      -1,    -1,    -1,   365,   331,   365,    -1,    -1,   370,   371,
-     370,   371,    -1,    20,    -1,    22,    -1,    -1,    25,    26,
-       1,    -1,    -1,    -1,    -1,    -1,    -1,     8,    35,    36,
-      -1,    38,    39,    -1,    -1,    16,    17,    18,    -1,    -1,
-      21,    -1,    23,    24,    -1,    26,    -1,    28,    -1,    -1,
-      -1,    -1,    33,    34,    -1,    36,    37,     1,    39,    -1,
-      -1,    -1,    -1,    44,    45,    -1,    47,    -1,    -1,    -1,
-      14,    15,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,
-      61,    62,    63,    -1,    -1,    66,    -1,    31,    32,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    40,    41,    42,    43,
-      -1,    -1,    -1,    -1,    48,    49,    -1,    -1,    52,    53,
-      54,    55,     1,    -1,    58,    -1,    60,    -1,    -1,    -1,
-      -1,    65,    -1,    -1,    -1,    14,    15,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    31,    32,   151,   152,   153,    -1,    -1,    -1,
-      -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,    48,
-      49,    -1,    -1,    52,    53,    54,    55,     3,    -1,    58,
-       6,    60,     8,     9,    -1,    11,    65,    13,    -1,    -1,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    -1,    -1,    33,    34,    35,
-      36,    37,    -1,    39,    -1,    -1,    -1,    -1,    44,    45,
-      -1,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
-      56,    57,    -1,    59,    -1,    61,    62,    63,     3,    -1,
-      66,     6,    -1,     8,     9,    -1,    11,    -1,    13,    -1,
-      -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    -1,    -1,    33,    34,
-      -1,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    44,
-      45,    -1,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,
-      -1,    56,    57,    -1,    59,    -1,    61,    62,    63,     3,
-      -1,    66,     6,    -1,     8,     9,    -1,    11,    -1,    13,
-      -1,    -1,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    -1,    -1,    33,
-      34,    -1,    36,    37,    38,    39,    -1,    -1,    -1,    -1,
-      44,    45,    -1,    47,    -1,    -1,    50,    -1,    -1,    -1,
-      -1,    -1,    56,    57,    -1,    59,    -1,    61,    62,    63,
-       3,    -1,    66,     6,    -1,     8,     9,    -1,    11,    -1,
-      13,    -1,    -1,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    -1,    -1,
-      33,    34,    -1,    36,    37,    38,    39,    -1,    -1,    -1,
-      -1,    44,    45,    -1,    47,    -1,    -1,    50,    -1,    -1,
-      -1,    -1,    -1,    56,    57,    -1,    59,    -1,    61,    62,
-      63,     3,    -1,    66,     6,    -1,     8,     9,    -1,    11,
-      -1,    13,    -1,    -1,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    -1,
-      -1,    33,    34,    -1,    36,    37,    -1,    39,    -1,    -1,
-      -1,    -1,    44,    45,    -1,    47,    -1,    -1,    50,    -1,
-      -1,    -1,    -1,    -1,    56,    57,    -1,    59,     8,    61,
-      62,    63,    -1,    -1,    66,    -1,    16,    17,    18,    -1,
-      -1,    21,    -1,    23,    24,    -1,    26,    -1,    28,    -1,
-      -1,    -1,    -1,    33,    34,    -1,    36,    37,    -1,    39,
-      -1,    -1,    -1,    -1,    44,    45,    -1,    47,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    -1,    59,
-       8,    61,    62,    63,    -1,    -1,    66,    67,    16,    17,
-      18,    -1,    -1,    21,    -1,    23,    24,    -1,    26,    27,
-      28,    -1,    -1,    -1,    -1,    33,    34,    -1,    36,    37,
-      -1,    39,    -1,    -1,    -1,    -1,    44,    45,    -1,    47,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    57,
-      -1,    59,     8,    61,    62,    63,    -1,    -1,    66,    -1,
-      16,    17,    18,    -1,    -1,    21,    -1,    23,    24,    -1,
-      26,    -1,    28,    -1,    -1,    -1,    -1,    33,    34,    -1,
-      36,    37,    -1,    39,    -1,    -1,    -1,    -1,    44,    45,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      56,    57,    -1,    59,     8,    61,    62,    63,    64,    -1,
-      66,    -1,    16,    17,    18,    -1,    -1,    21,    -1,    23,
-      24,    -1,    26,    -1,    28,    -1,    -1,    -1,    -1,    33,
-      34,    -1,    36,    37,    -1,    39,    -1,    -1,    -1,    -1,
-      44,    45,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    56,    57,    -1,    59,    -1,    61,    62,    63,
-      -1,    -1,    66
+       2,    95,     2,    18,   109,     7,     1,     7,     6,     1,
+     296,    84,    85,     1,   292,    47,     1,     1,    50,     1,
+      38,    19,     1,    21,    14,    98,    24,    25,   101,     0,
+      32,     5,    12,   106,     9,    15,    34,    35,    13,    37,
+      38,   327,    32,    33,   253,    35,   255,    22,    23,    39,
+     144,   145,   146,   130,    49,   264,   265,   134,    48,    47,
+      40,   138,    47,    47,    49,    49,   344,    49,    15,    43,
+       6,   357,    31,     7,    66,    47,   362,   355,    66,   288,
+     157,   158,    46,    19,   161,    21,    65,    31,    24,    25,
+      14,    15,    51,    47,    66,    42,    77,    95,    34,    35,
+     102,    37,    38,    37,    57,    58,    59,    51,    47,    47,
+      47,   113,    66,   113,    94,    47,    97,   119,    42,   119,
+     100,   330,   199,    37,    63,    63,    63,    38,     5,   109,
+     110,    63,    38,    47,   211,    12,    30,    43,    44,   137,
+     245,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,    50,    47,   132,   263,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,    52,
+     264,   265,    63,    32,    33,    62,    35,    64,    65,   159,
+      39,   196,    53,   163,    37,    38,    55,    56,   293,    48,
+      43,    44,    32,    33,   288,    35,    54,   172,    40,    39,
+     277,    32,    33,    41,   281,    28,   283,    48,    48,   192,
+      62,    47,    64,    65,   150,   151,   152,   358,   359,    38,
+     195,   204,   205,   148,   149,    50,    50,    38,    50,    38,
+      47,    30,    52,    54,    40,    53,   330,    12,    38,   316,
+      47,    14,    50,    48,    47,    46,   248,    38,   248,    10,
+     323,    47,    50,    47,     4,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,   262,   245,   264,   265,    50,    38,
+     272,   273,   272,   273,    46,    37,    50,    37,   339,   359,
+     202,   291,   350,   263,   334,   197,    74,   137,   254,   256,
+     288,   139,   257,   140,   143,   141,   258,   280,   142,   259,
+      10,    10,   260,   286,   147,   212,   210,   212,    -1,    -1,
+      -1,    -1,    -1,   293,    -1,    -1,   296,    -1,    -1,    -1,
+      -1,   336,   324,    -1,   324,   308,    -1,    -1,    -1,   331,
+     313,   331,   330,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   343,    -1,   343,    -1,   328,    -1,   327,    -1,    -1,
+      -1,   353,   332,   353,    -1,    -1,   358,   359,    -1,    -1,
+      -1,    -1,   364,    -1,   364,    -1,    -1,   369,   370,   369,
+     370,     1,    -1,    -1,    -1,    -1,    -1,   357,     8,    -1,
+     363,    -1,   362,    -1,    -1,   368,    16,    17,    -1,    -1,
+      20,    -1,    22,    23,    -1,    25,    -1,    27,    -1,    -1,
+      -1,    -1,    32,    33,     1,    35,    36,    -1,    38,    -1,
+      -1,    -1,    -1,    43,    44,    -1,    46,    14,    15,    -1,
+      -1,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,    -1,
+      60,    61,    62,    30,    31,    65,    -1,    -1,    -1,     1,
+      -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
+      47,    48,    14,    15,    51,    52,    53,    54,    -1,    -1,
+      57,    -1,    59,    -1,    -1,    -1,    -1,    64,    30,    31,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    41,
+      42,    -1,    -1,    -1,    -1,    47,    48,    -1,    -1,    51,
+      52,    53,    54,     3,    -1,    57,     6,    59,     8,     9,
+      -1,    11,    64,    13,    -1,    -1,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      -1,    -1,    32,    33,    34,    35,    36,    -1,    38,    -1,
+      -1,    -1,    -1,    43,    44,    -1,    46,    -1,    -1,    49,
+      -1,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,    -1,
+      60,    61,    62,     3,    -1,    65,     6,    -1,     8,     9,
+      -1,    11,    -1,    13,    -1,    -1,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      -1,    -1,    32,    33,    -1,    35,    36,    37,    38,    -1,
+      -1,    -1,    -1,    43,    44,    -1,    46,    -1,    -1,    49,
+      -1,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,    -1,
+      60,    61,    62,     3,    -1,    65,     6,    -1,     8,     9,
+      -1,    11,    -1,    13,    -1,    -1,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      -1,    -1,    32,    33,    -1,    35,    36,    37,    38,    -1,
+      -1,    -1,    -1,    43,    44,    -1,    46,    -1,    -1,    49,
+      -1,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,    -1,
+      60,    61,    62,     3,    -1,    65,     6,    -1,     8,     9,
+      -1,    11,    -1,    13,    -1,    -1,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      -1,    -1,    32,    33,    -1,    35,    36,    37,    38,    -1,
+      -1,    -1,    -1,    43,    44,    -1,    46,    -1,    -1,    49,
+      -1,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,    -1,
+      60,    61,    62,     3,    -1,    65,     6,    -1,     8,     9,
+      -1,    11,    -1,    13,    -1,    -1,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      -1,    -1,    32,    33,    -1,    35,    36,    -1,    38,    -1,
+      -1,    -1,    -1,    43,    44,    -1,    46,    -1,    -1,    49,
+      -1,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,     8,
+      60,    61,    62,    -1,    -1,    65,    -1,    16,    17,    -1,
+      -1,    20,    -1,    22,    23,    -1,    25,    -1,    27,    -1,
+      -1,    -1,    -1,    32,    33,    -1,    35,    36,    -1,    38,
+      -1,    -1,    -1,    -1,    43,    44,    -1,    46,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    55,    56,    -1,    58,
+       8,    60,    61,    62,    -1,    -1,    65,    66,    16,    17,
+      -1,    -1,    20,    -1,    22,    23,    -1,    25,    26,    27,
+      -1,    -1,    -1,    -1,    32,    33,    -1,    35,    36,    -1,
+      38,    -1,    -1,    -1,    -1,    43,    44,    -1,    46,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    56,    -1,
+      58,     8,    60,    61,    62,    -1,    -1,    65,    -1,    16,
+      17,    -1,    -1,    20,    -1,    22,    23,    -1,    25,    -1,
+      27,    -1,    -1,    -1,    -1,    32,    33,    -1,    35,    36,
+      -1,    38,    -1,    -1,    -1,    -1,    43,    44,    -1,    46,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    56,
+      -1,    58,     8,    60,    61,    62,    63,    -1,    65,    -1,
+      16,    17,    -1,    -1,    20,    -1,    22,    23,    -1,    25,
+      -1,    27,    -1,    -1,    -1,    -1,    32,    33,    -1,    35,
+      36,    -1,    38,    -1,    -1,    -1,    -1,    43,    44,    -1,
+      46,    16,    17,    -1,    -1,    20,    -1,    22,    23,    55,
+      56,    -1,    58,    -1,    60,    61,    62,    -1,    -1,    65,
+      35,    36,    -1,    38,    -1,    -1,    -1,    -1,    43,    44,
+      -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    58,    -1,    -1,    -1,    62,    -1,    -1,
+      65
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    69,    71,     0,     3,     6,     8,     9,    11,    13,
+       0,    68,    70,     0,     3,     6,     8,     9,    11,    13,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    33,    34,    35,    36,    37,
-      39,    44,    45,    47,    50,    56,    57,    59,    61,    62,
-      63,    66,    70,    72,    73,    77,    80,    81,    90,    91,
-      92,    93,    98,    99,   100,   101,   102,   103,   109,   110,
-     115,   119,   121,   123,   125,   127,   129,   131,   133,   135,
-     137,   138,   139,   140,   141,   142,   143,   144,   145,   148,
-     149,   153,   157,   158,    39,   156,   156,    39,    47,    72,
-     140,   142,    77,     1,    66,   160,   160,   143,   144,   113,
-     115,   160,   115,    47,    80,   140,    39,    82,    84,   140,
-     160,   160,   140,   140,    51,    38,    39,    44,    45,    77,
-      78,   154,   155,   140,   140,   140,   140,    48,    64,   150,
-     151,   152,   115,   156,     1,    48,    50,   159,    32,    52,
-      31,    53,    54,    55,    41,    14,    15,    43,    42,    56,
-      57,    58,    59,    60,    33,    34,    36,    40,    49,   118,
-      63,    65,    66,   146,    63,    65,   146,   159,   159,    38,
-      39,    44,    45,    29,     1,   114,   115,    27,   116,   117,
-     120,   122,   124,   126,   128,   130,   132,   134,   136,   137,
-     142,   146,   159,   115,   159,    38,     5,    12,   111,   112,
-      49,    86,    87,    48,   159,   114,   115,    77,    38,    77,
-      38,    48,    51,    48,    64,    48,    64,   119,    67,   160,
-     119,   125,   119,   127,   129,   131,   133,   135,   137,   137,
-     137,   138,   139,   139,   140,   140,   140,   119,   119,   115,
-      39,    67,   119,   147,   115,    39,   160,     1,    67,   161,
-      39,    83,    85,    94,    48,    32,    52,    31,    53,    54,
-      55,    41,    15,    43,    14,    49,   118,   161,   160,    80,
-     112,   119,    84,   161,   161,   155,   119,   151,   152,    39,
-      75,    76,    51,    64,    48,    67,    64,   114,    77,    49,
-      88,    89,    48,    96,    14,     1,    50,   162,   120,   142,
-     126,   120,   128,   130,   132,   134,   136,   137,   137,   114,
-     120,   120,    47,   104,    39,    77,    77,    51,    64,   119,
-      48,   161,   119,   119,   161,    10,   120,    85,   162,   114,
-     113,    51,   161,     4,   105,   106,   107,   161,   119,    39,
-      47,   159,    77,   113,   161,    95,   120,    77,   115,     7,
-      38,   108,   107,    80,    71,    74,    97,    77,   162,    51,
-      51,   105,    38,   162,   113,    78,    79,    79,    38,   113,
-     161,   161,    77,    77
+      26,    27,    28,    29,    32,    33,    34,    35,    36,    38,
+      43,    44,    46,    49,    55,    56,    58,    60,    61,    62,
+      65,    69,    71,    72,    76,    79,    80,    89,    90,    91,
+      92,    97,    98,    99,   100,   101,   102,   108,   109,   114,
+     118,   120,   122,   124,   126,   128,   130,   132,   134,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   147,   148,
+     152,   156,   157,    38,   155,   155,    38,    46,    71,   139,
+     141,    76,     1,    65,   159,   159,   142,   143,   112,   114,
+     159,   114,    46,    79,   139,    38,    81,    83,   139,   159,
+     159,   139,   139,    50,    37,    38,    43,    44,    76,    77,
+     153,   154,   139,   139,   139,   139,    47,    63,   149,   150,
+     151,   114,   155,     1,    47,    49,   158,    31,    51,    30,
+      52,    53,    54,    40,    14,    15,    42,    41,    55,    56,
+      57,    58,    59,    32,    33,    35,    39,    48,   117,    62,
+      64,    65,   145,    62,    64,   145,   158,   158,    37,    38,
+      43,    44,    28,     1,   113,   114,    26,   115,   116,   119,
+     121,   123,   125,   127,   129,   131,   133,   135,   136,   141,
+     145,   158,   114,   158,    37,     5,    12,   110,   111,    48,
+      85,    86,    47,   158,   113,   114,    76,    37,    76,    37,
+      47,    50,    47,    63,    47,    63,   118,    66,   159,   118,
+     124,   118,   126,   128,   130,   132,   134,   136,   136,   136,
+     137,   138,   138,   139,   139,   139,   118,   118,   114,    38,
+      66,   118,   146,   114,    38,   159,     1,    66,   160,    38,
+      82,    84,    93,    47,    31,    51,    30,    52,    53,    54,
+      40,    15,    42,    14,    48,   117,   160,   159,    79,   111,
+     118,    83,   160,   160,   154,   118,   150,   151,    38,    74,
+      75,    50,    63,    47,    66,    63,   113,    76,    48,    87,
+      88,    47,    95,    14,     1,    49,   161,   119,   141,   125,
+     119,   127,   129,   131,   133,   135,   136,   136,   113,   119,
+     119,    46,   103,    38,    76,    76,    50,    63,   118,    47,
+     160,   118,   118,   160,    10,   119,    84,   161,   113,   112,
+      50,   160,     4,   104,   105,   106,   160,   118,    38,    46,
+     158,    76,   112,   160,    94,   119,    76,   114,     7,    37,
+     107,   106,    79,    70,    73,    96,    76,   161,    50,    50,
+     104,    37,   161,   112,    77,    78,    78,    37,   112,   160,
+     160,    76,    76
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -2033,1415 +2028,1416 @@ yyreduce:
         case 2:
 
 /* Line 1455 of yacc.c  */
-#line 258 "parser.y"
+#line 257 "parser.y"
     { program_parsed(ctx, (yyvsp[(1) - (2)].source_elements)); ;}
     break;
 
   case 3:
 
 /* Line 1455 of yacc.c  */
-#line 261 "parser.y"
+#line 260 "parser.y"
     {;}
     break;
 
   case 4:
 
 /* Line 1455 of yacc.c  */
-#line 262 "parser.y"
+#line 261 "parser.y"
     {;}
     break;
 
   case 5:
 
 /* Line 1455 of yacc.c  */
-#line 266 "parser.y"
+#line 265 "parser.y"
     { (yyval.source_elements) = new_source_elements(ctx); ;}
     break;
 
   case 6:
 
 /* Line 1455 of yacc.c  */
-#line 268 "parser.y"
+#line 267 "parser.y"
     { (yyval.source_elements) = source_elements_add_statement((yyvsp[(1) - (2)].source_elements), (yyvsp[(2) - (2)].statement)); ;}
     break;
 
   case 7:
 
 /* Line 1455 of yacc.c  */
-#line 273 "parser.y"
+#line 272 "parser.y"
     { (yyval.expr) = new_function_expression(ctx, (yyvsp[(2) - (8)].identifier), (yyvsp[(4) - (8)].parameter_list), (yyvsp[(7) - (8)].source_elements), (yyvsp[(1) - (8)].srcptr), (yyvsp[(8) - (8)].srcptr)-(yyvsp[(1) - (8)].srcptr)+1); ;}
     break;
 
   case 8:
 
 /* Line 1455 of yacc.c  */
-#line 276 "parser.y"
+#line 275 "parser.y"
     { push_func(ctx); (yyval.srcptr) = (yyvsp[(1) - (1)].srcptr); ;}
     break;
 
   case 9:
 
 /* Line 1455 of yacc.c  */
-#line 280 "parser.y"
+#line 279 "parser.y"
     { (yyval.source_elements) = function_body_parsed(ctx, (yyvsp[(1) - (1)].source_elements)); ;}
     break;
 
   case 10:
 
 /* Line 1455 of yacc.c  */
-#line 284 "parser.y"
+#line 283 "parser.y"
     { (yyval.parameter_list) = new_parameter_list(ctx, (yyvsp[(1) - (1)].identifier)); ;}
     break;
 
   case 11:
 
 /* Line 1455 of yacc.c  */
-#line 286 "parser.y"
+#line 285 "parser.y"
     { (yyval.parameter_list) = parameter_list_add(ctx, (yyvsp[(1) - (3)].parameter_list), (yyvsp[(3) - (3)].identifier)); ;}
     break;
 
   case 12:
 
 /* Line 1455 of yacc.c  */
-#line 290 "parser.y"
+#line 289 "parser.y"
     { (yyval.parameter_list) = NULL; ;}
     break;
 
   case 13:
 
 /* Line 1455 of yacc.c  */
-#line 291 "parser.y"
+#line 290 "parser.y"
     { (yyval.parameter_list) = (yyvsp[(1) - (1)].parameter_list); ;}
     break;
 
   case 14:
 
 /* Line 1455 of yacc.c  */
-#line 295 "parser.y"
+#line 294 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 15:
 
 /* Line 1455 of yacc.c  */
-#line 296 "parser.y"
+#line 295 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 16:
 
 /* Line 1455 of yacc.c  */
-#line 297 "parser.y"
+#line 296 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 17:
 
 /* Line 1455 of yacc.c  */
-#line 298 "parser.y"
+#line 297 "parser.y"
     { (yyval.statement) = new_empty_statement(ctx); ;}
     break;
 
   case 18:
 
 /* Line 1455 of yacc.c  */
-#line 299 "parser.y"
+#line 298 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 19:
 
 /* Line 1455 of yacc.c  */
-#line 300 "parser.y"
+#line 299 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 20:
 
 /* Line 1455 of yacc.c  */
-#line 301 "parser.y"
+#line 300 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 21:
 
 /* Line 1455 of yacc.c  */
-#line 302 "parser.y"
+#line 301 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 22:
 
 /* Line 1455 of yacc.c  */
-#line 303 "parser.y"
+#line 302 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 23:
 
 /* Line 1455 of yacc.c  */
-#line 304 "parser.y"
+#line 303 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 24:
 
 /* Line 1455 of yacc.c  */
-#line 305 "parser.y"
+#line 304 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 25:
 
 /* Line 1455 of yacc.c  */
-#line 306 "parser.y"
+#line 305 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 26:
 
 /* Line 1455 of yacc.c  */
-#line 307 "parser.y"
+#line 306 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 27:
 
 /* Line 1455 of yacc.c  */
-#line 308 "parser.y"
+#line 307 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 28:
 
 /* Line 1455 of yacc.c  */
-#line 309 "parser.y"
+#line 308 "parser.y"
     { (yyval.statement) = (yyvsp[(1) - (1)].statement); ;}
     break;
 
   case 29:
 
 /* Line 1455 of yacc.c  */
-#line 313 "parser.y"
+#line 312 "parser.y"
     { (yyval.statement_list) = new_statement_list(ctx, (yyvsp[(1) - (1)].statement)); ;}
     break;
 
   case 30:
 
 /* Line 1455 of yacc.c  */
-#line 315 "parser.y"
+#line 314 "parser.y"
     { (yyval.statement_list) = statement_list_add((yyvsp[(1) - (2)].statement_list), (yyvsp[(2) - (2)].statement)); ;}
     break;
 
   case 31:
 
 /* Line 1455 of yacc.c  */
-#line 319 "parser.y"
+#line 318 "parser.y"
     { (yyval.statement_list) = NULL; ;}
     break;
 
   case 32:
 
 /* Line 1455 of yacc.c  */
-#line 320 "parser.y"
+#line 319 "parser.y"
     { (yyval.statement_list) = (yyvsp[(1) - (1)].statement_list); ;}
     break;
 
   case 33:
 
 /* Line 1455 of yacc.c  */
-#line 324 "parser.y"
+#line 323 "parser.y"
     { (yyval.statement) = new_block_statement(ctx, (yyvsp[(2) - (3)].statement_list)); ;}
     break;
 
   case 34:
 
 /* Line 1455 of yacc.c  */
-#line 325 "parser.y"
+#line 324 "parser.y"
     { (yyval.statement) = new_block_statement(ctx, NULL); ;}
     break;
 
   case 35:
 
 /* Line 1455 of yacc.c  */
-#line 330 "parser.y"
+#line 329 "parser.y"
     { (yyval.statement) = new_var_statement(ctx, (yyvsp[(2) - (3)].variable_list)); ;}
     break;
 
   case 36:
 
 /* Line 1455 of yacc.c  */
-#line 334 "parser.y"
+#line 333 "parser.y"
     { (yyval.variable_list) = new_variable_list(ctx, (yyvsp[(1) - (1)].variable_declaration)); ;}
     break;
 
   case 37:
 
 /* Line 1455 of yacc.c  */
-#line 336 "parser.y"
+#line 335 "parser.y"
     { (yyval.variable_list) = variable_list_add(ctx, (yyvsp[(1) - (3)].variable_list), (yyvsp[(3) - (3)].variable_declaration)); ;}
     break;
 
   case 38:
 
 /* Line 1455 of yacc.c  */
-#line 341 "parser.y"
+#line 340 "parser.y"
     { (yyval.variable_list) = new_variable_list(ctx, (yyvsp[(1) - (1)].variable_declaration)); ;}
     break;
 
   case 39:
 
 /* Line 1455 of yacc.c  */
-#line 343 "parser.y"
+#line 342 "parser.y"
     { (yyval.variable_list) = variable_list_add(ctx, (yyvsp[(1) - (3)].variable_list), (yyvsp[(3) - (3)].variable_declaration)); ;}
     break;
 
   case 40:
 
 /* Line 1455 of yacc.c  */
-#line 348 "parser.y"
+#line 347 "parser.y"
     { (yyval.variable_declaration) = new_variable_declaration(ctx, (yyvsp[(1) - (2)].identifier), (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 41:
 
 /* Line 1455 of yacc.c  */
-#line 353 "parser.y"
+#line 352 "parser.y"
     { (yyval.variable_declaration) = new_variable_declaration(ctx, (yyvsp[(1) - (2)].identifier), (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 42:
 
 /* Line 1455 of yacc.c  */
-#line 357 "parser.y"
+#line 356 "parser.y"
     { (yyval.expr) = NULL; ;}
     break;
 
   case 43:
 
 /* Line 1455 of yacc.c  */
-#line 358 "parser.y"
+#line 357 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 44:
 
 /* Line 1455 of yacc.c  */
-#line 363 "parser.y"
+#line 362 "parser.y"
     { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
     break;
 
   case 45:
 
 /* Line 1455 of yacc.c  */
-#line 367 "parser.y"
+#line 366 "parser.y"
     { (yyval.expr) = NULL; ;}
     break;
 
   case 46:
 
 /* Line 1455 of yacc.c  */
-#line 368 "parser.y"
+#line 367 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 47:
 
 /* Line 1455 of yacc.c  */
-#line 373 "parser.y"
+#line 372 "parser.y"
     { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
     break;
 
   case 48:
 
 /* Line 1455 of yacc.c  */
-#line 377 "parser.y"
+#line 376 "parser.y"
     { (yyval.statement) = new_empty_statement(ctx); ;}
     break;
 
   case 49:
 
 /* Line 1455 of yacc.c  */
-#line 382 "parser.y"
+#line 381 "parser.y"
     { (yyval.statement) = new_expression_statement(ctx, (yyvsp[(1) - (2)].expr)); ;}
     break;
 
   case 50:
 
 /* Line 1455 of yacc.c  */
-#line 387 "parser.y"
+#line 386 "parser.y"
     { (yyval.statement) = new_if_statement(ctx, (yyvsp[(3) - (7)].expr), (yyvsp[(5) - (7)].statement), (yyvsp[(7) - (7)].statement)); ;}
     break;
 
   case 51:
 
 /* Line 1455 of yacc.c  */
-#line 389 "parser.y"
+#line 388 "parser.y"
     { (yyval.statement) = new_if_statement(ctx, (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].statement), NULL); ;}
     break;
 
   case 52:
 
 /* Line 1455 of yacc.c  */
-#line 394 "parser.y"
+#line 393 "parser.y"
     { (yyval.statement) = new_while_statement(ctx, TRUE, (yyvsp[(5) - (7)].expr), (yyvsp[(2) - (7)].statement)); ;}
     break;
 
   case 53:
 
 /* Line 1455 of yacc.c  */
-#line 396 "parser.y"
+#line 395 "parser.y"
     { (yyval.statement) = new_while_statement(ctx, FALSE, (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].statement)); ;}
     break;
 
   case 54:
 
 /* Line 1455 of yacc.c  */
-#line 398 "parser.y"
+#line 397 "parser.y"
     { if(!explicit_error(ctx, (yyvsp[(3) - (3)].expr), ';')) YYABORT; ;}
     break;
 
   case 55:
 
 /* Line 1455 of yacc.c  */
-#line 400 "parser.y"
+#line 399 "parser.y"
     { if(!explicit_error(ctx, (yyvsp[(6) - (6)].expr), ';')) YYABORT; ;}
     break;
 
   case 56:
 
 /* Line 1455 of yacc.c  */
-#line 402 "parser.y"
+#line 401 "parser.y"
     { (yyval.statement) = new_for_statement(ctx, NULL, (yyvsp[(3) - (11)].expr), (yyvsp[(6) - (11)].expr), (yyvsp[(9) - (11)].expr), (yyvsp[(11) - (11)].statement)); ;}
     break;
 
   case 57:
 
 /* Line 1455 of yacc.c  */
-#line 404 "parser.y"
+#line 403 "parser.y"
     { if(!explicit_error(ctx, (yyvsp[(4) - (4)].variable_list), ';')) YYABORT; ;}
     break;
 
   case 58:
 
 /* Line 1455 of yacc.c  */
-#line 406 "parser.y"
+#line 405 "parser.y"
     { if(!explicit_error(ctx, (yyvsp[(7) - (7)].expr), ';')) YYABORT; ;}
     break;
 
   case 59:
 
 /* Line 1455 of yacc.c  */
-#line 408 "parser.y"
+#line 407 "parser.y"
     { (yyval.statement) = new_for_statement(ctx, (yyvsp[(4) - (12)].variable_list), NULL, (yyvsp[(7) - (12)].expr), (yyvsp[(10) - (12)].expr), (yyvsp[(12) - (12)].statement)); ;}
     break;
 
   case 60:
 
 /* Line 1455 of yacc.c  */
-#line 410 "parser.y"
+#line 409 "parser.y"
     { (yyval.statement) = new_forin_statement(ctx, NULL, (yyvsp[(3) - (7)].expr), (yyvsp[(5) - (7)].expr), (yyvsp[(7) - (7)].statement)); ;}
     break;
 
   case 61:
 
 /* Line 1455 of yacc.c  */
-#line 412 "parser.y"
+#line 411 "parser.y"
     { (yyval.statement) = new_forin_statement(ctx, (yyvsp[(4) - (8)].variable_declaration), NULL, (yyvsp[(6) - (8)].expr), (yyvsp[(8) - (8)].statement)); ;}
     break;
 
   case 62:
 
 /* Line 1455 of yacc.c  */
-#line 417 "parser.y"
+#line 416 "parser.y"
     { (yyval.statement) = new_continue_statement(ctx, (yyvsp[(2) - (3)].identifier)); ;}
     break;
 
   case 63:
 
 /* Line 1455 of yacc.c  */
-#line 422 "parser.y"
+#line 421 "parser.y"
     { (yyval.statement) = new_break_statement(ctx, (yyvsp[(2) - (3)].identifier)); ;}
     break;
 
   case 64:
 
 /* Line 1455 of yacc.c  */
-#line 427 "parser.y"
+#line 426 "parser.y"
     { (yyval.statement) = new_return_statement(ctx, (yyvsp[(2) - (3)].expr)); ;}
     break;
 
   case 65:
 
 /* Line 1455 of yacc.c  */
-#line 432 "parser.y"
+#line 431 "parser.y"
     { (yyval.statement) = new_with_statement(ctx, (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].statement)); ;}
     break;
 
   case 66:
 
 /* Line 1455 of yacc.c  */
-#line 437 "parser.y"
+#line 436 "parser.y"
     { (yyval.statement) = new_labelled_statement(ctx, (yyvsp[(1) - (3)].identifier), (yyvsp[(3) - (3)].statement)); ;}
     break;
 
   case 67:
 
 /* Line 1455 of yacc.c  */
-#line 442 "parser.y"
+#line 441 "parser.y"
     { (yyval.statement) = new_switch_statement(ctx, (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].case_clausule)); ;}
     break;
 
   case 68:
 
 /* Line 1455 of yacc.c  */
-#line 447 "parser.y"
+#line 446 "parser.y"
     { (yyval.case_clausule) = new_case_block(ctx, (yyvsp[(2) - (3)].case_list), NULL, NULL); ;}
     break;
 
   case 69:
 
 /* Line 1455 of yacc.c  */
-#line 449 "parser.y"
+#line 448 "parser.y"
     { (yyval.case_clausule) = new_case_block(ctx, (yyvsp[(2) - (5)].case_list), (yyvsp[(3) - (5)].case_clausule), (yyvsp[(4) - (5)].case_list)); ;}
     break;
 
   case 70:
 
 /* Line 1455 of yacc.c  */
-#line 453 "parser.y"
+#line 452 "parser.y"
     { (yyval.case_list) = NULL; ;}
     break;
 
   case 71:
 
 /* Line 1455 of yacc.c  */
-#line 454 "parser.y"
+#line 453 "parser.y"
     { (yyval.case_list) = (yyvsp[(1) - (1)].case_list); ;}
     break;
 
   case 72:
 
 /* Line 1455 of yacc.c  */
-#line 458 "parser.y"
+#line 457 "parser.y"
     { (yyval.case_list) = new_case_list(ctx, (yyvsp[(1) - (1)].case_clausule)); ;}
     break;
 
   case 73:
 
 /* Line 1455 of yacc.c  */
-#line 460 "parser.y"
+#line 459 "parser.y"
     { (yyval.case_list) = case_list_add(ctx, (yyvsp[(1) - (2)].case_list), (yyvsp[(2) - (2)].case_clausule)); ;}
     break;
 
   case 74:
 
 /* Line 1455 of yacc.c  */
-#line 465 "parser.y"
+#line 464 "parser.y"
     { (yyval.case_clausule) = new_case_clausule(ctx, (yyvsp[(2) - (4)].expr), (yyvsp[(4) - (4)].statement_list)); ;}
     break;
 
   case 75:
 
 /* Line 1455 of yacc.c  */
-#line 470 "parser.y"
+#line 469 "parser.y"
     { (yyval.case_clausule) = new_case_clausule(ctx, NULL, (yyvsp[(3) - (3)].statement_list)); ;}
     break;
 
   case 76:
 
 /* Line 1455 of yacc.c  */
-#line 475 "parser.y"
+#line 474 "parser.y"
     { (yyval.statement) = new_throw_statement(ctx, (yyvsp[(2) - (3)].expr)); ;}
     break;
 
   case 77:
 
 /* Line 1455 of yacc.c  */
-#line 479 "parser.y"
+#line 478 "parser.y"
     { (yyval.statement) = new_try_statement(ctx, (yyvsp[(2) - (3)].statement), (yyvsp[(3) - (3)].catch_block), NULL); ;}
     break;
 
   case 78:
 
 /* Line 1455 of yacc.c  */
-#line 480 "parser.y"
+#line 479 "parser.y"
     { (yyval.statement) = new_try_statement(ctx, (yyvsp[(2) - (3)].statement), NULL, (yyvsp[(3) - (3)].statement)); ;}
     break;
 
   case 79:
 
 /* Line 1455 of yacc.c  */
-#line 482 "parser.y"
+#line 481 "parser.y"
     { (yyval.statement) = new_try_statement(ctx, (yyvsp[(2) - (4)].statement), (yyvsp[(3) - (4)].catch_block), (yyvsp[(4) - (4)].statement)); ;}
     break;
 
   case 80:
 
 /* Line 1455 of yacc.c  */
-#line 487 "parser.y"
+#line 486 "parser.y"
     { (yyval.catch_block) = new_catch_block(ctx, (yyvsp[(3) - (5)].identifier), (yyvsp[(5) - (5)].statement)); ;}
     break;
 
   case 81:
 
 /* Line 1455 of yacc.c  */
-#line 491 "parser.y"
+#line 490 "parser.y"
     { (yyval.statement) = (yyvsp[(2) - (2)].statement); ;}
     break;
 
   case 82:
 
 /* Line 1455 of yacc.c  */
-#line 495 "parser.y"
+#line 494 "parser.y"
     { (yyval.expr) = NULL; ;}
     break;
 
   case 83:
 
 /* Line 1455 of yacc.c  */
-#line 496 "parser.y"
+#line 495 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 84:
 
 /* Line 1455 of yacc.c  */
-#line 499 "parser.y"
+#line 498 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 85:
 
 /* Line 1455 of yacc.c  */
-#line 500 "parser.y"
+#line 499 "parser.y"
     { set_error(ctx, IDS_SYNTAX_ERROR); YYABORT; ;}
     break;
 
   case 86:
 
 /* Line 1455 of yacc.c  */
-#line 504 "parser.y"
+#line 503 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 87:
 
 /* Line 1455 of yacc.c  */
-#line 506 "parser.y"
+#line 505 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_COMMA, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 88:
 
 /* Line 1455 of yacc.c  */
-#line 510 "parser.y"
+#line 509 "parser.y"
     { (yyval.expr) = NULL; ;}
     break;
 
   case 89:
 
 /* Line 1455 of yacc.c  */
-#line 511 "parser.y"
+#line 510 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 90:
 
 /* Line 1455 of yacc.c  */
-#line 516 "parser.y"
+#line 515 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 91:
 
 /* Line 1455 of yacc.c  */
-#line 518 "parser.y"
+#line 517 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_COMMA, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 92:
 
 /* Line 1455 of yacc.c  */
-#line 521 "parser.y"
+#line 520 "parser.y"
     { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;}
     break;
 
   case 93:
 
 /* Line 1455 of yacc.c  */
-#line 522 "parser.y"
+#line 521 "parser.y"
     { (yyval.ival) = EXPR_ASSIGNDIV; ;}
     break;
 
   case 94:
 
 /* Line 1455 of yacc.c  */
-#line 526 "parser.y"
+#line 525 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 95:
 
 /* Line 1455 of yacc.c  */
-#line 528 "parser.y"
+#line 527 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_ASSIGN, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 96:
 
 /* Line 1455 of yacc.c  */
-#line 530 "parser.y"
+#line 529 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, (yyvsp[(2) - (3)].ival), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 97:
 
 /* Line 1455 of yacc.c  */
-#line 535 "parser.y"
+#line 534 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 98:
 
 /* Line 1455 of yacc.c  */
-#line 537 "parser.y"
+#line 536 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_ASSIGN, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 99:
 
 /* Line 1455 of yacc.c  */
-#line 539 "parser.y"
+#line 538 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, (yyvsp[(2) - (3)].ival), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 100:
 
 /* Line 1455 of yacc.c  */
-#line 543 "parser.y"
+#line 542 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 101:
 
 /* Line 1455 of yacc.c  */
-#line 545 "parser.y"
+#line 544 "parser.y"
     { (yyval.expr) = new_conditional_expression(ctx, (yyvsp[(1) - (5)].expr), (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].expr)); ;}
     break;
 
   case 102:
 
 /* Line 1455 of yacc.c  */
-#line 550 "parser.y"
+#line 549 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 103:
 
 /* Line 1455 of yacc.c  */
-#line 552 "parser.y"
+#line 551 "parser.y"
     { (yyval.expr) = new_conditional_expression(ctx, (yyvsp[(1) - (5)].expr), (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].expr)); ;}
     break;
 
   case 104:
 
 /* Line 1455 of yacc.c  */
-#line 556 "parser.y"
+#line 555 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 105:
 
 /* Line 1455 of yacc.c  */
-#line 558 "parser.y"
+#line 557 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 106:
 
 /* Line 1455 of yacc.c  */
-#line 563 "parser.y"
+#line 562 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 107:
 
 /* Line 1455 of yacc.c  */
-#line 565 "parser.y"
+#line 564 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 108:
 
 /* Line 1455 of yacc.c  */
-#line 569 "parser.y"
+#line 568 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 109:
 
 /* Line 1455 of yacc.c  */
-#line 571 "parser.y"
+#line 570 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 110:
 
 /* Line 1455 of yacc.c  */
-#line 576 "parser.y"
+#line 575 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 111:
 
 /* Line 1455 of yacc.c  */
-#line 578 "parser.y"
+#line 577 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 112:
 
 /* Line 1455 of yacc.c  */
-#line 582 "parser.y"
+#line 581 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 113:
 
 /* Line 1455 of yacc.c  */
-#line 584 "parser.y"
+#line 583 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_BOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 114:
 
 /* Line 1455 of yacc.c  */
-#line 589 "parser.y"
+#line 588 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 115:
 
 /* Line 1455 of yacc.c  */
-#line 591 "parser.y"
+#line 590 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_BOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 116:
 
 /* Line 1455 of yacc.c  */
-#line 595 "parser.y"
+#line 594 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 117:
 
 /* Line 1455 of yacc.c  */
-#line 597 "parser.y"
+#line 596 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_BXOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 118:
 
 /* Line 1455 of yacc.c  */
-#line 602 "parser.y"
+#line 601 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 119:
 
 /* Line 1455 of yacc.c  */
-#line 604 "parser.y"
+#line 603 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_BXOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 120:
 
 /* Line 1455 of yacc.c  */
-#line 608 "parser.y"
+#line 607 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 121:
 
 /* Line 1455 of yacc.c  */
-#line 610 "parser.y"
+#line 609 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_BAND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 122:
 
 /* Line 1455 of yacc.c  */
-#line 615 "parser.y"
+#line 614 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 123:
 
 /* Line 1455 of yacc.c  */
-#line 617 "parser.y"
+#line 616 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_BAND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 124:
 
 /* Line 1455 of yacc.c  */
-#line 621 "parser.y"
+#line 620 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 125:
 
 /* Line 1455 of yacc.c  */
-#line 623 "parser.y"
+#line 622 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, (yyvsp[(2) - (3)].ival), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 126:
 
 /* Line 1455 of yacc.c  */
-#line 627 "parser.y"
+#line 626 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 127:
 
 /* Line 1455 of yacc.c  */
-#line 629 "parser.y"
+#line 628 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, (yyvsp[(2) - (3)].ival), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 128:
 
 /* Line 1455 of yacc.c  */
-#line 633 "parser.y"
+#line 632 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 129:
 
 /* Line 1455 of yacc.c  */
-#line 635 "parser.y"
+#line 634 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, (yyvsp[(2) - (3)].ival), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 130:
 
 /* Line 1455 of yacc.c  */
-#line 637 "parser.y"
+#line 636 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_INSTANCEOF, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 131:
 
 /* Line 1455 of yacc.c  */
-#line 639 "parser.y"
+#line 638 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_IN, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 132:
 
 /* Line 1455 of yacc.c  */
-#line 643 "parser.y"
+#line 642 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 133:
 
 /* Line 1455 of yacc.c  */
-#line 645 "parser.y"
+#line 644 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, (yyvsp[(2) - (3)].ival), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 134:
 
 /* Line 1455 of yacc.c  */
-#line 647 "parser.y"
+#line 646 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_INSTANCEOF, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 135:
 
 /* Line 1455 of yacc.c  */
-#line 651 "parser.y"
+#line 650 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 136:
 
 /* Line 1455 of yacc.c  */
-#line 653 "parser.y"
+#line 652 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, (yyvsp[(2) - (3)].ival), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 137:
 
 /* Line 1455 of yacc.c  */
-#line 658 "parser.y"
+#line 657 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 138:
 
 /* Line 1455 of yacc.c  */
-#line 660 "parser.y"
+#line 659 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_ADD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 139:
 
 /* Line 1455 of yacc.c  */
-#line 662 "parser.y"
+#line 661 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_SUB, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 140:
 
 /* Line 1455 of yacc.c  */
-#line 666 "parser.y"
+#line 665 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 141:
 
 /* Line 1455 of yacc.c  */
-#line 668 "parser.y"
+#line 667 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_MUL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 142:
 
 /* Line 1455 of yacc.c  */
-#line 670 "parser.y"
+#line 669 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_DIV, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 143:
 
 /* Line 1455 of yacc.c  */
-#line 672 "parser.y"
+#line 671 "parser.y"
     { (yyval.expr) = new_binary_expression(ctx, EXPR_MOD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 144:
 
 /* Line 1455 of yacc.c  */
-#line 676 "parser.y"
+#line 675 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 145:
 
 /* Line 1455 of yacc.c  */
-#line 678 "parser.y"
+#line 677 "parser.y"
     { (yyval.expr) = new_unary_expression(ctx, EXPR_DELETE, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 146:
 
 /* Line 1455 of yacc.c  */
-#line 679 "parser.y"
+#line 678 "parser.y"
     { (yyval.expr) = new_unary_expression(ctx, EXPR_VOID, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 147:
 
 /* Line 1455 of yacc.c  */
-#line 681 "parser.y"
+#line 680 "parser.y"
     { (yyval.expr) = new_unary_expression(ctx, EXPR_TYPEOF, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 148:
 
 /* Line 1455 of yacc.c  */
-#line 682 "parser.y"
+#line 681 "parser.y"
     { (yyval.expr) = new_unary_expression(ctx, EXPR_PREINC, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 149:
 
 /* Line 1455 of yacc.c  */
-#line 683 "parser.y"
+#line 682 "parser.y"
     { (yyval.expr) = new_unary_expression(ctx, EXPR_PREDEC, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 150:
 
 /* Line 1455 of yacc.c  */
-#line 684 "parser.y"
+#line 683 "parser.y"
     { (yyval.expr) = new_unary_expression(ctx, EXPR_PLUS, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 151:
 
 /* Line 1455 of yacc.c  */
-#line 685 "parser.y"
+#line 684 "parser.y"
     { (yyval.expr) = new_unary_expression(ctx, EXPR_MINUS, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 152:
 
 /* Line 1455 of yacc.c  */
-#line 686 "parser.y"
+#line 685 "parser.y"
     { (yyval.expr) = new_unary_expression(ctx, EXPR_BITNEG, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 153:
 
 /* Line 1455 of yacc.c  */
-#line 687 "parser.y"
+#line 686 "parser.y"
     { (yyval.expr) = new_unary_expression(ctx, EXPR_LOGNEG, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 154:
 
 /* Line 1455 of yacc.c  */
-#line 692 "parser.y"
+#line 691 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 155:
 
 /* Line 1455 of yacc.c  */
-#line 694 "parser.y"
+#line 693 "parser.y"
     { (yyval.expr) = new_unary_expression(ctx, EXPR_POSTINC, (yyvsp[(1) - (2)].expr)); ;}
     break;
 
   case 156:
 
 /* Line 1455 of yacc.c  */
-#line 696 "parser.y"
+#line 695 "parser.y"
     { (yyval.expr) = new_unary_expression(ctx, EXPR_POSTDEC, (yyvsp[(1) - (2)].expr)); ;}
     break;
 
   case 157:
 
 /* Line 1455 of yacc.c  */
-#line 701 "parser.y"
+#line 700 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 158:
 
 /* Line 1455 of yacc.c  */
-#line 702 "parser.y"
+#line 701 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 159:
 
 /* Line 1455 of yacc.c  */
-#line 706 "parser.y"
+#line 705 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 160:
 
 /* Line 1455 of yacc.c  */
-#line 707 "parser.y"
+#line 706 "parser.y"
     { (yyval.expr) = new_new_expression(ctx, (yyvsp[(2) - (2)].expr), NULL); ;}
     break;
 
   case 161:
 
 /* Line 1455 of yacc.c  */
-#line 711 "parser.y"
+#line 710 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 162:
 
 /* Line 1455 of yacc.c  */
-#line 712 "parser.y"
+#line 711 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 163:
 
 /* Line 1455 of yacc.c  */
-#line 714 "parser.y"
+#line 713 "parser.y"
     { (yyval.expr) = new_array_expression(ctx, (yyvsp[(1) - (4)].expr), (yyvsp[(3) - (4)].expr)); ;}
     break;
 
   case 164:
 
 /* Line 1455 of yacc.c  */
-#line 716 "parser.y"
+#line 715 "parser.y"
     { (yyval.expr) = new_member_expression(ctx, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].identifier)); ;}
     break;
 
   case 165:
 
 /* Line 1455 of yacc.c  */
-#line 718 "parser.y"
+#line 717 "parser.y"
     { (yyval.expr) = new_new_expression(ctx, (yyvsp[(2) - (3)].expr), (yyvsp[(3) - (3)].argument_list)); ;}
     break;
 
   case 166:
 
 /* Line 1455 of yacc.c  */
-#line 723 "parser.y"
+#line 722 "parser.y"
     { (yyval.expr) = new_call_expression(ctx, (yyvsp[(1) - (2)].expr), (yyvsp[(2) - (2)].argument_list)); ;}
     break;
 
   case 167:
 
 /* Line 1455 of yacc.c  */
-#line 725 "parser.y"
+#line 724 "parser.y"
     { (yyval.expr) = new_call_expression(ctx, (yyvsp[(1) - (2)].expr), (yyvsp[(2) - (2)].argument_list)); ;}
     break;
 
   case 168:
 
 /* Line 1455 of yacc.c  */
-#line 727 "parser.y"
+#line 726 "parser.y"
     { (yyval.expr) = new_array_expression(ctx, (yyvsp[(1) - (4)].expr), (yyvsp[(3) - (4)].expr)); ;}
     break;
 
   case 169:
 
 /* Line 1455 of yacc.c  */
-#line 729 "parser.y"
+#line 728 "parser.y"
     { (yyval.expr) = new_member_expression(ctx, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].identifier)); ;}
     break;
 
   case 170:
 
 /* Line 1455 of yacc.c  */
-#line 733 "parser.y"
+#line 732 "parser.y"
     { (yyval.argument_list) = NULL; ;}
     break;
 
   case 171:
 
 /* Line 1455 of yacc.c  */
-#line 734 "parser.y"
+#line 733 "parser.y"
     { (yyval.argument_list) = (yyvsp[(2) - (3)].argument_list); ;}
     break;
 
   case 172:
 
 /* Line 1455 of yacc.c  */
-#line 738 "parser.y"
+#line 737 "parser.y"
     { (yyval.argument_list) = new_argument_list(ctx, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 173:
 
 /* Line 1455 of yacc.c  */
-#line 740 "parser.y"
+#line 739 "parser.y"
     { (yyval.argument_list) = argument_list_add(ctx, (yyvsp[(1) - (3)].argument_list), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 174:
 
 /* Line 1455 of yacc.c  */
-#line 744 "parser.y"
+#line 743 "parser.y"
     { (yyval.expr) = new_this_expression(ctx); ;}
     break;
 
   case 175:
 
 /* Line 1455 of yacc.c  */
-#line 745 "parser.y"
+#line 744 "parser.y"
     { (yyval.expr) = new_identifier_expression(ctx, (yyvsp[(1) - (1)].identifier)); ;}
     break;
 
   case 176:
 
 /* Line 1455 of yacc.c  */
-#line 746 "parser.y"
+#line 745 "parser.y"
     { (yyval.expr) = new_literal_expression(ctx, (yyvsp[(1) - (1)].literal)); ;}
     break;
 
   case 177:
 
 /* Line 1455 of yacc.c  */
-#line 747 "parser.y"
+#line 746 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 178:
 
 /* Line 1455 of yacc.c  */
-#line 748 "parser.y"
+#line 747 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 179:
 
 /* Line 1455 of yacc.c  */
-#line 749 "parser.y"
+#line 748 "parser.y"
     { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
     break;
 
   case 180:
 
 /* Line 1455 of yacc.c  */
-#line 753 "parser.y"
+#line 752 "parser.y"
     { (yyval.expr) = new_array_literal_expression(ctx, NULL, 0); ;}
     break;
 
   case 181:
 
 /* Line 1455 of yacc.c  */
-#line 754 "parser.y"
+#line 753 "parser.y"
     { (yyval.expr) = new_array_literal_expression(ctx, NULL, (yyvsp[(2) - (3)].ival)+1); ;}
     break;
 
   case 182:
 
 /* Line 1455 of yacc.c  */
-#line 755 "parser.y"
+#line 754 "parser.y"
     { (yyval.expr) = new_array_literal_expression(ctx, (yyvsp[(2) - (3)].element_list), 0); ;}
     break;
 
   case 183:
 
 /* Line 1455 of yacc.c  */
-#line 757 "parser.y"
+#line 756 "parser.y"
     { (yyval.expr) = new_array_literal_expression(ctx, (yyvsp[(2) - (5)].element_list), (yyvsp[(4) - (5)].ival)+1); ;}
     break;
 
   case 184:
 
 /* Line 1455 of yacc.c  */
-#line 762 "parser.y"
+#line 761 "parser.y"
     { (yyval.element_list) = new_element_list(ctx, (yyvsp[(1) - (2)].ival), (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 185:
 
 /* Line 1455 of yacc.c  */
-#line 764 "parser.y"
+#line 763 "parser.y"
     { (yyval.element_list) = element_list_add(ctx, (yyvsp[(1) - (4)].element_list), (yyvsp[(3) - (4)].ival), (yyvsp[(4) - (4)].expr)); ;}
     break;
 
   case 186:
 
 /* Line 1455 of yacc.c  */
-#line 768 "parser.y"
+#line 767 "parser.y"
     { (yyval.ival) = 1; ;}
     break;
 
   case 187:
 
 /* Line 1455 of yacc.c  */
-#line 769 "parser.y"
+#line 768 "parser.y"
     { (yyval.ival) = (yyvsp[(1) - (2)].ival) + 1; ;}
     break;
 
   case 188:
 
 /* Line 1455 of yacc.c  */
-#line 773 "parser.y"
+#line 772 "parser.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 189:
 
 /* Line 1455 of yacc.c  */
-#line 774 "parser.y"
+#line 773 "parser.y"
     { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;}
     break;
 
   case 190:
 
 /* Line 1455 of yacc.c  */
-#line 778 "parser.y"
+#line 777 "parser.y"
     { (yyval.expr) = new_prop_and_value_expression(ctx, NULL); ;}
     break;
 
   case 191:
 
 /* Line 1455 of yacc.c  */
-#line 780 "parser.y"
+#line 779 "parser.y"
     { (yyval.expr) = new_prop_and_value_expression(ctx, (yyvsp[(2) - (3)].property_list)); ;}
     break;
 
   case 192:
 
 /* Line 1455 of yacc.c  */
-#line 785 "parser.y"
+#line 784 "parser.y"
     { (yyval.property_list) = new_property_list(ctx, (yyvsp[(1) - (3)].literal), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 193:
 
 /* Line 1455 of yacc.c  */
-#line 787 "parser.y"
+#line 786 "parser.y"
     { (yyval.property_list) = property_list_add(ctx, (yyvsp[(1) - (5)].property_list), (yyvsp[(3) - (5)].literal), (yyvsp[(5) - (5)].expr)); ;}
     break;
 
   case 194:
 
 /* Line 1455 of yacc.c  */
-#line 791 "parser.y"
+#line 790 "parser.y"
     { (yyval.literal) = new_string_literal(ctx, (yyvsp[(1) - (1)].identifier)); ;}
     break;
 
   case 195:
 
 /* Line 1455 of yacc.c  */
-#line 792 "parser.y"
+#line 791 "parser.y"
     { (yyval.literal) = new_string_literal(ctx, (yyvsp[(1) - (1)].wstr)); ;}
     break;
 
   case 196:
 
 /* Line 1455 of yacc.c  */
-#line 793 "parser.y"
+#line 792 "parser.y"
     { (yyval.literal) = (yyvsp[(1) - (1)].literal); ;}
     break;
 
   case 197:
 
 /* Line 1455 of yacc.c  */
-#line 797 "parser.y"
+#line 796 "parser.y"
     { (yyval.identifier) = NULL; ;}
     break;
 
   case 198:
 
 /* Line 1455 of yacc.c  */
-#line 798 "parser.y"
+#line 797 "parser.y"
     { (yyval.identifier) = (yyvsp[(1) - (1)].identifier); ;}
     break;
 
   case 199:
 
 /* Line 1455 of yacc.c  */
-#line 802 "parser.y"
+#line 801 "parser.y"
     { (yyval.literal) = new_null_literal(ctx); ;}
     break;
 
   case 200:
 
 /* Line 1455 of yacc.c  */
-#line 803 "parser.y"
-    { (yyval.literal) = new_undefined_literal(ctx); ;}
+#line 802 "parser.y"
+    { (yyval.literal) = (yyvsp[(1) - (1)].literal); ;}
     break;
 
   case 201:
 
 /* Line 1455 of yacc.c  */
-#line 804 "parser.y"
+#line 803 "parser.y"
     { (yyval.literal) = (yyvsp[(1) - (1)].literal); ;}
     break;
 
   case 202:
 
 /* Line 1455 of yacc.c  */
-#line 805 "parser.y"
-    { (yyval.literal) = (yyvsp[(1) - (1)].literal); ;}
+#line 804 "parser.y"
+    { (yyval.literal) = new_string_literal(ctx, (yyvsp[(1) - (1)].wstr)); ;}
     break;
 
   case 203:
 
 /* Line 1455 of yacc.c  */
-#line 806 "parser.y"
-    { (yyval.literal) = new_string_literal(ctx, (yyvsp[(1) - (1)].wstr)); ;}
+#line 805 "parser.y"
+    { (yyval.literal) = parse_regexp(ctx);
+                                  if(!(yyval.literal)) YYABORT; ;}
     break;
 
   case 204:
@@ -3455,57 +3451,49 @@ yyreduce:
   case 205:
 
 /* Line 1455 of yacc.c  */
-#line 809 "parser.y"
-    { (yyval.literal) = parse_regexp(ctx);
-                                  if(!(yyval.literal)) YYABORT; ;}
-    break;
-
-  case 206:
-
-/* Line 1455 of yacc.c  */
-#line 814 "parser.y"
+#line 812 "parser.y"
     { (yyval.literal) = new_boolean_literal(ctx, VARIANT_TRUE); ;}
     break;
 
-  case 207:
+  case 206:
 
 /* Line 1455 of yacc.c  */
-#line 815 "parser.y"
+#line 813 "parser.y"
     { (yyval.literal) = new_boolean_literal(ctx, VARIANT_FALSE); ;}
     break;
 
-  case 209:
+  case 208:
 
 /* Line 1455 of yacc.c  */
-#line 819 "parser.y"
+#line 817 "parser.y"
     { if(!allow_auto_semicolon(ctx)) {YYABORT;} ;}
     break;
 
-  case 211:
+  case 210:
 
 /* Line 1455 of yacc.c  */
-#line 823 "parser.y"
+#line 821 "parser.y"
     { set_error(ctx, IDS_LBRACKET); YYABORT; ;}
     break;
 
-  case 213:
+  case 212:
 
 /* Line 1455 of yacc.c  */
-#line 827 "parser.y"
+#line 825 "parser.y"
     { set_error(ctx, IDS_RBRACKET); YYABORT; ;}
     break;
 
-  case 215:
+  case 214:
 
 /* Line 1455 of yacc.c  */
-#line 831 "parser.y"
+#line 829 "parser.y"
     { set_error(ctx, IDS_SEMICOLON); YYABORT; ;}
     break;
 
 
 
 /* Line 1455 of yacc.c  */
-#line 3509 "parser.tab.c"
+#line 3497 "parser.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3717,7 +3705,7 @@ yyreturn:
 
 
 /* Line 1675 of yacc.c  */
-#line 833 "parser.y"
+#line 831 "parser.y"
 
 
 static BOOL allow_auto_semicolon(parser_ctx_t *ctx)
@@ -3729,7 +3717,7 @@ static literal_t *new_string_literal(parser_ctx_t *ctx, const WCHAR *str)
 {
     literal_t *ret = parser_alloc(ctx, sizeof(literal_t));
 
-    ret->vt = VT_BSTR;
+    ret->type = LT_STRING;
     ret->u.wstr = str;
 
     return ret;
@@ -3739,16 +3727,7 @@ static literal_t *new_null_literal(parser_ctx_t *ctx)
 {
     literal_t *ret = parser_alloc(ctx, sizeof(literal_t));
 
-    ret->vt = VT_NULL;
-
-    return ret;
-}
-
-static literal_t *new_undefined_literal(parser_ctx_t *ctx)
-{
-    literal_t *ret = parser_alloc(ctx, sizeof(literal_t));
-
-    ret->vt = VT_EMPTY;
+    ret->type = LT_NULL;
 
     return ret;
 }
@@ -3757,7 +3736,7 @@ static literal_t *new_boolean_literal(parser_ctx_t *ctx, VARIANT_BOOL bval)
 {
     literal_t *ret = parser_alloc(ctx, sizeof(literal_t));
 
-    ret->vt = VT_BOOL;
+    ret->type = LT_BOOL;
     ret->u.bval = bval;
 
     return ret;
@@ -4479,14 +4458,11 @@ static void program_parsed(parser_ctx_t *ctx, source_elements_t *source)
 
 void parser_release(parser_ctx_t *ctx)
 {
-    obj_literal_t *iter;
-
     if(--ctx->ref)
         return;
 
-    for(iter = ctx->obj_literals; iter; iter = iter->next)
-        jsdisp_release(iter->obj);
-
+    script_release(ctx->script);
+    heap_free(ctx->begin);
     jsheap_free(&ctx->heap);
     heap_free(ctx);
 }
@@ -4508,8 +4484,14 @@ HRESULT script_parse(script_ctx_t *ctx, const WCHAR *code, const WCHAR *delimite
     parser_ctx->hres = JSCRIPT_ERROR|IDS_SYNTAX_ERROR;
     parser_ctx->is_html = delimiter && !strcmpiW(delimiter, html_tagW);
 
-    parser_ctx->begin = parser_ctx->ptr = code;
-    parser_ctx->end = code + strlenW(code);
+    parser_ctx->begin = heap_strdupW(code);
+    if(!parser_ctx->begin) {
+        heap_free(parser_ctx);
+        return E_OUTOFMEMORY;
+    }
+
+    parser_ctx->ptr = parser_ctx->begin;
+    parser_ctx->end = parser_ctx->begin + strlenW(parser_ctx->begin);
 
     script_addref(ctx);
     parser_ctx->script = ctx;