OSDN Git Service

glsl: Regenerate files modified by previous commits
authorIan Romanick <ian.d.romanick@intel.com>
Fri, 28 Jan 2011 02:19:54 +0000 (18:19 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Fri, 11 Feb 2011 22:12:44 +0000 (14:12 -0800)
src/glsl/glsl_lexer.cpp
src/glsl/glsl_parser.cpp
src/glsl/glsl_parser.h

index 0492795..40d2294 100644 (file)
@@ -1018,6 +1018,8 @@ static yyconst flex_int16_t yy_chk[1283] =
 #include "glsl_parser_extras.h"
 #include "glsl_parser.h"
 
+static int classify_identifier(struct _mesa_glsl_parse_state *, const char *);
+
 #define YY_USER_ACTION                                         \
    do {                                                                \
       yylloc->source = 0;                                      \
@@ -1053,7 +1055,7 @@ static yyconst flex_int16_t yy_chk[1283] =
         return ERROR_TOK;                                              \
       } else {                                                         \
         yylval->identifier = strdup(yytext);                           \
-        return IDENTIFIER;                                             \
+        return classify_identifier(yyextra, yytext);                   \
       }                                                                        \
    } while (0)
 
@@ -1067,7 +1069,7 @@ static yyconst flex_int16_t yy_chk[1283] =
  */
 #define ES yyextra->es_shader
 
-#line 1071 "glsl_lexer.cpp"
+#line 1073 "glsl_lexer.cpp"
 
 #define INITIAL 0
 #define PP 1
@@ -1305,10 +1307,10 @@ YY_DECL
        register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-#line 95 "glsl_lexer.lpp"
+#line 97 "glsl_lexer.lpp"
 
 
-#line 1312 "glsl_lexer.cpp"
+#line 1314 "glsl_lexer.cpp"
 
     yylval = yylval_param;
 
@@ -1394,7 +1396,7 @@ do_action:        /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 97 "glsl_lexer.lpp"
+#line 99 "glsl_lexer.lpp"
 ;
        YY_BREAK
 /* Preprocessor tokens. */ 
@@ -1403,17 +1405,17 @@ case 2:
 yyg->yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 100 "glsl_lexer.lpp"
+#line 102 "glsl_lexer.lpp"
 ;
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 101 "glsl_lexer.lpp"
+#line 103 "glsl_lexer.lpp"
 { BEGIN PP; return VERSION; }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 102 "glsl_lexer.lpp"
+#line 104 "glsl_lexer.lpp"
 { BEGIN PP; return EXTENSION; }
        YY_BREAK
 case 5:
@@ -1421,7 +1423,7 @@ case 5:
 yyg->yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 103 "glsl_lexer.lpp"
