Start a new scope for conditional statements even when there are no curly brackets. Also fix the DO WHILE grammar.

TRAC #20052
ISSUE=252,255
Signed-off-by: Daniel Koch
Author: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@1001 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/glslang.y b/src/compiler/glslang.y
index 1eebfb3..46be26b 100644
--- a/src/compiler/glslang.y
+++ b/src/compiler/glslang.y
@@ -141,7 +141,7 @@
 %type <interm.intermNode> declaration external_declaration
 %type <interm.intermNode> for_init_statement compound_statement_no_new_scope
 %type <interm.nodePair> selection_rest_statement for_rest_statement
-%type <interm.intermNode> iteration_statement jump_statement statement_no_new_scope
+%type <interm.intermNode> iteration_statement jump_statement statement_no_new_scope statement_with_scope
 %type <interm> single_declaration init_declarator_list
 
 %type <interm> parameter_declaration parameter_declarator parameter_type_specifier
@@ -1812,6 +1812,11 @@
     | simple_statement                { $$ = $1; }
     ;
 
+statement_with_scope
+	: { context->symbolTable.push(); } compound_statement_no_new_scope { context->symbolTable.pop(); $$ = $2; }
+	| { context->symbolTable.push(); } simple_statement                { context->symbolTable.pop(); $$ = $2; }
+	;
+
 compound_statement_no_new_scope
     // Statement that doesn't create a new scope, for selection_statement, iteration_statement
     : LEFT_BRACE RIGHT_BRACE {
@@ -1849,11 +1854,11 @@
     ;
 
 selection_rest_statement
-    : statement ELSE statement {
+    : statement_with_scope ELSE statement_with_scope {
         $$.node1 = $1;
         $$.node2 = $3;
     }
-    | statement {
+    | statement_with_scope {
         $$.node1 = $1;
         $$.node2 = 0;
     }
@@ -1890,7 +1895,7 @@
         $$ = context->intermediate.addLoop(ELoopWhile, 0, $4, 0, $6, $1.line);
         --context->loopNestingLevel;
     }
-    | DO { ++context->loopNestingLevel; } statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON {
+    | DO { ++context->loopNestingLevel; } statement_with_scope WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON {
         if (context->boolErrorCheck($8.line, $6))
             context->recover();
 
diff --git a/src/compiler/glslang_tab.cpp b/src/compiler/glslang_tab.cpp
index e116562..056e9a4 100644
--- a/src/compiler/glslang_tab.cpp
+++ b/src/compiler/glslang_tab.cpp
@@ -505,16 +505,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  71
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1370
+#define YYLAST   1416
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  96
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  80
+#define YYNNTS  83
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  197
+#define YYNRULES  201
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  300
+#define YYNSTATES  304
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -585,16 +585,17 @@
      368,   370,   372,   374,   376,   378,   380,   382,   384,   385,
      392,   393,   399,   401,   404,   408,   410,   414,   416,   421,
      423,   425,   427,   429,   431,   433,   435,   437,   439,   442,
-     443,   444,   450,   452,   454,   457,   461,   463,   466,   468,
-     471,   477,   481,   483,   485,   490,   491,   498,   499,   508,
-     509,   517,   519,   521,   523,   524,   527,   531,   534,   537,
-     540,   544,   547,   549,   552,   554,   556,   557
+     443,   444,   450,   452,   454,   455,   458,   459,   462,   465,
+     469,   471,   474,   476,   479,   485,   489,   491,   493,   498,
+     499,   506,   507,   516,   517,   525,   527,   529,   531,   532,
+     535,   539,   542,   545,   548,   552,   555,   557,   560,   562,
+     564,   565
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     172,     0,    -1,    45,    -1,    97,    -1,    48,    -1,    47,
+     175,     0,    -1,    45,    -1,    97,    -1,    48,    -1,    47,
       -1,    49,    -1,    72,   124,    73,    -1,    98,    -1,    99,
       74,   100,    75,    -1,   101,    -1,    99,    78,    50,    -1,
       99,    53,    -1,    99,    54,    -1,   124,    -1,   102,    -1,
@@ -637,20 +638,20 @@
       -1,   146,   147,    -1,   139,   148,    82,    -1,   149,    -1,
      148,    79,   149,    -1,    45,    -1,    45,    74,   125,    75,
       -1,   122,    -1,   126,    -1,   154,    -1,   153,    -1,   151,
-      -1,   160,    -1,   161,    -1,   164,    -1,   171,    -1,    76,
-      77,    -1,    -1,    -1,    76,   155,   159,   156,    77,    -1,
-     158,    -1,   153,    -1,    76,    77,    -1,    76,   159,    77,
-      -1,   152,    -1,   159,   152,    -1,    82,    -1,   124,    82,
-      -1,    18,    72,   124,    73,   162,    -1,   152,    16,   152,
-      -1,   152,    -1,   124,    -1,   137,    45,    81,   150,    -1,
-      -1,    40,    72,   165,   163,    73,   157,    -1,    -1,    15,
-     166,   152,    40,    72,   124,    73,    82,    -1,    -1,    17,
-      72,   167,   168,   170,    73,   157,    -1,   160,    -1,   151,
-      -1,   163,    -1,    -1,   169,    82,    -1,   169,    82,   124,
-      -1,    14,    82,    -1,    13,    82,    -1,    20,    82,    -1,
-      20,   124,    82,    -1,    19,    82,    -1,   173,    -1,   172,
-     173,    -1,   174,    -1,   126,    -1,    -1,   127,   175,   158,
-      -1
+      -1,   163,    -1,   164,    -1,   167,    -1,   174,    -1,    76,
+      77,    -1,    -1,    -1,    76,   155,   162,   156,    77,    -1,
+     161,    -1,   153,    -1,    -1,   159,   161,    -1,    -1,   160,
+     153,    -1,    76,    77,    -1,    76,   162,    77,    -1,   152,
+      -1,   162,   152,    -1,    82,    -1,   124,    82,    -1,    18,
+      72,   124,    73,   165,    -1,   158,    16,   158,    -1,   158,
+      -1,   124,    -1,   137,    45,    81,   150,    -1,    -1,    40,
+      72,   168,   166,    73,   157,    -1,    -1,    15,   169,   158,
+      40,    72,   124,    73,    82,    -1,    -1,    17,    72,   170,
+     171,   173,    73,   157,    -1,   163,    -1,   151,    -1,   166,
+      -1,    -1,   172,    82,    -1,   172,    82,   124,    -1,    14,
+      82,    -1,    13,    82,    -1,    20,    82,    -1,    20,   124,
+      82,    -1,    19,    82,    -1,   176,    -1,   175,   176,    -1,
+     177,    -1,   126,    -1,    -1,   127,   178,   161,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -672,10 +673,11 @@
     1608,  1614,  1620,  1625,  1630,  1639,  1648,  1653,  1666,  1666,
     1680,  1680,  1689,  1692,  1707,  1743,  1747,  1753,  1761,  1777,
     1781,  1785,  1786,  1792,  1793,  1794,  1795,  1796,  1800,  1801,
-    1801,  1801,  1811,  1812,  1817,  1820,  1830,  1833,  1839,  1840,
-    1844,  1852,  1856,  1866,  1871,  1888,  1888,  1893,  1893,  1900,
-    1900,  1908,  1911,  1917,  1920,  1926,  1930,  1937,  1944,  1951,
-    1958,  1969,  1978,  1982,  1989,  1992,  1998,  1998
+    1801,  1801,  1811,  1812,  1816,  1816,  1817,  1817,  1822,  1825,
+    1835,  1838,  1844,  1845,  1849,  1857,  1861,  1871,  1876,  1893,
+    1893,  1898,  1898,  1905,  1905,  1913,  1916,  1922,  1925,  1931,
+    1935,  1942,  1949,  1956,  1963,  1974,  1983,  1987,  1994,  1997,
+    2003,  2003
 };
 #endif
 
@@ -723,12 +725,12 @@
   "struct_declarator_list", "struct_declarator", "initializer",
   "declaration_statement", "statement", "simple_statement",
   "compound_statement", "$@3", "$@4", "statement_no_new_scope",
-  "compound_statement_no_new_scope", "statement_list",
-  "expression_statement", "selection_statement",
-  "selection_rest_statement", "condition", "iteration_statement", "$@5",
-  "$@6", "$@7", "for_init_statement", "conditionopt", "for_rest_statement",
+  "statement_with_scope", "$@5", "$@6", "compound_statement_no_new_scope",
+  "statement_list", "expression_statement", "selection_statement",
+  "selection_rest_statement", "condition", "iteration_statement", "$@7",
+  "$@8", "$@9", "for_init_statement", "conditionopt", "for_rest_statement",
   "jump_statement", "translation_unit", "external_declaration",
-  "function_definition", "$@8", 0
+  "function_definition", "$@10", 0
 };
 #endif
 
@@ -769,10 +771,11 @@
      142,   142,   142,   142,   142,   142,   142,   142,   144,   143,
      145,   143,   146,   146,   147,   148,   148,   149,   149,   150,
      151,   152,   152,   153,   153,   153,   153,   153,   154,   155,
-     156,   154,   157,   157,   158,   158,   159,   159,   160,   160,
-     161,   162,   162,   163,   163,   165,   164,   166,   164,   167,
-     164,   168,   168,   169,   169,   170,   170,   171,   171,   171,
-     171,   171,   172,   172,   173,   173,   175,   174
+     156,   154,   157,   157,   159,   158,   160,   158,   161,   161,
+     162,   162,   163,   163,   164,   165,   165,   166,   166,   168,
+     167,   169,   167,   170,   167,   171,   171,   172,   172,   173,
+     173,   174,   174,   174,   174,   174,   175,   175,   176,   176,
+     178,   177
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -794,10 +797,11 @@
        1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
        0,     5,     1,     2,     3,     1,     3,     1,     4,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
-       0,     5,     1,     1,     2,     3,     1,     2,     1,     2,
-       5,     3,     1,     1,     4,     0,     6,     0,     8,     0,
-       7,     1,     1,     1,     0,     2,     3,     2,     2,     2,
-       3,     2,     1,     2,     1,     1,     0,     3
+       0,     5,     1,     1,     0,     2,     0,     2,     2,     3,
+       1,     2,     1,     2,     5,     3,     1,     1,     4,     0,
+       6,     0,     8,     0,     7,     1,     1,     1,     0,     2,
+       3,     2,     2,     2,     3,     2,     1,     2,     1,     1,
+       0,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -808,33 +812,34 @@
        0,     0,   111,   112,   113,     0,   105,   104,   119,   117,
      118,   123,   124,   125,   126,   127,   128,   120,   121,   122,
      129,   130,   131,   108,   106,     0,   116,   132,   133,   134,
-     135,   137,   195,   196,     0,    76,    86,     0,    91,    96,
-       0,   102,     0,   109,   114,   136,     0,   192,   194,   107,
+     135,   137,   199,   200,     0,    76,    86,     0,    91,    96,
+       0,   102,     0,   109,   114,   136,     0,   196,   198,   107,
      101,     0,     0,   140,    71,     0,    74,    86,     0,    87,
       88,    89,    77,     0,    86,     0,    72,    97,   103,   110,
-       0,     1,   193,     0,   138,     0,     0,   197,    78,    83,
+       0,     1,   197,     0,   138,     0,     0,   201,    78,    83,
       85,    90,     0,    92,    79,     0,     0,     2,     5,     4,
        6,    27,     0,     0,     0,    34,    33,    32,     3,     8,
       28,    10,    15,    16,     0,     0,    21,     0,    35,     0,
       38,    41,    42,    47,    50,    51,    52,    53,    55,    57,
       59,    70,     0,    25,    73,     0,     0,     0,   142,     0,
-       0,   177,     0,     0,     0,     0,     0,   159,   164,   168,
-      35,    61,    68,     0,   150,     0,   114,   153,   166,   152,
+       0,   181,     0,     0,     0,     0,     0,   159,   168,   172,
+      35,    61,    68,     0,   150,     0,   114,   153,   170,   152,
      151,     0,   154,   155,   156,   157,    80,    82,    84,     0,
        0,    98,     0,   149,   100,    29,    30,     0,    12,    13,
        0,     0,    19,    18,     0,    20,    22,    24,    31,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   115,     0,   147,     0,   145,   141,   143,
-     188,   187,     0,   179,     0,   191,   189,     0,   175,   158,
-       0,    64,    65,    66,    67,    63,     0,     0,   169,   165,
-     167,     0,    93,     0,    95,    99,     7,     0,    14,    26,
+     192,   191,   166,   183,     0,   195,   193,     0,   179,   158,
+       0,    64,    65,    66,    67,    63,     0,     0,   173,   169,
+     171,     0,    93,     0,    95,    99,     7,     0,    14,    26,
       11,    17,    23,    36,    37,    40,    39,    45,    46,    43,
       44,    48,    49,    54,    56,    58,     0,   139,     0,     0,
-     144,     0,     0,     0,   190,     0,   160,    62,    69,     0,
-      94,     9,     0,     0,   146,     0,   182,   181,   184,     0,
-     173,     0,     0,     0,    81,    60,   148,     0,   183,     0,
-       0,   172,   170,     0,     0,   161,     0,   185,     0,     0,
-       0,   163,   176,   162,     0,   186,   180,   171,   174,   178
+     144,     0,     0,     0,     0,     0,   194,     0,   160,    62,
+      69,     0,    94,     9,     0,     0,   146,     0,   165,   167,
+     186,   185,   188,   166,   177,     0,     0,     0,    81,    60,
+     148,     0,   187,     0,     0,   176,   174,     0,     0,   161,
+       0,   189,     0,   166,     0,   163,   180,   162,     0,   190,
+     184,   175,   178,   182
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -846,347 +851,358 @@
      144,   145,    34,    35,    36,    79,    62,    63,    80,    37,
       38,    39,    40,    41,    42,    43,   123,    45,   125,    75,
      127,   128,   196,   197,   164,   147,   148,   149,   150,   210,
-     273,   292,   293,   151,   152,   153,   282,   272,   154,   255,
-     202,   252,   268,   279,   280,   155,    46,    47,    48,    55
+     277,   296,   251,   252,   253,   297,   151,   152,   153,   286,
+     276,   154,   257,   202,   254,   272,   283,   284,   155,    46,
+      47,    48,    55
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -251
+#define YYPACT_NINF -266
 static const yytype_int16 yypact[] =
 {
-    1250,   -17,  -251,  -251,  -251,   113,  -251,  -251,  -251,  -251,
-    -251,  -251,  -251,  -251,  -251,  -251,  -251,  -251,  -251,  -251,
-    -251,  -251,  -251,  -251,  -251,   -39,  -251,  -251,  -251,  -251,
-    -251,  -251,  -251,   -65,   -34,   -10,    21,   -32,  -251,    28,
-     207,  -251,  1324,  -251,    56,  -251,  1206,  -251,  -251,  -251,
-    -251,  1324,    74,  -251,  -251,    86,  -251,    71,    95,  -251,
-    -251,  -251,  -251,   207,   119,   120,  -251,   -56,  -251,  -251,
-     971,  -251,  -251,    84,  -251,   207,   287,  -251,  -251,  -251,
-    -251,   124,   207,   -59,  -251,   773,   971,    98,  -251,  -251,
-    -251,  -251,   971,   971,   971,  -251,  -251,  -251,  -251,  -251,
-      35,  -251,  -251,  -251,   100,    -9,  1037,   102,  -251,   971,
-     -27,    -1,  -251,   -24,    99,  -251,  -251,  -251,   112,   111,
-     -51,  -251,   103,  -251,  -251,   207,   135,  1106,  -251,   101,
-     104,  -251,   109,   115,   106,   839,   117,   107,  -251,  -251,
-      39,  -251,  -251,   -11,  -251,   -65,    54,  -251,  -251,  -251,
-    -251,   371,  -251,  -251,  -251,  -251,   116,  -251,  -251,   905,
-     971,  -251,   118,  -251,  -251,  -251,  -251,     8,  -251,  -251,
-     971,  1287,  -251,  -251,   971,   125,  -251,  -251,  -251,   971,
-     971,   971,   971,   971,   971,   971,   971,   971,   971,   971,
-     971,   971,   971,  -251,  1149,   122,    17,  -251,  -251,  -251,
-    -251,  -251,   455,  -251,   971,  -251,  -251,    32,  -251,  -251,
-     455,  -251,  -251,  -251,  -251,  -251,   971,   971,  -251,  -251,
-    -251,   971,  -251,   123,  -251,  -251,  -251,   126,   121,  -251,
-     127,  -251,  -251,  -251,  -251,   -27,   -27,  -251,  -251,  -251,
-    -251,   -24,   -24,  -251,   112,   111,    79,  -251,   971,   135,
-    -251,   151,   623,    11,  -251,   707,   455,  -251,  -251,   128,
-    -251,  -251,   971,   130,  -251,   134,  -251,  -251,   707,   455,
-     121,   147,   136,   131,  -251,  -251,  -251,   971,  -251,   132,
-     142,   200,  -251,   139,   539,  -251,    19,   971,   539,   455,
-     971,  -251,  -251,  -251,   140,   121,  -251,  -251,  -251,  -251
+    1253,   -20,  -266,  -266,  -266,   148,  -266,  -266,  -266,  -266,
+    -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,
+    -266,  -266,  -266,  -266,  -266,   -39,  -266,  -266,  -266,  -266,
+    -266,  -266,  -266,   -18,    -2,     6,    21,   -61,  -266,    51,
+    1296,  -266,  1370,  -266,    25,  -266,  1209,  -266,  -266,  -266,
+    -266,  1370,    42,  -266,  -266,    50,  -266,    71,    95,  -266,
+    -266,  -266,  -266,  1296,   123,   105,  -266,     9,  -266,  -266,
+     974,  -266,  -266,    81,  -266,  1296,   290,  -266,  -266,  -266,
+    -266,   125,  1296,   -13,  -266,   776,   974,    99,  -266,  -266,
+    -266,  -266,   974,   974,   974,  -266,  -266,  -266,  -266,  -266,
+      35,  -266,  -266,  -266,   100,    -6,  1040,   104,  -266,   974,
+      36,   -64,  -266,   -21,   102,  -266,  -266,  -266,   113,   117,
+     -51,  -266,   108,  -266,  -266,  1296,   129,  1109,  -266,    97,
+     103,  -266,   112,   114,   106,   842,   115,   116,  -266,  -266,
+      39,  -266,  -266,   -43,  -266,   -18,    47,  -266,  -266,  -266,
+    -266,   374,  -266,  -266,  -266,  -266,   118,  -266,  -266,   908,
+     974,  -266,   120,  -266,  -266,  -266,  -266,    19,  -266,  -266,
+     974,  1333,  -266,  -266,   974,   119,  -266,  -266,  -266,   974,
+     974,   974,   974,   974,   974,   974,   974,   974,   974,   974,
+     974,   974,   974,  -266,  1152,   122,   -29,  -266,  -266,  -266,
+    -266,  -266,   121,  -266,   974,  -266,  -266,     5,  -266,  -266,
+     458,  -266,  -266,  -266,  -266,  -266,   974,   974,  -266,  -266,
+    -266,   974,  -266,   137,  -266,  -266,  -266,   138,   111,  -266,
+     142,  -266,  -266,  -266,  -266,    36,    36,  -266,  -266,  -266,
+    -266,   -21,   -21,  -266,   113,   117,    82,  -266,   974,   129,
+    -266,   175,    50,   626,   710,    38,  -266,   197,   458,  -266,
+    -266,   141,  -266,  -266,   974,   155,  -266,   145,  -266,  -266,
+    -266,  -266,   197,   121,   111,   186,   159,   160,  -266,  -266,
+    -266,   974,  -266,   166,   176,   236,  -266,   174,   542,  -266,
+      43,   974,   542,   121,   974,  -266,  -266,  -266,   177,   111,
+    -266,  -266,  -266,  -266
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -251,  -251,  -251,  -251,  -251,  -251,  -251,    50,  -251,  -251,
-    -251,  -251,   -44,  -251,   -21,  -251,   -62,   -20,  -251,  -251,
-    -251,    34,    36,    33,  -251,   -66,   -83,  -251,   -92,   -73,
-       7,    13,  -251,  -251,  -251,   143,   170,   176,   159,  -251,
-    -251,  -247,   -22,   -30,   237,   -15,     0,  -251,  -251,  -251,
-     129,  -122,  -251,    -6,  -159,    -8,  -140,  -250,  -251,  -251,
-    -251,   -41,   202,    48,     9,  -251,  -251,    -5,  -251,  -251,
-    -251,  -251,  -251,  -251,  -251,  -251,  -251,   213,  -251,  -251
+    -266,  -266,  -266,  -266,  -266,  -266,  -266,    85,  -266,  -266,
+    -266,  -266,   -44,  -266,   -15,  -266,   -55,   -19,  -266,  -266,
+    -266,    72,    70,    73,  -266,   -66,   -83,  -266,   -92,   -73,
+      13,    14,  -266,  -266,  -266,   180,   206,   201,   184,  -266,
+    -266,  -241,   -25,   -30,   262,    -4,     0,  -266,  -266,  -266,
+     143,  -122,  -266,    22,  -145,    16,  -144,  -226,  -266,  -266,
+    -266,   -17,  -265,  -266,  -266,   -54,    63,    20,  -266,  -266,
+       4,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,  -266,
+     231,  -266,  -266
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -117
+#define YYTABLE_NINF -165
 static const yytype_int16 yytable[] =
 {
-      44,   224,   167,   163,   121,   199,    52,    32,   271,   191,
-      68,   220,   162,    33,    64,   159,    84,    54,    85,   121,
-      49,   271,   160,   176,    58,    86,   108,    69,    50,     6,
-       7,   183,   184,    81,   291,    64,    73,    53,   291,    56,
-      44,   108,    44,   207,   192,   126,    44,    65,   165,   166,
-      66,    44,    81,    32,    59,    60,    61,    23,    24,    33,
-     179,   180,   251,    44,   173,   178,   185,   186,   217,    57,
-     174,   218,   199,    67,    58,    44,   146,   163,   228,     6,
-       7,   226,    44,   181,   269,   182,   223,   217,   168,   169,
-     217,   232,   294,   121,   -75,   126,   249,   126,   217,   250,
+      44,    77,   167,   163,   121,   199,    52,   220,   285,   191,
+      68,    64,   162,    32,    33,   224,   275,    49,    65,   121,
+     181,    66,   182,   176,    58,    50,   108,   269,   301,     6,
+       7,   275,    64,    81,   183,   184,   217,    53,    69,   218,
+      44,   108,    44,   207,   192,   126,    44,    73,   165,   166,
+     249,    44,    81,   250,    59,    60,    61,    23,    24,    32,
+      33,   159,   295,    44,    54,   178,   295,   173,   160,   185,
+     186,    56,   199,   174,    58,    44,   146,   163,   228,     6,
+       7,    84,    44,    85,   217,    57,   223,   256,   168,   169,
+      86,   232,   226,   121,   -75,   126,    67,   126,   217,    70,
      246,   211,   212,   213,    59,    60,    61,    23,    24,   170,
-     214,   217,   253,   171,   254,   108,   220,     2,     3,     4,
-     215,   237,   238,   239,   240,    44,   -25,    44,    70,   281,
-      70,   298,    49,   257,   258,   233,   234,   108,   108,   108,
-     108,   108,   108,   108,   108,   108,   108,   108,   259,   297,
-      74,   146,    59,    60,    61,   121,   187,   188,   217,   262,
-     235,   236,    76,   270,   126,    83,   124,   241,   242,   156,
-     -26,   189,   190,   172,   177,   263,   270,   108,   193,   275,
-     195,   203,   121,   200,   209,   286,   201,   204,   205,   208,
-     221,   265,   283,   225,    44,   295,   248,  -116,   260,   -27,
-     217,   261,   146,   274,   108,   276,   277,   163,   285,   284,
-     146,     2,     3,     4,   287,   288,   289,     8,     9,    10,
-     290,   231,   299,   243,   245,   157,   244,    78,    11,    12,
+     214,   273,   255,   171,   220,   108,   298,   217,    74,   -25,
+     215,    70,   217,   179,   180,    44,    76,    44,   237,   238,
+     239,   240,    49,   259,   260,   233,   234,   108,   108,   108,
+     108,   108,   108,   108,   108,   108,   108,   108,   261,   302,
+      83,   146,     2,     3,     4,   121,    59,    60,    61,   187,
+     188,   217,   264,   124,   126,   274,   235,   236,   241,   242,
+     156,   -26,   189,   172,   195,   265,   177,   108,   190,   200,
+     274,   279,   121,   193,   203,   201,   204,   208,   205,   290,
+     217,  -116,   221,   209,    44,   225,   248,  -164,   268,   299,
+      58,     2,     3,     4,   108,     6,     7,     8,     9,    10,
+     146,   163,   262,   263,   -27,   267,   278,   281,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      82,   158,    51,   264,   266,    25,    26,   296,    27,    28,
-      29,    30,   146,    31,   194,   146,   146,    77,   256,    72,
-       0,   267,     0,   278,     0,     0,     0,     0,   146,   146,
+     280,   287,   288,    23,    24,    25,    26,   289,    27,    28,
+      29,    30,    87,    31,    88,    89,    90,    91,   291,   292,
+      92,    93,   293,   146,   146,   294,   231,   146,   146,   303,
+     244,   243,   157,    78,   245,    82,   158,    51,   194,    94,
+     270,   266,   146,   258,   271,   300,   282,    72,     0,     0,
+      95,    96,     0,    97,     0,     0,     0,     0,   146,     0,
+       0,     0,   146,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,   129,   130,   131,     0,   132,   133,   134,
+     135,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,     0,     0,     0,    23,    24,    25,    26,
+     136,    27,    28,    29,    30,    87,    31,    88,    89,    90,
+      91,     0,     0,    92,    93,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   146,     0,     0,     0,   146,   146,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-     129,   130,   131,     0,   132,   133,   134,   135,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-       0,     0,     0,    23,    24,    25,    26,   136,    27,    28,
-      29,    30,    87,    31,    88,    89,    90,    91,     0,     0,
-      92,    93,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    94,
-       0,     0,     0,   137,   138,     0,     0,     0,     0,   139,
-      95,    96,     0,    97,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,   129,   130,   131,     0,   132,   133,
-     134,   135,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,     0,     0,     0,    23,    24,    25,
-      26,   136,    27,    28,    29,    30,    87,    31,    88,    89,
-      90,    91,     0,     0,    92,    93,     0,     0,     0,     0,
+       0,     0,    94,     0,     0,     0,   137,   138,     0,     0,
+       0,     0,   139,    95,    96,     0,    97,     1,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,   129,   130,   131,
+       0,   132,   133,   134,   135,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,     0,     0,     0,
+      23,    24,    25,    26,   136,    27,    28,    29,    30,    87,
+      31,    88,    89,    90,    91,     0,     0,    92,    93,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    94,     0,     0,     0,   137,   219,     0,
-       0,     0,     0,   139,    95,    96,     0,    97,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,   129,   130,
-     131,     0,   132,   133,   134,   135,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,     0,     0,
-       0,    23,    24,    25,    26,   136,    27,    28,    29,    30,
-      87,    31,    88,    89,    90,    91,     0,     0,    92,    93,
+       0,     0,     0,     0,     0,     0,    94,     0,     0,     0,
+     137,   219,     0,     0,     0,     0,   139,    95,    96,     0,
+      97,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,   129,   130,   131,     0,   132,   133,   134,   135,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,     0,     0,     0,    23,    24,    25,    26,   136,    27,
+      28,    29,    30,    87,    31,    88,    89,    90,    91,     0,
+       0,    92,    93,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    94,     0,     0,
-       0,   137,     0,     0,     0,     0,     0,   139,    95,    96,
-       0,    97,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,   129,   130,   131,     0,   132,   133,   134,   135,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,     0,     0,     0,    23,    24,    25,    26,   136,
-      27,    28,    29,    30,    87,    31,    88,    89,    90,    91,
-       0,     0,    92,    93,     0,     0,     0,     0,     0,     0,
+      94,     0,     0,     0,   137,     0,     0,     0,     0,     0,
+     139,    95,    96,     0,    97,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,   129,   130,   131,     0,   132,
+     133,   134,   135,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,     0,     0,     0,    23,    24,
+      25,    26,   136,    27,    28,    29,    30,    87,    31,    88,
+      89,    90,    91,     0,     0,    92,    93,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    94,     0,     0,     0,    76,     0,     0,     0,     0,
-       0,   139,    95,    96,     0,    97,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,     0,     0,     0,     0,
-       0,     0,     0,     0,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,     0,     0,     0,    23,
-      24,    25,    26,     0,    27,    28,    29,    30,    87,    31,
-      88,    89,    90,    91,     0,     0,    92,    93,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    94,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   139,    95,    96,     0,    97,
-      58,     2,     3,     4,     0,     6,     7,     8,     9,    10,
-       0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-       0,     0,     0,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    87,    31,    88,    89,    90,    91,     0,     0,
-      92,    93,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    94,
-       0,     0,     0,     8,     9,    10,     0,     0,     0,     0,
-      95,    96,     0,    97,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,     0,     0,     0,     0,
-       0,    25,    26,     0,    27,    28,    29,    30,    87,    31,
-      88,    89,    90,    91,     0,     0,    92,    93,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    94,     0,     0,   161,     8,
-       9,    10,     0,     0,     0,     0,    95,    96,     0,    97,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,     0,     0,     0,     0,     0,    25,    26,     0,
-      27,    28,    29,    30,    87,    31,    88,    89,    90,    91,
-       0,     0,    92,    93,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    94,     0,     0,     0,     8,     9,    10,     0,     0,
-       0,   206,    95,    96,     0,    97,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,     0,     0,
-       0,     0,     0,    25,    26,     0,    27,    28,    29,    30,
-      87,    31,    88,    89,    90,    91,     0,     0,    92,    93,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    94,     0,     0,
-     222,     8,     9,    10,     0,     0,     0,     0,    95,    96,
-       0,    97,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,     0,     0,     0,     0,     0,    25,
-      26,     0,    27,    28,    29,    30,    87,    31,    88,    89,
-      90,    91,     0,     0,    92,    93,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    94,     0,     0,     0,     8,     9,    10,
-       0,     0,     0,     0,    95,    96,     0,    97,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-       0,     0,     0,     0,     0,    25,   175,     0,    27,    28,
-      29,    30,    87,    31,    88,    89,    90,    91,     0,     0,
-      92,    93,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    94,
-       2,     3,     4,     0,     0,     0,     8,     9,    10,     0,
-      95,    96,     0,    97,     0,     0,     0,    11,    12,    13,
+       0,     0,     0,     0,    94,     0,     0,     0,    76,     0,
+       0,     0,     0,     0,   139,    95,    96,     0,    97,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,   129,
+     130,   131,     0,   132,   133,   134,   135,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
-       0,     0,     0,     0,    25,    26,     0,    27,    28,    29,
-      30,     0,    31,     2,     3,     4,     0,     0,     0,     8,
-       9,    10,     0,     0,     0,     0,     0,     0,     0,     0,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,     0,   198,     0,     0,     0,    25,    26,     0,
-      27,    28,    29,    30,     0,    31,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    71,     0,     0,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,     0,
-       0,     0,     0,     0,     0,     0,   247,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
-       0,     0,    23,    24,    25,    26,     0,    27,    28,    29,
-      30,     0,    31,     1,     2,     3,     4,     5,     6,     7,
+       0,     0,    23,    24,    25,    26,   136,    27,    28,    29,
+      30,    87,    31,    88,    89,    90,    91,     0,     0,    92,
+      93,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    94,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   139,    95,
+      96,     0,    97,     1,     2,     3,     4,     5,     6,     7,
        8,     9,    10,     0,     0,     0,     0,     0,     0,     0,
        0,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,     0,     0,     0,    23,    24,    25,    26,
-       0,    27,    28,    29,    30,     0,    31,     8,     9,    10,
-       0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-       0,     0,     0,     0,     0,    25,    26,     0,    27,    28,
-      29,    30,   229,    31,     8,     9,    10,   230,     0,     0,
-       0,     0,     0,     0,     0,    11,    12,    13,    14,    15,
+       0,    27,    28,    29,    30,    87,    31,    88,    89,    90,
+      91,     0,     0,    92,    93,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    94,     0,     0,     0,     8,     9,    10,     0,
+       0,     0,   139,    95,    96,     0,    97,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
+       0,     0,     0,     0,    25,    26,     0,    27,    28,    29,
+      30,    87,    31,    88,    89,    90,    91,     0,     0,    92,
+      93,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    94,     0,
+       0,   161,     8,     9,    10,     0,     0,     0,     0,    95,
+      96,     0,    97,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,     0,     0,     0,     0,     0,
+      25,    26,     0,    27,    28,    29,    30,    87,    31,    88,
+      89,    90,    91,     0,     0,    92,    93,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    94,     0,     0,     0,     8,     9,
+      10,     0,     0,     0,   206,    95,    96,     0,    97,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,     0,     0,     0,     0,     0,    25,    26,     0,    27,
+      28,    29,    30,    87,    31,    88,    89,    90,    91,     0,
+       0,    92,    93,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      94,     0,     0,   222,     8,     9,    10,     0,     0,     0,
+       0,    95,    96,     0,    97,    11,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,     0,     0,     0,
-       0,     0,    25,    26,     0,    27,    28,    29,    30,     0,
-      31
+       0,     0,    25,    26,     0,    27,    28,    29,    30,    87,
+      31,    88,    89,    90,    91,     0,     0,    92,    93,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    94,     0,     0,     0,
+       8,     9,    10,     0,     0,     0,     0,    95,    96,     0,
+      97,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,     0,     0,     0,     0,     0,    25,   175,
+       0,    27,    28,    29,    30,    87,    31,    88,    89,    90,
+      91,     0,     0,    92,    93,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    94,     2,     3,     4,     0,     0,     0,     8,
+       9,    10,     0,    95,    96,     0,    97,     0,     0,     0,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,     0,     0,     0,     0,     0,    25,    26,     0,
+      27,    28,    29,    30,     0,    31,     2,     3,     4,     0,
+       0,     0,     8,     9,    10,     0,     0,     0,     0,     0,
+       0,     0,     0,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,     0,   198,     0,     0,     0,
+      25,    26,     0,    27,    28,    29,    30,     0,    31,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    71,
+       0,     0,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,     0,     0,     0,     0,     0,     0,     0,   247,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,     0,     0,     0,    23,    24,    25,    26,     0,
+      27,    28,    29,    30,     0,    31,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,     0,     0,     0,     0,
+       0,     0,     0,     0,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,     0,    27,    28,    29,    30,     0,    31,
+       2,     3,     4,     0,     0,     0,     8,     9,    10,     0,
+       0,     0,     0,     0,     0,     0,     0,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
+       0,     0,     0,     0,    25,    26,     0,    27,    28,    29,
+      30,     0,    31,     8,     9,    10,     0,     0,     0,     0,
+       0,     0,     0,     0,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,     0,     0,     0,     0,
+       0,    25,    26,     0,    27,    28,    29,    30,   229,    31,
+       8,     9,    10,   230,     0,     0,     0,     0,     0,     0,
+       0,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,     0,     0,     0,     0,     0,    25,    26,
+       0,    27,    28,    29,    30,     0,    31
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   160,    94,    86,    70,   127,    45,     0,   255,    60,
-      40,   151,    85,     0,    36,    74,    72,    82,    74,    85,
-      37,   268,    81,   106,     3,    81,    70,    42,    45,     8,
-       9,    55,    56,    63,   284,    57,    51,    76,   288,    73,
-      40,    85,    42,   135,    95,    75,    46,    79,    92,    93,
-      82,    51,    82,    46,    33,    34,    35,    36,    37,    46,
-      87,    88,   202,    63,    73,   109,    90,    91,    79,    79,
-      79,    82,   194,    45,     3,    75,    76,   160,   170,     8,
-       9,    73,    82,    84,    73,    86,   159,    79,    53,    54,
-      79,   174,    73,   159,    73,   125,    79,   127,    79,    82,
+       0,    55,    94,    86,    70,   127,    45,   151,   273,    60,
+      40,    36,    85,     0,     0,   160,   257,    37,    79,    85,
+      84,    82,    86,   106,     3,    45,    70,   253,   293,     8,
+       9,   272,    57,    63,    55,    56,    79,    76,    42,    82,
+      40,    85,    42,   135,    95,    75,    46,    51,    92,    93,
+      79,    51,    82,    82,    33,    34,    35,    36,    37,    46,
+      46,    74,   288,    63,    82,   109,   292,    73,    81,    90,
+      91,    73,   194,    79,     3,    75,    76,   160,   170,     8,
+       9,    72,    82,    74,    79,    79,   159,    82,    53,    54,
+      81,   174,    73,   159,    73,   125,    45,   127,    79,    74,
      192,    62,    63,    64,    33,    34,    35,    36,    37,    74,
-      71,    79,   204,    78,    82,   159,   256,     4,     5,     6,
-      81,   183,   184,   185,   186,   125,    72,   127,    74,   269,
-      74,   290,    37,   216,   217,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   221,   289,
-      76,   151,    33,    34,    35,   221,    57,    58,    79,    80,
-     181,   182,    76,   255,   194,    45,    82,   187,   188,    45,
-      72,    59,    61,    73,    72,   248,   268,   221,    75,   262,
-      45,    72,   248,    82,    77,   277,    82,    72,    82,    72,
-      74,    40,    45,    75,   194,   287,    74,    72,    75,    72,
-      79,    75,   202,    75,   248,    75,    72,   290,    77,    73,
-     210,     4,     5,     6,    82,    73,    16,    10,    11,    12,
-      81,   171,    82,   189,   191,    82,   190,    57,    21,    22,
+      71,    73,   204,    78,   258,   159,    73,    79,    76,    72,
+      81,    74,    79,    87,    88,   125,    76,   127,   183,   184,
+     185,   186,    37,   216,   217,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   221,   294,
+      45,   151,     4,     5,     6,   221,    33,    34,    35,    57,
+      58,    79,    80,    82,   194,   257,   181,   182,   187,   188,
+      45,    72,    59,    73,    45,   248,    72,   221,    61,    82,
+     272,   264,   248,    75,    72,    82,    72,    72,    82,   281,
+      79,    72,    74,    77,   194,    75,    74,    76,   252,   291,
+       3,     4,     5,     6,   248,     8,     9,    10,    11,    12,
+     210,   294,    75,    75,    72,    40,    75,    72,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      64,    82,     5,   249,   252,    38,    39,   288,    41,    42,
-      43,    44,   252,    46,   125,   255,   256,    55,   210,    46,
-      -1,   252,    -1,   268,    -1,    -1,    -1,    -1,   268,   269,
+      75,    45,    73,    36,    37,    38,    39,    77,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    82,    73,
+      53,    54,    16,   253,   254,    81,   171,   257,   258,    82,
+     190,   189,    82,    57,   191,    64,    82,     5,   125,    72,
+     254,   249,   272,   210,   254,   292,   272,    46,    -1,    -1,
+      83,    84,    -1,    86,    -1,    -1,    -1,    -1,   288,    -1,
+      -1,    -1,   292,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    -1,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    -1,    -1,    -1,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    -1,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   284,    -1,    -1,    -1,   288,   289,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    -1,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      -1,    -1,    -1,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    -1,    -1,
-      53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-      -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    82,
-      83,    84,    -1,    86,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    -1,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    -1,    -1,    -1,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    -1,    -1,    53,    54,    -1,    -1,    -1,    -1,
+      -1,    -1,    72,    -1,    -1,    -1,    76,    77,    -1,    -1,
+      -1,    -1,    82,    83,    84,    -1,    86,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    -1,    -1,    53,    54,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    77,    -1,
-      -1,    -1,    -1,    82,    83,    84,    -1,    86,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
-      -1,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    -1,    -1,    53,    54,
+      -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+      76,    77,    -1,    -1,    -1,    -1,    82,    83,    84,    -1,
+      86,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    -1,    -1,    -1,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    -1,
+      -1,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
-      -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,
-      -1,    86,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    -1,    -1,    -1,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      -1,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,
+      72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
+      82,    83,    84,    -1,    86,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    -1,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    -1,    -1,    -1,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    -1,    -1,    53,    54,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
-      -1,    82,    83,    84,    -1,    86,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    36,
-      37,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    -1,    -1,    53,    54,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    -1,    86,
-       3,     4,     5,     6,    -1,     8,     9,    10,    11,    12,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      -1,    -1,    -1,    36,    37,    38,    39,    -1,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    -1,    -1,
-      53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-      -1,    -1,    -1,    10,    11,    12,    -1,    -1,    -1,    -1,
-      83,    84,    -1,    86,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    -1,
-      -1,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    -1,    -1,    53,    54,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    75,    10,
-      11,    12,    -1,    -1,    -1,    -1,    83,    84,    -1,    86,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      -1,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    -1,    -1,    -1,    10,    11,    12,    -1,    -1,
-      -1,    82,    83,    84,    -1,    86,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
-      -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    -1,    -1,    53,    54,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
-      75,    10,    11,    12,    -1,    -1,    -1,    -1,    83,    84,
-      -1,    86,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,
-      39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    -1,    -1,    53,    54,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    72,    -1,    -1,    -1,    10,    11,    12,
-      -1,    -1,    -1,    -1,    83,    84,    -1,    86,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      -1,    -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    -1,    -1,
-      53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-       4,     5,     6,    -1,    -1,    -1,    10,    11,    12,    -1,
-      83,    84,    -1,    86,    -1,    -1,    -1,    21,    22,    23,
+      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
+      -1,    -1,    -1,    -1,    82,    83,    84,    -1,    86,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
-      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
-      44,    -1,    46,     4,     5,     6,    -1,    -1,    -1,    10,
-      11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    -1,    77,    -1,    -1,    -1,    38,    39,    -1,
-      41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    77,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
-      -1,    -1,    36,    37,    38,    39,    -1,    41,    42,    43,
-      44,    -1,    46,     3,     4,     5,     6,     7,     8,     9,
+      -1,    -1,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    -1,    -1,    53,
+      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,
+      84,    -1,    86,     3,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    -1,    -1,    -1,    36,    37,    38,    39,
-      -1,    41,    42,    43,    44,    -1,    46,    10,    11,    12,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      -1,    -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,
-      43,    44,    45,    46,    10,    11,    12,    50,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,
+      -1,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    -1,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    72,    -1,    -1,    -1,    10,    11,    12,    -1,
+      -1,    -1,    82,    83,    84,    -1,    86,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
+      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    -1,    -1,    53,
+      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
+      -1,    75,    10,    11,    12,    -1,    -1,    -1,    -1,    83,
+      84,    -1,    86,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
+      38,    39,    -1,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    -1,    -1,    53,    54,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    10,    11,
+      12,    -1,    -1,    -1,    82,    83,    84,    -1,    86,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    -1,
+      -1,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      72,    -1,    -1,    75,    10,    11,    12,    -1,    -1,    -1,
+      -1,    83,    84,    -1,    86,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
-      -1,    -1,    38,    39,    -1,    41,    42,    43,    44,    -1,
-      46
+      -1,    -1,    38,    39,    -1,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    -1,    -1,    53,    54,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+      10,    11,    12,    -1,    -1,    -1,    -1,    83,    84,    -1,
+      86,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,
+      -1,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    -1,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    72,     4,     5,     6,    -1,    -1,    -1,    10,
+      11,    12,    -1,    83,    84,    -1,    86,    -1,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1,
+      41,    42,    43,    44,    -1,    46,     4,     5,     6,    -1,
+      -1,    -1,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    -1,    77,    -1,    -1,    -1,
+      38,    39,    -1,    41,    42,    43,    44,    -1,    46,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,
+      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    -1,    -1,    -1,    36,    37,    38,    39,    -1,
+      41,    42,    43,    44,    -1,    46,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    36,
+      37,    38,    39,    -1,    41,    42,    43,    44,    -1,    46,
+       4,     5,     6,    -1,    -1,    -1,    10,    11,    12,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
+      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
+      44,    -1,    46,    10,    11,    12,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    -1,
+      -1,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
+      10,    11,    12,    50,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,
+      -1,    41,    42,    43,    44,    -1,    46
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1197,10 +1213,10 @@
       12,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    36,    37,    38,    39,    41,    42,    43,
       44,    46,   126,   127,   128,   129,   130,   135,   136,   137,
-     138,   139,   140,   141,   142,   143,   172,   173,   174,    37,
-      45,   140,    45,    76,    82,   175,    73,    79,     3,    33,
+     138,   139,   140,   141,   142,   143,   175,   176,   177,    37,
+      45,   140,    45,    76,    82,   178,    73,    79,     3,    33,
       34,    35,   132,   133,   138,    79,    82,    45,   139,   141,
-      74,     0,   173,   141,    76,   145,    76,   158,   132,   131,
+      74,     0,   176,   141,    76,   145,    76,   161,   132,   131,
      134,   139,   133,    45,    72,    74,    81,    45,    47,    48,
       49,    50,    53,    54,    72,    83,    84,    86,    97,    98,
       99,   101,   102,   103,   104,   105,   106,   107,   108,   109,
@@ -1208,21 +1224,22 @@
      120,   121,   125,   142,    82,   144,   139,   146,   147,    13,
       14,    15,    17,    18,    19,    20,    40,    76,    77,    82,
      108,   121,   122,   124,   126,   127,   142,   151,   152,   153,
-     154,   159,   160,   161,   164,   171,    45,   131,   134,    74,
+     154,   162,   163,   164,   167,   174,    45,   131,   134,    74,
       81,    75,   125,   122,   150,   108,   108,   124,    53,    54,
       74,    78,    73,    73,    79,    39,   122,    72,   108,    87,
       88,    84,    86,    55,    56,    90,    91,    57,    58,    59,
       61,    60,    95,    75,   146,    45,   148,   149,    77,   147,
-      82,    82,   166,    72,    72,    82,    82,   124,    72,    77,
+      82,    82,   169,    72,    72,    82,    82,   124,    72,    77,
      155,    62,    63,    64,    71,    81,   123,    79,    82,    77,
      152,    74,    75,   125,   150,    75,    73,   100,   124,    45,
       50,   103,   122,   108,   108,   110,   110,   112,   112,   112,
      112,   113,   113,   117,   118,   119,   124,    77,    74,    79,
-      82,   152,   167,   124,    82,   165,   159,   122,   122,   125,
-      75,    75,    80,   125,   149,    40,   151,   160,   168,    73,
-     124,   137,   163,   156,    75,   122,    75,    72,   163,   169,
-     170,   152,   162,    45,    73,    77,   124,    82,    73,    16,
-      81,   153,   157,   158,    73,   124,   157,   152,   150,    82
+      82,   158,   159,   160,   170,   124,    82,   168,   162,   122,
+     122,   125,    75,    75,    80,   125,   149,    40,   161,   153,
+     151,   163,   171,    73,   124,   137,   166,   156,    75,   122,
+      75,    72,   166,   172,   173,   158,   165,    45,    73,    77,
+     124,    82,    73,    16,    81,   153,   157,   161,    73,   124,
+     157,   158,   150,    82
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -4089,12 +4106,32 @@
 
   case 164:
 
+    { context->symbolTable.push(); }
+    break;
+
+  case 165:
+
+    { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); }
+    break;
+
+  case 166:
+
+    { context->symbolTable.push(); }
+    break;
+
+  case 167:
+
+    { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); }
+    break;
+
+  case 168:
+
     {
         (yyval.interm.intermNode) = 0;
     }
     break;
 
-  case 165:
+  case 169:
 
     {
         if ((yyvsp[(2) - (3)].interm.intermAggregate)) {
@@ -4105,31 +4142,31 @@
     }
     break;
 
-  case 166:
+  case 170:
 
     {
         (yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode), 0);
     }
     break;
 
-  case 167:
+  case 171:
 
     {
         (yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermAggregate), (yyvsp[(2) - (2)].interm.intermNode), 0);
     }
     break;
 
-  case 168:
+  case 172:
 
     { (yyval.interm.intermNode) = 0; }
     break;
 
-  case 169:
+  case 173:
 
     { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); }
     break;
 