+#line 105 "glsl_lexer.lpp"
 {
                                   /* Eat characters until the first digit is
                                    * encountered
@@ -1443,7 +1445,7 @@ case 6:
 yyg->yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 118 "glsl_lexer.lpp"
+#line 120 "glsl_lexer.lpp"
 {
                                   /* Eat characters until the first digit is
                                    * encountered
@@ -1461,7 +1463,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 132 "glsl_lexer.lpp"
+#line 134 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_DEBUG_ON;
@@ -1469,7 +1471,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 136 "glsl_lexer.lpp"
+#line 138 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_DEBUG_OFF;
@@ -1477,7 +1479,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 140 "glsl_lexer.lpp"
+#line 142 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_OPTIMIZE_ON;
@@ -1485,7 +1487,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 144 "glsl_lexer.lpp"
+#line 146 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_OPTIMIZE_OFF;
@@ -1493,7 +1495,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 148 "glsl_lexer.lpp"
+#line 150 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_INVARIANT_ALL;
@@ -1501,38 +1503,38 @@ YY_RULE_SETUP
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 152 "glsl_lexer.lpp"
+#line 154 "glsl_lexer.lpp"
 { BEGIN PRAGMA; }
        YY_BREAK
 case 13:
 /* rule 13 can match eol */
 YY_RULE_SETUP
-#line 154 "glsl_lexer.lpp"
+#line 156 "glsl_lexer.lpp"
 { BEGIN 0; yylineno++; yycolumn = 0; }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 155 "glsl_lexer.lpp"
+#line 157 "glsl_lexer.lpp"
 { }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 157 "glsl_lexer.lpp"
+#line 159 "glsl_lexer.lpp"
 { }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 158 "glsl_lexer.lpp"
+#line 160 "glsl_lexer.lpp"
 { }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 159 "glsl_lexer.lpp"
+#line 161 "glsl_lexer.lpp"
 return COLON;
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 160 "glsl_lexer.lpp"
+#line 162 "glsl_lexer.lpp"
 {
                                   yylval->identifier = strdup(yytext);
                                   return IDENTIFIER;
@@ -1540,7 +1542,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 164 "glsl_lexer.lpp"
+#line 166 "glsl_lexer.lpp"
 {
                                    yylval->n = strtol(yytext, NULL, 10);
                                    return INTCONSTANT;
@@ -1549,388 +1551,388 @@ YY_RULE_SETUP
 case 20:
 /* rule 20 can match eol */
 YY_RULE_SETUP
-#line 168 "glsl_lexer.lpp"
+#line 170 "glsl_lexer.lpp"
 { BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
        YY_BREAK
 case 21:
 /* rule 21 can match eol */
 YY_RULE_SETUP
-#line 170 "glsl_lexer.lpp"
+#line 172 "glsl_lexer.lpp"
 { yylineno++; yycolumn = 0; }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 172 "glsl_lexer.lpp"
+#line 174 "glsl_lexer.lpp"
 return ATTRIBUTE;
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 173 "glsl_lexer.lpp"
+#line 175 "glsl_lexer.lpp"
 return CONST_TOK;
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 174 "glsl_lexer.lpp"
+#line 176 "glsl_lexer.lpp"
 return BOOL_TOK;
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 175 "glsl_lexer.lpp"
+#line 177 "glsl_lexer.lpp"
 return FLOAT_TOK;
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 176 "glsl_lexer.lpp"
+#line 178 "glsl_lexer.lpp"
 return INT_TOK;
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 177 "glsl_lexer.lpp"
+#line 179 "glsl_lexer.lpp"
 KEYWORD(130, 130, UINT_TOK);
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 179 "glsl_lexer.lpp"
+#line 181 "glsl_lexer.lpp"
 return BREAK;
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 180 "glsl_lexer.lpp"
+#line 182 "glsl_lexer.lpp"
 return CONTINUE;
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 181 "glsl_lexer.lpp"
+#line 183 "glsl_lexer.lpp"
 return DO;
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 182 "glsl_lexer.lpp"
+#line 184 "glsl_lexer.lpp"
 return WHILE;
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 183 "glsl_lexer.lpp"
+#line 185 "glsl_lexer.lpp"
 return ELSE;
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 184 "glsl_lexer.lpp"
+#line 186 "glsl_lexer.lpp"
 return FOR;
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 185 "glsl_lexer.lpp"
+#line 187 "glsl_lexer.lpp"
 return IF;
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 186 "glsl_lexer.lpp"
+#line 188 "glsl_lexer.lpp"
 return DISCARD;
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 187 "glsl_lexer.lpp"
+#line 189 "glsl_lexer.lpp"
 return RETURN;
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 189 "glsl_lexer.lpp"
+#line 191 "glsl_lexer.lpp"
 return BVEC2;
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 190 "glsl_lexer.lpp"
+#line 192 "glsl_lexer.lpp"
 return BVEC3;
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 191 "glsl_lexer.lpp"
+#line 193 "glsl_lexer.lpp"
 return BVEC4;
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 192 "glsl_lexer.lpp"
+#line 194 "glsl_lexer.lpp"
 return IVEC2;
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 193 "glsl_lexer.lpp"
+#line 195 "glsl_lexer.lpp"
 return IVEC3;
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 194 "glsl_lexer.lpp"
+#line 196 "glsl_lexer.lpp"
 return IVEC4;
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 195 "glsl_lexer.lpp"
+#line 197 "glsl_lexer.lpp"
 KEYWORD(130, 130, UVEC2);
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 196 "glsl_lexer.lpp"
+#line 198 "glsl_lexer.lpp"
 KEYWORD(130, 130, UVEC3);
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 197 "glsl_lexer.lpp"
+#line 199 "glsl_lexer.lpp"
 KEYWORD(130, 130, UVEC4);
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 198 "glsl_lexer.lpp"
+#line 200 "glsl_lexer.lpp"
 return VEC2;
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 199 "glsl_lexer.lpp"
+#line 201 "glsl_lexer.lpp"
 return VEC3;
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 200 "glsl_lexer.lpp"
+#line 202 "glsl_lexer.lpp"
 return VEC4;
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 201 "glsl_lexer.lpp"
+#line 203 "glsl_lexer.lpp"
 return MAT2X2;
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 202 "glsl_lexer.lpp"
+#line 204 "glsl_lexer.lpp"
 return MAT3X3;
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 203 "glsl_lexer.lpp"
+#line 205 "glsl_lexer.lpp"
 return MAT4X4;
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 204 "glsl_lexer.lpp"
+#line 206 "glsl_lexer.lpp"
 KEYWORD(120, 120, MAT2X2);
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 205 "glsl_lexer.lpp"
+#line 207 "glsl_lexer.lpp"
 KEYWORD(120, 120, MAT2X3);
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 206 "glsl_lexer.lpp"
+#line 208 "glsl_lexer.lpp"
 KEYWORD(120, 120, MAT2X4);
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 207 "glsl_lexer.lpp"
+#line 209 "glsl_lexer.lpp"
 KEYWORD(120, 120, MAT3X2);
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 208 "glsl_lexer.lpp"
+#line 210 "glsl_lexer.lpp"
 KEYWORD(120, 120, MAT3X3);
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 209 "glsl_lexer.lpp"
+#line 211 "glsl_lexer.lpp"
 KEYWORD(120, 120, MAT3X4);
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 210 "glsl_lexer.lpp"
+#line 212 "glsl_lexer.lpp"
 KEYWORD(120, 120, MAT4X2);
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 211 "glsl_lexer.lpp"
+#line 213 "glsl_lexer.lpp"
 KEYWORD(120, 120, MAT4X3);
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 212 "glsl_lexer.lpp"
+#line 214 "glsl_lexer.lpp"
 KEYWORD(120, 120, MAT4X4);
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 214 "glsl_lexer.lpp"
+#line 216 "glsl_lexer.lpp"
 return IN_TOK;
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 215 "glsl_lexer.lpp"
+#line 217 "glsl_lexer.lpp"
 return OUT_TOK;
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 216 "glsl_lexer.lpp"
+#line 218 "glsl_lexer.lpp"
 return INOUT_TOK;
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 217 "glsl_lexer.lpp"
+#line 219 "glsl_lexer.lpp"
 return UNIFORM;
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 218 "glsl_lexer.lpp"
+#line 220 "glsl_lexer.lpp"
 return VARYING;
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 219 "glsl_lexer.lpp"
+#line 221 "glsl_lexer.lpp"
 KEYWORD(120, 120, CENTROID);
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 220 "glsl_lexer.lpp"
+#line 222 "glsl_lexer.lpp"
 KEYWORD(120 || ES, 120 || ES, INVARIANT);
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 221 "glsl_lexer.lpp"
+#line 223 "glsl_lexer.lpp"
 KEYWORD(130 || ES, 130, FLAT);
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 222 "glsl_lexer.lpp"
+#line 224 "glsl_lexer.lpp"
 KEYWORD(130, 130, SMOOTH);
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 223 "glsl_lexer.lpp"
+#line 225 "glsl_lexer.lpp"
 KEYWORD(130, 130, NOPERSPECTIVE);
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 225 "glsl_lexer.lpp"
+#line 227 "glsl_lexer.lpp"
 return SAMPLER1D;
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 226 "glsl_lexer.lpp"
+#line 228 "glsl_lexer.lpp"
 return SAMPLER2D;
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 227 "glsl_lexer.lpp"
+#line 229 "glsl_lexer.lpp"
 return SAMPLER3D;
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 228 "glsl_lexer.lpp"
+#line 230 "glsl_lexer.lpp"
 return SAMPLERCUBE;
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 229 "glsl_lexer.lpp"
+#line 231 "glsl_lexer.lpp"
 KEYWORD(130, 130, SAMPLER1DARRAY);
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 230 "glsl_lexer.lpp"
+#line 232 "glsl_lexer.lpp"
 KEYWORD(130, 130, SAMPLER2DARRAY);
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 231 "glsl_lexer.lpp"
+#line 233 "glsl_lexer.lpp"
 return SAMPLER1DSHADOW;
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 232 "glsl_lexer.lpp"
+#line 234 "glsl_lexer.lpp"
 return SAMPLER2DSHADOW;
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 233 "glsl_lexer.lpp"
+#line 235 "glsl_lexer.lpp"
 KEYWORD(130, 130, SAMPLERCUBESHADOW);
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 234 "glsl_lexer.lpp"
+#line 236 "glsl_lexer.lpp"
 KEYWORD(130, 130, SAMPLER1DARRAYSHADOW);
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 235 "glsl_lexer.lpp"
+#line 237 "glsl_lexer.lpp"
 KEYWORD(130, 130, SAMPLER2DARRAYSHADOW);
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 236 "glsl_lexer.lpp"
+#line 238 "glsl_lexer.lpp"
 KEYWORD(130, 130, ISAMPLER1D);
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 237 "glsl_lexer.lpp"
+#line 239 "glsl_lexer.lpp"
 KEYWORD(130, 130, ISAMPLER2D);
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 238 "glsl_lexer.lpp"
+#line 240 "glsl_lexer.lpp"
 KEYWORD(130, 130, ISAMPLER3D);
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 239 "glsl_lexer.lpp"
+#line 241 "glsl_lexer.lpp"
 KEYWORD(130, 130, ISAMPLERCUBE);
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 240 "glsl_lexer.lpp"
+#line 242 "glsl_lexer.lpp"
 KEYWORD(130, 130, ISAMPLER1DARRAY);
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 241 "glsl_lexer.lpp"
+#line 243 "glsl_lexer.lpp"
 KEYWORD(130, 130, ISAMPLER2DARRAY);
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 242 "glsl_lexer.lpp"
+#line 244 "glsl_lexer.lpp"
 KEYWORD(130, 130, USAMPLER1D);
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 243 "glsl_lexer.lpp"
+#line 245 "glsl_lexer.lpp"
 KEYWORD(130, 130, USAMPLER2D);
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 244 "glsl_lexer.lpp"
+#line 246 "glsl_lexer.lpp"
 KEYWORD(130, 130, USAMPLER3D);
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 245 "glsl_lexer.lpp"
+#line 247 "glsl_lexer.lpp"
 KEYWORD(130, 130, USAMPLERCUBE);
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 246 "glsl_lexer.lpp"
+#line 248 "glsl_lexer.lpp"
 KEYWORD(130, 130, USAMPLER1DARRAY);
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 247 "glsl_lexer.lpp"
+#line 249 "glsl_lexer.lpp"
 KEYWORD(130, 130, USAMPLER2DARRAY);
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 250 "glsl_lexer.lpp"
+#line 252 "glsl_lexer.lpp"
 return STRUCT;
        YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 251 "glsl_lexer.lpp"
+#line 253 "glsl_lexer.lpp"
 return VOID_TOK;
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 253 "glsl_lexer.lpp"
+#line 255 "glsl_lexer.lpp"
 {
                  if ((yyextra->language_version >= 140)
                      || yyextra->AMD_conservative_depth_enable
@@ -1945,112 +1947,112 @@ YY_RULE_SETUP
        YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 265 "glsl_lexer.lpp"
+#line 267 "glsl_lexer.lpp"
 return INC_OP;
        YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 266 "glsl_lexer.lpp"
+#line 268 "glsl_lexer.lpp"
 return DEC_OP;
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 267 "glsl_lexer.lpp"
+#line 269 "glsl_lexer.lpp"
 return LE_OP;
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 268 "glsl_lexer.lpp"
+#line 270 "glsl_lexer.lpp"
 return GE_OP;
        YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 269 "glsl_lexer.lpp"
+#line 271 "glsl_lexer.lpp"
 return EQ_OP;
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 270 "glsl_lexer.lpp"
+#line 272 "glsl_lexer.lpp"
 return NE_OP;
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 271 "glsl_lexer.lpp"
+#line 273 "glsl_lexer.lpp"
 return AND_OP;
        YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 272 "glsl_lexer.lpp"
+#line 274 "glsl_lexer.lpp"
 return OR_OP;
        YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 273 "glsl_lexer.lpp"
+#line 275 "glsl_lexer.lpp"
 return XOR_OP;
        YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 274 "glsl_lexer.lpp"
+#line 276 "glsl_lexer.lpp"
 return LEFT_OP;
        YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 275 "glsl_lexer.lpp"
+#line 277 "glsl_lexer.lpp"
 return RIGHT_OP;
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 277 "glsl_lexer.lpp"
+#line 279 "glsl_lexer.lpp"
 return MUL_ASSIGN;
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 278 "glsl_lexer.lpp"
+#line 280 "glsl_lexer.lpp"
 return DIV_ASSIGN;
        YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 279 "glsl_lexer.lpp"
+#line 281 "glsl_lexer.lpp"
 return ADD_ASSIGN;
        YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 280 "glsl_lexer.lpp"
+#line 282 "glsl_lexer.lpp"
 return MOD_ASSIGN;
        YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 281 "glsl_lexer.lpp"
+#line 283 "glsl_lexer.lpp"
 return LEFT_ASSIGN;
        YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 282 "glsl_lexer.lpp"
+#line 284 "glsl_lexer.lpp"
 return RIGHT_ASSIGN;
        YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 283 "glsl_lexer.lpp"
+#line 285 "glsl_lexer.lpp"
 return AND_ASSIGN;
        YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 284 "glsl_lexer.lpp"
+#line 286 "glsl_lexer.lpp"
 return XOR_ASSIGN;
        YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 285 "glsl_lexer.lpp"
+#line 287 "glsl_lexer.lpp"
 return OR_ASSIGN;
        YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 286 "glsl_lexer.lpp"
+#line 288 "glsl_lexer.lpp"
 return SUB_ASSIGN;
        YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 288 "glsl_lexer.lpp"
+#line 290 "glsl_lexer.lpp"
 {
                            yylval->n = strtol(yytext, NULL, 10);
                            return IS_UINT ? UINTCONSTANT : INTCONSTANT;
@@ -2058,7 +2060,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 292 "glsl_lexer.lpp"
+#line 294 "glsl_lexer.lpp"
 {
                            yylval->n = strtol(yytext + 2, NULL, 16);
                            return IS_UINT ? UINTCONSTANT : INTCONSTANT;
@@ -2066,7 +2068,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 296 "glsl_lexer.lpp"
+#line 298 "glsl_lexer.lpp"
 {
                            yylval->n = strtol(yytext, NULL, 8);
                            return IS_UINT ? UINTCONSTANT : INTCONSTANT;
@@ -2074,7 +2076,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 301 "glsl_lexer.lpp"
+#line 303 "glsl_lexer.lpp"
 {
                            yylval->real = glsl_strtod(yytext, NULL);
                            return FLOATCONSTANT;
@@ -2082,7 +2084,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 305 "glsl_lexer.lpp"
+#line 307 "glsl_lexer.lpp"
 {
                            yylval->real = glsl_strtod(yytext, NULL);
                            return FLOATCONSTANT;
@@ -2090,7 +2092,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 309 "glsl_lexer.lpp"
+#line 311 "glsl_lexer.lpp"
 {
                            yylval->real = glsl_strtod(yytext, NULL);
                            return FLOATCONSTANT;
@@ -2098,7 +2100,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 313 "glsl_lexer.lpp"
+#line 315 "glsl_lexer.lpp"
 {
                            yylval->real = glsl_strtod(yytext, NULL);
                            return FLOATCONSTANT;
@@ -2106,7 +2108,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 317 "glsl_lexer.lpp"
+#line 319 "glsl_lexer.lpp"
 {
                            yylval->real = glsl_strtod(yytext, NULL);
                            return FLOATCONSTANT;
@@ -2114,7 +2116,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 322 "glsl_lexer.lpp"
+#line 324 "glsl_lexer.lpp"
 {
                            yylval->n = 1;
                            return BOOLCONSTANT;
@@ -2122,7 +2124,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 326 "glsl_lexer.lpp"
+#line 328 "glsl_lexer.lpp"
 {
                            yylval->n = 0;
                            return BOOLCONSTANT;
@@ -2131,427 +2133,427 @@ YY_RULE_SETUP
 /* Reserved words in GLSL 1.10. */
 case 128:
 YY_RULE_SETUP
-#line 333 "glsl_lexer.lpp"
+#line 335 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, ASM);
        YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 334 "glsl_lexer.lpp"
+#line 336 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, CLASS);
        YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 335 "glsl_lexer.lpp"
+#line 337 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, UNION);
        YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 336 "glsl_lexer.lpp"
+#line 338 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, ENUM);
        YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 337 "glsl_lexer.lpp"
+#line 339 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, TYPEDEF);
        YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 338 "glsl_lexer.lpp"
+#line 340 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, TEMPLATE);
        YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 339 "glsl_lexer.lpp"
+#line 341 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, THIS);
        YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 340 "glsl_lexer.lpp"
+#line 342 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, PACKED_TOK);
        YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 341 "glsl_lexer.lpp"
+#line 343 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, GOTO);
        YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 342 "glsl_lexer.lpp"
+#line 344 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 130, SWITCH);
        YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 343 "glsl_lexer.lpp"
+#line 345 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 130, DEFAULT);
        YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 344 "glsl_lexer.lpp"
+#line 346 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, INLINE_TOK);
        YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 345 "glsl_lexer.lpp"
+#line 347 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, NOINLINE);
        YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 346 "glsl_lexer.lpp"
+#line 348 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, VOLATILE);
        YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 347 "glsl_lexer.lpp"
+#line 349 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, PUBLIC_TOK);
        YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 348 "glsl_lexer.lpp"
+#line 350 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, STATIC);
        YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 349 "glsl_lexer.lpp"
+#line 351 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, EXTERN);
        YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 350 "glsl_lexer.lpp"
+#line 352 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, EXTERNAL);
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 351 "glsl_lexer.lpp"
+#line 353 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, INTERFACE);
        YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 352 "glsl_lexer.lpp"
+#line 354 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, LONG_TOK);
        YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 353 "glsl_lexer.lpp"
+#line 355 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, SHORT_TOK);
        YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 354 "glsl_lexer.lpp"
+#line 356 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 400, DOUBLE_TOK);
        YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 355 "glsl_lexer.lpp"
+#line 357 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, HALF);
        YY_BREAK
 case 151:
 YY_RULE_SETUP
-#line 356 "glsl_lexer.lpp"
+#line 358 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, FIXED_TOK);
        YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 357 "glsl_lexer.lpp"
+#line 359 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, UNSIGNED);
        YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 358 "glsl_lexer.lpp"
+#line 360 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, INPUT_TOK);
        YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 359 "glsl_lexer.lpp"
+#line 361 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, OUTPUT);
        YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 360 "glsl_lexer.lpp"
+#line 362 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, HVEC2);
        YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 361 "glsl_lexer.lpp"
+#line 363 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, HVEC3);
        YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 362 "glsl_lexer.lpp"
+#line 364 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, HVEC4);
        YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 363 "glsl_lexer.lpp"
+#line 365 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 400, DVEC2);
        YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 364 "glsl_lexer.lpp"
+#line 366 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 400, DVEC3);
        YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 365 "glsl_lexer.lpp"
+#line 367 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 400, DVEC4);
        YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 366 "glsl_lexer.lpp"
+#line 368 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, FVEC2);
        YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 367 "glsl_lexer.lpp"
+#line 369 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, FVEC3);
        YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 368 "glsl_lexer.lpp"
+#line 370 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, FVEC4);
        YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 369 "glsl_lexer.lpp"
+#line 371 "glsl_lexer.lpp"
 return SAMPLER2DRECT;
        YY_BREAK
 case 165:
 YY_RULE_SETUP
-#line 370 "glsl_lexer.lpp"
+#line 372 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, SAMPLER3DRECT);
        YY_BREAK
 case 166:
 YY_RULE_SETUP
-#line 371 "glsl_lexer.lpp"
+#line 373 "glsl_lexer.lpp"
 return SAMPLER2DRECTSHADOW;
        YY_BREAK
 case 167:
 YY_RULE_SETUP
-#line 372 "glsl_lexer.lpp"
+#line 374 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, SIZEOF);
        YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 373 "glsl_lexer.lpp"
+#line 375 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, CAST);
        YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 374 "glsl_lexer.lpp"
+#line 376 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, NAMESPACE);
        YY_BREAK
 case 170:
 YY_RULE_SETUP
-#line 375 "glsl_lexer.lpp"
+#line 377 "glsl_lexer.lpp"
 KEYWORD(110 || ES, 999, USING);
        YY_BREAK
 /* Additional reserved words in GLSL 1.20. */
 case 171:
 YY_RULE_SETUP
-#line 378 "glsl_lexer.lpp"
+#line 380 "glsl_lexer.lpp"
 KEYWORD(120, 130 || ES, LOWP);
        YY_BREAK
 case 172:
 YY_RULE_SETUP
-#line 379 "glsl_lexer.lpp"
+#line 381 "glsl_lexer.lpp"
 KEYWORD(120, 130 || ES, MEDIUMP);
        YY_BREAK
 case 173:
 YY_RULE_SETUP
-#line 380 "glsl_lexer.lpp"
+#line 382 "glsl_lexer.lpp"
 KEYWORD(120, 130 || ES, HIGHP);
        YY_BREAK
 case 174:
 YY_RULE_SETUP
-#line 381 "glsl_lexer.lpp"
+#line 383 "glsl_lexer.lpp"
 KEYWORD(120, 130 || ES, PRECISION);
        YY_BREAK
 /* Additional reserved words in GLSL 1.30. */
 case 175:
 YY_RULE_SETUP
-#line 384 "glsl_lexer.lpp"
+#line 386 "glsl_lexer.lpp"
 KEYWORD(130, 130, CASE);
        YY_BREAK
 case 176:
 YY_RULE_SETUP
-#line 385 "glsl_lexer.lpp"
+#line 387 "glsl_lexer.lpp"
 KEYWORD(130, 999, COMMON);
        YY_BREAK
 case 177:
 YY_RULE_SETUP
-#line 386 "glsl_lexer.lpp"
+#line 388 "glsl_lexer.lpp"
 KEYWORD(130, 999, PARTITION);
        YY_BREAK
 case 178:
 YY_RULE_SETUP
-#line 387 "glsl_lexer.lpp"
+#line 389 "glsl_lexer.lpp"
 KEYWORD(130, 999, ACTIVE);
        YY_BREAK
 case 179:
 YY_RULE_SETUP
-#line 388 "glsl_lexer.lpp"
+#line 390 "glsl_lexer.lpp"
 KEYWORD(130 || ES, 999, SUPERP);
        YY_BREAK
 case 180:
 YY_RULE_SETUP
-#line 389 "glsl_lexer.lpp"
+#line 391 "glsl_lexer.lpp"
 KEYWORD(130, 140, SAMPLERBUFFER);
        YY_BREAK
 case 181:
 YY_RULE_SETUP
-#line 390 "glsl_lexer.lpp"
+#line 392 "glsl_lexer.lpp"
 KEYWORD(130, 999, FILTER);
        YY_BREAK
 case 182:
 YY_RULE_SETUP
-#line 391 "glsl_lexer.lpp"
+#line 393 "glsl_lexer.lpp"
 KEYWORD(130, 999, IMAGE1D);
        YY_BREAK
 case 183:
 YY_RULE_SETUP
-#line 392 "glsl_lexer.lpp"
+#line 394 "glsl_lexer.lpp"
 KEYWORD(130, 999, IMAGE2D);
        YY_BREAK
 case 184:
 YY_RULE_SETUP
-#line 393 "glsl_lexer.lpp"
+#line 395 "glsl_lexer.lpp"
 KEYWORD(130, 999, IMAGE3D);
        YY_BREAK
 case 185:
 YY_RULE_SETUP
-#line 394 "glsl_lexer.lpp"
+#line 396 "glsl_lexer.lpp"
 KEYWORD(130, 999, IMAGECUBE);
        YY_BREAK
 case 186:
 YY_RULE_SETUP
-#line 395 "glsl_lexer.lpp"
+#line 397 "glsl_lexer.lpp"
 KEYWORD(130, 999, IIMAGE1D);
        YY_BREAK
 case 187:
 YY_RULE_SETUP
-#line 396 "glsl_lexer.lpp"
+#line 398 "glsl_lexer.lpp"
 KEYWORD(130, 999, IIMAGE2D);
        YY_BREAK
 case 188:
 YY_RULE_SETUP
-#line 397 "glsl_lexer.lpp"
+#line 399 "glsl_lexer.lpp"
 KEYWORD(130, 999, IIMAGE3D);
        YY_BREAK
 case 189:
 YY_RULE_SETUP
-#line 398 "glsl_lexer.lpp"
+#line 400 "glsl_lexer.lpp"
 KEYWORD(130, 999, IIMAGECUBE);
        YY_BREAK
 case 190:
 YY_RULE_SETUP
-#line 399 "glsl_lexer.lpp"
+#line 401 "glsl_lexer.lpp"
 KEYWORD(130, 999, UIMAGE1D);
        YY_BREAK
 case 191:
 YY_RULE_SETUP
-#line 400 "glsl_lexer.lpp"
+#line 402 "glsl_lexer.lpp"
 KEYWORD(130, 999, UIMAGE2D);
        YY_BREAK
 case 192:
 YY_RULE_SETUP
-#line 401 "glsl_lexer.lpp"
+#line 403 "glsl_lexer.lpp"
 KEYWORD(130, 999, UIMAGE3D);
        YY_BREAK
 case 193:
 YY_RULE_SETUP
-#line 402 "glsl_lexer.lpp"
+#line 404 "glsl_lexer.lpp"
 KEYWORD(130, 999, UIMAGECUBE);
        YY_BREAK
 case 194:
 YY_RULE_SETUP
-#line 403 "glsl_lexer.lpp"
+#line 405 "glsl_lexer.lpp"
 KEYWORD(130, 999, IMAGE1DARRAY);
        YY_BREAK
 case 195:
 YY_RULE_SETUP
-#line 404 "glsl_lexer.lpp"
+#line 406 "glsl_lexer.lpp"
 KEYWORD(130, 999, IMAGE2DARRAY);
        YY_BREAK
 case 196:
 YY_RULE_SETUP
-#line 405 "glsl_lexer.lpp"
+#line 407 "glsl_lexer.lpp"
 KEYWORD(130, 999, IIMAGE1DARRAY);
        YY_BREAK
 case 197:
 YY_RULE_SETUP
-#line 406 "glsl_lexer.lpp"
+#line 408 "glsl_lexer.lpp"
 KEYWORD(130, 999, IIMAGE2DARRAY);
        YY_BREAK
 case 198:
 YY_RULE_SETUP
-#line 407 "glsl_lexer.lpp"
+#line 409 "glsl_lexer.lpp"
 KEYWORD(130, 999, UIMAGE1DARRAY);
        YY_BREAK
 case 199:
 YY_RULE_SETUP
-#line 408 "glsl_lexer.lpp"
+#line 410 "glsl_lexer.lpp"
 KEYWORD(130, 999, UIMAGE2DARRAY);
        YY_BREAK
 case 200:
 YY_RULE_SETUP
-#line 409 "glsl_lexer.lpp"
+#line 411 "glsl_lexer.lpp"
 KEYWORD(130, 999, IMAGE1DSHADOW);
        YY_BREAK
 case 201:
 YY_RULE_SETUP
-#line 410 "glsl_lexer.lpp"
+#line 412 "glsl_lexer.lpp"
 KEYWORD(130, 999, IMAGE2DSHADOW);
        YY_BREAK
 case 202:
 YY_RULE_SETUP
-#line 411 "glsl_lexer.lpp"
+#line 413 "glsl_lexer.lpp"
 KEYWORD(130, 999, IMAGE1DARRAYSHADOW);
        YY_BREAK
 case 203:
 YY_RULE_SETUP
-#line 412 "glsl_lexer.lpp"
+#line 414 "glsl_lexer.lpp"
 KEYWORD(130, 999, IMAGE2DARRAYSHADOW);
        YY_BREAK
 case 204:
 YY_RULE_SETUP
-#line 413 "glsl_lexer.lpp"
+#line 415 "glsl_lexer.lpp"
 KEYWORD(130, 999, IMAGEBUFFER);
        YY_BREAK
 case 205:
 YY_RULE_SETUP
-#line 414 "glsl_lexer.lpp"
+#line 416 "glsl_lexer.lpp"
 KEYWORD(130, 999, IIMAGEBUFFER);
        YY_BREAK
 case 206:
 YY_RULE_SETUP
-#line 415 "glsl_lexer.lpp"
+#line 417 "glsl_lexer.lpp"
 KEYWORD(130, 999, UIMAGEBUFFER);
        YY_BREAK
 case 207:
 YY_RULE_SETUP
-#line 416 "glsl_lexer.lpp"
+#line 418 "glsl_lexer.lpp"
 KEYWORD(130, 999, ROW_MAJOR);
        YY_BREAK
 case 208:
 YY_RULE_SETUP
-#line 418 "glsl_lexer.lpp"
+#line 420 "glsl_lexer.lpp"
 {
                            struct _mesa_glsl_parse_state *state = yyextra;
                            void *ctx = state;  
                            yylval->identifier = ralloc_strdup(ctx, yytext);
-                           return IDENTIFIER;
+                           return classify_identifier(state, yytext);
                        }
        YY_BREAK
 case 209:
 YY_RULE_SETUP
-#line 425 "glsl_lexer.lpp"
+#line 427 "glsl_lexer.lpp"
 { return yytext[0]; }
        YY_BREAK
 case 210:
 YY_RULE_SETUP
-#line 427 "glsl_lexer.lpp"
+#line 429 "glsl_lexer.lpp"
 ECHO;
        YY_BREAK
-#line 2555 "glsl_lexer.cpp"
+#line 2557 "glsl_lexer.cpp"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(PP):
 case YY_STATE_EOF(PRAGMA):
@@ -3694,9 +3696,20 @@ void _mesa_glsl_free (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 427 "glsl_lexer.lpp"
+#line 429 "glsl_lexer.lpp"
+
 
 
+int
+classify_identifier(struct _mesa_glsl_parse_state *state, const char *name)
+{
+   if (state->symbols->get_variable(name) || state->symbols->get_function(name))
+      return IDENTIFIER;
+   else if (state->symbols->get_type(name))
+      return TYPE_IDENTIFIER;
+   else
+      return NEW_IDENTIFIER;
+}
 
 void
 _mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state, const char *string)
index 6943599..1db7e90 100644 (file)
      VOID_TOK = 329,
      WHILE = 330,
      IDENTIFIER = 331,
-     FLOATCONSTANT = 332,
-     INTCONSTANT = 333,
-     UINTCONSTANT = 334,
-     BOOLCONSTANT = 335,
-     FIELD_SELECTION = 336,
-     LEFT_OP = 337,
-     RIGHT_OP = 338,
-     INC_OP = 339,
-     DEC_OP = 340,
-     LE_OP = 341,
-     GE_OP = 342,
-     EQ_OP = 343,
-     NE_OP = 344,
-     AND_OP = 345,
-     OR_OP = 346,
-     XOR_OP = 347,
-     MUL_ASSIGN = 348,
-     DIV_ASSIGN = 349,
-     ADD_ASSIGN = 350,
-     MOD_ASSIGN = 351,
-     LEFT_ASSIGN = 352,
-     RIGHT_ASSIGN = 353,
-     AND_ASSIGN = 354,
-     XOR_ASSIGN = 355,
-     OR_ASSIGN = 356,
-     SUB_ASSIGN = 357,
-     INVARIANT = 358,
-     LOWP = 359,
-     MEDIUMP = 360,
-     HIGHP = 361,
-     SUPERP = 362,
-     PRECISION = 363,
-     VERSION = 364,
-     EXTENSION = 365,
-     LINE = 366,
-     COLON = 367,
-     EOL = 368,
-     INTERFACE = 369,
-     OUTPUT = 370,
-     PRAGMA_DEBUG_ON = 371,
-     PRAGMA_DEBUG_OFF = 372,
-     PRAGMA_OPTIMIZE_ON = 373,
-     PRAGMA_OPTIMIZE_OFF = 374,
-     PRAGMA_INVARIANT_ALL = 375,
-     LAYOUT_TOK = 376,
-     ASM = 377,
-     CLASS = 378,
-     UNION = 379,
-     ENUM = 380,
-     TYPEDEF = 381,
-     TEMPLATE = 382,
-     THIS = 383,
-     PACKED_TOK = 384,
-     GOTO = 385,
-     INLINE_TOK = 386,
-     NOINLINE = 387,
-     VOLATILE = 388,
-     PUBLIC_TOK = 389,
-     STATIC = 390,
-     EXTERN = 391,
-     EXTERNAL = 392,
-     LONG_TOK = 393,
-     SHORT_TOK = 394,
-     DOUBLE_TOK = 395,
-     HALF = 396,
-     FIXED_TOK = 397,
-     UNSIGNED = 398,
-     INPUT_TOK = 399,
-     OUPTUT = 400,
-     HVEC2 = 401,
-     HVEC3 = 402,
-     HVEC4 = 403,
-     DVEC2 = 404,
-     DVEC3 = 405,
-     DVEC4 = 406,
-     FVEC2 = 407,
-     FVEC3 = 408,
-     FVEC4 = 409,
-     SAMPLER2DRECT = 410,
-     SAMPLER3DRECT = 411,
-     SAMPLER2DRECTSHADOW = 412,
-     SIZEOF = 413,
-     CAST = 414,
-     NAMESPACE = 415,
-     USING = 416,
-     ERROR_TOK = 417,
-     COMMON = 418,
-     PARTITION = 419,
-     ACTIVE = 420,
-     SAMPLERBUFFER = 421,
-     FILTER = 422,
-     IMAGE1D = 423,
-     IMAGE2D = 424,
-     IMAGE3D = 425,
-     IMAGECUBE = 426,
-     IMAGE1DARRAY = 427,
-     IMAGE2DARRAY = 428,
-     IIMAGE1D = 429,
-     IIMAGE2D = 430,
-     IIMAGE3D = 431,
-     IIMAGECUBE = 432,
-     IIMAGE1DARRAY = 433,
-     IIMAGE2DARRAY = 434,
-     UIMAGE1D = 435,
-     UIMAGE2D = 436,
-     UIMAGE3D = 437,
-     UIMAGECUBE = 438,
-     UIMAGE1DARRAY = 439,
-     UIMAGE2DARRAY = 440,
-     IMAGE1DSHADOW = 441,
-     IMAGE2DSHADOW = 442,
-     IMAGEBUFFER = 443,
-     IIMAGEBUFFER = 444,
-     UIMAGEBUFFER = 445,
-     IMAGE1DARRAYSHADOW = 446,
-     IMAGE2DARRAYSHADOW = 447,
-     ROW_MAJOR = 448
+     TYPE_IDENTIFIER = 332,
+     NEW_IDENTIFIER = 333,
+     FLOATCONSTANT = 334,
+     INTCONSTANT = 335,
+     UINTCONSTANT = 336,
+     BOOLCONSTANT = 337,
+     FIELD_SELECTION = 338,
+     LEFT_OP = 339,
+     RIGHT_OP = 340,
+     INC_OP = 341,
+     DEC_OP = 342,
+     LE_OP = 343,
+     GE_OP = 344,
+     EQ_OP = 345,
+     NE_OP = 346,
+     AND_OP = 347,
+     OR_OP = 348,
+     XOR_OP = 349,
+     MUL_ASSIGN = 350,
+     DIV_ASSIGN = 351,
+     ADD_ASSIGN = 352,
+     MOD_ASSIGN = 353,
+     LEFT_ASSIGN = 354,
+     RIGHT_ASSIGN = 355,
+     AND_ASSIGN = 356,
+     XOR_ASSIGN = 357,
+     OR_ASSIGN = 358,
+     SUB_ASSIGN = 359,
+     INVARIANT = 360,
+     LOWP = 361,
+     MEDIUMP = 362,
+     HIGHP = 363,
+     SUPERP = 364,
+     PRECISION = 365,
+     VERSION = 366,
+     EXTENSION = 367,
+     LINE = 368,
+     COLON = 369,
+     EOL = 370,
+     INTERFACE = 371,
+     OUTPUT = 372,
+     PRAGMA_DEBUG_ON = 373,
+     PRAGMA_DEBUG_OFF = 374,
+     PRAGMA_OPTIMIZE_ON = 375,
+     PRAGMA_OPTIMIZE_OFF = 376,
+     PRAGMA_INVARIANT_ALL = 377,
+     LAYOUT_TOK = 378,
+     ASM = 379,
+     CLASS = 380,
+     UNION = 381,
+     ENUM = 382,
+     TYPEDEF = 383,
+     TEMPLATE = 384,
+     THIS = 385,
+     PACKED_TOK = 386,
+     GOTO = 387,
+     INLINE_TOK = 388,
+     NOINLINE = 389,
+     VOLATILE = 390,
+     PUBLIC_TOK = 391,
+     STATIC = 392,
+     EXTERN = 393,
+     EXTERNAL = 394,
+     LONG_TOK = 395,
+     SHORT_TOK = 396,
+     DOUBLE_TOK = 397,
+     HALF = 398,
+     FIXED_TOK = 399,
+     UNSIGNED = 400,
+     INPUT_TOK = 401,
+     OUPTUT = 402,
+     HVEC2 = 403,
+     HVEC3 = 404,
+     HVEC4 = 405,
+     DVEC2 = 406,
+     DVEC3 = 407,
+     DVEC4 = 408,
+     FVEC2 = 409,
+     FVEC3 = 410,
+     FVEC4 = 411,
+     SAMPLER2DRECT = 412,
+     SAMPLER3DRECT = 413,
+     SAMPLER2DRECTSHADOW = 414,
+     SIZEOF = 415,
+     CAST = 416,
+     NAMESPACE = 417,
+     USING = 418,
+     ERROR_TOK = 419,
+     COMMON = 420,
+     PARTITION = 421,
+     ACTIVE = 422,
+     SAMPLERBUFFER = 423,
+     FILTER = 424,
+     IMAGE1D = 425,
+     IMAGE2D = 426,
+     IMAGE3D = 427,
+     IMAGECUBE = 428,
+     IMAGE1DARRAY = 429,
+     IMAGE2DARRAY = 430,
+     IIMAGE1D = 431,
+     IIMAGE2D = 432,
+     IIMAGE3D = 433,
+     IIMAGECUBE = 434,
+     IIMAGE1DARRAY = 435,
+     IIMAGE2DARRAY = 436,
+     UIMAGE1D = 437,
+     UIMAGE2D = 438,
+     UIMAGE3D = 439,
+     UIMAGECUBE = 440,
+     UIMAGE1DARRAY = 441,
+     UIMAGE2DARRAY = 442,
+     IMAGE1DSHADOW = 443,
+     IMAGE2DSHADOW = 444,
+     IMAGEBUFFER = 445,
+     IIMAGEBUFFER = 446,
+     UIMAGEBUFFER = 447,
+     IMAGE1DARRAYSHADOW = 448,
+     IMAGE2DARRAYSHADOW = 449,
+     ROW_MAJOR = 450
    };
 #endif
 
@@ -374,7 +376,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 378 "glsl_parser.cpp"
+#line 380 "glsl_parser.cpp"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -399,7 +401,7 @@ typedef struct YYLTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 403 "glsl_parser.cpp"
+#line 405 "glsl_parser.cpp"
 
 #ifdef short
 # undef short
@@ -616,20 +618,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  5
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3738
+#define YYLAST   3692
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  218
+#define YYNTOKENS  220
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  87
+#define YYNNTS  93
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  279
+#define YYNRULES  291
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  415
+#define YYNSTATES  434
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   448
+#define YYMAXUTOK   450
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -640,16 +642,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,   202,     2,     2,     2,   206,   209,     2,
-     194,   195,   204,   200,   199,   201,   198,   205,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   213,   215,
-     207,   214,   208,   212,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   204,     2,     2,     2,   208,   211,     2,
+     196,   197,   206,   202,   201,   203,   200,   207,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   215,   217,
+     209,   216,   210,   214,     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,   196,     2,   197,   210,     2,     2,     2,     2,     2,
+       2,   198,     2,   199,   212,     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,   216,   211,   217,   203,     2,     2,     2,
+       2,     2,     2,   218,   213,   219,   205,     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,
@@ -681,7 +683,8 @@ static const yytype_uint8 yytranslate[] =
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195
 };
 
 #if YYDEBUG
@@ -690,151 +693,158 @@ static const yytype_uint8 yytranslate[] =
 static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     4,     9,    10,    14,    17,    20,    23,
-      26,    29,    30,    33,    39,    41,    44,    46,    48,    50,
-      52,    54,    56,    60,    62,    67,    69,    73,    76,    79,
-      81,    83,    85,    89,    92,    95,    98,   100,   103,   107,
-     110,   112,   114,   116,   118,   121,   124,   127,   129,   131,
-     133,   135,   137,   141,   145,   149,   151,   155,   159,   161,
-     165,   169,   171,   175,   179,   183,   187,   189,   193,   197,
-     199,   203,   205,   209,   211,   215,   217,   221,   223,   227,
-     229,   233,   235,   241,   243,   247,   249,   251,   253,   255,
-     257,   259,   261,   263,   265,   267,   269,   271,   275,   277,
-     280,   283,   288,   291,   293,   295,   298,   302,   306,   309,
-     315,   319,   322,   326,   329,   330,   332,   334,   336,   338,
-     340,   344,   350,   357,   365,   374,   380,   382,   385,   390,
-     396,   403,   411,   416,   419,   421,   424,   429,   431,   435,
-     437,   441,   443,   445,   447,   449,   451,   453,   456,   458,
-     461,   464,   468,   470,   472,   474,   476,   479,   481,   483,
-     486,   489,   491,   493,   496,   498,   502,   507,   509,   511,
-     513,   515,   517,   519,   521,   523,   525,   527,   529,   531,
-     533,   535,   537,   539,   541,   543,   545,   547,   549,   551,
-     553,   555,   557,   559,   561,   563,   565,   567,   569,   571,
-     573,   575,   577,   579,   581,   583,   585,   587,   589,   591,
-     593,   595,   597,   599,   601,   603,   605,   607,   609,   611,
-     613,   615,   617,   619,   621,   627,   632,   634,   637,   641,
-     643,   647,   649,   654,   656,   658,   660,   662,   664,   666,
-     668,   670,   672,   674,   676,   679,   683,   685,   687,   690,
-     694,   696,   699,   701,   704,   710,   714,   716,   718,   723,
-     729,   733,   736,   742,   750,   757,   759,   761,   763,   764,
-     767,   771,   774,   777,   780,   784,   787,   789,   791,   793
+      26,    29,    30,    33,    35,    37,    39,    45,    47,    50,
+      52,    54,    56,    58,    60,    62,    64,    68,    70,    75,
+      77,    81,    84,    87,    89,    91,    93,    97,   100,   103,
+     106,   108,   111,   115,   118,   120,   122,   124,   127,   130,
+     133,   135,   138,   142,   145,   147,   150,   153,   156,   158,
+     160,   162,   164,   166,   170,   174,   178,   180,   184,   188,
+     190,   194,   198,   200,   204,   208,   212,   216,   218,   222,
+     226,   228,   232,   234,   238,   240,   244,   246,   250,   252,
+     256,   258,   262,   264,   270,   272,   276,   278,   280,   282,
+     284,   286,   288,   290,   292,   294,   296,   298,   300,   304,
+     306,   309,   312,   317,   320,   322,   324,   327,   331,   335,
+     338,   344,   348,   351,   355,   358,   359,   361,   363,   365,
+     367,   369,   373,   379,   386,   394,   403,   409,   411,   414,
+     419,   425,   432,   440,   445,   448,   450,   453,   458,   460,
+     464,   466,   470,   472,   474,   476,   478,   480,   482,   485,
+     487,   490,   493,   497,   499,   501,   503,   505,   508,   510,
+     512,   515,   518,   520,   522,   525,   527,   531,   536,   538,
+     540,   542,   544,   546,   548,   550,   552,   554,   556,   558,
+     560,   562,   564,   566,   568,   570,   572,   574,   576,   578,
+     580,   582,   584,   586,   588,   590,   592,   594,   596,   598,
+     600,   602,   604,   606,   608,   610,   612,   614,   616,   618,
+     620,   622,   624,   626,   628,   630,   632,   634,   636,   638,
+     640,   642,   644,   646,   648,   650,   656,   661,   663,   666,
+     670,   672,   676,   678,   683,   685,   687,   689,   691,   693,
+     695,   697,   699,   701,   703,   705,   708,   709,   714,   716,
+     718,   721,   725,   727,   730,   732,   735,   741,   745,   747,
+     749,   754,   760,   764,   767,   773,   781,   788,   790,   792,
+     794,   795,   798,   802,   805,   808,   811,   815,   818,   820,
+     822,   824
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     219,     0,    -1,    -1,   221,   223,   220,   225,    -1,    -1,
-     109,    78,   113,    -1,   116,   113,    -1,   117,   113,    -1,
-     118,   113,    -1,   119,   113,    -1,   120,   113,    -1,    -1,
-     223,   224,    -1,   110,    76,   112,    76,   113,    -1,   303,
-      -1,   225,   303,    -1,    76,    -1,   226,    -1,    78,    -1,
-      79,    -1,    77,    -1,    80,    -1,   194,   253,   195,    -1,
-     227,    -1,   228,   196,   229,   197,    -1,   230,    -1,   228,
-     198,    76,    -1,   228,    84,    -1,   228,    85,    -1,   253,
-      -1,   231,    -1,   232,    -1,   228,   198,   232,    -1,   234,
-     195,    -1,   233,   195,    -1,   235,    74,    -1,   235,    -1,
-     235,   251,    -1,   234,   199,   251,    -1,   236,   194,    -1,
-     274,    -1,    76,    -1,    81,    -1,   228,    -1,    84,   237,
-      -1,    85,   237,    -1,   238,   237,    -1,   200,    -1,   201,
-      -1,   202,    -1,   203,    -1,   237,    -1,   239,   204,   237,
-      -1,   239,   205,   237,    -1,   239,   206,   237,    -1,   239,
-      -1,   240,   200,   239,    -1,   240,   201,   239,    -1,   240,
-      -1,   241,    82,   240,    -1,   241,    83,   240,    -1,   241,
-      -1,   242,   207,   241,    -1,   242,   208,   241,    -1,   242,
-      86,   241,    -1,   242,    87,   241,    -1,   242,    -1,   243,
-      88,   242,    -1,   243,    89,   242,    -1,   243,    -1,   244,
-     209,   243,    -1,   244,    -1,   245,   210,   244,    -1,   245,
-      -1,   246,   211,   245,    -1,   246,    -1,   247,    90,   246,
-      -1,   247,    -1,   248,    92,   247,    -1,   248,    -1,   249,
-      91,   248,    -1,   249,    -1,   249,   212,   253,   213,   251,
-      -1,   250,    -1,   237,   252,   251,    -1,   214,    -1,    93,
-      -1,    94,    -1,    96,    -1,    95,    -1,   102,    -1,    97,
-      -1,    98,    -1,    99,    -1,   100,    -1,   101,    -1,   251,
-      -1,   253,   199,   251,    -1,   250,    -1,   256,   215,    -1,
-     264,   215,    -1,   108,   278,   275,   215,    -1,   257,   195,
-      -1,   259,    -1,   258,    -1,   259,   261,    -1,   258,   199,
-     261,    -1,   266,    76,   194,    -1,   274,    76,    -1,   274,
-      76,   196,   254,   197,    -1,   271,   262,   260,    -1,   262,
-     260,    -1,   271,   262,   263,    -1,   262,   263,    -1,    -1,
-      33,    -1,    34,    -1,    35,    -1,   274,    -1,   265,    -1,
-     264,   199,    76,    -1,   264,   199,    76,   196,   197,    -1,
-     264,   199,    76,   196,   254,   197,    -1,   264,   199,    76,
-     196,   197,   214,   284,    -1,   264,   199,    76,   196,   254,
-     197,   214,   284,    -1,   264,   199,    76,   214,   284,    -1,
-     266,    -1,   266,    76,    -1,   266,    76,   196,   197,    -1,
-     266,    76,   196,   254,   197,    -1,   266,    76,   196,   197,
-     214,   284,    -1,   266,    76,   196,   254,   197,   214,   284,
-      -1,   266,    76,   214,   284,    -1,   103,    76,    -1,   274,
-      -1,   272,   274,    -1,   121,   194,   268,   195,    -1,   269,
-      -1,   268,   199,   269,    -1,    76,    -1,    76,   214,    78,
-      -1,    40,    -1,    39,    -1,    38,    -1,     4,    -1,   273,
-      -1,   267,    -1,   267,   273,    -1,   270,    -1,   270,   273,
-      -1,   103,   273,    -1,   103,   270,   273,    -1,   103,    -1,
-       4,    -1,     3,    -1,    37,    -1,    32,    37,    -1,    33,
-      -1,    34,    -1,    32,    33,    -1,    32,    34,    -1,    36,
-      -1,   275,    -1,   278,   275,    -1,   276,    -1,   276,   196,
-     197,    -1,   276,   196,   254,   197,    -1,   277,    -1,   279,
-      -1,    76,    -1,    74,    -1,     6,    -1,     7,    -1,     8,
-      -1,     5,    -1,    29,    -1,    30,    -1,    31,    -1,    20,
-      -1,    21,    -1,    22,    -1,    23,    -1,    24,    -1,    25,
-      -1,    26,    -1,    27,    -1,    28,    -1,    41,    -1,    42,
-      -1,    43,    -1,    44,    -1,    45,    -1,    46,    -1,    47,
-      -1,    48,    -1,    49,    -1,    50,    -1,    51,    -1,   155,
-      -1,    52,    -1,    53,    -1,    54,    -1,    55,    -1,   157,
-      -1,    56,    -1,    57,    -1,    58,    -1,    59,    -1,    60,
-      -1,    61,    -1,    62,    -1,    63,    -1,    64,    -1,    65,
-      -1,    66,    -1,    67,    -1,    68,    -1,    69,    -1,    70,
-      -1,    71,    -1,    72,    -1,   106,    -1,   105,    -1,   104,
-      -1,    73,    76,   216,   280,   217,    -1,    73,   216,   280,
-     217,    -1,   281,    -1,   280,   281,    -1,   274,   282,   215,
-      -1,   283,    -1,   282,   199,   283,    -1,    76,    -1,    76,
-     196,   254,   197,    -1,   251,    -1,   255,    -1,   288,    -1,
-     287,    -1,   285,    -1,   292,    -1,   293,    -1,   296,    -1,
-     297,    -1,   298,    -1,   302,    -1,   216,   217,    -1,   216,
-     291,   217,    -1,   290,    -1,   287,    -1,   216,   217,    -1,
-     216,   291,   217,    -1,   286,    -1,   291,   286,    -1,   215,
-      -1,   253,   215,    -1,    14,   194,   253,   195,   294,    -1,
-     286,    12,   286,    -1,   286,    -1,   253,    -1,   266,    76,
-     214,   284,    -1,    17,   194,   253,   195,   288,    -1,    18,
-     253,   213,    -1,    19,   213,    -1,    75,   194,   295,   195,
-     289,    -1,    11,   286,    75,   194,   253,   195,   215,    -1,
-      13,   194,   299,   301,   195,   289,    -1,   292,    -1,   285,
-      -1,   295,    -1,    -1,   300,   215,    -1,   300,   215,   253,
-      -1,    10,   215,    -1,     9,   215,    -1,    16,   215,    -1,
-      16,   253,   215,    -1,    15,   215,    -1,   304,    -1,   255,
-      -1,   222,    -1,   256,   290,    -1
+     221,     0,    -1,    -1,   223,   225,   222,   228,    -1,    -1,
+     111,    80,   115,    -1,   118,   115,    -1,   119,   115,    -1,
+     120,   115,    -1,   121,   115,    -1,   122,   115,    -1,    -1,
+     225,   227,    -1,    76,    -1,    77,    -1,    78,    -1,   112,
+     226,   114,   226,   115,    -1,   311,    -1,   228,   311,    -1,
+      76,    -1,    78,    -1,   229,    -1,    80,    -1,    81,    -1,
+      79,    -1,    82,    -1,   196,   260,   197,    -1,   230,    -1,
+     231,   198,   232,   199,    -1,   233,    -1,   231,   200,   226,
+      -1,   231,    86,    -1,   231,    87,    -1,   260,    -1,   234,
+      -1,   235,    -1,   231,   200,   240,    -1,   237,   197,    -1,
+     236,   197,    -1,   238,    74,    -1,   238,    -1,   238,   258,
+      -1,   237,   201,   258,    -1,   239,   196,    -1,   281,    -1,
+     229,    -1,    83,    -1,   242,   197,    -1,   241,   197,    -1,
+     243,    74,    -1,   243,    -1,   243,   258,    -1,   242,   201,
+     258,    -1,   229,   196,    -1,   231,    -1,    86,   244,    -1,
+      87,   244,    -1,   245,   244,    -1,   202,    -1,   203,    -1,
+     204,    -1,   205,    -1,   244,    -1,   246,   206,   244,    -1,
+     246,   207,   244,    -1,   246,   208,   244,    -1,   246,    -1,
+     247,   202,   246,    -1,   247,   203,   246,    -1,   247,    -1,
+     248,    84,   247,    -1,   248,    85,   247,    -1,   248,    -1,
+     249,   209,   248,    -1,   249,   210,   248,    -1,   249,    88,
+     248,    -1,   249,    89,   248,    -1,   249,    -1,   250,    90,
+     249,    -1,   250,    91,   249,    -1,   250,    -1,   251,   211,
+     250,    -1,   251,    -1,   252,   212,   251,    -1,   252,    -1,
+     253,   213,   252,    -1,   253,    -1,   254,    92,   253,    -1,
+     254,    -1,   255,    94,   254,    -1,   255,    -1,   256,    93,
+     255,    -1,   256,    -1,   256,   214,   260,   215,   258,    -1,
+     257,    -1,   244,   259,   258,    -1,   216,    -1,    95,    -1,
+      96,    -1,    98,    -1,    97,    -1,   104,    -1,    99,    -1,
+     100,    -1,   101,    -1,   102,    -1,   103,    -1,   258,    -1,
+     260,   201,   258,    -1,   257,    -1,   263,   217,    -1,   271,
+     217,    -1,   110,   285,   282,   217,    -1,   264,   197,    -1,
+     266,    -1,   265,    -1,   266,   268,    -1,   265,   201,   268,
+      -1,   273,   229,   196,    -1,   281,   226,    -1,   281,   226,
+     198,   261,   199,    -1,   278,   269,   267,    -1,   269,   267,
+      -1,   278,   269,   270,    -1,   269,   270,    -1,    -1,    33,
+      -1,    34,    -1,    35,    -1,   281,    -1,   272,    -1,   271,
+     201,   226,    -1,   271,   201,   226,   198,   199,    -1,   271,
+     201,   226,   198,   261,   199,    -1,   271,   201,   226,   198,
+     199,   216,   291,    -1,   271,   201,   226,   198,   261,   199,
+     216,   291,    -1,   271,   201,   226,   216,   291,    -1,   273,
+      -1,   273,   226,    -1,   273,   226,   198,   199,    -1,   273,
+     226,   198,   261,   199,    -1,   273,   226,   198,   199,   216,
+     291,    -1,   273,   226,   198,   261,   199,   216,   291,    -1,
+     273,   226,   216,   291,    -1,   105,   229,    -1,   281,    -1,
+     279,   281,    -1,   123,   196,   275,   197,    -1,   276,    -1,
+     275,   201,   276,    -1,   226,    -1,   226,   216,    80,    -1,
+      40,    -1,    39,    -1,    38,    -1,     4,    -1,   280,    -1,
+     274,    -1,   274,   280,    -1,   277,    -1,   277,   280,    -1,
+     105,   280,    -1,   105,   277,   280,    -1,   105,    -1,     4,
+      -1,     3,    -1,    37,    -1,    32,    37,    -1,    33,    -1,
+      34,    -1,    32,    33,    -1,    32,    34,    -1,    36,    -1,
+     282,    -1,   285,   282,    -1,   283,    -1,   283,   198,   199,
+      -1,   283,   198,   261,   199,    -1,   284,    -1,   286,    -1,
+      77,    -1,    74,    -1,     6,    -1,     7,    -1,     8,    -1,
+       5,    -1,    29,    -1,    30,    -1,    31,    -1,    20,    -1,
+      21,    -1,    22,    -1,    23,    -1,    24,    -1,    25,    -1,
+      26,    -1,    27,    -1,    28,    -1,    41,    -1,    42,    -1,
+      43,    -1,    44,    -1,    45,    -1,    46,    -1,    47,    -1,
+      48,    -1,    49,    -1,    50,    -1,    51,    -1,   157,    -1,
+      52,    -1,    53,    -1,    54,    -1,    55,    -1,   159,    -1,
+      56,    -1,    57,    -1,    58,    -1,    59,    -1,    60,    -1,
+      61,    -1,    62,    -1,    63,    -1,    64,    -1,    65,    -1,
+      66,    -1,    67,    -1,    68,    -1,    69,    -1,    70,    -1,
+      71,    -1,    72,    -1,   108,    -1,   107,    -1,   106,    -1,
+      73,   226,   218,   287,   219,    -1,    73,   218,   287,   219,
+      -1,   288,    -1,   287,   288,    -1,   281,   289,   217,    -1,
+     290,    -1,   289,   201,   290,    -1,   226,    -1,   226,   198,
+     261,   199,    -1,   258,    -1,   262,    -1,   295,    -1,   294,
+      -1,   292,    -1,   300,    -1,   301,    -1,   304,    -1,   305,
+      -1,   306,    -1,   310,    -1,   218,   219,    -1,    -1,   218,
+     296,   299,   219,    -1,   298,    -1,   294,    -1,   218,   219,
+      -1,   218,   299,   219,    -1,   293,    -1,   299,   293,    -1,
+     217,    -1,   260,   217,    -1,    14,   196,   260,   197,   302,
+      -1,   293,    12,   293,    -1,   293,    -1,   260,    -1,   273,
+     226,   216,   291,    -1,    17,   196,   260,   197,   295,    -1,
+      18,   260,   215,    -1,    19,   215,    -1,    75,   196,   303,
+     197,   297,    -1,    11,   293,    75,   196,   260,   197,   217,
+      -1,    13,   196,   307,   309,   197,   297,    -1,   300,    -1,
+     292,    -1,   303,    -1,    -1,   308,   217,    -1,   308,   217,
+     260,    -1,    10,   217,    -1,     9,   217,    -1,    16,   217,
+      -1,    16,   260,   217,    -1,    15,   217,    -1,   312,    -1,
+     262,    -1,   224,    -1,   263,   298,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   213,   213,   212,   219,   221,   261,   262,   263,   264,
-     265,   277,   279,   283,   292,   300,   311,   315,   322,   329,
-     336,   343,   350,   357,   358,   364,   368,   375,   381,   390,
-     394,   398,   399,   408,   409,   413,   414,   418,   424,   436,
-     440,   446,   453,   464,   465,   471,   477,   487,   488,   489,
-     490,   494,   495,   501,   507,   516,   517,   523,   532,   533,
-     539,   548,   549,   555,   561,   567,   576,   577,   583,   592,
-     593,   602,   603,   612,   613,   622,   623,   632,   633,   642,
-     643,   652,   653,   662,   663,   672,   673,   674,   675,   676,
-     677,   678,   679,   680,   681,   682,   686,   690,   706,   710,
-     714,   718,   727,   731,   732,   736,   741,   749,   760,   770,
-     785,   792,   797,   808,   821,   824,   829,   834,   843,   847,
-     848,   857,   866,   875,   884,   893,   906,   917,   926,   935,
-     944,   953,   962,   971,   985,   992,  1003,  1010,  1011,  1030,
-    1082,  1123,  1128,  1133,  1141,  1149,  1150,  1151,  1156,  1157,
-    1162,  1167,  1173,  1181,  1186,  1191,  1196,  1202,  1207,  1212,
-    1217,  1222,  1230,  1234,  1242,  1243,  1249,  1258,  1264,  1270,
-    1279,  1280,  1281,  1282,  1283,  1284,  1285,  1286,  1287,  1288,
-    1289,  1290,  1291,  1292,  1293,  1294,  1295,  1296,  1297,  1298,
-    1299,  1300,  1301,  1302,  1303,  1304,  1305,  1306,  1307,  1308,
-    1309,  1310,  1311,  1312,  1313,  1314,  1315,  1316,  1317,  1318,
-    1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,  1327,  1328,
-    1329,  1333,  1343,  1353,  1366,  1372,  1381,  1386,  1394,  1409,
-    1414,  1422,  1428,  1437,  1441,  1447,  1448,  1452,  1453,  1454,
-    1455,  1456,  1457,  1458,  1462,  1468,  1477,  1478,  1482,  1488,
-    1497,  1507,  1519,  1525,  1534,  1543,  1548,  1556,  1560,  1574,
-    1578,  1579,  1583,  1590,  1597,  1607,  1608,  1612,  1614,  1620,
-    1625,  1634,  1640,  1646,  1652,  1658,  1667,  1668,  1669,  1673
+       0,   218,   218,   217,   229,   231,   271,   272,   273,   274,
+     275,   287,   289,   293,   294,   295,   299,   308,   316,   327,
+     328,   332,   339,   346,   353,   360,   367,   374,   375,   381,
+     385,   392,   398,   407,   411,   415,   416,   425,   426,   430,
+     431,   435,   441,   453,   457,   463,   470,   480,   481,   485,
+     486,   490,   496,   508,   519,   520,   526,   532,   542,   543,
+     544,   545,   549,   550,   556,   562,   571,   572,   578,   587,
+     588,   594,   603,   604,   610,   616,   622,   631,   632,   638,
+     647,   648,   657,   658,   667,   668,   677,   678,   687,   688,
+     697,   698,   707,   708,   717,   718,   727,   728,   729,   730,
+     731,   732,   733,   734,   735,   736,   737,   741,   745,   761,
+     765,   770,   774,   783,   787,   788,   792,   797,   805,   819,
+     829,   844,   851,   856,   867,   880,   883,   888,   893,   902,
+     906,   907,   917,   927,   937,   947,   957,   971,   982,   991,
+    1000,  1009,  1018,  1027,  1036,  1050,  1057,  1068,  1075,  1076,
+    1095,  1147,  1188,  1193,  1198,  1206,  1214,  1215,  1216,  1221,
+    1222,  1227,  1232,  1238,  1246,  1251,  1256,  1261,  1267,  1272,
+    1277,  1282,  1287,  1295,  1299,  1307,  1308,  1314,  1323,  1329,
+    1335,  1344,  1345,  1346,  1347,  1348,  1349,  1350,  1351,  1352,
+    1353,  1354,  1355,  1356,  1357,  1358,  1359,  1360,  1361,  1362,
+    1363,  1364,  1365,  1366,  1367,  1368,  1369,  1370,  1371,  1372,
+    1373,  1374,  1375,  1376,  1377,  1378,  1379,  1380,  1381,  1382,
+    1383,  1384,  1385,  1386,  1387,  1388,  1389,  1390,  1391,  1392,
+    1393,  1394,  1398,  1408,  1418,  1431,  1438,  1447,  1452,  1460,
+    1475,  1480,  1488,  1495,  1504,  1508,  1514,  1515,  1519,  1520,
+    1521,  1522,  1523,  1524,  1525,  1529,  1536,  1535,  1549,  1550,
+    1554,  1560,  1569,  1579,  1591,  1597,  1606,  1615,  1620,  1628,
+    1632,  1646,  1650,  1651,  1655,  1662,  1669,  1679,  1680,  1684,
+    1686,  1692,  1697,  1706,  1712,  1718,  1724,  1730,  1739,  1740,
+    1741,  1745
 };
 #endif
 
@@ -857,38 +867,41 @@ static const char *const yytname[] =
   "ISAMPLERCUBE", "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D",
   "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY",
   "USAMPLER2DARRAY", "STRUCT", "VOID_TOK", "WHILE", "IDENTIFIER",
-  "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT",
-  "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP",
-  "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN",
-  "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN",
-  "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "INVARIANT",
-  "LOWP", "MEDIUMP", "HIGHP", "SUPERP", "PRECISION", "VERSION",
-  "EXTENSION", "LINE", "COLON", "EOL", "INTERFACE", "OUTPUT",
-  "PRAGMA_DEBUG_ON", "PRAGMA_DEBUG_OFF", "PRAGMA_OPTIMIZE_ON",
-  "PRAGMA_OPTIMIZE_OFF", "PRAGMA_INVARIANT_ALL", "LAYOUT_TOK", "ASM",
-  "CLASS", "UNION", "ENUM", "TYPEDEF", "TEMPLATE", "THIS", "PACKED_TOK",
-  "GOTO", "INLINE_TOK", "NOINLINE", "VOLATILE", "PUBLIC_TOK", "STATIC",
-  "EXTERN", "EXTERNAL", "LONG_TOK", "SHORT_TOK", "DOUBLE_TOK", "HALF",
-  "FIXED_TOK", "UNSIGNED", "INPUT_TOK", "OUPTUT", "HVEC2", "HVEC3",
-  "HVEC4", "DVEC2", "DVEC3", "DVEC4", "FVEC2", "FVEC3", "FVEC4",
-  "SAMPLER2DRECT", "SAMPLER3DRECT", "SAMPLER2DRECTSHADOW", "SIZEOF",
-  "CAST", "NAMESPACE", "USING", "ERROR_TOK", "COMMON", "PARTITION",
-  "ACTIVE", "SAMPLERBUFFER", "FILTER", "IMAGE1D", "IMAGE2D", "IMAGE3D",
-  "IMAGECUBE", "IMAGE1DARRAY", "IMAGE2DARRAY", "IIMAGE1D", "IIMAGE2D",
-  "IIMAGE3D", "IIMAGECUBE", "IIMAGE1DARRAY", "IIMAGE2DARRAY", "UIMAGE1D",
-  "UIMAGE2D", "UIMAGE3D", "UIMAGECUBE", "UIMAGE1DARRAY", "UIMAGE2DARRAY",
-  "IMAGE1DSHADOW", "IMAGE2DSHADOW", "IMAGEBUFFER", "IIMAGEBUFFER",
-  "UIMAGEBUFFER", "IMAGE1DARRAYSHADOW", "IMAGE2DARRAYSHADOW", "ROW_MAJOR",
-  "'('", "')'", "'['", "']'", "'.'", "','", "'+'", "'-'", "'!'", "'~'",
-  "'*'", "'/'", "'%'", "'<'", "'>'", "'&'", "'^'", "'|'", "'?'", "':'",
-  "'='", "';'", "'{'", "'}'", "$accept", "translation_unit", "$@1",
-  "version_statement", "pragma_statement", "extension_statement_list",
-  "extension_statement", "external_declaration_list",
-  "variable_identifier", "primary_expression", "postfix_expression",
-  "integer_expression", "function_call", "function_call_or_method",
-  "function_call_generic", "function_call_header_no_parameters",
+  "TYPE_IDENTIFIER", "NEW_IDENTIFIER", "FLOATCONSTANT", "INTCONSTANT",
+  "UINTCONSTANT", "BOOLCONSTANT", "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP",
+  "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP",
+  "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN",
+  "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN",
+  "OR_ASSIGN", "SUB_ASSIGN", "INVARIANT", "LOWP", "MEDIUMP", "HIGHP",
+  "SUPERP", "PRECISION", "VERSION", "EXTENSION", "LINE", "COLON", "EOL",
+  "INTERFACE", "OUTPUT", "PRAGMA_DEBUG_ON", "PRAGMA_DEBUG_OFF",
+  "PRAGMA_OPTIMIZE_ON", "PRAGMA_OPTIMIZE_OFF", "PRAGMA_INVARIANT_ALL",
+  "LAYOUT_TOK", "ASM", "CLASS", "UNION", "ENUM", "TYPEDEF", "TEMPLATE",
+  "THIS", "PACKED_TOK", "GOTO", "INLINE_TOK", "NOINLINE", "VOLATILE",
+  "PUBLIC_TOK", "STATIC", "EXTERN", "EXTERNAL", "LONG_TOK", "SHORT_TOK",
+  "DOUBLE_TOK", "HALF", "FIXED_TOK", "UNSIGNED", "INPUT_TOK", "OUPTUT",
+  "HVEC2", "HVEC3", "HVEC4", "DVEC2", "DVEC3", "DVEC4", "FVEC2", "FVEC3",
+  "FVEC4", "SAMPLER2DRECT", "SAMPLER3DRECT", "SAMPLER2DRECTSHADOW",
+  "SIZEOF", "CAST", "NAMESPACE", "USING", "ERROR_TOK", "COMMON",
+  "PARTITION", "ACTIVE", "SAMPLERBUFFER", "FILTER", "IMAGE1D", "IMAGE2D",
+  "IMAGE3D", "IMAGECUBE", "IMAGE1DARRAY", "IMAGE2DARRAY", "IIMAGE1D",
+  "IIMAGE2D", "IIMAGE3D", "IIMAGECUBE", "IIMAGE1DARRAY", "IIMAGE2DARRAY",
+  "UIMAGE1D", "UIMAGE2D", "UIMAGE3D", "UIMAGECUBE", "UIMAGE1DARRAY",
+  "UIMAGE2DARRAY", "IMAGE1DSHADOW", "IMAGE2DSHADOW", "IMAGEBUFFER",
+  "IIMAGEBUFFER", "UIMAGEBUFFER", "IMAGE1DARRAYSHADOW",
+  "IMAGE2DARRAYSHADOW", "ROW_MAJOR", "'('", "')'", "'['", "']'", "'.'",
+  "','", "'+'", "'-'", "'!'", "'~'", "'*'", "'/'", "'%'", "'<'", "'>'",
+  "'&'", "'^'", "'|'", "'?'", "':'", "'='", "';'", "'{'", "'}'", "$accept",
+  "translation_unit", "$@1", "version_statement", "pragma_statement",
+  "extension_statement_list", "any_identifier", "extension_statement",
+  "external_declaration_list", "variable_identifier", "primary_expression",
+  "postfix_expression", "integer_expression", "function_call",
+  "function_call_or_method", "function_call_generic",
+  "function_call_header_no_parameters",
   "function_call_header_with_parameters", "function_call_header",
-  "function_identifier", "unary_expression", "unary_operator",
+  "function_identifier", "method_call_generic",
+  "method_call_header_no_parameters", "method_call_header_with_parameters",
+  "method_call_header", "unary_expression", "unary_operator",
   "multiplicative_expression", "additive_expression", "shift_expression",
   "relational_expression", "equality_expression", "and_expression",
   "exclusive_or_expression", "inclusive_or_expression",
@@ -907,7 +920,7 @@ static const char *const yytname[] =
   "precision_qualifier", "struct_specifier", "struct_declaration_list",
   "struct_declaration", "struct_declarator_list", "struct_declarator",
   "initializer", "declaration_statement", "statement", "simple_statement",
-  "compound_statement", "statement_no_new_scope",
+  "compound_statement", "$@2", "statement_no_new_scope",
   "compound_statement_no_new_scope", "statement_list",
   "expression_statement", "selection_statement",
   "selection_rest_statement", "condition", "switch_statement",
@@ -941,76 +954,80 @@ static const yytype_uint16 yytoknum[] =
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
-     445,   446,   447,   448,    40,    41,    91,    93,    46,    44,
-      43,    45,    33,   126,    42,    47,    37,    60,    62,    38,
-      94,   124,    63,    58,    61,    59,   123,   125
+     445,   446,   447,   448,   449,   450,    40,    41,    91,    93,
+      46,    44,    43,    45,    33,   126,    42,    47,    37,    60,
+      62,    38,    94,   124,    63,    58,    61,    59,   123,   125
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   218,   220,   219,   221,   221,   222,   222,   222,   222,
-     222,   223,   223,   224,   225,   225,   226,   227,   227,   227,
-     227,   227,   227,   228,   228,   228,   228,   228,   228,   229,
-     230,   231,   231,   232,   232,   233,   233,   234,   234,   235,
-     236,   236,   236,   237,   237,   237,   237,   238,   238,   238,
-     238,   239,   239,   239,   239,   240,   240,   240,   241,   241,
-     241,   242,   242,   242,   242,   242,   243,   243,   243,   244,
-     244,   245,   245,   246,   246,   247,   247,   248,   248,   249,
-     249,   250,   250,   251,   251,   252,   252,   252,   252,   252,
-     252,   252,   252,   252,   252,   252,   253,   253,   254,   255,
-     255,   255,   256,   257,   257,   258,   258,   259,   260,   260,
-     261,   261,   261,   261,   262,   262,   262,   262,   263,   264,
-     264,   264,   264,   264,   264,   264,   265,   265,   265,   265,
-     265,   265,   265,   265,   266,   266,   267,   268,   268,   269,
-     269,   270,   270,   270,   271,   272,   272,   272,   272,   272,
-     272,   272,   272,   273,   273,   273,   273,   273,   273,   273,
-     273,   273,   274,   274,   275,   275,   275,   276,   276,   276,
-     277,   277,   277,   277,   277,   277,   277,   277,   277,   277,
-     277,   277,   277,   277,   277,   277,   277,   277,   277,   277,
-     277,   277,   277,   277,   277,   277,   277,   277,   277,   277,
-     277,   277,   277,   277,   277,   277,   277,   277,   277,   277,
-     277,   277,   277,   277,   277,   277,   277,   277,   277,   277,
-     277,   278,   278,   278,   279,   279,   280,   280,   281,   282,
-     282,   283,   283,   284,   285,   286,   286,   287,   287,   287,
-     287,   287,   287,   287,   288,   288,   289,   289,   290,   290,
-     291,   291,   292,   292,   293,   294,   294,   295,   295,   296,
-     297,   297,   298,   298,   298,   299,   299,   300,   300,   301,
-     301,   302,   302,   302,   302,   302,   303,   303,   303,   304
+       0,   220,   222,   221,   223,   223,   224,   224,   224,   224,
+     224,   225,   225,   226,   226,   226,   227,   228,   228,   229,
+     229,   230,   230,   230,   230,   230,   230,   231,   231,   231,
+     231,   231,   231,   232,   233,   234,   234,   235,   235,   236,
+     236,   237,   237,   238,   239,   239,   239,   240,   240,   241,
+     241,   242,   242,   243,   244,   244,   244,   244,   245,   245,
+     245,   245,   246,   246,   246,   246,   247,   247,   247,   248,
+     248,   248,   249,   249,   249,   249,   249,   250,   250,   250,
+     251,   251,   252,   252,   253,   253,   254,   254,   255,   255,
+     256,   256,   257,   257,   258,   258,   259,   259,   259,   259,
+     259,   259,   259,   259,   259,   259,   259,   260,   260,   261,
+     262,   262,   262,   263,   264,   264,   265,   265,   266,   267,
+     267,   268,   268,   268,   268,   269,   269,   269,   269,   270,
+     271,   271,   271,   271,   271,   271,   271,   272,   272,   272,
+     272,   272,   272,   272,   272,   273,   273,   274,   275,   275,
+     276,   276,   277,   277,   277,   278,   279,   279,   279,   279,
+     279,   279,   279,   279,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   281,   281,   282,   282,   282,   283,   283,
+     283,   284,   284,   284,   284,   284,   284,   284,   284,   284,
+     284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
+     284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
+     284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
+     284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
+     284,   284,   285,   285,   285,   286,   286,   287,   287,   288,
+     289,   289,   290,   290,   291,   292,   293,   293,   294,   294,
+     294,   294,   294,   294,   294,   295,   296,   295,   297,   297,
+     298,   298,   299,   299,   300,   300,   301,   302,   302,   303,
+     303,   304,   305,   305,   306,   306,   306,   307,   307,   308,
+     308,   309,   309,   310,   310,   310,   310,   310,   311,   311,
+     311,   312
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
        0,     2,     0,     4,     0,     3,     2,     2,     2,     2,
-       2,     0,     2,     5,     1,     2,     1,     1,     1,     1,
-       1,     1,     3,     1,     4,     1,     3,     2,     2,     1,
-       1,     1,     3,     2,     2,     2,     1,     2,     3,     2,
-       1,     1,     1,     1,     2,     2,     2,     1,     1,     1,
-       1,     1,     3,     3,     3,     1,     3,     3,     1,     3,
-       3,     1,     3,     3,     3,     3,     1,     3,     3,     1,
-       3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
-       3,     1,     5,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     3,     1,     2,
-       2,     4,     2,     1,     1,     2,     3,     3,     2,     5,
-       3,     2,     3,     2,     0,     1,     1,     1,     1,     1,
-       3,     5,     6,     7,     8,     5,     1,     2,     4,     5,
-       6,     7,     4,     2,     1,     2,     4,     1,     3,     1,
-       3,     1,     1,     1,     1,     1,     1,     2,     1,     2,
-       2,     3,     1,     1,     1,     1,     2,     1,     1,     2,
-       2,     1,     1,     2,     1,     3,     4,     1,     1,     1,
+       2,     0,     2,     1,     1,     1,     5,     1,     2,     1,
+       1,     1,     1,     1,     1,     1,     3,     1,     4,     1,
+       3,     2,     2,     1,     1,     1,     3,     2,     2,     2,
+       1,     2,     3,     2,     1,     1,     1,     2,     2,     2,
+       1,     2,     3,     2,     1,     2,     2,     2,     1,     1,
+       1,     1,     1,     3,     3,     3,     1,     3,     3,     1,
+       3,     3,     1,     3,     3,     3,     3,     1,     3,     3,
+       1,     3,     1,     3,     1,     3,     1,     3,     1,     3,
+       1,     3,     1,     5,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
+       2,     2,     4,     2,     1,     1,     2,     3,     3,     2,
+       5,     3,     2,     3,     2,     0,     1,     1,     1,     1,
+       1,     3,     5,     6,     7,     8,     5,     1,     2,     4,
+       5,     6,     7,     4,     2,     1,     2,     4,     1,     3,
+       1,     3,     1,     1,     1,     1,     1,     1,     2,     1,
+       2,     2,     3,     1,     1,     1,     1,     2,     1,     1,
+       2,     2,     1,     1,     2,     1,     3,     4,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     5,     4,     1,     2,     3,     1,
-       3,     1,     4,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     3,     1,     1,     2,     3,
-       1,     2,     1,     2,     5,     3,     1,     1,     4,     5,
-       3,     2,     5,     7,     6,     1,     1,     1,     0,     2,
-       3,     2,     2,     2,     3,     2,     1,     1,     1,     2
+       1,     1,     1,     1,     1,     5,     4,     1,     2,     3,
+       1,     3,     1,     4,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     0,     4,     1,     1,
+       2,     3,     1,     2,     1,     2,     5,     3,     1,     1,
+       4,     5,     3,     2,     5,     7,     6,     1,     1,     1,
+       0,     2,     3,     2,     2,     2,     3,     2,     1,     1,
+       1,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1019,637 +1036,620 @@ static const yytype_uint8 yyr2[] =
 static const yytype_uint16 yydefact[] =
 {
        4,     0,     0,    11,     0,     1,     2,     5,     0,     0,
-      12,     0,   154,   153,   174,   171,   172,   173,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   175,   176,   177,
-       0,   157,   158,   161,   155,   143,   142,   141,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   199,
-     200,   201,   202,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-       0,   170,   169,   152,   223,   222,   221,     0,     0,     0,
-       0,     0,     0,     0,   198,   203,   278,     3,   277,     0,
-       0,   104,   114,     0,   119,   126,   146,   148,     0,   145,
-     134,   162,   164,   167,     0,   168,    14,   276,     0,   159,
-     160,   156,     0,     0,   133,     0,   150,     0,     6,     7,
-       8,     9,    10,     0,    15,    99,     0,   279,   102,   114,
-     144,   115,   116,   117,   105,     0,   114,     0,   100,   127,
-     147,   149,   135,     0,   163,     0,     0,     0,     0,   226,
-     151,     0,   139,     0,   137,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    16,    20,    18,    19,
-      21,    42,     0,     0,     0,    47,    48,    49,    50,   252,
-       0,   248,    17,    23,    43,    25,    30,    31,     0,     0,
-      36,     0,    51,     0,    55,    58,    61,    66,    69,    71,
-      73,    75,    77,    79,    81,    83,    96,     0,   234,     0,
-     134,   237,   250,   236,   235,     0,   238,   239,   240,   241,
-     242,   243,   106,   111,   113,   118,     0,   120,   107,     0,
-       0,   165,    51,    98,     0,    40,    13,     0,   231,     0,
-     229,   225,   227,   101,     0,   136,     0,   272,   271,     0,
-       0,     0,   275,   273,     0,     0,     0,   261,     0,    44,
-      45,     0,   244,     0,    27,    28,     0,     0,    34,    33,
-       0,   170,    37,    39,    86,    87,    89,    88,    91,    92,
-      93,    94,    95,    90,    85,     0,    46,     0,     0,     0,
+      12,    13,    14,    15,     0,   165,   164,   185,   182,   183,
+     184,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     186,   187,   188,     0,   168,   169,   172,   166,   154,   153,
+     152,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   210,   211,   212,   213,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,     0,   181,   180,   163,   234,   233,   232,
+       0,     0,     0,     0,     0,     0,     0,   209,   214,   290,
+       3,   289,     0,     0,   115,   125,     0,   130,   137,   157,
+     159,     0,   156,   145,   173,   175,   178,     0,   179,    17,
+     288,     0,   170,   171,   167,     0,     0,    19,    20,   144,
+       0,   161,     0,     6,     7,     8,     9,    10,     0,    18,
+     110,     0,   291,   113,   125,   155,   126,   127,   128,   116,
+       0,   125,     0,   111,    13,    15,   138,     0,   158,   160,
+     146,     0,   174,     0,     0,     0,   237,     0,   162,     0,
+     150,     0,   148,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    24,    22,    23,    25,    46,     0,
+       0,     0,    58,    59,    60,    61,   264,   256,   260,    21,
+      27,    54,    29,    34,    35,     0,     0,    40,     0,    62,
+       0,    66,    69,    72,    77,    80,    82,    84,    86,    88,
+      90,    92,    94,   107,     0,   245,     0,   145,   248,   262,
+     247,   246,     0,   249,   250,   251,   252,   253,   254,   117,
+     122,   124,   129,     0,   131,     0,     0,   118,   176,    62,
+     109,     0,    44,    16,   242,     0,   240,   236,   238,     0,
+     112,     0,   147,     0,   284,   283,     0,     0,     0,   287,
+     285,     0,     0,     0,   273,     0,    55,    56,     0,   255,
+       0,    31,    32,     0,     0,    38,    37,     0,   181,    41,
+      43,    97,    98,   100,    99,   102,   103,   104,   105,   106,
+     101,    96,     0,    57,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   253,   249,
-     251,   108,   110,   112,     0,     0,   128,     0,   233,   132,
-     166,   224,     0,     0,   228,   140,   138,     0,   266,   265,
-     268,     0,   274,     0,   260,   152,   257,     0,     0,    22,
-     245,     0,    29,    26,    32,    38,    84,    52,    53,    54,
-      56,    57,    59,    60,    64,    65,    62,    63,    67,    68,
-      70,    72,    74,    76,    78,    80,     0,    97,     0,   121,
-       0,   125,     0,   129,     0,   230,     0,   267,     0,     0,
-       0,     0,     0,     0,    24,     0,     0,     0,   122,   130,
-       0,   232,     0,   269,     0,   256,   254,   259,     0,   247,
-     262,   246,    82,   109,   123,     0,   131,     0,   270,   264,
-       0,   258,   124,   263,   255
+       0,     0,     0,     0,     0,   265,   261,   263,   119,   121,
+     123,     0,     0,   139,     0,   244,   143,   177,     0,     0,
+     239,   235,   151,   149,     0,   278,   277,   280,     0,   286,
+       0,   272,   163,   269,     0,     0,    26,     0,     0,    33,
+      30,     0,    36,     0,     0,    50,    42,    95,    63,    64,
+      65,    67,    68,    70,    71,    75,    76,    73,    74,    78,
+      79,    81,    83,    85,    87,    89,    91,     0,   108,     0,
+     132,     0,   136,     0,   140,     0,   241,     0,   279,     0,
+       0,     0,     0,     0,     0,   257,    28,    53,    48,    47,
+       0,   181,    51,     0,     0,     0,   133,   141,     0,   243,
+       0,   281,     0,   268,   266,   271,     0,   259,   274,   258,
+      52,    93,   120,   134,     0,   142,     0,   282,   276,     0,
+     270,   135,   275,   267
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     2,     9,     3,    86,     6,    10,    87,   182,   183,
-     184,   341,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   285,   207,   234,   208,   209,    90,
-      91,    92,   223,   134,   135,   224,    93,    94,    95,    96,
-     153,   154,    97,   136,    98,    99,   235,   101,   102,   103,
-     104,   105,   148,   149,   239,   240,   319,   211,   212,   213,
-     214,   400,   401,   215,   216,   217,   396,   338,   218,   219,
-     220,   330,   378,   379,   221,   106,   107
+      -1,     2,     9,     3,    89,     6,   160,    10,    90,   189,
+     190,   191,   348,   192,   193,   194,   195,   196,   197,   198,
+     352,   353,   354,   355,   199,   200,   201,   202,   203,   204,
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   292,
+     214,   241,   215,   216,    93,    94,    95,   230,   139,   140,
+     231,    96,    97,    98,    99,   161,   162,   100,   141,   101,
+     102,   242,   104,   105,   106,   107,   108,   155,   156,   245,
+     246,   326,   218,   219,   220,   221,   270,   418,   419,   222,
+     223,   224,   414,   345,   225,   226,   227,   337,   389,   390,
+     228,   109,   110
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -321
+#define YYPACT_NINF -366
 static const yytype_int16 yypact[] =
 {
-     -86,   -57,    45,  -321,   -56,  -321,   -50,  -321,   -10,  3320,
-    -321,   -26,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,
-    -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,
-      79,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,
-    -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,
-    -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,
-    -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,
-     -70,  -321,  -321,    43,  -321,  -321,  -321,    18,   -22,   -12,
-      -5,     2,    25,  -101,  -321,  -321,  -321,  3320,  -321,   -43,
-     -55,   -54,     6,  -148,  -321,    52,   211,   211,  3509,  -321,
-    -321,  -321,   -47,  -321,  3581,  -321,  -321,  -321,   110,  -321,
-    -321,  -321,   -14,  3509,  -321,   211,  -321,  3581,  -321,  -321,
-    -321,  -321,  -321,   131,  -321,  -321,   389,  -321,  -321,    15,
-    -321,  -321,  -321,  -321,  -321,  3509,   109,   136,  -321,  -152,
-    -321,  -321,  -321,  2400,  -321,   105,  3509,   143,  1781,  -321,
-    -321,     7,     9,  -107,  -321,    10,    12,  1249,    27,    36,
-      17,  2015,    40,  2952,    22,    42,   -65,  -321,  -321,  -321,
-    -321,  -321,  2952,  2952,  2952,  -321,  -321,  -321,  -321,  -321,
-     604,  -321,  -321,  -321,   -20,  -321,  -321,  -321,    47,   -92,
-    3136,    46,   -67,  2952,   -24,   -16,   111,   -73,   108,    37,
-      41,    39,   162,   161,   -82,  -321,  -321,  -147,  -321,    44,
-      61,  -321,  -321,  -321,  -321,   819,  -321,  -321,  -321,  -321,
-    -321,  -321,  -321,  -321,  -321,   181,  3509,  -160,  -321,  2584,
-    2952,  -321,  -321,  -321,    63,  -321,  -321,  1898,    62,  -146,
-    -321,  -321,  -321,  -321,   183,  -321,   131,  -321,  -321,   187,
-    1664,  2952,  -321,  -321,  -144,  2952,  -140,  -321,  2216,  -321,
-    -321,   -81,  -321,  1034,  -321,  -321,  2952,  3437,  -321,  -321,
-    2952,    70,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,
-    -321,  -321,  -321,  -321,  -321,  2952,  -321,  2952,  2952,  2952,
-    2952,  2952,  2952,  2952,  2952,  2952,  2952,  2952,  2952,  2952,
-    2952,  2952,  2952,  2952,  2952,  2952,  2952,  2952,  -321,  -321,
-    -321,    74,  -321,  -321,  2768,  2952,    64,    69,  -321,  -321,
-    -321,  -321,  2952,   143,  -321,  -321,  -321,    82,  -321,  -321,
-    2216,   -74,  -321,   -68,  -321,   235,    78,   203,    85,  -321,
-    -321,    84,    78,    88,  -321,  -321,  -321,  -321,  -321,  -321,
-     -24,   -24,   -16,   -16,   111,   111,   111,   111,   -73,   -73,
-     108,    37,    41,    39,   162,   161,  -129,  -321,  2952,    71,
-      86,  -321,  2952,    72,    87,  -321,  2952,  -321,    73,    92,
-    1249,    75,    76,  1463,  -321,  2952,    95,  2952,    80,  -321,
-    2952,  -321,   -63,  2952,  1463,   277,  -321,  -321,  2952,  -321,
-    -321,  -321,  -321,  -321,  -321,  2952,  -321,    81,    78,  -321,
-    1249,  -321,  -321,  -321,  -321
+     -57,   -43,    62,  -366,   -50,  -366,   -30,  -366,    67,  3341,
+    -366,  -366,  -366,  -366,    -6,  -366,  -366,  -366,  -366,  -366,
+    -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
+    -366,  -366,  -366,     8,  -366,  -366,  -366,  -366,  -366,  -366,
+    -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
+    -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
+    -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
+    -366,  -366,  -366,   -65,  -366,  -366,   226,  -366,  -366,  -366,
+      51,   -31,   -28,     6,    13,    15,   -44,  -366,  -366,  -366,
+    3341,  -366,  -183,   -47,   -29,    18,  -169,  -366,   140,    24,
+      24,  3460,  -366,  -366,  -366,   -24,  -366,  3533,  -366,  -366,
+    -366,    67,  -366,  -366,  -366,  3460,   -48,  -366,  -366,  -366,
+      24,  -366,  3533,  -366,  -366,  -366,  -366,  -366,    67,  -366,
+    -366,   408,  -366,  -366,    55,  -366,  -366,  -366,  -366,  -366,
+    3460,   200,    67,  -366,   -20,   -18,  -178,    23,  -366,  -366,
+    -366,  2225,  -366,    72,    67,  1598,  -366,  3460,  -366,     4,
+      10,   -84,  -366,    11,    14,  1059,    40,    42,    29,  1836,
+      43,  2783,    34,    54,  -366,  -366,  -366,  -366,  -366,  2783,
+    2783,  2783,  -366,  -366,  -366,  -366,  -366,    32,  -366,    56,
+    -366,   -71,  -366,  -366,  -366,    57,   -81,  2969,    61,   -27,
+    2783,    35,   -88,   -41,   -70,    33,    60,    41,    59,   181,
+     180,   -89,  -366,  -366,  -168,  -366,    58,    80,  -366,  -366,
+    -366,  -366,   625,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
+    -366,  -366,    67,  3460,  -177,  2411,  2783,  -366,  -366,  -366,
+    -366,    78,  -366,  -366,    81,  -137,  -366,  -366,  -366,  1717,
+    -366,   201,  -366,    67,  -366,  -366,   205,  1478,  2783,  -366,
+    -366,  -134,  2783,  -115,  -366,  2039,  -366,  -366,   -60,  -366,
+    1059,  -366,  -366,  2783,   140,  -366,  -366,  2783,    85,  -366,
+    -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
+    -366,  -366,  2783,  -366,  2783,  2783,  2783,  2783,  2783,  2783,
+    2783,  2783,  2783,  2783,  2783,  2783,  2783,  2783,  2783,  2783,
+    2783,  2783,  2783,  2783,  2783,  -366,  -366,  -366,    86,  -366,
+    -366,  2597,  2783,    69,    87,  -366,  -366,  -366,  2783,    67,
+    -366,  -366,  -366,  -366,    91,  -366,  -366,  2039,   -59,  -366,
+     -46,  -366,   129,    88,    67,    93,  -366,   842,    89,    88,
+    -366,    95,  -366,    96,   -37,  3155,  -366,  -366,  -366,  -366,
+    -366,    35,    35,   -88,   -88,   -41,   -41,   -41,   -41,   -70,
+     -70,    33,    60,    41,    59,   181,   180,   -96,  -366,  2783,
+      76,    97,  -366,  2783,    79,    98,  -366,  2783,  -366,    77,
+     101,  1059,    83,    90,  1275,  -366,  -366,  -366,  -366,  -366,
+    2783,   102,  -366,  2783,   108,  2783,    94,  -366,  2783,  -366,
+     -26,  2783,  1275,   297,  -366,  -366,  2783,  -366,  -366,  -366,
+    -366,  -366,  -366,  -366,  2783,  -366,   100,    88,  -366,  1059,
+    -366,  -366,  -366,  -366
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,  -321,
-    -321,  -321,  -321,  -321,    26,  -321,  -321,  -321,  -321,  -135,
-    -321,   -91,   -88,  -106,   -90,    -3,    -6,    -4,    -2,    -1,
-       0,  -321,  -139,  -174,  -321,  -156,  -217,    11,    13,  -321,
-    -321,  -321,    83,   170,   164,    89,  -321,  -321,  -243,  -321,
-    -321,    56,   -71,  -321,  -321,   -72,    -9,   -32,  -321,  -321,
-     227,  -321,   160,  -131,  -321,   -15,  -195,    57,  -154,  -320,
-     -69,   -84,   222,   133,    66,  -321,  -321,   -13,  -321,  -321,
-    -321,  -321,  -321,  -321,  -321,   231,  -321
+    -366,  -366,  -366,  -366,  -366,  -366,    -7,  -366,  -366,   -62,
+    -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
+    -366,  -366,  -366,  -366,  -101,  -366,  -113,  -109,  -121,   -61,
+       5,     3,     9,    16,     2,     7,  -366,  -142,  -100,  -366,
+    -164,  -225,    21,    22,  -366,  -366,  -366,    82,   186,   173,
+      92,  -366,  -366,  -242,  -366,  -366,    68,   -73,  -366,  -366,
+     -74,    -9,   -67,  -366,  -366,   243,  -366,   170,  -147,  -366,
+       0,  -298,    73,  -159,  -365,   -58,  -366,   -80,   239,    63,
+      84,  -366,  -366,    -2,  -366,  -366,  -366,  -366,  -366,  -366,
+    -366,   246,  -366
 };
 
 /* 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 -170
+#define YYTABLE_NINF -115
 static const yytype_int16 yytable[] =
 {
-     100,   116,   115,   249,   233,   254,   112,   256,   232,   305,
-     130,  -169,   317,   294,   295,   337,   272,   242,   261,   130,
-      88,     4,    89,     1,   140,   141,   274,   275,   276,   277,
-     278,   279,   280,   281,   282,   283,   314,   259,   260,   131,
-     132,   133,   228,   150,   229,     5,    12,    13,   131,   132,
-     133,   137,   307,   323,   315,   307,   318,     7,   286,   307,
-       8,   310,   230,   399,   264,   265,    11,   138,   308,   324,
-     307,   332,   144,   334,   399,    30,    31,    32,   100,    33,
-      34,    35,    36,    37,   385,   151,   108,   337,   245,   142,
-     233,   118,   246,   123,   232,   331,   345,   370,    88,   333,
-      89,   119,   336,   269,   147,   374,   242,   270,   120,   310,
-     342,   346,   109,   110,   339,   121,   111,   210,   307,   114,
-     371,   380,    74,    75,    76,   307,   225,   381,   139,   -41,
-     306,   307,   407,   367,   296,   297,   307,   147,   122,   147,
-     128,   318,   131,   132,   133,   129,   113,   284,   210,   143,
-     366,   386,   347,   348,   349,   232,   232,   232,   232,   232,
-     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
-     232,   210,   125,   126,   336,   233,   266,   389,   267,   232,
-     287,   288,   289,   233,   290,   291,   145,   232,   354,   355,
-     356,   357,   404,   292,   293,   406,   298,   299,   318,   350,
-     351,  -103,   146,   411,   352,   353,   210,   152,   358,   359,
-     412,   402,   227,   318,    12,    13,   318,   225,   236,   238,
-     392,   250,   243,   244,   318,   247,   395,   248,   147,   233,
-     251,   318,   252,   232,   255,   257,   258,   408,    12,    13,
-     273,   210,   268,    30,    31,    32,   300,    33,    34,   210,
-     302,   301,   303,   304,   210,   -40,   414,   311,   322,   125,
-     320,   325,   327,   116,   115,   -35,   373,    30,    31,    32,
-     368,    33,    34,    35,    36,    37,   376,   307,   372,   382,
-     383,   384,   -41,   388,   391,   387,   390,   394,   393,   410,
-     398,   180,   403,   344,   405,   361,   413,   360,   362,   222,
-     226,   363,   326,   364,   117,   365,   237,   328,   375,   312,
-     409,   127,   397,   263,     0,   313,   329,   377,   124,     0,
-       0,   210,     0,     0,     0,     0,     0,     0,     0,     0,
+     103,    14,   121,   120,   312,   261,   256,   263,   248,   240,
+     324,    11,    12,    13,   119,   271,   272,   268,   301,   302,
+     235,   321,   135,   344,   382,   148,   149,    15,    16,   417,
+      91,    92,   142,   314,   130,   131,   147,     4,   236,   322,
+     152,   112,   113,   299,   300,   114,   158,   417,   143,   315,
+     239,   136,   137,   138,     1,   159,    33,    34,    35,   135,
+      36,    37,     5,   317,   329,     7,   116,   314,   281,   282,
+     283,   284,   285,   286,   287,   288,   289,   290,   266,   267,
+     330,   103,     8,   339,   123,   407,   314,   124,   136,   137,
+     138,   146,   150,   240,   338,   344,   381,   279,   340,   293,
+     341,   343,   248,   385,   153,   314,   154,   423,   111,   349,
+     425,    91,    92,   252,   297,   298,   276,   253,   430,   403,
+     277,   125,   217,   305,   306,   313,   431,   273,   126,   274,
+     127,   232,    15,    16,   239,   234,   325,   346,   391,   303,
+     304,   314,   314,    11,    12,    13,   154,   244,   154,   377,
+     133,   392,   128,   115,   404,   314,   217,    77,    78,    79,
+     399,    33,    34,    35,   400,    36,    37,    38,    39,    40,
+     157,   426,   134,   343,   151,   314,   -19,   356,   -20,   240,
+     365,   366,   367,   368,   361,   362,   240,   243,   317,   291,
+     363,   364,   357,   358,   359,   360,   239,   239,   239,   239,
+     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
+     239,   239,   351,   217,   378,  -114,   144,    12,   145,   237,
+     239,   250,   325,   410,   232,   318,   251,   239,   254,    15,
+      16,   255,   413,   136,   137,   138,   257,   240,   258,   262,
+     154,   294,   295,   296,   369,   370,   259,   427,   217,   264,
+     265,   269,   -45,   308,   275,   402,   217,   280,    33,    34,
+      35,   217,    36,    37,    38,    39,    40,   350,   121,   120,
+     433,   307,   309,   310,   311,   130,   -44,   327,   239,   328,
+     334,   332,   -39,   325,   379,   383,   384,   387,   396,   314,
+     394,   397,   405,   398,   411,   408,   406,   409,   412,   -49,
+     420,   187,   117,   421,   118,   325,   416,   422,   325,   429,
+     424,   372,   371,   375,   233,   319,   325,   432,   373,   376,
+     229,   333,   244,   122,   325,   320,   374,   249,   217,   386,
+     335,   132,   428,   347,   415,   388,   129,   393,   217,     0,
+       0,   336,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   217,     0,     0,   217,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   210,     0,     0,   210,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   210,     0,     0,     0,     0,
-       0,     0,    12,    13,    14,    15,    16,    17,   155,   156,
-     157,   210,   158,   159,   160,   161,   162,   163,   164,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,     0,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,   165,   166,   167,   168,   169,   170,
-     171,     0,     0,   172,   173,     0,     0,     0,     0,     0,
+       0,     0,     0,   217,     0,     0,     0,     0,     0,     0,
+       0,    15,    16,    17,    18,    19,    20,   163,   164,   165,
+     217,   166,   167,   168,   169,   170,   171,   172,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,     0,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,   173,   117,    75,   118,   174,   175,   176,
+     177,   178,     0,     0,   179,   180,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    73,    74,    75,    76,     0,    77,     0,     0,
+       0,     0,     0,    76,    77,    78,    79,     0,    80,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      83,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    86,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    84,     0,    85,     0,     0,     0,
+       0,     0,     0,     0,     0,    87,     0,    88,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   174,     0,     0,     0,     0,     0,   175,
-     176,   177,   178,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   179,   180,   181,    12,    13,    14,
-      15,    16,    17,   155,   156,   157,     0,   158,   159,   160,
-     161,   162,   163,   164,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,     0,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,   165,
-     166,   167,   168,   169,   170,   171,     0,     0,   172,   173,
+       0,     0,     0,     0,   181,     0,     0,     0,     0,     0,
+     182,   183,   184,   185,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   186,   187,   188,    15,    16,
+      17,    18,    19,    20,   163,   164,   165,     0,   166,   167,
+     168,   169,   170,   171,   172,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+       0,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+     173,   117,    75,   118,   174,   175,   176,   177,   178,     0,
+       0,   179,   180,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    73,    74,    75,
-      76,     0,    77,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    83,     0,     0,     0,     0,
+      76,    77,    78,    79,     0,    80,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    86,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    84,
-       0,    85,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    87,     0,    88,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   174,     0,
-       0,     0,     0,     0,   175,   176,   177,   178,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   179,
-     180,   262,    12,    13,    14,    15,    16,    17,   155,   156,
-     157,     0,   158,   159,   160,   161,   162,   163,   164,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,     0,    33,    34,    35,    36,    37,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   181,     0,     0,     0,     0,     0,   182,   183,   184,
+     185,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   186,   187,   316,    15,    16,    17,    18,    19,
+      20,   163,   164,   165,     0,   166,   167,   168,   169,   170,
+     171,   172,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,     0,    36,    37,
       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,   165,   166,   167,   168,   169,   170,
-     171,     0,     0,   172,   173,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    73,    74,    75,    76,     0,    77,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      83,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      68,    69,    70,    71,    72,    73,    74,   173,   117,    75,
+     118,   174,   175,   176,   177,   178,     0,     0,   179,   180,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    76,    77,    78,
+      79,     0,    80,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    86,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    84,     0,    85,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    87,
+       0,    88,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   174,     0,     0,     0,     0,     0,   175,
-     176,   177,   178,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   179,   180,   309,    12,    13,    14,
-      15,    16,    17,   155,   156,   157,     0,   158,   159,   160,
-     161,   162,   163,   164,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,     0,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,   165,
-     166,   167,   168,   169,   170,   171,     0,     0,   172,   173,
+       0,     0,     0,     0,     0,     0,     0,     0,   181,     0,
+       0,     0,     0,     0,   182,   183,   184,   185,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   186,
+     187,   395,    15,    16,    17,    18,    19,    20,   163,   164,
+     165,     0,   166,   167,   168,   169,   170,   171,   172,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,     0,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,   173,   117,    75,   118,   174,   175,
+     176,   177,   178,     0,     0,   179,   180,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    73,    74,    75,
-      76,     0,    77,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    83,     0,     0,     0,     0,
+       0,     0,     0,     0,    76,    77,    78,    79,     0,    80,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    86,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    84,
-       0,    85,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    87,     0,    88,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   174,     0,
-       0,     0,     0,     0,   175,   176,   177,   178,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   179,
-     180,   340,    12,    13,    14,    15,    16,    17,   155,   156,
-     157,     0,   158,   159,   160,   161,   162,   163,   164,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,     0,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,   165,   166,   167,   168,   169,   170,
-     171,     0,     0,   172,   173,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    73,    74,    75,    76,     0,    77,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      83,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   181,     0,     0,     0,     0,
+       0,   182,   183,   184,   185,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   186,   187,    15,    16,
+      17,    18,    19,    20,   163,   164,   165,     0,   166,   167,
+     168,   169,   170,   171,   172,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+       0,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+     173,   117,    75,   118,   174,   175,   176,   177,   178,     0,
+       0,   179,   180,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      76,    77,    78,    79,     0,    80,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    86,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    84,     0,    85,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    87,     0,    88,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   174,     0,     0,     0,     0,     0,   175,
-     176,   177,   178,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   179,   180,    12,    13,    14,    15,
-      16,    17,   155,   156,   157,     0,   158,   159,   160,   161,
-     162,   163,   164,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,     0,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,   165,   166,
-     167,   168,   169,   170,   171,     0,     0,   172,   173,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    73,    74,    75,    76,
-       0,    77,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    83,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   181,     0,     0,     0,     0,     0,   182,   183,   184,
+     185,    15,    16,    17,    18,    19,    20,     0,     0,     0,
+       0,     0,   186,   131,     0,     0,     0,     0,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,     0,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,     0,   117,    75,   118,   174,   175,   176,
+     177,   178,     0,     0,   179,   180,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    84,     0,
-      85,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    76,    77,    78,    79,     0,    80,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    86,     0,    17,    18,    19,    20,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+       0,     0,     0,     0,     0,    87,     0,    88,     0,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,     0,   181,    75,     0,     0,     0,     0,
+     182,   183,   184,   185,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   186,     0,     0,     0,     0,
+       0,     0,     0,     0,    77,    78,    79,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   174,     0,     0,
-       0,     0,     0,   175,   176,   177,   178,    12,    13,    14,
-      15,    16,    17,     0,     0,     0,     0,     0,   179,   126,
-       0,     0,     0,     0,    18,    19,    20,    21,    22,    23,
+       0,     0,    17,    18,    19,    20,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,     0,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+       0,     0,     0,     0,     0,    87,     0,    88,    41,    42,
       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
       53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,     0,
-     166,   167,   168,   169,   170,   171,     0,     0,   172,   173,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    73,    74,    75,
-      76,     0,    77,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    83,    14,    15,    16,    17,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,     0,     0,     0,     0,     0,     0,    84,
-       0,    85,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,     0,    72,   174,     0,
-       0,     0,     0,     0,   175,   176,   177,   178,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   179,
-       0,     0,     0,     0,     0,    74,    75,    76,     0,     0,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,     0,     0,    75,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    14,    15,    16,    17,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-       0,     0,     0,     0,     0,     0,    84,     0,    85,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,     0,    72,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   247,     0,     0,
+       0,     0,     0,    77,    78,    79,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   241,     0,
-       0,     0,    74,    75,    76,     0,     0,     0,     0,     0,
+       0,    17,    18,    19,    20,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,     0,     0,
+       0,     0,     0,     0,    87,     0,    88,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,     0,   117,    75,   118,   174,   175,   176,   177,   178,
+       0,     0,   179,   180,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   331,     0,     0,     0,
+       0,     0,    77,    78,    79,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      14,    15,    16,    17,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,     0,     0,     0,
-       0,     0,     0,    84,     0,    85,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-       0,   166,   167,   168,   169,   170,   171,     0,     0,   172,
-     173,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   321,     0,     0,     0,    74,
-      75,    76,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    87,     0,    88,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      84,     0,    85,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   174,
-       0,     0,     0,     0,     0,   175,   176,   177,   178,    12,
-      13,    14,    15,    16,    17,     0,     0,     0,     0,     0,
-     253,     0,     0,     0,     0,     0,    18,    19,    20,    21,
+       0,     0,   181,     0,     0,     0,     0,     0,   182,   183,
+     184,   185,    15,    16,    17,    18,    19,    20,     0,     0,
+       0,     0,     0,   260,     0,     0,     0,     0,     0,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,     0,    33,    34,    35,    36,    37,    38,    39,    40,
+      32,    33,    34,    35,     0,    36,    37,    38,    39,    40,
       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,     0,   166,   167,   168,   169,   170,   171,     0,     0,
-     172,   173,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   335,
-      74,    75,    76,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    83,     0,     0,
+      71,    72,    73,    74,     0,   117,    75,   118,   174,   175,
+     176,   177,   178,     0,     0,   179,   180,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   342,    77,    78,    79,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    86,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    84,     0,    85,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    87,     0,    88,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    14,    15,    16,    17,     0,
-     174,     0,     0,     0,     0,     0,   175,   176,   177,   178,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,     0,   166,   167,   168,   169,
-     170,   171,     0,     0,   172,   173,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    74,    75,    76,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      17,    18,    19,    20,     0,   181,     0,     0,     0,     0,
+       0,   182,   183,   184,   185,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+       0,   117,    75,   118,   174,   175,   176,   177,   178,     0,
+       0,   179,   180,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    77,    78,    79,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    84,     0,    85,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    14,
-      15,    16,    17,     0,   174,     0,     0,   231,     0,     0,
-     175,   176,   177,   178,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,     0,
-     166,   167,   168,   169,   170,   171,     0,     0,   172,   173,
+       0,     0,    87,     0,    88,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    74,    75,
-      76,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    17,    18,    19,    20,
+       0,   181,     0,     0,   238,     0,     0,   182,   183,   184,
+     185,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,     0,   117,    75,   118,
+     174,   175,   176,   177,   178,     0,     0,   179,   180,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    77,    78,    79,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    84,
-       0,    85,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    14,    15,    16,    17,     0,   174,     0,
-       0,   316,     0,     0,   175,   176,   177,   178,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,     0,   166,   167,   168,   169,   170,   171,
-       0,     0,   172,   173,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    74,    75,    76,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    87,     0,
+      88,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    17,    18,    19,    20,     0,   181,     0,     0,
+     323,     0,     0,   182,   183,   184,   185,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,     0,   117,    75,   118,   174,   175,   176,   177,
+     178,     0,     0,   179,   180,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    77,    78,    79,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    84,     0,    85,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    14,    15,    16,
-      17,     0,   174,     0,     0,   369,     0,     0,   175,   176,
-     177,   178,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,     0,   166,   167,
-     168,   169,   170,   171,     0,     0,   172,   173,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    74,    75,    76,     0,
+       0,     0,     0,     0,    87,     0,    88,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    17,    18,
+      19,    20,     0,   181,     0,     0,   380,     0,     0,   182,
+     183,   184,   185,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,     0,   117,
+      75,   118,   174,   175,   176,   177,   178,     0,     0,   179,
+     180,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    77,
+      78,    79,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    84,     0,    85,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      87,     0,    88,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    14,    15,    16,    17,     0,   174,     0,     0,     0,
-       0,     0,   175,   176,   177,   178,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    38,    39,    40,
+       0,     0,     0,     0,    17,    18,    19,    20,     0,   181,
+       0,     0,     0,     0,     0,   182,   183,   184,   185,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-     271,     0,   166,   167,   168,   169,   170,   171,     0,     0,
-     172,   173,     0,     0,     0,     0,     0,     0,     0,     0,
+      71,    72,    73,   278,     0,   117,    75,   118,   174,   175,
+     176,   177,   178,     0,     0,   179,   180,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      74,    75,    76,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    77,    78,    79,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    84,     0,    85,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    87,     0,    88,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    12,    13,    14,    15,    16,    17,     0,
-     174,     0,     0,     0,     0,     0,   175,   176,   177,   178,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,     0,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,     0,    72,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      17,    18,    19,    20,     0,   181,     0,     0,     0,     0,
+       0,   182,   183,   184,   185,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,   401,
+       0,   117,    75,   118,   174,   175,   176,   177,   178,     0,
+       0,   179,   180,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    73,    74,    75,    76,     0,    77,     0,
-       0,     0,     0,     0,     0,     0,    78,    79,    80,    81,
-      82,    83,    14,    15,    16,    17,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,     0,
-       0,     0,     0,     0,     0,    84,     0,    85,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+       0,    77,    78,    79,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    87,     0,    88,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    15,    16,    17,    18,    19,    20,
+       0,   181,     0,     0,     0,     0,     0,   182,   183,   184,
+     185,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,     0,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,     0,     0,    75,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    76,    77,    78,    79,
+       0,    80,     0,     0,     0,     0,     0,     0,     0,    81,
+      82,    83,    84,    85,    86,    17,    18,    19,    20,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,     0,     0,     0,     0,     0,     0,    87,     0,
+      88,    41,    42,    43,    44,    45,    46,    47,    48,    49,
       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,     0,   343,    14,    15,    16,    17,   171,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    74,    75,    76,     0,     0,     0,     0,     0,     0,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,     0,    72,    14,    15,    16,    17,
-       0,     0,    84,     0,    85,     0,     0,     0,     0,     0,
-       0,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    74,    75,    76,     0,     0,     0,     0,
-       0,     0,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,     0,    72,     0,     0,
-       0,     0,     0,     0,    84,     0,    85,     0,     0,     0,
+      70,    71,    72,    73,    74,     0,     0,    75,    17,    18,
+      19,    20,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,     0,    77,    78,    79,     0,
+       0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,     0,     0,
+      75,     0,     0,     0,     0,     0,     0,    87,     0,    88,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    84,     0,    85
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      87,     0,    88
 };
 
 static const yytype_int16 yycheck[] =
 {
-       9,    73,    73,   157,   143,   161,    76,   163,   143,    91,
-       4,    76,   229,    86,    87,   258,   190,   148,   174,     4,
-       9,    78,     9,   109,    96,    97,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   196,   172,   173,    33,
-      34,    35,   194,   115,   196,     0,     3,     4,    33,    34,
-      35,   199,   199,   199,   214,   199,   230,   113,   193,   199,
-     110,   215,   214,   383,    84,    85,    76,   215,   215,   215,
-     199,   215,   104,   213,   394,    32,    33,    34,    87,    36,
-      37,    38,    39,    40,   213,   117,   112,   330,   195,    98,
-     229,   113,   199,   194,   229,   251,   270,   314,    87,   255,
-      87,   113,   258,   195,   113,   322,   237,   199,   113,   263,
-     266,   285,    33,    34,   195,   113,    37,   126,   199,    76,
-     315,   195,   104,   105,   106,   199,   135,   195,    76,   194,
-     212,   199,   195,   307,   207,   208,   199,   146,   113,   148,
-     195,   315,    33,    34,    35,   199,   216,   214,   157,   196,
-     306,   368,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   180,   215,   216,   330,   314,   196,   372,   198,   314,
-     204,   205,   206,   322,   200,   201,    76,   322,   294,   295,
-     296,   297,   387,    82,    83,   390,    88,    89,   372,   290,
-     291,   195,   216,   398,   292,   293,   215,    76,   298,   299,
-     405,   385,    76,   387,     3,     4,   390,   226,   113,    76,
-     376,   194,   215,   214,   398,   215,   380,   215,   237,   368,
-     194,   405,   215,   368,   194,   213,   194,   393,     3,     4,
-     194,   250,   195,    32,    33,    34,   209,    36,    37,   258,
-     211,   210,    90,    92,   263,   194,   410,    76,   196,   215,
-     197,    78,    75,   335,   335,   195,   197,    32,    33,    34,
-     196,    36,    37,    38,    39,    40,   194,   199,   214,    76,
-     195,   197,   194,   197,   197,   214,   214,   195,   215,    12,
-     214,   216,   197,   267,   214,   301,   215,   300,   302,   129,
-     136,   303,   246,   304,    77,   305,   146,   250,   323,   226,
-     394,    89,   381,   180,    -1,   226,   250,   330,    87,    -1,
-      -1,   330,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   380,    -1,    -1,   383,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   394,    -1,    -1,    -1,    -1,
-      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,   410,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
+       9,     8,    76,    76,    93,   169,   165,   171,   155,   151,
+     235,    76,    77,    78,    76,    86,    87,   181,    88,    89,
+     198,   198,     4,   265,   322,    99,   100,     3,     4,   394,
+       9,     9,   201,   201,   217,   218,    98,    80,   216,   216,
+     107,    33,    34,    84,    85,    37,   120,   412,   217,   217,
+     151,    33,    34,    35,   111,   122,    32,    33,    34,     4,
+      36,    37,     0,   222,   201,   115,    73,   201,    95,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   179,   180,
+     217,    90,   112,   217,   115,   383,   201,   115,    33,    34,
+      35,    98,   101,   235,   258,   337,   321,   197,   262,   200,
+     215,   265,   249,   328,   111,   201,   115,   405,   114,   273,
+     408,    90,    90,   197,   202,   203,   197,   201,   416,   215,
+     201,   115,   131,    90,    91,   214,   424,   198,   115,   200,
+     115,   140,     3,     4,   235,   142,   236,   197,   197,   209,
+     210,   201,   201,    76,    77,    78,   155,   154,   157,   313,
+     197,   197,   196,   218,   379,   201,   165,   106,   107,   108,
+     197,    32,    33,    34,   201,    36,    37,    38,    39,    40,
+     218,   197,   201,   337,   198,   201,   196,   277,   196,   321,
+     301,   302,   303,   304,   297,   298,   328,   115,   347,   216,
+     299,   300,   292,   294,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   274,   222,   314,   197,    76,    77,    78,   196,
+     321,   217,   322,   387,   233,   232,   216,   328,   217,     3,
+       4,   217,   391,    33,    34,    35,   196,   379,   196,   196,
+     249,   206,   207,   208,   305,   306,   217,   411,   257,   215,
+     196,   219,   196,   212,   197,   355,   265,   196,    32,    33,
+      34,   270,    36,    37,    38,    39,    40,   274,   342,   342,
+     429,   211,   213,    92,    94,   217,   196,   199,   379,   198,
+      75,    80,   197,   383,   198,   216,   199,   196,   199,   201,
+     197,   196,   216,   197,   217,   216,   199,   199,   197,   197,
+     400,   218,    76,   403,    78,   405,   216,   199,   408,    12,
+     216,   308,   307,   311,   141,   233,   416,   217,   309,   312,
+     134,   253,   329,    80,   424,   233,   310,   157,   337,   329,
+     257,    92,   412,   270,   392,   337,    90,   344,   347,    -1,
+      -1,   257,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   103,   104,   105,   106,    -1,   108,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   391,    -1,    -1,   394,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   155,    -1,   157,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   412,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+     429,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+      82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   105,   106,   107,   108,    -1,   110,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   194,    -1,    -1,    -1,    -1,    -1,   200,
-     201,   202,   203,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   215,   216,   217,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    -1,    -1,    84,    85,
+      -1,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,   104,   105,
-     106,    -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   121,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
-      -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   194,    -1,
-      -1,    -1,    -1,    -1,   200,   201,   202,   203,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   215,
-     216,   217,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    -1,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,    -1,
+     202,   203,   204,   205,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   217,   218,   219,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      -1,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
+      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   103,   104,   105,   106,    -1,   108,    -1,    -1,
+     105,   106,   107,   108,    -1,   110,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   155,    -1,   157,    -1,    -1,    -1,
+      -1,    -1,   157,    -1,   159,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   194,    -1,    -1,    -1,    -1,    -1,   200,
-     201,   202,   203,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   215,   216,   217,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    -1,    -1,    84,    85,
+      -1,   196,    -1,    -1,    -1,    -1,    -1,   202,   203,   204,
+     205,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   217,   218,   219,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    -1,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    -1,    -1,    86,    87,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,   104,   105,
-     106,    -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   121,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,   106,   107,
+     108,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   123,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
-      -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157,
+      -1,   159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   194,    -1,
-      -1,    -1,    -1,    -1,   200,   201,   202,   203,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   215,
-     216,   217,     3,     4,     5,     6,     7,     8,     9,    10,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   196,    -1,
+      -1,    -1,    -1,    -1,   202,   203,   204,   205,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   217,
+     218,   219,     3,     4,     5,     6,     7,     8,     9,    10,
       11,    -1,    13,    14,    15,    16,    17,    18,    19,    20,
       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
       31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
@@ -1657,295 +1657,312 @@ static const yytype_int16 yycheck[] =
       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
       71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
+      81,    82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   103,   104,   105,   106,    -1,   108,    -1,    -1,
+      -1,    -1,    -1,    -1,   105,   106,   107,   108,    -1,   110,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   155,    -1,   157,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   194,    -1,    -1,    -1,    -1,    -1,   200,
-     201,   202,   203,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   215,   216,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    -1,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    -1,    -1,    84,    85,    -1,
+      -1,    -1,    -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,
+      -1,   202,   203,   204,   205,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   217,   218,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      -1,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
+      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   103,   104,   105,   106,
-      -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   121,    -1,    -1,    -1,    -1,    -1,
+     105,   106,   107,   108,    -1,   110,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
-     157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   157,    -1,   159,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   194,    -1,    -1,
-      -1,    -1,    -1,   200,   201,   202,   203,     3,     4,     5,
-       6,     7,     8,    -1,    -1,    -1,    -1,    -1,   215,   216,
-      -1,    -1,    -1,    -1,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    -1,
-      76,    77,    78,    79,    80,    81,    -1,    -1,    84,    85,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,   104,   105,
-     106,    -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   121,     5,     6,     7,     8,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,   155,
-      -1,   157,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    -1,    76,   194,    -1,
-      -1,    -1,    -1,    -1,   200,   201,   202,   203,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   215,
-      -1,    -1,    -1,    -1,    -1,   104,   105,   106,    -1,    -1,
+      -1,   196,    -1,    -1,    -1,    -1,    -1,   202,   203,   204,
+     205,     3,     4,     5,     6,     7,     8,    -1,    -1,    -1,
+      -1,    -1,   217,   218,    -1,    -1,    -1,    -1,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,    -1,    76,    77,    78,    79,    80,    81,
+      82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   105,   106,   107,   108,    -1,   110,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     5,     6,     7,     8,    -1,    -1,    -1,
+      -1,   123,    -1,     5,     6,     7,     8,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,   157,    41,
+      -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    41,
       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    -1,    76,    -1,    -1,    -1,    -1,    -1,
+      72,    73,    74,    -1,   196,    77,    -1,    -1,    -1,    -1,
+     202,   203,   204,   205,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   217,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   106,   107,   108,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     5,     6,     7,     8,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
+      -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    -1,    -1,    77,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   219,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,     5,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    -1,    -1,
+      -1,    -1,    -1,    -1,   157,    -1,   159,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    -1,    76,    77,    78,    79,    80,    81,    82,    83,
+      -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   219,    -1,    -1,    -1,
+      -1,    -1,   106,   107,   108,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   217,    -1,
-      -1,    -1,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       5,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    20,    21,    22,    23,    24,
+      -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   196,    -1,    -1,    -1,    -1,    -1,   202,   203,
+     204,   205,     3,     4,     5,     6,     7,     8,    -1,    -1,
+      -1,    -1,    -1,   217,    -1,    -1,    -1,    -1,    -1,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    -1,    76,    77,    78,    79,    80,
+      81,    82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   105,   106,   107,   108,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       5,     6,     7,     8,    -1,   196,    -1,    -1,    -1,    -1,
+      -1,   202,   203,   204,   205,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
-      -1,    -1,    -1,   155,    -1,   157,    41,    42,    43,    44,
+      -1,    -1,    -1,    -1,    -1,    -1,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      -1,    76,    77,    78,    79,    80,    81,    -1,    -1,    84,
-      85,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   217,    -1,    -1,    -1,   104,
-     105,   106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
+      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   106,   107,   108,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   194,
-      -1,    -1,    -1,    -1,    -1,   200,   201,   202,   203,     3,
-       4,     5,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,
-     215,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    -1,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    -1,    76,    77,    78,    79,    80,    81,    -1,    -1,
-      84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
-     104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   121,    -1,    -1,
+      -1,    -1,   157,    -1,   159,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     5,     6,     7,     8,
+      -1,   196,    -1,    -1,   199,    -1,    -1,   202,   203,   204,
+     205,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    -1,    76,    77,    78,
+      79,    80,    81,    82,    83,    -1,    -1,    86,    87,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,     5,     6,     7,     8,    -1,
-     194,    -1,    -1,    -1,    -1,    -1,   200,   201,   202,   203,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    -1,    76,    77,    78,    79,
-      80,    81,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   104,   105,   106,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
+     159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     5,     6,     7,     8,    -1,   196,    -1,    -1,
+     199,    -1,    -1,   202,   203,   204,   205,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    -1,    76,    77,    78,    79,    80,    81,    82,
+      83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   155,    -1,   157,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,
-       6,     7,     8,    -1,   194,    -1,    -1,   197,    -1,    -1,
-     200,   201,   202,   203,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    -1,
-      76,    77,    78,    79,    80,    81,    -1,    -1,    84,    85,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,   105,
-     106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
-      -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,     6,
+       7,     8,    -1,   196,    -1,    -1,   199,    -1,    -1,   202,
+     203,   204,   205,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,    -1,    76,
+      77,    78,    79,    80,    81,    82,    83,    -1,    -1,    86,
+      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
+     107,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     5,     6,     7,     8,    -1,   194,    -1,
-      -1,   197,    -1,    -1,   200,   201,   202,   203,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    -1,    76,    77,    78,    79,    80,    81,
-      -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     157,    -1,   159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     5,     6,     7,     8,    -1,   196,
+      -1,    -1,    -1,    -1,    -1,   202,   203,   204,   205,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    -1,    76,    77,    78,    79,    80,
+      81,    82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   155,    -1,   157,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   106,   107,   108,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,     6,     7,
-       8,    -1,   194,    -1,    -1,   197,    -1,    -1,   200,   201,
-     202,   203,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    -1,    76,    77,
-      78,    79,    80,    81,    -1,    -1,    84,    85,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   104,   105,   106,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,   157,
+       5,     6,     7,     8,    -1,   196,    -1,    -1,    -1,    -1,
+      -1,   202,   203,   204,   205,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      -1,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
+      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   106,   107,   108,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,     5,     6,     7,     8,    -1,   194,    -1,    -1,    -1,
-      -1,    -1,   200,   201,   202,   203,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    -1,    76,    77,    78,    79,    80,    81,    -1,    -1,
-      84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   157,    -1,   159,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
+      -1,   196,    -1,    -1,    -1,    -1,    -1,   202,   203,   204,
+     205,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    -1,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    -1,    -1,    77,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   105,   106,   107,   108,
+      -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   118,
+     119,   120,   121,   122,   123,     5,     6,     7,     8,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     3,     4,     5,     6,     7,     8,    -1,
-     194,    -1,    -1,    -1,    -1,    -1,   200,   201,   202,   203,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      30,    31,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
+     159,    41,    42,    43,    44,    45,    46,    47,    48,    49,
       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    -1,    76,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      70,    71,    72,    73,    74,    -1,    -1,    77,     5,     6,
+       7,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    -1,   106,   107,   108,    -1,
+      -1,    -1,    -1,    -1,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,    -1,    -1,
+      77,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,   159,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   103,   104,   105,   106,    -1,   108,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   116,   117,   118,   119,
-     120,   121,     5,     6,     7,     8,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
-      -1,    -1,    -1,    -1,    -1,   155,    -1,   157,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    -1,    76,     5,     6,     7,     8,    81,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    -1,    76,     5,     6,     7,     8,
-      -1,    -1,   155,    -1,   157,    -1,    -1,    -1,    -1,    -1,
-      -1,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,   104,   105,   106,    -1,    -1,    -1,    -1,
-      -1,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    -1,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,   155,    -1,   157,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,   157
+     157,    -1,   159
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   109,   219,   221,    78,     0,   223,   113,   110,   220,
-     224,    76,     3,     4,     5,     6,     7,     8,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    76,   103,   104,   105,   106,   108,   116,   117,
-     118,   119,   120,   121,   155,   157,   222,   225,   255,   256,
-     257,   258,   259,   264,   265,   266,   267,   270,   272,   273,
-     274,   275,   276,   277,   278,   279,   303,   304,   112,    33,
-      34,    37,    76,   216,    76,   270,   273,   278,   113,   113,
-     113,   113,   113,   194,   303,   215,   216,   290,   195,   199,
-       4,    33,    34,    35,   261,   262,   271,   199,   215,    76,
-     273,   273,   274,   196,   275,    76,   216,   274,   280,   281,
-     273,   275,    76,   268,   269,     9,    10,    11,    13,    14,
-      15,    16,    17,    18,    19,    75,    76,    77,    78,    79,
-      80,    81,    84,    85,   194,   200,   201,   202,   203,   215,
-     216,   217,   226,   227,   228,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   251,   253,   255,   256,
-     274,   285,   286,   287,   288,   291,   292,   293,   296,   297,
-     298,   302,   261,   260,   263,   274,   262,    76,   194,   196,
-     214,   197,   237,   250,   254,   274,   113,   280,    76,   282,
-     283,   217,   281,   215,   214,   195,   199,   215,   215,   286,
-     194,   194,   215,   215,   253,   194,   253,   213,   194,   237,
-     237,   253,   217,   291,    84,    85,   196,   198,   195,   195,
-     199,    74,   251,   194,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   214,   252,   237,   204,   205,   206,
-     200,   201,    82,    83,    86,    87,   207,   208,    88,    89,
-     209,   210,   211,    90,    92,    91,   212,   199,   215,   217,
-     286,    76,   260,   263,   196,   214,   197,   254,   251,   284,
-     197,   217,   196,   199,   215,    78,   269,    75,   285,   292,
-     299,   253,   215,   253,   213,   103,   253,   266,   295,   195,
-     217,   229,   253,    76,   232,   251,   251,   237,   237,   237,
-     239,   239,   240,   240,   241,   241,   241,   241,   242,   242,
-     243,   244,   245,   246,   247,   248,   253,   251,   196,   197,
-     254,   284,   214,   197,   254,   283,   194,   295,   300,   301,
-     195,   195,    76,   195,   197,   213,   254,   214,   197,   284,
-     214,   197,   253,   215,   195,   286,   294,   288,   214,   287,
-     289,   290,   251,   197,   284,   214,   284,   195,   253,   289,
-      12,   284,   284,   215,   286
+       0,   111,   221,   223,    80,     0,   225,   115,   112,   222,
+     227,    76,    77,    78,   226,     3,     4,     5,     6,     7,
+       8,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    77,   105,   106,   107,   108,
+     110,   118,   119,   120,   121,   122,   123,   157,   159,   224,
+     228,   262,   263,   264,   265,   266,   271,   272,   273,   274,
+     277,   279,   280,   281,   282,   283,   284,   285,   286,   311,
+     312,   114,    33,    34,    37,   218,   226,    76,    78,   229,
+     277,   280,   285,   115,   115,   115,   115,   115,   196,   311,
+     217,   218,   298,   197,   201,     4,    33,    34,    35,   268,
+     269,   278,   201,   217,    76,    78,   226,   229,   280,   280,
+     281,   198,   282,   226,   281,   287,   288,   218,   280,   282,
+     226,   275,   276,     9,    10,    11,    13,    14,    15,    16,
+      17,    18,    19,    75,    79,    80,    81,    82,    83,    86,
+      87,   196,   202,   203,   204,   205,   217,   218,   219,   229,
+     230,   231,   233,   234,   235,   236,   237,   238,   239,   244,
+     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   260,   262,   263,   281,   292,   293,
+     294,   295,   299,   300,   301,   304,   305,   306,   310,   268,
+     267,   270,   281,   269,   226,   198,   216,   196,   199,   244,
+     257,   261,   281,   115,   226,   289,   290,   219,   288,   287,
+     217,   216,   197,   201,   217,   217,   293,   196,   196,   217,
+     217,   260,   196,   260,   215,   196,   244,   244,   260,   219,
+     296,    86,    87,   198,   200,   197,   197,   201,    74,   258,
+     196,    95,    96,    97,    98,    99,   100,   101,   102,   103,
+     104,   216,   259,   244,   206,   207,   208,   202,   203,    84,
+      85,    88,    89,   209,   210,    90,    91,   211,   212,   213,
+      92,    94,    93,   214,   201,   217,   219,   293,   226,   267,
+     270,   198,   216,   199,   261,   258,   291,   199,   198,   201,
+     217,   219,    80,   276,    75,   292,   300,   307,   260,   217,
+     260,   215,   105,   260,   273,   303,   197,   299,   232,   260,
+     226,   229,   240,   241,   242,   243,   258,   258,   244,   244,
+     244,   246,   246,   247,   247,   248,   248,   248,   248,   249,
+     249,   250,   251,   252,   253,   254,   255,   260,   258,   198,
+     199,   261,   291,   216,   199,   261,   290,   196,   303,   308,
+     309,   197,   197,   226,   197,   219,   199,   196,   197,   197,
+     201,    74,   258,   215,   261,   216,   199,   291,   216,   199,
+     260,   217,   197,   293,   302,   295,   216,   294,   297,   298,
+     258,   258,   199,   291,   216,   291,   197,   260,   297,    12,
+     291,   291,   217,   293
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -2636,7 +2653,7 @@ YYLTYPE yylloc;
 }
 
 /* Line 1251 of yacc.c  */
-#line 2640 "glsl_parser.cpp"
+#line 2657 "glsl_parser.cpp"
   yylsp[0] = yylloc;
 
   goto yysetstate;
@@ -2824,17 +2841,28 @@ yyreduce:
         case 2:
 
 /* Line 1464 of yacc.c  */
-#line 213 "glsl_parser.ypp"
+#line 218 "glsl_parser.ypp"
     {
           _mesa_glsl_initialize_types(state);
        ;}
     break;
 
-  case 5:
+  case 3:
 
 /* Line 1464 of yacc.c  */
 #line 222 "glsl_parser.ypp"
     {
+          delete state->symbols;
+          state->symbols = new(ralloc_parent(state)) glsl_symbol_table;
+          _mesa_glsl_initialize_types(state);
+       ;}
+    break;
+
+  case 5:
+
+/* Line 1464 of yacc.c  */
+#line 232 "glsl_parser.ypp"
+    {
           bool supported = false;
 
           switch ((yyvsp[(2) - (3)].n)) {
@@ -2875,7 +2903,7 @@ yyreduce:
   case 10:
 
 /* Line 1464 of yacc.c  */
-#line 266 "glsl_parser.ypp"
+#line 276 "glsl_parser.ypp"
     {
           if (state->language_version < 120) {
              _mesa_glsl_warning(& (yylsp[(1) - (2)]), state,
@@ -2887,10 +2915,10 @@ yyreduce:
        ;}
     break;
 
-  case 13:
+  case 16:
 
 /* Line 1464 of yacc.c  */
-#line 284 "glsl_parser.ypp"
+#line 300 "glsl_parser.ypp"
     {
           if (!_mesa_glsl_process_extension((yyvsp[(2) - (5)].identifier), & (yylsp[(2) - (5)]), (yyvsp[(4) - (5)].identifier), & (yylsp[(4) - (5)]), state)) {
              YYERROR;
@@ -2898,10 +2926,10 @@ yyreduce:
        ;}
     break;
 
-  case 14:
+  case 17:
 
 /* Line 1464 of yacc.c  */
-#line 293 "glsl_parser.ypp"
+#line 309 "glsl_parser.ypp"
     {
           /* FINISHME: The NULL test is required because pragmas are set to
            * FINISHME: NULL. (See production rule for external_declaration.)
@@ -2911,10 +2939,10 @@ yyreduce:
        ;}
     break;
 
-  case 15:
+  case 18:
 
 /* Line 1464 of yacc.c  */
-#line 301 "glsl_parser.ypp"
+#line 317 "glsl_parser.ypp"
     {
           /* FINISHME: The NULL test is required because pragmas are set to
            * FINISHME: NULL. (See production rule for external_declaration.)
@@ -2924,10 +2952,10 @@ yyreduce:
        ;}
     break;
 
-  case 17:
+  case 21:
 
 /* Line 1464 of yacc.c  */
-#line 316 "glsl_parser.ypp"
+#line 333 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_identifier, NULL, NULL, NULL);
@@ -2936,10 +2964,10 @@ yyreduce:
        ;}
     break;
 
-  case 18:
+  case 22:
 
 /* Line 1464 of yacc.c  */
-#line 323 "glsl_parser.ypp"
+#line 340 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_int_constant, NULL, NULL, NULL);
@@ -2948,10 +2976,10 @@ yyreduce:
        ;}
     break;
 
-  case 19:
+  case 23:
 
 /* Line 1464 of yacc.c  */
-#line 330 "glsl_parser.ypp"
+#line 347 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_uint_constant, NULL, NULL, NULL);
@@ -2960,10 +2988,10 @@ yyreduce:
        ;}
     break;
 
-  case 20:
+  case 24:
 
 /* Line 1464 of yacc.c  */
-#line 337 "glsl_parser.ypp"
+#line 354 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_float_constant, NULL, NULL, NULL);
@@ -2972,10 +3000,10 @@ yyreduce:
        ;}
     break;
 
-  case 21:
+  case 25:
 
 /* Line 1464 of yacc.c  */
-#line 344 "glsl_parser.ypp"
+#line 361 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_bool_constant, NULL, NULL, NULL);
@@ -2984,19 +3012,19 @@ yyreduce:
        ;}
     break;
 
-  case 22:
+  case 26:
 
 /* Line 1464 of yacc.c  */
-#line 351 "glsl_parser.ypp"
+#line 368 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(2) - (3)].expression);
        ;}
     break;
 
-  case 24:
+  case 28:
 
 /* Line 1464 of yacc.c  */
-#line 359 "glsl_parser.ypp"
+#line 376 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_array_index, (yyvsp[(1) - (4)].expression), (yyvsp[(3) - (4)].expression), NULL);
@@ -3004,19 +3032,19 @@ yyreduce:
        ;}
     break;
 
-  case 25:
+  case 29:
 
 /* Line 1464 of yacc.c  */
-#line 365 "glsl_parser.ypp"
+#line 382 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (1)].expression);
        ;}
     break;
 
-  case 26:
+  case 30:
 
 /* Line 1464 of yacc.c  */
-#line 369 "glsl_parser.ypp"
+#line 386 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), NULL, NULL);
@@ -3025,10 +3053,10 @@ yyreduce:
        ;}
     break;
 
-  case 27:
+  case 31:
 
 /* Line 1464 of yacc.c  */
-#line 376 "glsl_parser.ypp"
+#line 393 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_post_inc, (yyvsp[(1) - (2)].expression), NULL, NULL);
@@ -3036,10 +3064,10 @@ yyreduce:
        ;}
     break;
 
-  case 28:
+  case 32:
 
 /* Line 1464 of yacc.c  */
-#line 382 "glsl_parser.ypp"
+#line 399 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_post_dec, (yyvsp[(1) - (2)].expression), NULL, NULL);
@@ -3047,10 +3075,10 @@ yyreduce:
        ;}
     break;
 
-  case 32:
+  case 36:
 
 /* Line 1464 of yacc.c  */
-#line 400 "glsl_parser.ypp"
+#line 417 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL);
@@ -3058,10 +3086,10 @@ yyreduce:
        ;}
     break;
 
-  case 37:
+  case 41:
 
 /* Line 1464 of yacc.c  */
-#line 419 "glsl_parser.ypp"
+#line 436 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (2)].expression);
           (yyval.expression)->set_location(yylloc);
@@ -3069,10 +3097,10 @@ yyreduce:
        ;}
     break;
 
-  case 38:
+  case 42:
 
 /* Line 1464 of yacc.c  */
-#line 425 "glsl_parser.ypp"
+#line 442 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (3)].expression);
           (yyval.expression)->set_location(yylloc);
@@ -3080,10 +3108,10 @@ yyreduce:
        ;}
     break;
 
-  case 40:
+  case 44:
 
 /* Line 1464 of yacc.c  */
-#line 441 "glsl_parser.ypp"
+#line 458 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_function_expression((yyvsp[(1) - (1)].type_specifier));
@@ -3091,10 +3119,10 @@ yyreduce:
        ;}
     break;
 
-  case 41:
+  case 45:
 
 /* Line 1464 of yacc.c  */
-#line 447 "glsl_parser.ypp"
+#line 464 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier));
@@ -3103,10 +3131,10 @@ yyreduce:
        ;}
     break;
 
-  case 42:
+  case 46:
 
 /* Line 1464 of yacc.c  */
-#line 454 "glsl_parser.ypp"
+#line 471 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier));
@@ -3115,10 +3143,44 @@ yyreduce:
        ;}
     break;
 
-  case 44:
+  case 51:
+
+/* Line 1464 of yacc.c  */
+#line 491 "glsl_parser.ypp"
+    {
+          (yyval.expression) = (yyvsp[(1) - (2)].expression);
+          (yyval.expression)->set_location(yylloc);
+          (yyval.expression)->expressions.push_tail(& (yyvsp[(2) - (2)].expression)->link);
+       ;}
+    break;
+
+  case 52:
+
+/* Line 1464 of yacc.c  */
+#line 497 "glsl_parser.ypp"
+    {
+          (yyval.expression) = (yyvsp[(1) - (3)].expression);
+          (yyval.expression)->set_location(yylloc);
+          (yyval.expression)->expressions.push_tail(& (yyvsp[(3) - (3)].expression)->link);
+       ;}
+    break;
+
+  case 53:
 
 /* Line 1464 of yacc.c  */
-#line 466 "glsl_parser.ypp"
+#line 509 "glsl_parser.ypp"
+    {
+          void *ctx = state;
+          ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (2)].identifier));
+          (yyval.expression) = new(ctx) ast_function_expression(callee);
+          (yyval.expression)->set_location(yylloc);
+       ;}
+    break;
+
+  case 55:
+
+/* Line 1464 of yacc.c  */
+#line 521 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_pre_inc, (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3126,10 +3188,10 @@ yyreduce:
        ;}
     break;
 