-  case 170:
+  case 174:
 
     {
         if (context->boolErrorCheck((yyvsp[(1) - (5)].lex).line, (yyvsp[(3) - (5)].interm.intermTypedNode)))
@@ -4138,7 +4175,7 @@
     }
     break;
 
-  case 171:
+  case 175:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode);
@@ -4146,7 +4183,7 @@
     }
     break;
 
-  case 172:
+  case 176:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode);
@@ -4154,7 +4191,7 @@
     }
     break;
 
-  case 173:
+  case 177:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
@@ -4163,7 +4200,7 @@
     }
     break;
 
-  case 174:
+  case 178:
 
     {
         TIntermNode* intermNode;
@@ -4181,12 +4218,12 @@
     }
     break;
 
-  case 175:
+  case 179:
 
     { context->symbolTable.push(); ++context->loopNestingLevel; }
     break;
 
-  case 176:
+  case 180:
 
     {
         context->symbolTable.pop();
@@ -4195,12 +4232,12 @@
     }
     break;
 
-  case 177:
+  case 181:
 
     { ++context->loopNestingLevel; }
     break;
 
-  case 178:
+  case 182:
 
     {
         if (context->boolErrorCheck((yyvsp[(8) - (8)].lex).line, (yyvsp[(6) - (8)].interm.intermTypedNode)))
@@ -4211,12 +4248,12 @@
     }
     break;
 