-  case 45:
+  case 56:
 
 /* Line 1464 of yacc.c  */
-#line 472 "glsl_parser.ypp"
+#line 527 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_pre_dec, (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3137,10 +3199,10 @@ yyreduce:
        ;}
     break;
 
-  case 46:
+  case 57:
 
 /* Line 1464 of yacc.c  */
-#line 478 "glsl_parser.ypp"
+#line 533 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression((yyvsp[(1) - (2)].n), (yyvsp[(2) - (2)].expression), NULL, NULL);
@@ -3148,38 +3210,38 @@ yyreduce:
        ;}
     break;
 
-  case 47:
+  case 58:
 
 /* Line 1464 of yacc.c  */
-#line 487 "glsl_parser.ypp"
+#line 542 "glsl_parser.ypp"
     { (yyval.n) = ast_plus; ;}
     break;
 
-  case 48:
+  case 59:
 
 /* Line 1464 of yacc.c  */
-#line 488 "glsl_parser.ypp"
+#line 543 "glsl_parser.ypp"
     { (yyval.n) = ast_neg; ;}
     break;
 
-  case 49:
+  case 60:
 
 /* Line 1464 of yacc.c  */
-#line 489 "glsl_parser.ypp"
+#line 544 "glsl_parser.ypp"
     { (yyval.n) = ast_logic_not; ;}
     break;
 
-  case 50:
+  case 61:
 
 /* Line 1464 of yacc.c  */
-#line 490 "glsl_parser.ypp"
+#line 545 "glsl_parser.ypp"
     { (yyval.n) = ast_bit_not; ;}
     break;
 
-  case 52:
+  case 63:
 
 /* Line 1464 of yacc.c  */
-#line 496 "glsl_parser.ypp"
+#line 551 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_mul, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3187,10 +3249,10 @@ yyreduce:
        ;}
     break;
 
-  case 53:
+  case 64:
 
 /* Line 1464 of yacc.c  */
-#line 502 "glsl_parser.ypp"
+#line 557 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_div, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3198,10 +3260,10 @@ yyreduce:
        ;}
     break;
 
-  case 54:
+  case 65:
 
 /* Line 1464 of yacc.c  */
-#line 508 "glsl_parser.ypp"
+#line 563 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_mod, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3209,10 +3271,10 @@ yyreduce:
        ;}
     break;
 
-  case 56:
+  case 67:
 
 /* Line 1464 of yacc.c  */
-#line 518 "glsl_parser.ypp"
+#line 573 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_add, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3220,10 +3282,10 @@ yyreduce:
        ;}
     break;
 
-  case 57:
+  case 68:
 
 /* Line 1464 of yacc.c  */