-  case 179:
+  case 183:
 
     { context->symbolTable.push(); ++context->loopNestingLevel; }
     break;
 
-  case 180:
+  case 184:
 
     {
         context->symbolTable.pop();
@@ -4225,35 +4262,35 @@
     }
     break;
 
-  case 181:
+  case 185:
 
     {
         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
     }
     break;
 
-  case 182:
+  case 186:
 
     {
         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
     }
     break;
 
-  case 183:
+  case 187:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
     break;
 
-  case 184:
+  case 188:
 
     {
         (yyval.interm.intermTypedNode) = 0;
     }
     break;
 
-  case 185:
+  case 189:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode);
@@ -4261,7 +4298,7 @@
     }
     break;
 
-  case 186:
+  case 190:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode);
@@ -4269,7 +4306,7 @@
     }
     break;
 
-  case 187:
+  case 191:
 
     {
         if (context->loopNestingLevel <= 0) {
@@ -4280,7 +4317,7 @@
     }
     break;
 
-  case 188:
+  case 192:
 
     {
         if (context->loopNestingLevel <= 0) {
@@ -4291,7 +4328,7 @@
     }
     break;
 
-  case 189:
+  case 193:
 
     {
         (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).line);
@@ -4302,7 +4339,7 @@
     }
     break;
 
-  case 190:
+  case 194:
 
     {
         (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).line);
@@ -4317,7 +4354,7 @@
     }
     break;
 
-  case 191:
+  case 195:
 
     {
         FRAG_ONLY("discard", (yyvsp[(1) - (2)].lex).line);
@@ -4325,7 +4362,7 @@
     }
     break;
 
-  case 192:
+  case 196:
 
     {
         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
@@ -4333,7 +4370,7 @@
     }
     break;
 
-  case 193:
+  case 197:
 
     {
         (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), 0);
@@ -4341,21 +4378,21 @@
     }
     break;
 
-  case 194:
+  case 198:
 
     {
         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
     }
     break;
 
-  case 195:
+  case 199:
 
     {
         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
     }
     break;
 
-  case 196:
+  case 200:
 
     {
         TFunction* function = (yyvsp[(1) - (1)].interm).function;
@@ -4440,7 +4477,7 @@
     }
     break;
 
-  case 197:
+  case 201:
 
     {
         //?? Check that all paths return a value if return type != void ?