-#line 524 "glsl_parser.ypp"
+#line 579 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_sub, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3231,10 +3293,10 @@ yyreduce:
        ;}
     break;
 
-  case 59:
+  case 70:
 
 /* Line 1464 of yacc.c  */
-#line 534 "glsl_parser.ypp"
+#line 589 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_lshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3242,10 +3304,10 @@ yyreduce:
        ;}
     break;
 
-  case 60:
+  case 71:
 
 /* Line 1464 of yacc.c  */
-#line 540 "glsl_parser.ypp"
+#line 595 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_rshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3253,10 +3315,10 @@ yyreduce:
        ;}
     break;
 
-  case 62:
+  case 73:
 
 /* Line 1464 of yacc.c  */
-#line 550 "glsl_parser.ypp"
+#line 605 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_less, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3264,10 +3326,10 @@ yyreduce:
        ;}
     break;
 
-  case 63:
+  case 74:
 
 /* Line 1464 of yacc.c  */
-#line 556 "glsl_parser.ypp"
+#line 611 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_greater, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3275,10 +3337,10 @@ yyreduce:
        ;}
     break;
 
-  case 64:
+  case 75:
 
 /* Line 1464 of yacc.c  */
-#line 562 "glsl_parser.ypp"
+#line 617 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_lequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3286,10 +3348,10 @@ yyreduce:
        ;}
     break;
 
-  case 65:
+  case 76:
 
 /* Line 1464 of yacc.c  */
-#line 568 "glsl_parser.ypp"
+#line 623 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_gequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3297,10 +3359,10 @@ yyreduce:
        ;}
     break;
 
-  case 67:
+  case 78:
 
 /* Line 1464 of yacc.c  */
-#line 578 "glsl_parser.ypp"
+#line 633 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_equal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3308,10 +3370,10 @@ yyreduce:
        ;}
     break;
 
-  case 68:
+  case 79:
 
 /* Line 1464 of yacc.c  */
-#line 584 "glsl_parser.ypp"
+#line 639 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_nequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3319,10 +3381,10 @@ yyreduce:
        ;}
     break;
 
-  case 70:
+  case 81:
 
 /* Line 1464 of yacc.c  */
-#line 594 "glsl_parser.ypp"
+#line 649 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3330,10 +3392,10 @@ yyreduce:
        ;}
     break;
 
-  case 72:
+  case 83:
 
 /* Line 1464 of yacc.c  */
-#line 604 "glsl_parser.ypp"
+#line 659 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3341,10 +3403,10 @@ yyreduce:
        ;}
     break;
 
-  case 74:
+  case 85:
 
 /* Line 1464 of yacc.c  */
-#line 614 "glsl_parser.ypp"
+#line 669 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3352,10 +3414,10 @@ yyreduce:
        ;}
     break;
 
-  case 76:
+  case 87:
 
 /* Line 1464 of yacc.c  */
-#line 624 "glsl_parser.ypp"
+#line 679 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3363,10 +3425,10 @@ yyreduce:
        ;}
     break;
 
-  case 78:
+  case 89:
 
 /* Line 1464 of yacc.c  */
-#line 634 "glsl_parser.ypp"
+#line 689 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3374,10 +3436,10 @@ yyreduce:
        ;}
     break;
 
-  case 80:
+  case 91:
 
 /* Line 1464 of yacc.c  */
-#line 644 "glsl_parser.ypp"
+#line 699 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression));
@@ -3385,10 +3447,10 @@ yyreduce:
        ;}
     break;
 
-  case 82:
+  case 93:
 
 /* Line 1464 of yacc.c  */
-#line 654 "glsl_parser.ypp"
+#line 709 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression(ast_conditional, (yyvsp[(1) - (5)].expression), (yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].expression));
@@ -3396,10 +3458,10 @@ yyreduce:
        ;}
     break;
 
-  case 84:
+  case 95:
 
 /* Line 1464 of yacc.c  */
-#line 664 "glsl_parser.ypp"
+#line 719 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.expression) = new(ctx) ast_expression((yyvsp[(2) - (3)].n), (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL);
@@ -3407,96 +3469,96 @@ yyreduce:
        ;}
     break;
 
-  case 85:
+  case 96:
 
 /* Line 1464 of yacc.c  */
-#line 672 "glsl_parser.ypp"
+#line 727 "glsl_parser.ypp"
     { (yyval.n) = ast_assign; ;}
     break;
 
-  case 86:
+  case 97:
 
 /* Line 1464 of yacc.c  */
-#line 673 "glsl_parser.ypp"
+#line 728 "glsl_parser.ypp"
     { (yyval.n) = ast_mul_assign; ;}
     break;
 
-  case 87:
+  case 98:
 
 /* Line 1464 of yacc.c  */
-#line 674 "glsl_parser.ypp"
+#line 729 "glsl_parser.ypp"
     { (yyval.n) = ast_div_assign; ;}
     break;
 
-  case 88:
+  case 99:
 
 /* Line 1464 of yacc.c  */
-#line 675 "glsl_parser.ypp"
+#line 730 "glsl_parser.ypp"
     { (yyval.n) = ast_mod_assign; ;}
     break;
 
-  case 89:
+  case 100:
 
 /* Line 1464 of yacc.c  */
-#line 676 "glsl_parser.ypp"
+#line 731 "glsl_parser.ypp"
     { (yyval.n) = ast_add_assign; ;}
     break;
 
-  case 90:
+  case 101:
 
 /* Line 1464 of yacc.c  */
-#line 677 "glsl_parser.ypp"
+#line 732 "glsl_parser.ypp"
     { (yyval.n) = ast_sub_assign; ;}
     break;
 
-  case 91:
+  case 102:
 
 /* Line 1464 of yacc.c  */
-#line 678 "glsl_parser.ypp"
+#line 733 "glsl_parser.ypp"
     { (yyval.n) = ast_ls_assign; ;}
     break;
 
-  case 92:
+  case 103:
 
 /* Line 1464 of yacc.c  */
-#line 679 "glsl_parser.ypp"
+#line 734 "glsl_parser.ypp"
     { (yyval.n) = ast_rs_assign; ;}
     break;
 
-  case 93:
+  case 104:
 
 /* Line 1464 of yacc.c  */
-#line 680 "glsl_parser.ypp"
+#line 735 "glsl_parser.ypp"
     { (yyval.n) = ast_and_assign; ;}
     break;
 
-  case 94:
+  case 105:
 
 /* Line 1464 of yacc.c  */
-#line 681 "glsl_parser.ypp"
+#line 736 "glsl_parser.ypp"
     { (yyval.n) = ast_xor_assign; ;}
     break;
 
-  case 95:
+  case 106:
 
 /* Line 1464 of yacc.c  */
-#line 682 "glsl_parser.ypp"
+#line 737 "glsl_parser.ypp"
     { (yyval.n) = ast_or_assign; ;}
     break;
 
-  case 96:
+  case 107:
 
 /* Line 1464 of yacc.c  */
-#line 687 "glsl_parser.ypp"
+#line 742 "glsl_parser.ypp"
     {
           (yyval.expression) = (yyvsp[(1) - (1)].expression);
        ;}
     break;
 
-  case 97:
+  case 108:
 
 /* Line 1464 of yacc.c  */
-#line 691 "glsl_parser.ypp"
+#line 746 "glsl_parser.ypp"
     {
           void *ctx = state;
           if ((yyvsp[(1) - (3)].expression)->oper != ast_sequence) {
@@ -3511,28 +3573,29 @@ yyreduce:
        ;}
     break;
 
-  case 99:
+  case 110:
 
 /* Line 1464 of yacc.c  */
-#line 711 "glsl_parser.ypp"
+#line 766 "glsl_parser.ypp"
     {
+          state->symbols->pop_scope();
           (yyval.node) = (yyvsp[(1) - (2)].function);
        ;}
     break;
 
-  case 100:
+  case 111:
 
 /* Line 1464 of yacc.c  */
-#line 715 "glsl_parser.ypp"
+#line 771 "glsl_parser.ypp"
     {
           (yyval.node) = (yyvsp[(1) - (2)].declarator_list);
        ;}
     break;
 
-  case 101:
+  case 112:
 
 /* Line 1464 of yacc.c  */
-#line 719 "glsl_parser.ypp"
+#line 775 "glsl_parser.ypp"
     {
           (yyvsp[(3) - (4)].type_specifier)->precision = (yyvsp[(2) - (4)].n);
           (yyvsp[(3) - (4)].type_specifier)->is_precision_statement = true;
@@ -3540,43 +3603,46 @@ yyreduce:
        ;}
     break;
 
-  case 105:
+  case 116:
 
 /* Line 1464 of yacc.c  */
-#line 737 "glsl_parser.ypp"
+#line 793 "glsl_parser.ypp"
     {
           (yyval.function) = (yyvsp[(1) - (2)].function);
           (yyval.function)->parameters.push_tail(& (yyvsp[(2) - (2)].parameter_declarator)->link);
        ;}
     break;
 
-  case 106:
+  case 117:
 
 /* Line 1464 of yacc.c  */
-#line 742 "glsl_parser.ypp"
+#line 798 "glsl_parser.ypp"
     {
           (yyval.function) = (yyvsp[(1) - (3)].function);
           (yyval.function)->parameters.push_tail(& (yyvsp[(3) - (3)].parameter_declarator)->link);
        ;}
     break;
 
-  case 107:
+  case 118:
 
 /* Line 1464 of yacc.c  */
-#line 750 "glsl_parser.ypp"
+#line 806 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.function) = new(ctx) ast_function();
           (yyval.function)->set_location(yylloc);
           (yyval.function)->return_type = (yyvsp[(1) - (3)].fully_specified_type);
           (yyval.function)->identifier = (yyvsp[(2) - (3)].identifier);
+
+          state->symbols->add_function(new(state) ir_function((yyvsp[(2) - (3)].identifier)));
+          state->symbols->push_scope();
        ;}
     break;
 
-  case 108:
+  case 119:
 
 /* Line 1464 of yacc.c  */
-#line 761 "glsl_parser.ypp"
+#line 820 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3588,10 +3654,10 @@ yyreduce:
        ;}
     break;
 
-  case 109:
+  case 120:
 
 /* Line 1464 of yacc.c  */
-#line 771 "glsl_parser.ypp"
+#line 830 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3605,10 +3671,10 @@ yyreduce:
        ;}
     break;
 
-  case 110:
+  case 121:
 
 /* Line 1464 of yacc.c  */
-#line 786 "glsl_parser.ypp"
+#line 845 "glsl_parser.ypp"
     {
           (yyvsp[(1) - (3)].type_qualifier).flags.i |= (yyvsp[(2) - (3)].type_qualifier).flags.i;
 
@@ -3617,20 +3683,20 @@ yyreduce:
        ;}
     break;
 
-  case 111:
+  case 122:
 
 /* Line 1464 of yacc.c  */
-#line 793 "glsl_parser.ypp"
+#line 852 "glsl_parser.ypp"
     {
           (yyval.parameter_declarator) = (yyvsp[(2) - (2)].parameter_declarator);
           (yyval.parameter_declarator)->type->qualifier = (yyvsp[(1) - (2)].type_qualifier);
        ;}
     break;
 
-  case 112:
+  case 123:
 
 /* Line 1464 of yacc.c  */
-#line 798 "glsl_parser.ypp"
+#line 857 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyvsp[(1) - (3)].type_qualifier).flags.i |= (yyvsp[(2) - (3)].type_qualifier).flags.i;
@@ -3643,10 +3709,10 @@ yyreduce:
        ;}
     break;
 
-  case 113:
+  case 124:
 
 /* Line 1464 of yacc.c  */
-#line 809 "glsl_parser.ypp"
+#line 868 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
@@ -3657,39 +3723,39 @@ yyreduce:
        ;}
     break;
 
-  case 114:
+  case 125:
 
 /* Line 1464 of yacc.c  */
-#line 821 "glsl_parser.ypp"
+#line 880 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
        ;}
     break;
 
-  case 115:
+  case 126:
 
 /* Line 1464 of yacc.c  */
-#line 825 "glsl_parser.ypp"
+#line 884 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.in = 1;
        ;}
     break;
 
-  case 116:
+  case 127:
 
 /* Line 1464 of yacc.c  */
-#line 830 "glsl_parser.ypp"
+#line 889 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.out = 1;
        ;}
     break;
 
-  case 117:
+  case 128:
 
 /* Line 1464 of yacc.c  */
-#line 835 "glsl_parser.ypp"
+#line 894 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.in = 1;
@@ -3697,10 +3763,10 @@ yyreduce:
        ;}
     break;
 
-  case 120:
+  case 131:
 
 /* Line 1464 of yacc.c  */
-#line 849 "glsl_parser.ypp"
+#line 908 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (3)].identifier), false, NULL, NULL);
@@ -3708,13 +3774,14 @@ yyreduce:
 
           (yyval.declarator_list) = (yyvsp[(1) - (3)].declarator_list);
           (yyval.declarator_list)->declarations.push_tail(&decl->link);
+          state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (3)].identifier), ir_var_auto));
        ;}
     break;
 
-  case 121:
+  case 132:
 
 /* Line 1464 of yacc.c  */
-#line 858 "glsl_parser.ypp"
+#line 918 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), true, NULL, NULL);
@@ -3722,13 +3789,14 @@ yyreduce:
 
           (yyval.declarator_list) = (yyvsp[(1) - (5)].declarator_list);
           (yyval.declarator_list)->declarations.push_tail(&decl->link);
+          state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (5)].identifier), ir_var_auto));
        ;}
     break;
 
-  case 122:
+  case 133:
 
 /* Line 1464 of yacc.c  */
-#line 867 "glsl_parser.ypp"
+#line 928 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (6)].identifier), true, (yyvsp[(5) - (6)].expression), NULL);
@@ -3736,13 +3804,14 @@ yyreduce:
 
           (yyval.declarator_list) = (yyvsp[(1) - (6)].declarator_list);
           (yyval.declarator_list)->declarations.push_tail(&decl->link);
+          state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (6)].identifier), ir_var_auto));
        ;}
     break;
 
-  case 123:
+  case 134:
 
 /* Line 1464 of yacc.c  */
-#line 876 "glsl_parser.ypp"
+#line 938 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (7)].identifier), true, NULL, (yyvsp[(7) - (7)].expression));
@@ -3750,13 +3819,14 @@ yyreduce:
 
           (yyval.declarator_list) = (yyvsp[(1) - (7)].declarator_list);
           (yyval.declarator_list)->declarations.push_tail(&decl->link);
+          state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (7)].identifier), ir_var_auto));
        ;}
     break;
 
-  case 124:
+  case 135:
 
 /* Line 1464 of yacc.c  */
-#line 885 "glsl_parser.ypp"
+#line 948 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (8)].identifier), true, (yyvsp[(5) - (8)].expression), (yyvsp[(8) - (8)].expression));
@@ -3764,13 +3834,14 @@ yyreduce:
 
           (yyval.declarator_list) = (yyvsp[(1) - (8)].declarator_list);
           (yyval.declarator_list)->declarations.push_tail(&decl->link);
+          state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (8)].identifier), ir_var_auto));
        ;}
     break;
 
-  case 125:
+  case 136:
 
 /* Line 1464 of yacc.c  */
-#line 894 "glsl_parser.ypp"
+#line 958 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), false, NULL, (yyvsp[(5) - (5)].expression));
@@ -3778,13 +3849,14 @@ yyreduce:
 
           (yyval.declarator_list) = (yyvsp[(1) - (5)].declarator_list);
           (yyval.declarator_list)->declarations.push_tail(&decl->link);
+          state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(3) - (5)].identifier), ir_var_auto));
        ;}
     break;
 
-  case 126:
+  case 137:
 
 /* Line 1464 of yacc.c  */
-#line 907 "glsl_parser.ypp"
+#line 972 "glsl_parser.ypp"
     {
           void *ctx = state;
           if ((yyvsp[(1) - (1)].fully_specified_type)->specifier->type_specifier != ast_struct) {
@@ -3797,10 +3869,10 @@ yyreduce:
        ;}
     break;
 
-  case 127:
+  case 138:
 
 /* Line 1464 of yacc.c  */
-#line 918 "glsl_parser.ypp"
+#line 983 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
@@ -3811,10 +3883,10 @@ yyreduce:
        ;}
     break;
 
-  case 128:
+  case 139:
 
 /* Line 1464 of yacc.c  */
-#line 927 "glsl_parser.ypp"
+#line 992 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), true, NULL, NULL);
@@ -3825,10 +3897,10 @@ yyreduce:
        ;}
     break;
 
-  case 129:
+  case 140:
 
 /* Line 1464 of yacc.c  */
-#line 936 "glsl_parser.ypp"
+#line 1001 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (5)].identifier), true, (yyvsp[(4) - (5)].expression), NULL);
@@ -3839,10 +3911,10 @@ yyreduce:
        ;}
     break;
 
-  case 130:
+  case 141:
 
 /* Line 1464 of yacc.c  */
-#line 945 "glsl_parser.ypp"
+#line 1010 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (6)].identifier), true, NULL, (yyvsp[(6) - (6)].expression));
@@ -3853,10 +3925,10 @@ yyreduce:
        ;}
     break;
 
-  case 131:
+  case 142:
 
 /* Line 1464 of yacc.c  */
-#line 954 "glsl_parser.ypp"
+#line 1019 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (7)].identifier), true, (yyvsp[(4) - (7)].expression), (yyvsp[(7) - (7)].expression));
@@ -3867,10 +3939,10 @@ yyreduce:
        ;}
     break;
 
-  case 132:
+  case 143:
 
 /* Line 1464 of yacc.c  */
-#line 963 "glsl_parser.ypp"
+#line 1028 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
@@ -3881,10 +3953,10 @@ yyreduce:
        ;}
     break;
 
-  case 133:
+  case 144:
 
 /* Line 1464 of yacc.c  */
-#line 972 "glsl_parser.ypp"
+#line 1037 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), false, NULL, NULL);
@@ -3897,10 +3969,10 @@ yyreduce:
        ;}
     break;
 
-  case 134:
+  case 145:
 
 /* Line 1464 of yacc.c  */
-#line 986 "glsl_parser.ypp"
+#line 1051 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
@@ -3909,10 +3981,10 @@ yyreduce:
        ;}
     break;
 
-  case 135:
+  case 146:
 
 /* Line 1464 of yacc.c  */
-#line 993 "glsl_parser.ypp"
+#line 1058 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
@@ -3922,19 +3994,19 @@ yyreduce:
        ;}
     break;
 
-  case 136:
+  case 147:
 
 /* Line 1464 of yacc.c  */
-#line 1004 "glsl_parser.ypp"
+#line 1069 "glsl_parser.ypp"
     {
          (yyval.type_qualifier) = (yyvsp[(3) - (4)].type_qualifier);
        ;}
     break;
 
-  case 138:
+  case 149:
 
 /* Line 1464 of yacc.c  */
-#line 1012 "glsl_parser.ypp"
+#line 1077 "glsl_parser.ypp"
     {
           if (((yyvsp[(1) - (3)].type_qualifier).flags.i & (yyvsp[(3) - (3)].type_qualifier).flags.i) != 0) {
              _mesa_glsl_error(& (yylsp[(3) - (3)]), state,
@@ -3952,10 +4024,10 @@ yyreduce:
        ;}
     break;
 
-  case 139:
+  case 150:
 
 /* Line 1464 of yacc.c  */
-#line 1031 "glsl_parser.ypp"
+#line 1096 "glsl_parser.ypp"
     {
           bool got_one = false;
 
@@ -4009,10 +4081,10 @@ yyreduce:
        ;}
     break;
 
-  case 140:
+  case 151:
 
 /* Line 1464 of yacc.c  */
-#line 1083 "glsl_parser.ypp"
+#line 1148 "glsl_parser.ypp"
     {
           bool got_one = false;
 
@@ -4052,80 +4124,80 @@ yyreduce:
        ;}
     break;
 
-  case 141:
+  case 152:
 
 /* Line 1464 of yacc.c  */
-#line 1124 "glsl_parser.ypp"
+#line 1189 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.smooth = 1;
        ;}
     break;
 
-  case 142:
+  case 153:
 
 /* Line 1464 of yacc.c  */
-#line 1129 "glsl_parser.ypp"
+#line 1194 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.flat = 1;
        ;}
     break;
 
-  case 143:
+  case 154:
 
 /* Line 1464 of yacc.c  */
-#line 1134 "glsl_parser.ypp"
+#line 1199 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.noperspective = 1;
        ;}
     break;
 
-  case 144:
+  case 155:
 
 /* Line 1464 of yacc.c  */
-#line 1142 "glsl_parser.ypp"
+#line 1207 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.constant = 1;
        ;}
     break;
 
-  case 147:
+  case 158:
 
 /* Line 1464 of yacc.c  */
-#line 1152 "glsl_parser.ypp"
+#line 1217 "glsl_parser.ypp"
     {
           (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier);
           (yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i;
        ;}
     break;
 
-  case 149:
+  case 160:
 
 /* Line 1464 of yacc.c  */
-#line 1158 "glsl_parser.ypp"
+#line 1223 "glsl_parser.ypp"
     {
           (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier);
           (yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i;
        ;}
     break;
 
-  case 150:
+  case 161:
 
 /* Line 1464 of yacc.c  */
-#line 1163 "glsl_parser.ypp"
+#line 1228 "glsl_parser.ypp"
     {
           (yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier);
           (yyval.type_qualifier).flags.q.invariant = 1;
        ;}
     break;
 
-  case 151:
+  case 162:
 
 /* Line 1464 of yacc.c  */
-#line 1168 "glsl_parser.ypp"
+#line 1233 "glsl_parser.ypp"
     {
           (yyval.type_qualifier) = (yyvsp[(2) - (3)].type_qualifier);
           (yyval.type_qualifier).flags.i |= (yyvsp[(3) - (3)].type_qualifier).flags.i;
@@ -4133,50 +4205,50 @@ yyreduce:
        ;}
     break;
 
-  case 152:
+  case 163:
 
 /* Line 1464 of yacc.c  */
-#line 1174 "glsl_parser.ypp"
+#line 1239 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.invariant = 1;
        ;}
     break;
 
-  case 153:
+  case 164:
 
 /* Line 1464 of yacc.c  */
-#line 1182 "glsl_parser.ypp"
+#line 1247 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.constant = 1;
        ;}
     break;
 
-  case 154:
+  case 165:
 
 /* Line 1464 of yacc.c  */
-#line 1187 "glsl_parser.ypp"
+#line 1252 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.attribute = 1;
        ;}
     break;
 
-  case 155:
+  case 166:
 
 /* Line 1464 of yacc.c  */
-#line 1192 "glsl_parser.ypp"
+#line 1257 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.varying = 1;
        ;}
     break;
 
-  case 156:
+  case 167:
 
 /* Line 1464 of yacc.c  */
-#line 1197 "glsl_parser.ypp"
+#line 1262 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.centroid = 1;
@@ -4184,79 +4256,79 @@ yyreduce:
        ;}
     break;
 
-  case 157:
+  case 168:
 
 /* Line 1464 of yacc.c  */
-#line 1203 "glsl_parser.ypp"
+#line 1268 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.in = 1;
        ;}
     break;
 
-  case 158:
+  case 169:
 
 /* Line 1464 of yacc.c  */
-#line 1208 "glsl_parser.ypp"
+#line 1273 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.out = 1;
        ;}
     break;
 
-  case 159:
+  case 170:
 
 /* Line 1464 of yacc.c  */
-#line 1213 "glsl_parser.ypp"
+#line 1278 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.in = 1;
        ;}
     break;
 
-  case 160:
+  case 171:
 
 /* Line 1464 of yacc.c  */
-#line 1218 "glsl_parser.ypp"
+#line 1283 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.out = 1;
        ;}
     break;
 
-  case 161:
+  case 172:
 
 /* Line 1464 of yacc.c  */
-#line 1223 "glsl_parser.ypp"
+#line 1288 "glsl_parser.ypp"
     {
           memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
           (yyval.type_qualifier).flags.q.uniform = 1;
        ;}
     break;
 
-  case 162:
+  case 173:
 
 /* Line 1464 of yacc.c  */
-#line 1231 "glsl_parser.ypp"
+#line 1296 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(1) - (1)].type_specifier);
        ;}
     break;
 
-  case 163:
+  case 174:
 
 /* Line 1464 of yacc.c  */
-#line 1235 "glsl_parser.ypp"
+#line 1300 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(2) - (2)].type_specifier);
           (yyval.type_specifier)->precision = (yyvsp[(1) - (2)].n);
        ;}
     break;
 
-  case 165:
+  case 176:
 
 /* Line 1464 of yacc.c  */
-#line 1244 "glsl_parser.ypp"
+#line 1309 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(1) - (3)].type_specifier);
           (yyval.type_specifier)->is_array = true;
@@ -4264,10 +4336,10 @@ yyreduce:
        ;}
     break;
 
-  case 166:
+  case 177:
 
 /* Line 1464 of yacc.c  */
-#line 1250 "glsl_parser.ypp"
+#line 1315 "glsl_parser.ypp"
     {
           (yyval.type_specifier) = (yyvsp[(1) - (4)].type_specifier);
           (yyval.type_specifier)->is_array = true;
@@ -4275,10 +4347,10 @@ yyreduce:
        ;}
     break;
 
-  case 167:
+  case 178:
 
 /* Line 1464 of yacc.c  */
-#line 1259 "glsl_parser.ypp"
+#line 1324 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].n));
@@ -4286,10 +4358,10 @@ yyreduce:
        ;}
     break;
 
-  case 168:
+  case 179:
 
 /* Line 1464 of yacc.c  */
-#line 1265 "glsl_parser.ypp"
+#line 1330 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].struct_specifier));
@@ -4297,10 +4369,10 @@ yyreduce:
        ;}
     break;
 
-  case 169:
+  case 180:
 
 /* Line 1464 of yacc.c  */
-#line 1271 "glsl_parser.ypp"
+#line 1336 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier));
@@ -4308,367 +4380,367 @@ yyreduce:
        ;}
     break;
 
-  case 170:
+  case 181:
 
 /* Line 1464 of yacc.c  */
-#line 1279 "glsl_parser.ypp"
+#line 1344 "glsl_parser.ypp"
     { (yyval.n) = ast_void; ;}
     break;
 
-  case 171:
+  case 182:
 
 /* Line 1464 of yacc.c  */
-#line 1280 "glsl_parser.ypp"
+#line 1345 "glsl_parser.ypp"
     { (yyval.n) = ast_float; ;}
     break;
 
-  case 172:
+  case 183:
 
 /* Line 1464 of yacc.c  */
-#line 1281 "glsl_parser.ypp"
+#line 1346 "glsl_parser.ypp"
     { (yyval.n) = ast_int; ;}
     break;
 
-  case 173:
+  case 184:
 
 /* Line 1464 of yacc.c  */
-#line 1282 "glsl_parser.ypp"
+#line 1347 "glsl_parser.ypp"
     { (yyval.n) = ast_uint; ;}
     break;
 
-  case 174:
+  case 185:
 
 /* Line 1464 of yacc.c  */
-#line 1283 "glsl_parser.ypp"
+#line 1348 "glsl_parser.ypp"
     { (yyval.n) = ast_bool; ;}
     break;
 
-  case 175:
+  case 186:
 
 /* Line 1464 of yacc.c  */
-#line 1284 "glsl_parser.ypp"
+#line 1349 "glsl_parser.ypp"
     { (yyval.n) = ast_vec2; ;}
     break;
 
-  case 176:
+  case 187:
 
 /* Line 1464 of yacc.c  */
-#line 1285 "glsl_parser.ypp"
+#line 1350 "glsl_parser.ypp"
     { (yyval.n) = ast_vec3; ;}
     break;
 
-  case 177:
+  case 188:
 
 /* Line 1464 of yacc.c  */
-#line 1286 "glsl_parser.ypp"
+#line 1351 "glsl_parser.ypp"
     { (yyval.n) = ast_vec4; ;}
     break;
 
-  case 178:
+  case 189:
 
 /* Line 1464 of yacc.c  */
-#line 1287 "glsl_parser.ypp"
+#line 1352 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec2; ;}
     break;
 
-  case 179:
+  case 190:
 
 /* Line 1464 of yacc.c  */
-#line 1288 "glsl_parser.ypp"
+#line 1353 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec3; ;}
     break;
 
-  case 180:
+  case 191:
 
 /* Line 1464 of yacc.c  */
-#line 1289 "glsl_parser.ypp"
+#line 1354 "glsl_parser.ypp"
     { (yyval.n) = ast_bvec4; ;}
     break;
 
-  case 181:
+  case 192:
 
 /* Line 1464 of yacc.c  */
-#line 1290 "glsl_parser.ypp"
+#line 1355 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec2; ;}
     break;
 
-  case 182:
+  case 193:
 
 /* Line 1464 of yacc.c  */
-#line 1291 "glsl_parser.ypp"
+#line 1356 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec3; ;}
     break;
 
-  case 183:
+  case 194:
 
 /* Line 1464 of yacc.c  */
-#line 1292 "glsl_parser.ypp"
+#line 1357 "glsl_parser.ypp"
     { (yyval.n) = ast_ivec4; ;}
     break;
 
-  case 184:
+  case 195:
 
 /* Line 1464 of yacc.c  */
-#line 1293 "glsl_parser.ypp"
+#line 1358 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec2; ;}
     break;
 
-  case 185:
+  case 196:
 
 /* Line 1464 of yacc.c  */
-#line 1294 "glsl_parser.ypp"
+#line 1359 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec3; ;}
     break;
 
-  case 186:
+  case 197:
 
 /* Line 1464 of yacc.c  */
-#line 1295 "glsl_parser.ypp"
+#line 1360 "glsl_parser.ypp"
     { (yyval.n) = ast_uvec4; ;}
     break;
 
-  case 187:
+  case 198:
 
 /* Line 1464 of yacc.c  */
-#line 1296 "glsl_parser.ypp"
+#line 1361 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2; ;}
     break;
 
-  case 188:
+  case 199:
 
 /* Line 1464 of yacc.c  */
-#line 1297 "glsl_parser.ypp"
+#line 1362 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2x3; ;}
     break;
 
-  case 189:
+  case 200:
 
 /* Line 1464 of yacc.c  */
-#line 1298 "glsl_parser.ypp"
+#line 1363 "glsl_parser.ypp"
     { (yyval.n) = ast_mat2x4; ;}
     break;
 
-  case 190:
+  case 201:
 
 /* Line 1464 of yacc.c  */
-#line 1299 "glsl_parser.ypp"
+#line 1364 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3x2; ;}
     break;
 
-  case 191:
+  case 202:
 
 /* Line 1464 of yacc.c  */
-#line 1300 "glsl_parser.ypp"
+#line 1365 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3; ;}
     break;
 
-  case 192:
+  case 203:
 
 /* Line 1464 of yacc.c  */
-#line 1301 "glsl_parser.ypp"
+#line 1366 "glsl_parser.ypp"
     { (yyval.n) = ast_mat3x4; ;}
     break;
 
-  case 193:
+  case 204:
 
 /* Line 1464 of yacc.c  */
-#line 1302 "glsl_parser.ypp"
+#line 1367 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4x2; ;}
     break;
 
-  case 194:
+  case 205:
 
 /* Line 1464 of yacc.c  */
-#line 1303 "glsl_parser.ypp"
+#line 1368 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4x3; ;}
     break;
 
-  case 195:
+  case 206:
 
 /* Line 1464 of yacc.c  */
-#line 1304 "glsl_parser.ypp"
+#line 1369 "glsl_parser.ypp"
     { (yyval.n) = ast_mat4; ;}
     break;
 
-  case 196:
+  case 207:
 
 /* Line 1464 of yacc.c  */
-#line 1305 "glsl_parser.ypp"
+#line 1370 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1d; ;}
     break;
 
-  case 197:
+  case 208:
 
 /* Line 1464 of yacc.c  */
-#line 1306 "glsl_parser.ypp"
+#line 1371 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2d; ;}
     break;
 
-  case 198:
+  case 209:
 
 /* Line 1464 of yacc.c  */
-#line 1307 "glsl_parser.ypp"
+#line 1372 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2drect; ;}
     break;
 
-  case 199:
+  case 210:
 
 /* Line 1464 of yacc.c  */
-#line 1308 "glsl_parser.ypp"
+#line 1373 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler3d; ;}
     break;
 
-  case 200:
+  case 211:
 
 /* Line 1464 of yacc.c  */
-#line 1309 "glsl_parser.ypp"
+#line 1374 "glsl_parser.ypp"
     { (yyval.n) = ast_samplercube; ;}
     break;
 
-  case 201:
+  case 212:
 
 /* Line 1464 of yacc.c  */
-#line 1310 "glsl_parser.ypp"
+#line 1375 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1dshadow; ;}
     break;
 
-  case 202:
+  case 213:
 
 /* Line 1464 of yacc.c  */
-#line 1311 "glsl_parser.ypp"
+#line 1376 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2dshadow; ;}
     break;
 
-  case 203:
+  case 214:
 
 /* Line 1464 of yacc.c  */
-#line 1312 "glsl_parser.ypp"
+#line 1377 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2drectshadow; ;}
     break;
 
-  case 204:
+  case 215:
 
 /* Line 1464 of yacc.c  */
-#line 1313 "glsl_parser.ypp"
+#line 1378 "glsl_parser.ypp"
     { (yyval.n) = ast_samplercubeshadow; ;}
     break;
 
-  case 205:
+  case 216:
 
 /* Line 1464 of yacc.c  */
-#line 1314 "glsl_parser.ypp"
+#line 1379 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1darray; ;}
     break;
 
-  case 206:
+  case 217:
 
 /* Line 1464 of yacc.c  */
-#line 1315 "glsl_parser.ypp"
+#line 1380 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2darray; ;}
     break;
 
-  case 207:
+  case 218:
 
 /* Line 1464 of yacc.c  */
-#line 1316 "glsl_parser.ypp"
+#line 1381 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler1darrayshadow; ;}
     break;
 
-  case 208:
+  case 219:
 
 /* Line 1464 of yacc.c  */
-#line 1317 "glsl_parser.ypp"
+#line 1382 "glsl_parser.ypp"
     { (yyval.n) = ast_sampler2darrayshadow; ;}
     break;
 
-  case 209:
+  case 220:
 
 /* Line 1464 of yacc.c  */
-#line 1318 "glsl_parser.ypp"
+#line 1383 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler1d; ;}
     break;
 
-  case 210:
+  case 221:
 
 /* Line 1464 of yacc.c  */
-#line 1319 "glsl_parser.ypp"
+#line 1384 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler2d; ;}
     break;
 
-  case 211:
+  case 222:
 
 /* Line 1464 of yacc.c  */
-#line 1320 "glsl_parser.ypp"
+#line 1385 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler3d; ;}
     break;
 
-  case 212:
+  case 223:
 
 /* Line 1464 of yacc.c  */
-#line 1321 "glsl_parser.ypp"
+#line 1386 "glsl_parser.ypp"
     { (yyval.n) = ast_isamplercube; ;}
     break;
 
-  case 213:
+  case 224:
 
 /* Line 1464 of yacc.c  */
-#line 1322 "glsl_parser.ypp"
+#line 1387 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler1darray; ;}
     break;
 
-  case 214:
+  case 225:
 
 /* Line 1464 of yacc.c  */
-#line 1323 "glsl_parser.ypp"
+#line 1388 "glsl_parser.ypp"
     { (yyval.n) = ast_isampler2darray; ;}
     break;
 
-  case 215:
+  case 226:
 
 /* Line 1464 of yacc.c  */
-#line 1324 "glsl_parser.ypp"
+#line 1389 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler1d; ;}
     break;
 
-  case 216:
+  case 227:
 
 /* Line 1464 of yacc.c  */
-#line 1325 "glsl_parser.ypp"
+#line 1390 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler2d; ;}
     break;
 
-  case 217:
+  case 228:
 
 /* Line 1464 of yacc.c  */
-#line 1326 "glsl_parser.ypp"
+#line 1391 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler3d; ;}
     break;
 
-  case 218:
+  case 229:
 
 /* Line 1464 of yacc.c  */
-#line 1327 "glsl_parser.ypp"
+#line 1392 "glsl_parser.ypp"
     { (yyval.n) = ast_usamplercube; ;}
     break;
 
-  case 219:
+  case 230:
 
 /* Line 1464 of yacc.c  */
-#line 1328 "glsl_parser.ypp"
+#line 1393 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler1darray; ;}
     break;
 
-  case 220:
+  case 231:
 
 /* Line 1464 of yacc.c  */
-#line 1329 "glsl_parser.ypp"
+#line 1394 "glsl_parser.ypp"
     { (yyval.n) = ast_usampler2darray; ;}
     break;
 
-  case 221:
+  case 232:
 
 /* Line 1464 of yacc.c  */
-#line 1333 "glsl_parser.ypp"
+#line 1398 "glsl_parser.ypp"
     {
                     if (!state->es_shader && state->language_version < 130)
                        _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4681,10 +4753,10 @@ yyreduce:
                  ;}
     break;
 
-  case 222:
+  case 233:
 
 /* Line 1464 of yacc.c  */
-#line 1343 "glsl_parser.ypp"
+#line 1408 "glsl_parser.ypp"
     {
                     if (!state->es_shader && state->language_version < 130)
                        _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4697,10 +4769,10 @@ yyreduce:
                  ;}
     break;
 
-  case 223:
+  case 234:
 
 /* Line 1464 of yacc.c  */
-#line 1353 "glsl_parser.ypp"
+#line 1418 "glsl_parser.ypp"
     {
                     if (!state->es_shader && state->language_version < 130)
                        _mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4713,21 +4785,22 @@ yyreduce:
                  ;}
     break;
 
-  case 224:
+  case 235:
 
 /* Line 1464 of yacc.c  */
-#line 1367 "glsl_parser.ypp"
+#line 1432 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[(2) - (5)].identifier), (yyvsp[(4) - (5)].node));
           (yyval.struct_specifier)->set_location(yylloc);
+          state->symbols->add_type((yyvsp[(2) - (5)].identifier), glsl_type::void_type);
        ;}
     break;
 
-  case 225:
+  case 236:
 
 /* Line 1464 of yacc.c  */
-#line 1373 "glsl_parser.ypp"
+#line 1439 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[(3) - (4)].node));
@@ -4735,30 +4808,30 @@ yyreduce:
        ;}
     break;
 
-  case 226:
+  case 237:
 
 /* Line 1464 of yacc.c  */
-#line 1382 "glsl_parser.ypp"
+#line 1448 "glsl_parser.ypp"
     {
           (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].declarator_list);
           (yyvsp[(1) - (1)].declarator_list)->link.self_link();
        ;}
     break;
 
-  case 227:
+  case 238:
 
 /* Line 1464 of yacc.c  */
-#line 1387 "glsl_parser.ypp"
+#line 1453 "glsl_parser.ypp"
     {
           (yyval.node) = (ast_node *) (yyvsp[(1) - (2)].node);
           (yyval.node)->link.insert_before(& (yyvsp[(2) - (2)].declarator_list)->link);
        ;}
     break;
 
-  case 228:
+  case 239:
 
 /* Line 1464 of yacc.c  */
-#line 1395 "glsl_parser.ypp"
+#line 1461 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_fully_specified_type *type = new(ctx) ast_fully_specified_type();
@@ -4772,41 +4845,42 @@ yyreduce:
        ;}
     break;
 
-  case 229:
+  case 240:
 
 /* Line 1464 of yacc.c  */
-#line 1410 "glsl_parser.ypp"
+#line 1476 "glsl_parser.ypp"
     {
           (yyval.declaration) = (yyvsp[(1) - (1)].declaration);
           (yyvsp[(1) - (1)].declaration)->link.self_link();
        ;}
     break;
 
-  case 230:
+  case 241:
 
 /* Line 1464 of yacc.c  */
-#line 1415 "glsl_parser.ypp"
+#line 1481 "glsl_parser.ypp"
     {
           (yyval.declaration) = (yyvsp[(1) - (3)].declaration);
           (yyval.declaration)->link.insert_before(& (yyvsp[(3) - (3)].declaration)->link);
        ;}
     break;
 
-  case 231:
+  case 242:
 
 /* Line 1464 of yacc.c  */
-#line 1423 "glsl_parser.ypp"
+#line 1489 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (1)].identifier), false, NULL, NULL);
           (yyval.declaration)->set_location(yylloc);
+          state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[(1) - (1)].identifier), ir_var_auto));
        ;}
     break;
 
-  case 232:
+  case 243:
 
 /* Line 1464 of yacc.c  */
-#line 1429 "glsl_parser.ypp"
+#line 1496 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (4)].identifier), true, (yyvsp[(3) - (4)].expression), NULL);
@@ -4814,31 +4888,31 @@ yyreduce:
        ;}
     break;
 
-  case 235:
+  case 246:
 
 /* Line 1464 of yacc.c  */
-#line 1447 "glsl_parser.ypp"
+#line 1514 "glsl_parser.ypp"
     { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
     break;
 
-  case 240:
+  case 251:
 
 /* Line 1464 of yacc.c  */
-#line 1455 "glsl_parser.ypp"
+#line 1522 "glsl_parser.ypp"
     { (yyval.node) = NULL; ;}
     break;
 
-  case 241:
+  case 252:
 
 /* Line 1464 of yacc.c  */
-#line 1456 "glsl_parser.ypp"
+#line 1523 "glsl_parser.ypp"
     { (yyval.node) = NULL; ;}
     break;
 
-  case 244:
+  case 255:
 
 /* Line 1464 of yacc.c  */
-#line 1463 "glsl_parser.ypp"
+#line 1530 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(true, NULL);
@@ -4846,28 +4920,38 @@ yyreduce:
        ;}
     break;
 
-  case 245:
+  case 256:
 
 /* Line 1464 of yacc.c  */
-#line 1469 "glsl_parser.ypp"
+#line 1536 "glsl_parser.ypp"
+    {
+          state->symbols->push_scope();
+       ;}
+    break;
+
+  case 257:
+
+/* Line 1464 of yacc.c  */
+#line 1540 "glsl_parser.ypp"
     {
           void *ctx = state;
-          (yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[(2) - (3)].node));
+          (yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[(3) - (4)].node));
           (yyval.compound_statement)->set_location(yylloc);
+          state->symbols->pop_scope();
        ;}
     break;
 
-  case 246:
+  case 258:
 
 /* Line 1464 of yacc.c  */
-#line 1477 "glsl_parser.ypp"
+#line 1549 "glsl_parser.ypp"
     { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
     break;
 
-  case 248:
+  case 260:
 
 /* Line 1464 of yacc.c  */
-#line 1483 "glsl_parser.ypp"
+#line 1555 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(false, NULL);
@@ -4875,10 +4959,10 @@ yyreduce:
        ;}
     break;
 
-  case 249:
+  case 261:
 
 /* Line 1464 of yacc.c  */
-#line 1489 "glsl_parser.ypp"
+#line 1561 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[(2) - (3)].node));
@@ -4886,10 +4970,10 @@ yyreduce:
        ;}
     break;
 
-  case 250:
+  case 262:
 
 /* Line 1464 of yacc.c  */
-#line 1498 "glsl_parser.ypp"
+#line 1570 "glsl_parser.ypp"
     {
           if ((yyvsp[(1) - (1)].node) == NULL) {
              _mesa_glsl_error(& (yylsp[(1) - (1)]), state, "<nil> statement\n");
@@ -4901,10 +4985,10 @@ yyreduce:
        ;}
     break;
 
-  case 251:
+  case 263:
 
 /* Line 1464 of yacc.c  */
-#line 1508 "glsl_parser.ypp"
+#line 1580 "glsl_parser.ypp"
     {
           if ((yyvsp[(2) - (2)].node) == NULL) {
              _mesa_glsl_error(& (yylsp[(2) - (2)]), state, "<nil> statement\n");
@@ -4915,10 +4999,10 @@ yyreduce:
        ;}
     break;
 
-  case 252:
+  case 264:
 
 /* Line 1464 of yacc.c  */
-#line 1520 "glsl_parser.ypp"
+#line 1592 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_expression_statement(NULL);
@@ -4926,10 +5010,10 @@ yyreduce:
        ;}
     break;
 
-  case 253:
+  case 265:
 
 /* Line 1464 of yacc.c  */
-#line 1526 "glsl_parser.ypp"
+#line 1598 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_expression_statement((yyvsp[(1) - (2)].expression));
@@ -4937,10 +5021,10 @@ yyreduce:
        ;}
     break;
 
-  case 254:
+  case 266:
 
 /* Line 1464 of yacc.c  */
-#line 1535 "glsl_parser.ypp"
+#line 1607 "glsl_parser.ypp"
     {
           (yyval.node) = new(state) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].selection_rest_statement).then_statement,
                                                   (yyvsp[(5) - (5)].selection_rest_statement).else_statement);
@@ -4948,39 +5032,39 @@ yyreduce:
        ;}
     break;
 
-  case 255:
+  case 267:
 
 /* Line 1464 of yacc.c  */
-#line 1544 "glsl_parser.ypp"
+#line 1616 "glsl_parser.ypp"
     {
           (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (3)].node);
           (yyval.selection_rest_statement).else_statement = (yyvsp[(3) - (3)].node);
        ;}
     break;
 
-  case 256:
+  case 268:
 
 /* Line 1464 of yacc.c  */
-#line 1549 "glsl_parser.ypp"
+#line 1621 "glsl_parser.ypp"
     {
           (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (1)].node);
           (yyval.selection_rest_statement).else_statement = NULL;
        ;}
     break;
 
-  case 257:
+  case 269:
 
 /* Line 1464 of yacc.c  */
-#line 1557 "glsl_parser.ypp"
+#line 1629 "glsl_parser.ypp"
     {
           (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].expression);
        ;}
     break;
 
-  case 258:
+  case 270:
 
 /* Line 1464 of yacc.c  */
-#line 1561 "glsl_parser.ypp"
+#line 1633 "glsl_parser.ypp"
     {
           void *ctx = state;
           ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
@@ -4993,10 +5077,10 @@ yyreduce:
        ;}
     break;
 
-  case 262:
+  case 274:
 
 /* Line 1464 of yacc.c  */
-#line 1584 "glsl_parser.ypp"
+#line 1656 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while,
@@ -5005,10 +5089,10 @@ yyreduce:
        ;}
     break;
 
-  case 263:
+  case 275:
 
 /* Line 1464 of yacc.c  */
-#line 1591 "glsl_parser.ypp"
+#line 1663 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while,
@@ -5017,10 +5101,10 @@ yyreduce:
        ;}
     break;
 
-  case 264:
+  case 276:
 
 /* Line 1464 of yacc.c  */
-#line 1598 "glsl_parser.ypp"
+#line 1670 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for,
@@ -5029,39 +5113,39 @@ yyreduce:
        ;}
     break;
 
-  case 268:
+  case 280:
 
 /* Line 1464 of yacc.c  */
-#line 1614 "glsl_parser.ypp"
+#line 1686 "glsl_parser.ypp"
     {
           (yyval.node) = NULL;
        ;}
     break;
 
-  case 269:
+  case 281:
 
 /* Line 1464 of yacc.c  */
-#line 1621 "glsl_parser.ypp"
+#line 1693 "glsl_parser.ypp"
     {
           (yyval.for_rest_statement).cond = (yyvsp[(1) - (2)].node);
           (yyval.for_rest_statement).rest = NULL;
        ;}
     break;
 
-  case 270:
+  case 282:
 
 /* Line 1464 of yacc.c  */
-#line 1626 "glsl_parser.ypp"
+#line 1698 "glsl_parser.ypp"
     {
           (yyval.for_rest_statement).cond = (yyvsp[(1) - (3)].node);
           (yyval.for_rest_statement).rest = (yyvsp[(3) - (3)].expression);
        ;}
     break;
 
-  case 271:
+  case 283:
 
 /* Line 1464 of yacc.c  */
-#line 1635 "glsl_parser.ypp"
+#line 1707 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL);
@@ -5069,10 +5153,10 @@ yyreduce:
        ;}
     break;
 
-  case 272:
+  case 284:
 
 /* Line 1464 of yacc.c  */
-#line 1641 "glsl_parser.ypp"
+#line 1713 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL);
@@ -5080,10 +5164,10 @@ yyreduce:
        ;}
     break;
 
-  case 273:
+  case 285:
 
 /* Line 1464 of yacc.c  */
-#line 1647 "glsl_parser.ypp"
+#line 1719 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL);
@@ -5091,10 +5175,10 @@ yyreduce:
        ;}
     break;
 
-  case 274:
+  case 286:
 
 /* Line 1464 of yacc.c  */
-#line 1653 "glsl_parser.ypp"
+#line 1725 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[(2) - (3)].expression));
@@ -5102,10 +5186,10 @@ yyreduce:
        ;}
     break;
 
-  case 275:
+  case 287:
 
 /* Line 1464 of yacc.c  */
-#line 1659 "glsl_parser.ypp"
+#line 1731 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL);
@@ -5113,44 +5197,46 @@ yyreduce:
        ;}
     break;
 
-  case 276:
+  case 288:
 
 /* Line 1464 of yacc.c  */
-#line 1667 "glsl_parser.ypp"
+#line 1739 "glsl_parser.ypp"
     { (yyval.node) = (yyvsp[(1) - (1)].function_definition); ;}
     break;
 
-  case 277:
+  case 289:
 
 /* Line 1464 of yacc.c  */
-#line 1668 "glsl_parser.ypp"
+#line 1740 "glsl_parser.ypp"
     { (yyval.node) = (yyvsp[(1) - (1)].node); ;}
     break;
 
-  case 278:
+  case 290:
 
 /* Line 1464 of yacc.c  */
-#line 1669 "glsl_parser.ypp"
+#line 1741 "glsl_parser.ypp"
     { (yyval.node) = NULL; ;}
     break;
 
-  case 279:
+  case 291:
 
 /* Line 1464 of yacc.c  */
-#line 1674 "glsl_parser.ypp"
+#line 1746 "glsl_parser.ypp"
     {
           void *ctx = state;
           (yyval.function_definition) = new(ctx) ast_function_definition();
           (yyval.function_definition)->set_location(yylloc);
           (yyval.function_definition)->prototype = (yyvsp[(1) - (2)].function);
           (yyval.function_definition)->body = (yyvsp[(2) - (2)].compound_statement);
+
+          state->symbols->pop_scope();
        ;}
     break;
 
 
 
 /* Line 1464 of yacc.c  */
-#line 5154 "glsl_parser.cpp"
+#line 5240 "glsl_parser.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
index 1bf3b35..7f36492 100644 (file)
      VOID_TOK = 329,
      WHILE = 330,
      IDENTIFIER = 331,
-     FLOATCONSTANT = 332,
-     INTCONSTANT = 333,
-     UINTCONSTANT = 334,
-     BOOLCONSTANT = 335,
-     FIELD_SELECTION = 336,
-     LEFT_OP = 337,
-     RIGHT_OP = 338,
-     INC_OP = 339,
-     DEC_OP = 340,
-     LE_OP = 341,
-     GE_OP = 342,
-     EQ_OP = 343,
-     NE_OP = 344,
-     AND_OP = 345,
-     OR_OP = 346,
-     XOR_OP = 347,
-     MUL_ASSIGN = 348,
-     DIV_ASSIGN = 349,
-     ADD_ASSIGN = 350,
-     MOD_ASSIGN = 351,
-     LEFT_ASSIGN = 352,
-     RIGHT_ASSIGN = 353,
-     AND_ASSIGN = 354,
-     XOR_ASSIGN = 355,
-     OR_ASSIGN = 356,
-     SUB_ASSIGN = 357,
-     INVARIANT = 358,
-     LOWP = 359,
-     MEDIUMP = 360,
-     HIGHP = 361,
-     SUPERP = 362,
-     PRECISION = 363,
-     VERSION = 364,
-     EXTENSION = 365,
-     LINE = 366,
-     COLON = 367,
-     EOL = 368,
-     INTERFACE = 369,
-     OUTPUT = 370,
-     PRAGMA_DEBUG_ON = 371,
-     PRAGMA_DEBUG_OFF = 372,
-     PRAGMA_OPTIMIZE_ON = 373,
-     PRAGMA_OPTIMIZE_OFF = 374,
-     PRAGMA_INVARIANT_ALL = 375,
-     LAYOUT_TOK = 376,
-     ASM = 377,
-     CLASS = 378,
-     UNION = 379,
-     ENUM = 380,
-     TYPEDEF = 381,
-     TEMPLATE = 382,
-     THIS = 383,
-     PACKED_TOK = 384,
-     GOTO = 385,
-     INLINE_TOK = 386,
-     NOINLINE = 387,
-     VOLATILE = 388,
-     PUBLIC_TOK = 389,
-     STATIC = 390,
-     EXTERN = 391,
-     EXTERNAL = 392,
-     LONG_TOK = 393,
-     SHORT_TOK = 394,
-     DOUBLE_TOK = 395,
-     HALF = 396,
-     FIXED_TOK = 397,
-     UNSIGNED = 398,
-     INPUT_TOK = 399,
-     OUPTUT = 400,
-     HVEC2 = 401,
-     HVEC3 = 402,
-     HVEC4 = 403,
-     DVEC2 = 404,
-     DVEC3 = 405,
-     DVEC4 = 406,
-     FVEC2 = 407,
-     FVEC3 = 408,
-     FVEC4 = 409,
-     SAMPLER2DRECT = 410,
-     SAMPLER3DRECT = 411,
-     SAMPLER2DRECTSHADOW = 412,
-     SIZEOF = 413,
-     CAST = 414,
-     NAMESPACE = 415,
-     USING = 416,
-     ERROR_TOK = 417,
-     COMMON = 418,
-     PARTITION = 419,
-     ACTIVE = 420,
-     SAMPLERBUFFER = 421,
-     FILTER = 422,
-     IMAGE1D = 423,
-     IMAGE2D = 424,
-     IMAGE3D = 425,
-     IMAGECUBE = 426,
-     IMAGE1DARRAY = 427,
-     IMAGE2DARRAY = 428,
-     IIMAGE1D = 429,
-     IIMAGE2D = 430,
-     IIMAGE3D = 431,
-     IIMAGECUBE = 432,
-     IIMAGE1DARRAY = 433,
-     IIMAGE2DARRAY = 434,
-     UIMAGE1D = 435,
-     UIMAGE2D = 436,
-     UIMAGE3D = 437,
-     UIMAGECUBE = 438,
-     UIMAGE1DARRAY = 439,
-     UIMAGE2DARRAY = 440,
-     IMAGE1DSHADOW = 441,
-     IMAGE2DSHADOW = 442,
-     IMAGEBUFFER = 443,
-     IIMAGEBUFFER = 444,
-     UIMAGEBUFFER = 445,
-     IMAGE1DARRAYSHADOW = 446,
-     IMAGE2DARRAYSHADOW = 447,
-     ROW_MAJOR = 448
+     TYPE_IDENTIFIER = 332,
+     NEW_IDENTIFIER = 333,
+     FLOATCONSTANT = 334,
+     INTCONSTANT = 335,
+     UINTCONSTANT = 336,
+     BOOLCONSTANT = 337,
+     FIELD_SELECTION = 338,
+     LEFT_OP = 339,
+     RIGHT_OP = 340,
+     INC_OP = 341,
+     DEC_OP = 342,
+     LE_OP = 343,
+     GE_OP = 344,
+     EQ_OP = 345,
+     NE_OP = 346,
+     AND_OP = 347,
+     OR_OP = 348,
+     XOR_OP = 349,
+     MUL_ASSIGN = 350,
+     DIV_ASSIGN = 351,
+     ADD_ASSIGN = 352,
+     MOD_ASSIGN = 353,
+     LEFT_ASSIGN = 354,
+     RIGHT_ASSIGN = 355,
+     AND_ASSIGN = 356,
+     XOR_ASSIGN = 357,
+     OR_ASSIGN = 358,
+     SUB_ASSIGN = 359,
+     INVARIANT = 360,
+     LOWP = 361,
+     MEDIUMP = 362,
+     HIGHP = 363,
+     SUPERP = 364,
+     PRECISION = 365,
+     VERSION = 366,
+     EXTENSION = 367,
+     LINE = 368,
+     COLON = 369,
+     EOL = 370,
+     INTERFACE = 371,
+     OUTPUT = 372,
+     PRAGMA_DEBUG_ON = 373,
+     PRAGMA_DEBUG_OFF = 374,
+     PRAGMA_OPTIMIZE_ON = 375,
+     PRAGMA_OPTIMIZE_OFF = 376,
+     PRAGMA_INVARIANT_ALL = 377,
+     LAYOUT_TOK = 378,
+     ASM = 379,
+     CLASS = 380,
+     UNION = 381,
+     ENUM = 382,
+     TYPEDEF = 383,
+     TEMPLATE = 384,
+     THIS = 385,
+     PACKED_TOK = 386,
+     GOTO = 387,
+     INLINE_TOK = 388,
+     NOINLINE = 389,
+     VOLATILE = 390,
+     PUBLIC_TOK = 391,
+     STATIC = 392,
+     EXTERN = 393,
+     EXTERNAL = 394,
+     LONG_TOK = 395,
+     SHORT_TOK = 396,
+     DOUBLE_TOK = 397,
+     HALF = 398,
+     FIXED_TOK = 399,
+     UNSIGNED = 400,
+     INPUT_TOK = 401,
+     OUPTUT = 402,
+     HVEC2 = 403,
+     HVEC3 = 404,
+     HVEC4 = 405,
+     DVEC2 = 406,
+     DVEC3 = 407,
+     DVEC4 = 408,
+     FVEC2 = 409,
+     FVEC3 = 410,
+     FVEC4 = 411,
+     SAMPLER2DRECT = 412,
+     SAMPLER3DRECT = 413,
+     SAMPLER2DRECTSHADOW = 414,
+     SIZEOF = 415,
+     CAST = 416,
+     NAMESPACE = 417,
+     USING = 418,
+     ERROR_TOK = 419,
+     COMMON = 420,
+     PARTITION = 421,
+     ACTIVE = 422,
+     SAMPLERBUFFER = 423,
+     FILTER = 424,
+     IMAGE1D = 425,
+     IMAGE2D = 426,
+     IMAGE3D = 427,
+     IMAGECUBE = 428,
+     IMAGE1DARRAY = 429,
+     IMAGE2DARRAY = 430,
+     IIMAGE1D = 431,
+     IIMAGE2D = 432,
+     IIMAGE3D = 433,
+     IIMAGECUBE = 434,
+     IIMAGE1DARRAY = 435,
+     IIMAGE2DARRAY = 436,
+     UIMAGE1D = 437,
+     UIMAGE2D = 438,
+     UIMAGE3D = 439,
+     UIMAGECUBE = 440,
+     UIMAGE1DARRAY = 441,
+     UIMAGE2DARRAY = 442,
+     IMAGE1DSHADOW = 443,
+     IMAGE2DSHADOW = 444,
+     IMAGEBUFFER = 445,
+     IIMAGEBUFFER = 446,
+     UIMAGEBUFFER = 447,
+     IMAGE1DARRAYSHADOW = 448,
+     IMAGE2DARRAYSHADOW = 449,
+     ROW_MAJOR = 450
    };
 #endif
 
@@ -272,7 +274,7 @@ typedef union YYSTYPE
 
 
 /* Line 1685 of yacc.c  */
-#line 276 "glsl_parser.h"
+#line 278 "glsl_parser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */