Added support for GL_ARB_texture_rectangle to shader validator.

Parser was regenerated with the flex/bison shipped with Ubuntu 10.04.

BUG=251
TEST=tested with new Core Animation plugin rendering path on Mac OS X
Review URL: http://codereview.appspot.com/5432044

git-svn-id: https://angleproject.googlecode.com/svn/trunk@888 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/BaseTypes.h b/src/compiler/BaseTypes.h
index 57e1d80..55b1f9a 100644
--- a/src/compiler/BaseTypes.h
+++ b/src/compiler/BaseTypes.h
@@ -43,6 +43,7 @@
     EbtSampler2D,
     EbtSamplerCube,
     EbtSamplerExternalOES,  // Only valid if OES_EGL_image_external exists.
+    EbtSampler2DRect,       // Only valid if GL_ARB_texture_rectangle exists.
     EbtGuardSamplerEnd,    // non type:  see implementation of IsSampler()
     EbtStruct,
     EbtAddress,            // should be deprecated??
@@ -59,6 +60,7 @@
     case EbtSampler2D:         return "sampler2D";         break;
     case EbtSamplerCube:       return "samplerCube";       break;
     case EbtSamplerExternalOES: return "samplerExternalOES"; break;
+    case EbtSampler2DRect:     return "sampler2DRect";     break;
     case EbtStruct:            return "structure";         break;
     default:                   return "unknown type";
     }
diff --git a/src/compiler/Initialize.cpp b/src/compiler/Initialize.cpp
index 8c3a449..f3a19dc 100644
--- a/src/compiler/Initialize.cpp
+++ b/src/compiler/Initialize.cpp
@@ -19,7 +19,7 @@
 // Prototypes for built-in functions seen by both vertex and fragment shaders.
 //
 //============================================================================
-static TString BuiltInFunctionsCommon()
+static TString BuiltInFunctionsCommon(const ShBuiltInResources& resources)
 {
     TString s;
 
@@ -311,6 +311,26 @@
     s.append(TString("bvec4 not(bvec4 x);"));
 
     //
+    // Texture Functions.
+    //
+    s.append(TString("vec4 texture2D(sampler2D sampler, vec2 coord);"));
+    s.append(TString("vec4 texture2DProj(sampler2D sampler, vec3 coord);"));
+    s.append(TString("vec4 texture2DProj(sampler2D sampler, vec4 coord);"));
+    s.append(TString("vec4 textureCube(samplerCube sampler, vec3 coord);"));
+
+    if (resources.OES_EGL_image_external) {
+        s.append(TString("vec4 texture2D(samplerExternalOES sampler, vec2 coord);"));
+        s.append(TString("vec4 texture2DProj(samplerExternalOES sampler, vec3 coord);"));
+        s.append(TString("vec4 texture2DProj(samplerExternalOES sampler, vec4 coord);"));
+    }
+
+    if (resources.ARB_texture_rectangle) {
+        s.append(TString("vec4 texture2DRect(sampler2DRect sampler, vec2 coord);"));
+        s.append(TString("vec4 texture2DRectProj(sampler2DRect sampler, vec3 coord);"));
+        s.append(TString("vec4 texture2DRectProj(sampler2DRect sampler, vec4 coord);"));
+    }
+
+    //
     // Noise functions.
     //
     //s.append(TString("float noise1(float x);"));
@@ -353,22 +373,11 @@
     //
     // Texture Functions.
     //
-    s.append(TString("vec4 texture2D(sampler2D sampler, vec2 coord);"));
-    s.append(TString("vec4 texture2DProj(sampler2D sampler, vec3 coord);"));
-    s.append(TString("vec4 texture2DProj(sampler2D sampler, vec4 coord);"));
-    s.append(TString("vec4 textureCube(samplerCube sampler, vec3 coord);"));
-
     s.append(TString("vec4 texture2DLod(sampler2D sampler, vec2 coord, float lod);"));
     s.append(TString("vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod);"));
     s.append(TString("vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod);"));
     s.append(TString("vec4 textureCubeLod(samplerCube sampler, vec3 coord, float lod);"));
 
-    if (resources.OES_EGL_image_external) {
-        s.append(TString("vec4 texture2D(samplerExternalOES sampler, vec2 coord);"));
-        s.append(TString("vec4 texture2DProj(samplerExternalOES sampler, vec3 coord);"));
-        s.append(TString("vec4 texture2DProj(samplerExternalOES sampler, vec4 coord);"));
-    }
-
     return s;
 }
 
@@ -384,22 +393,11 @@
     //
     // Texture Functions.
     //
-    s.append(TString("vec4 texture2D(sampler2D sampler, vec2 coord);"));
-    s.append(TString("vec4 texture2DProj(sampler2D sampler, vec3 coord);"));
-    s.append(TString("vec4 texture2DProj(sampler2D sampler, vec4 coord);"));
-    s.append(TString("vec4 textureCube(samplerCube sampler, vec3 coord);"));
-
     s.append(TString("vec4 texture2D(sampler2D sampler, vec2 coord, float bias);"));
     s.append(TString("vec4 texture2DProj(sampler2D sampler, vec3 coord, float bias);"));
     s.append(TString("vec4 texture2DProj(sampler2D sampler, vec4 coord, float bias);"));
     s.append(TString("vec4 textureCube(samplerCube sampler, vec3 coord, float bias);"));
 
-    if (resources.OES_EGL_image_external) {
-        s.append(TString("vec4 texture2D(samplerExternalOES sampler, vec2 coord);"));
-        s.append(TString("vec4 texture2DProj(samplerExternalOES sampler, vec3 coord);"));
-        s.append(TString("vec4 texture2DProj(samplerExternalOES sampler, vec4 coord);"));
-    }
-
     if (resources.OES_standard_derivatives) {
         s.append(TString("float dFdx(float p);"));
         s.append(TString("vec2  dFdx(vec2  p);"));
@@ -500,14 +498,14 @@
     switch (type) {
     case SH_FRAGMENT_SHADER:
         builtInStrings.push_back(DefaultPrecisionFragment());
-        builtInStrings.push_back(BuiltInFunctionsCommon());
+        builtInStrings.push_back(BuiltInFunctionsCommon(resources));
         builtInStrings.push_back(BuiltInFunctionsFragment(resources));
         builtInStrings.push_back(StandardUniforms());
         break;
 
     case SH_VERTEX_SHADER:
         builtInStrings.push_back(DefaultPrecisionVertex());
-        builtInStrings.push_back(BuiltInFunctionsCommon());
+        builtInStrings.push_back(BuiltInFunctionsCommon(resources));
         builtInStrings.push_back(BuiltInFunctionsVertex(resources));
         builtInStrings.push_back(StandardUniforms());
         break;
@@ -640,4 +638,6 @@
         extBehavior["GL_OES_standard_derivatives"] = EBhUndefined;
     if (resources.OES_EGL_image_external)
         extBehavior["GL_OES_EGL_image_external"] = EBhUndefined;
+    if (resources.ARB_texture_rectangle)
+        extBehavior["GL_ARB_texture_rectangle"] = EBhUndefined;
 }
diff --git a/src/compiler/ShaderLang.cpp b/src/compiler/ShaderLang.cpp
index 4c66743..13f11b5 100644
--- a/src/compiler/ShaderLang.cpp
+++ b/src/compiler/ShaderLang.cpp
@@ -122,6 +122,7 @@
     // Extensions.
     resources->OES_standard_derivatives = 0;
     resources->OES_EGL_image_external = 0;
+    resources->ARB_texture_rectangle = 0;
 }
 
 //
diff --git a/src/compiler/VariableInfo.cpp b/src/compiler/VariableInfo.cpp
index a13a896..843f187 100644
--- a/src/compiler/VariableInfo.cpp
+++ b/src/compiler/VariableInfo.cpp
@@ -63,6 +63,7 @@
           }
       case EbtSampler2D: return SH_SAMPLER_2D;
       case EbtSamplerCube: return SH_SAMPLER_CUBE;
+      case EbtSampler2DRect: return SH_SAMPLER_2D_RECT_ARB;
       default: UNREACHABLE();
     }
     return SH_NONE;
diff --git a/src/compiler/glslang.l b/src/compiler/glslang.l
index 1eaa30c..810a0ff 100644
--- a/src/compiler/glslang.l
+++ b/src/compiler/glslang.l
@@ -121,6 +121,7 @@
 "sampler2D"       { context->lexAfterType = true; return SAMPLER2D; }
 "samplerCube"     { context->lexAfterType = true; return SAMPLERCUBE; }
 "samplerExternalOES" { context->lexAfterType = true; return SAMPLER_EXTERNAL_OES; }
+"sampler2DRect" { context->lexAfterType = true; return SAMPLER2DRECT; }
 
 "struct"       { context->lexAfterType = true; return(STRUCT); }
 
diff --git a/src/compiler/glslang.y b/src/compiler/glslang.y
index d06c125..ec1a85c 100644
--- a/src/compiler/glslang.y
+++ b/src/compiler/glslang.y
@@ -98,7 +98,7 @@
 %token <lex> BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 VEC2 VEC3 VEC4
 %token <lex> MATRIX2 MATRIX3 MATRIX4 IN_QUAL OUT_QUAL INOUT_QUAL UNIFORM VARYING
 %token <lex> STRUCT VOID_TYPE WHILE
-%token <lex> SAMPLER2D SAMPLERCUBE SAMPLER_EXTERNAL_OES
+%token <lex> SAMPLER2D SAMPLERCUBE SAMPLER_EXTERNAL_OES SAMPLER2DRECT
 
 %token <lex> IDENTIFIER TYPE_NAME FLOATCONSTANT INTCONSTANT BOOLCONSTANT
 %token <lex> FIELD_SELECTION
@@ -1624,6 +1624,15 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         $$.setBasic(EbtSamplerExternalOES, qual, $1.line);
     }
+    | SAMPLER2DRECT {
+        if (!context->supportsExtension("GL_ARB_texture_rectangle")) {
+            context->error($1.line, "unsupported type", "sampler2DRect", "");
+            context->recover();
+        }
+        FRAG_VERT_ONLY("sampler2DRect", $1.line);
+        TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
+        $$.setBasic(EbtSampler2DRect, qual, $1.line);
+    }
     | struct_specifier {
         FRAG_VERT_ONLY("struct", $1.line);
         $$ = $1;
diff --git a/src/compiler/glslang_lex.cpp b/src/compiler/glslang_lex.cpp
index 7866056..912dd08 100644
--- a/src/compiler/glslang_lex.cpp
+++ b/src/compiler/glslang_lex.cpp
@@ -63,7 +63,6 @@
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -94,6 +93,8 @@
 #define UINT32_MAX             (4294967295U)
 #endif
 
+#endif /* ! C99 */
+
 #endif /* ! FLEXINT_H */
 
 #ifdef __cplusplus
@@ -167,7 +168,15 @@
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
 #define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -371,8 +380,8 @@
 	*yy_cp = '\0'; \
 	yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 146
-#define YY_END_OF_BUFFER 147
+#define YY_NUM_RULES 147
+#define YY_END_OF_BUFFER 148
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -380,55 +389,55 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[422] =
+static yyconst flex_int16_t yy_accept[426] =
     {   0,
-        0,    0,    0,    0,    0,    0,  147,  145,  144,  144,
-      129,  135,  140,  124,  125,  133,  132,  121,  130,  128,
-      134,   93,   93,  122,  118,  136,  123,  137,  141,   89,
-      126,  127,  139,   89,   89,   89,   89,   89,   89,   89,
-       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
-       89,   89,   89,  119,  138,  120,  131,    3,    4,    3,
-      143,  146,  142,  115,  101,  120,  109,  104,   99,  107,
-       97,  108,   98,   96,    2,    1,  100,   95,   91,   92,
-        0,    0,   93,  127,  119,  126,  116,  112,  114,  113,
-      117,   89,  105,  111,   89,   89,   89,   89,   89,   89,
+        0,    0,    0,    0,    0,    0,  148,  146,  145,  145,
+      130,  136,  141,  125,  126,  134,  133,  122,  131,  129,
+      135,   94,   94,  123,  119,  137,  124,  138,  142,   90,
+      127,  128,  140,   90,   90,   90,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
+       90,   90,   90,  120,  139,  121,  132,    3,    4,    3,
+      144,  147,  143,  116,  102,  121,  110,  105,  100,  108,
+       98,  109,   99,   97,    2,    1,  101,   96,   92,   93,
+        0,    0,   94,  128,  120,  127,  117,  113,  115,  114,
+      118,   90,  106,  112,   90,   90,   90,   90,   90,   90,
 
-       89,   89,   89,   89,   17,   89,   89,   89,   89,   89,
-       89,   89,   89,   89,   89,   89,   89,   89,   20,   22,
-       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
-       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
-       89,   89,   89,   89,   89,   89,  106,  110,    5,  142,
-        0,    1,   95,    0,    0,   94,   90,  102,  103,   49,
-       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
-       89,   89,   89,   89,   89,   89,   89,   18,   89,   89,
-       89,   89,   89,   89,   89,   89,   26,   89,   89,   89,
-       89,   89,   89,   89,   89,   23,   89,   89,   89,   89,
+       90,   90,   90,   90,   17,   90,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   90,   90,   90,   20,   22,
+       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   90,  107,  111,    5,  143,
+        0,    1,   96,    0,    0,   95,   91,  103,  104,   50,
+       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   90,   90,   18,   90,   90,
+       90,   90,   90,   90,   90,   90,   26,   90,   90,   90,
+       90,   90,   90,   90,   90,   23,   90,   90,   90,   90,
 
-       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
-       89,   89,   89,   89,   89,   89,   89,   89,    0,   96,
-        0,   95,   89,   28,   89,   89,   86,   89,   89,   89,
-       89,   89,   89,   89,   21,   52,   89,   89,   89,   89,
-       89,   57,   71,   89,   89,   89,   89,   89,   89,   89,
-       89,   68,    9,   33,   34,   35,   89,   89,   89,   89,
-       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
-       89,   55,   29,   89,   89,   89,   89,   89,   89,   36,
-       37,   38,   27,   89,   89,   89,   15,   42,   43,   44,
-       50,   12,   89,   89,   89,   89,   82,   83,   84,   89,
+       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   90,   90,   90,    0,   97,
+        0,   96,   90,   28,   90,   90,   87,   90,   90,   90,
+       90,   90,   90,   90,   21,   53,   90,   90,   90,   90,
+       90,   58,   72,   90,   90,   90,   90,   90,   90,   90,
+       90,   69,    9,   33,   34,   35,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
+       90,   56,   29,   90,   90,   90,   90,   90,   90,   36,
+       37,   38,   27,   90,   90,   90,   15,   42,   43,   44,
+       51,   12,   90,   90,   90,   90,   83,   84,   85,   90,
 
-       30,   72,   25,   79,   80,   81,    7,   76,   77,   78,
-       89,   24,   74,   89,   89,   39,   40,   41,   89,   89,
-       89,   89,   89,   89,   89,   89,   89,   69,   89,   89,
-       89,   89,   89,   89,   89,   51,   89,   88,   89,   89,
-       19,   89,   89,   89,   89,   70,   65,   60,   89,   89,
-       89,   89,   89,   75,   56,   89,   63,   32,   89,   85,
-       64,   48,   58,   89,   89,   89,   89,   89,   89,   89,
-       89,   59,   31,   89,   89,   89,    8,   89,   89,   89,
-       89,   89,   53,   13,   89,   14,   89,   89,   16,   66,
-       89,   89,   89,   61,   89,   89,   89,   89,   54,   73,
+       30,   73,   25,   80,   81,   82,    7,   77,   78,   79,
+       90,   24,   75,   90,   90,   39,   40,   41,   90,   90,
+       90,   90,   90,   90,   90,   90,   90,   70,   90,   90,
+       90,   90,   90,   90,   90,   52,   90,   89,   90,   90,
+       19,   90,   90,   90,   90,   71,   66,   61,   90,   90,
+       90,   90,   90,   76,   57,   90,   64,   32,   90,   86,
+       65,   49,   59,   90,   90,   90,   90,   90,   90,   90,
+       90,   60,   31,   90,   90,   90,    8,   90,   90,   90,
+       90,   90,   54,   13,   90,   14,   90,   90,   16,   67,
+       90,   90,   90,   62,   90,   90,   90,   90,   55,   74,
 
-       62,   11,   67,    6,   87,   10,   45,   89,   89,   89,
-       89,   46,   89,   89,   89,   89,   89,   89,   89,   47,
-        0
+       63,   11,   68,    6,   88,   10,   45,   90,   90,   90,
+       90,   90,   90,   46,   90,   90,   90,   48,   90,   90,
+       90,   90,   90,   47,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -441,12 +450,12 @@
        18,   19,   16,   16,   16,   20,   20,   21,   22,   23,
        24,   25,   26,    1,   27,   27,   28,   29,   30,   27,
        31,   31,   31,   31,   31,   31,   31,   31,   32,   31,
-       31,   31,   33,   31,   31,   31,   31,   34,   31,   31,
-       35,    1,   36,   37,   31,    1,   38,   39,   40,   41,
+       31,   33,   34,   31,   31,   31,   31,   35,   31,   31,
+       36,    1,   37,   38,   31,    1,   39,   40,   41,   42,
 
-       42,   43,   44,   45,   46,   31,   47,   48,   49,   50,
-       51,   52,   31,   53,   54,   55,   56,   57,   58,   59,
-       60,   61,   62,   63,   64,   65,    1,    1,    1,    1,
+       43,   44,   45,   46,   47,   31,   48,   49,   50,   51,
+       52,   53,   31,   54,   55,   56,   57,   58,   59,   60,
+       61,   62,   63,   64,   65,   66,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -463,199 +472,201 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[66] =
+static yyconst flex_int32_t yy_meta[67] =
     {   0,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    3,    3,    3,    3,    3,    3,
         1,    1,    1,    1,    1,    1,    3,    3,    3,    3,
-        4,    4,    4,    4,    1,    1,    1,    3,    3,    3,
-        3,    3,    3,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    1,    1,    1,    3,    3,
+        3,    3,    3,    3,    4,    4,    4,    4,    4,    4,
         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    1,    1,    1,    1
+        4,    4,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[427] =
+static yyconst flex_int16_t yy_base[431] =
     {   0,
-        0,    0,   63,   64,   73,    0,  621,  622,  622,  622,
-      596,   44,  133,  622,  622,  595,  130,  622,  129,  127,
-      141,  153,  161,  593,  622,  177,  593,   46,  622,    0,
-      622,  622,  124,   97,  105,  137,  148,  154,  168,  565,
-      151,  167,  564,  121,  158,  558,  111,  571,  177,  176,
-      157,  188,  567,  622,  168,  622,  622,  622,  622,  597,
-      622,  622,    0,  622,  622,  622,  622,  622,  622,  622,
-      622,  622,  622,  225,  622,    0,  622,  231,  259,  267,
-      288,    0,  297,  622,  622,  622,  586,  622,  622,  622,
-      585,    0,  622,  622,  559,  552,  555,  563,  562,  549,
+        0,    0,   64,   65,   74,    0,  627,  628,  628,  628,
+      602,   45,  135,  628,  628,  601,  132,  628,  131,  129,
+      143,  155,  163,  599,  628,  179,  599,   47,  628,    0,
+      628,  628,  126,   98,  108,  147,  158,  158,  165,  570,
+      130,  107,  569,  148,  156,  563,  172,  576,  174,  181,
+      177,  195,  572,  628,  173,  628,  628,  628,  628,  603,
+      628,  628,    0,  628,  628,  628,  628,  628,  628,  628,
+      628,  628,  628,  233,  628,    0,  628,  239,  255,  271,
+      287,    0,  300,  628,  628,  628,  592,  628,  628,  628,
+      591,    0,  628,  628,  564,  557,  560,  568,  567,  554,
 
-      564,  551,  557,  545,  542,  555,  542,  539,  539,  545,
-      533,  540,  537,  547,  533,  539,  542,  543,    0,  205,
-      542,  170,  528,  541,  532,  534,  524,  538,  535,  537,
-      520,  525,  522,  511,  199,  525,  521,  523,  512,  515,
-      212,  520,  512,  524,  138,  517,  622,  622,  622,    0,
-      313,    0,  325,  341,  275,  353,    0,  622,  622,    0,
-      509,  513,  522,  519,  503,  503,  179,  518,  515,  515,
-      513,  510,  502,  508,  495,  506,  509,    0,  506,  494,
-      501,  498,  502,  495,  484,  483,  496,  499,  496,  491,
-      482,  246,  487,  490,  481,  478,  482,  488,  479,  470,
+      569,  556,  562,  550,  547,  560,  547,  544,  544,  550,
+      538,  545,  542,  552,  538,  544,  547,  548,    0,  187,
+      547,  241,  533,  546,  537,  539,  529,  543,  540,  542,
+      525,  530,  527,  516,  192,  530,  526,  528,  517,  520,
+      274,  525,  517,  529,  114,  522,  628,  628,  628,    0,
+      316,    0,  322,  338,  344,  351,    0,  628,  628,    0,
+      514,  518,  527,  524,  508,  508,  205,  523,  520,  520,
+      518,  515,  507,  513,  500,  511,  514,    0,  511,  499,
+      506,  503,  507,  500,  489,  488,  501,  504,  501,  496,
+      487,  247,  492,  495,  486,  483,  487,  493,  484,  475,
 
-      473,  471,  481,  467,  465,  465,  467,  464,  475,  474,
-      245,  469,  464,  453,  251,  471,  473,  462,  359,  365,
-      371,  377,  463,    0,  461,  301,    0,  453,  451,  459,
-      448,  465,  454,  317,    0,    0,  448,  458,  458,  443,
-      329,    0,    0,  445,  345,  446,  440,  439,  440,  439,
-      381,    0,    0,    0,    0,    0,  435,  436,  441,  432,
-      445,  440,  439,  431,  435,  427,  430,  434,  439,  438,
-      429,    0,    0,  435,  424,  424,  429,  428,  425,    0,
-        0,    0,    0,  415,  427,  429,    0,    0,    0,    0,
-        0,    0,  417,  418,  412,  422,    0,    0,    0,  413,
+      478,  476,  486,  472,  470,  470,  472,  469,  480,  479,
+      328,  474,  469,  458,  260,  476,  478,  467,  358,  366,
+      372,  378,  468,    0,  466,  276,    0,  458,  456,  464,
+      453,  470,  459,  291,    0,    0,  453,  463,  463,  448,
+      305,    0,    0,  450,  327,  451,  445,  444,  445,  444,
+      382,    0,    0,    0,    0,    0,  440,  441,  446,  437,
+      450,  445,  444,  436,  440,  432,  435,  439,  444,  443,
+      434,    0,    0,  440,  429,  429,  434,  433,  430,    0,
+        0,    0,    0,  420,  432,  434,    0,    0,    0,    0,
+        0,    0,  422,  423,  417,  427,    0,    0,    0,  418,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      420,    0,    0,  418,  414,    0,    0,    0,  410,  406,
-      411,  401,  414,  400,  413,  402,  409,    0,  407,  409,
-      393,  402,  408,  403,  391,    0,  393,    0,  392,  395,
-        0,  384,  383,  383,  396,    0,  398,    0,  397,  396,
-      381,  394,  381,    0,    0,  384,    0,    0,  376,    0,
-        0,    0,    0,  373,  384,  377,  383,  380,  375,  367,
-      379,    0,    0,  372,  379,  368,    0,  377,  374,  364,
-      294,  372,    0,    0,  372,    0,  368,  324,    0,    0,
-      323,  299,  310,    0,  300,  320,  282,  278,    0,    0,
+      425,    0,    0,  423,  419,    0,    0,    0,  415,  411,
+      416,  406,  419,  405,  418,  407,  414,    0,  412,  414,
+      398,  407,  413,  408,  396,    0,  398,    0,  397,  400,
+        0,  389,  388,  388,  401,    0,  403,    0,  402,  401,
+      386,  399,  386,    0,    0,  389,    0,    0,  381,    0,
+        0,    0,    0,  378,  389,  382,  388,  385,  380,  372,
+      382,    0,    0,  365,  371,  360,    0,  369,  366,  356,
+      385,  364,    0,    0,  364,    0,  362,  361,    0,    0,
+      360,  323,  308,    0,  298,  318,  270,  265,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,  287,  266,  260,
-      257,    0,  228,  221,  221,  206,  206,  197,  160,    0,
-      622,  400,  402,  404,  408,  157
+        0,    0,    0,    0,    0,    0,  279,  271,  240,  240,
+      238,  237,  226,    0,  208,  188,  190,    0,  186,  173,
+      187,  164,  158,    0,  628,  415,  417,  419,  423,  186
     } ;
 
-static yyconst flex_int16_t yy_def[427] =
+static yyconst flex_int16_t yy_def[431] =
     {   0,
-      421,    1,  422,  422,  421,    5,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  423,
-      421,  421,  421,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  424,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  425,  421,  421,  421,  421,
-      421,  426,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  423,  421,  421,  423,  423,  423,  423,  423,  423,
+      425,    1,  426,  426,  425,    5,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  427,
+      425,  425,  425,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  428,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  429,  425,  425,  425,  425,
+      425,  430,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  427,  425,  425,  427,  427,  427,  427,  427,  427,
 
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  421,  421,  421,  424,
-      421,  425,  421,  421,  421,  421,  426,  421,  421,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  425,  425,  425,  428,
+      425,  429,  425,  425,  425,  425,  430,  425,  425,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
 
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  421,  421,
-      421,  421,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  425,  425,
+      425,  425,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
 
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
 
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
-        0,  421,  421,  421,  421,  421
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,    0,  425,  425,  425,  425,  425
     } ;
 
-static yyconst flex_int16_t yy_nxt[688] =
+static yyconst flex_int16_t yy_nxt[695] =
     {   0,
         8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
        18,   19,   20,   21,   22,   23,   23,   23,   23,   23,
        24,   25,   26,   27,   28,   29,   30,   30,   30,   30,
-       30,   30,   30,   30,   31,   32,   33,   34,   35,   36,
-       37,   38,   39,   40,   41,   42,   30,   43,   44,   45,
-       46,   47,   48,   49,   50,   51,   52,   53,   30,   30,
-       30,   54,   55,   56,   57,   59,   59,   65,   66,   90,
-       91,   60,   60,    8,   61,   62,    8,    8,    8,    8,
+       30,   30,   30,   30,   30,   31,   32,   33,   34,   35,
+       36,   37,   38,   39,   40,   41,   42,   30,   43,   44,
+       45,   46,   47,   48,   49,   50,   51,   52,   53,   30,
+       30,   30,   54,   55,   56,   57,   59,   59,   65,   66,
+       90,   91,   60,   60,    8,   61,   62,    8,    8,    8,
         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
-        8,    8,    8,    8,    8,    8,    8,    8,    8,   63,
+        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
 
-       63,   63,   63,   63,   63,   63,   63,    8,    8,    8,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,    8,
+        8,    8,   63,   63,   63,   63,   63,   63,   63,   63,
        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
-       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
-       63,   63,   63,   63,    8,    8,    8,    8,   67,   70,
-       72,   74,   74,   74,   74,   74,   74,   93,  128,   75,
-       95,   96,   73,   71,   76,   97,   68,   98,  123,  157,
-       94,   99,  124,  129,   77,   78,  130,   79,   79,   79,
-       79,   79,   80,   78,  100,   83,   83,   83,   83,   83,
-       83,   85,   81,  216,  101,  217,   82,  102,  116,  103,
-       81,  147,  420,  104,   81,  125,  117,   86,  105,   87,
+       63,   63,   63,   63,   63,   63,    8,    8,    8,    8,
+       67,   70,   72,   74,   74,   74,   74,   74,   74,   93,
+      119,   75,   95,   96,   73,   71,   76,  120,   68,   97,
+      216,   98,  217,   94,  121,   99,   77,   78,  116,   79,
+       79,   79,   79,   79,   80,   78,  117,   83,   83,   83,
+       83,   83,   83,   85,   81,  100,  123,  118,  157,   82,
+      124,  424,   81,  423,  125,  101,  147,   81,  102,   86,
 
-       88,  107,   81,  108,  106,  110,  141,  118,  126,  119,
-      142,   82,  109,  111,  132,  112,  120,  137,  113,  190,
-      138,  133,  134,  121,  114,  143,  419,  191,  139,  144,
-      148,  135,  229,  230,  136,  140,  204,  418,  145,   74,
-       74,   74,   74,   74,   74,  153,  153,  153,  153,  153,
-      153,  205,  184,  417,  151,  185,  186,  211,  416,  187,
-      154,  188,  254,  255,  256,  212,  151,  280,  281,  282,
-      415,   78,  154,   79,   79,   79,   79,   79,   80,   78,
-      414,   80,   80,   80,   80,   80,   80,  275,   81,  156,
-      156,  156,  156,  156,  156,  276,   81,  155,  413,  155,
+      103,   87,   88,  110,  104,   81,  107,  126,  108,  105,
+      128,  111,  132,  112,   82,  106,  113,  109,  422,  133,
+      134,  421,  114,  137,  420,  129,  138,  141,  130,  135,
+      204,  142,  136,  143,  139,  184,  148,  144,  185,  186,
+      419,  140,  187,  418,  188,  205,  145,   74,   74,   74,
+       74,   74,   74,  153,  153,  153,  153,  153,  153,  229,
+      230,  417,  151,  254,  255,  256,  416,   78,  154,   79,
+       79,   79,   79,   79,   80,  151,  280,  281,  282,  415,
+      414,  154,  413,   78,   81,   80,   80,   80,   80,   80,
+       80,  190,  288,  289,  290,  412,  155,   81,  155,  191,
 
-       81,  412,  156,  156,  156,  156,  156,  156,   81,   78,
-      396,   83,   83,   83,   83,   83,   83,  288,  289,  290,
-      411,  397,  219,  398,  219,  410,   81,  220,  220,  220,
-      220,  220,  220,  297,  298,  299,  409,  408,   81,  153,
-      153,  153,  153,  153,  153,  304,  305,  306,  407,  406,
-      221,  405,  221,  404,  154,  222,  222,  222,  222,  222,
-      222,  308,  309,  310,  403,  402,  154,  156,  156,  156,
-      156,  156,  156,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  222,  222,  222,  222,  222,
-      222,  222,  222,  222,  222,  222,  222,  316,  317,  318,
+       81,  156,  156,  156,  156,  156,  156,  297,  298,  299,
+      411,  410,   78,   81,   83,   83,   83,   83,   83,   83,
+      211,  304,  305,  306,  409,  219,  408,  219,  212,   81,
+      220,  220,  220,  220,  220,  220,  153,  153,  153,  153,
+      153,  153,   81,  308,  309,  310,  407,  221,  406,  221,
+      405,  154,  222,  222,  222,  222,  222,  222,  156,  156,
+      156,  156,  156,  156,  154,  156,  156,  156,  156,  156,
+      156,  275,  220,  220,  220,  220,  220,  220,  404,  276,
+      220,  220,  220,  220,  220,  220,  222,  222,  222,  222,
+      222,  222,  222,  222,  222,  222,  222,  222,  316,  317,
 
-       58,   58,   58,   58,   92,   92,  150,  150,  152,  401,
-      152,  152,  400,  399,  395,  394,  393,  392,  391,  390,
-      389,  388,  387,  386,  385,  384,  383,  382,  381,  380,
-      379,  378,  377,  376,  375,  374,  373,  372,  371,  370,
-      369,  368,  367,  366,  365,  364,  363,  362,  361,  360,
-      359,  358,  357,  356,  355,  354,  353,  352,  351,  350,
-      349,  348,  347,  346,  345,  344,  343,  342,  341,  340,
-      339,  338,  337,  336,  335,  334,  333,  332,  331,  330,
-      329,  328,  327,  326,  325,  324,  323,  322,  321,  320,
-      319,  315,  314,  313,  312,  311,  307,  303,  302,  301,
+      318,  396,  403,  402,  401,  400,  399,  395,  394,  393,
+      392,  391,  397,  390,  398,   58,   58,   58,   58,   92,
+       92,  150,  150,  152,  389,  152,  152,  388,  387,  386,
+      385,  384,  383,  382,  381,  380,  379,  378,  377,  376,
+      375,  374,  373,  372,  371,  370,  369,  368,  367,  366,
+      365,  364,  363,  362,  361,  360,  359,  358,  357,  356,
+      355,  354,  353,  352,  351,  350,  349,  348,  347,  346,
+      345,  344,  343,  342,  341,  340,  339,  338,  337,  336,
+      335,  334,  333,  332,  331,  330,  329,  328,  327,  326,
+      325,  324,  323,  322,  321,  320,  319,  315,  314,  313,
 
-      300,  296,  295,  294,  293,  292,  291,  287,  286,  285,
-      284,  283,  279,  278,  277,  274,  273,  272,  271,  270,
-      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
-      259,  258,  257,  253,  252,  251,  250,  249,  248,  247,
-      246,  245,  244,  243,  242,  241,  240,  239,  238,  237,
-      236,  235,  234,  233,  232,  231,  228,  227,  226,  225,
-      224,  223,  218,  215,  214,  213,  210,  209,  208,  207,
-      206,  203,  202,  201,  200,  199,  198,  197,  196,  195,
-      194,  193,  192,  189,  183,  182,  181,  180,  179,  178,
-      177,  176,  175,  174,  173,  172,  171,  170,  169,  168,
+      312,  311,  307,  303,  302,  301,  300,  296,  295,  294,
+      293,  292,  291,  287,  286,  285,  284,  283,  279,  278,
+      277,  274,  273,  272,  271,  270,  269,  268,  267,  266,
+      265,  264,  263,  262,  261,  260,  259,  258,  257,  253,
+      252,  251,  250,  249,  248,  247,  246,  245,  244,  243,
+      242,  241,  240,  239,  238,  237,  236,  235,  234,  233,
+      232,  231,  228,  227,  226,  225,  224,  223,  218,  215,
+      214,  213,  210,  209,  208,  207,  206,  203,  202,  201,
+      200,  199,  198,  197,  196,  195,  194,  193,  192,  189,
+      183,  182,  181,  180,  179,  178,  177,  176,  175,  174,
 
-      167,  166,  165,  164,  163,  162,  161,  160,  159,  158,
-      149,  146,  131,  127,  122,  115,   89,   84,   69,   64,
-      421,    7,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421
+      173,  172,  171,  170,  169,  168,  167,  166,  165,  164,
+      163,  162,  161,  160,  159,  158,  149,  146,  131,  127,
+      122,  115,   89,   84,   69,   64,  425,    7,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425
+
     } ;
 
-static yyconst flex_int16_t yy_chk[688] =
+static yyconst flex_int16_t yy_chk[695] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -663,79 +674,81 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    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,   12,   12,   28,
-       28,    3,    4,    5,    5,    5,    5,    5,    5,    5,
+        1,    1,    1,    1,    1,    1,    3,    4,   12,   12,
+       28,   28,    3,    4,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
 
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,   13,   17,
-       19,   20,   20,   20,   20,   20,   20,   33,   47,   21,
-       34,   34,   19,   17,   21,   35,   13,   35,   44,  426,
-       33,   35,   44,   47,   21,   22,   47,   22,   22,   22,
-       22,   22,   22,   23,   36,   23,   23,   23,   23,   23,
-       23,   26,   22,  145,   36,  145,   22,   36,   41,   37,
-       23,   55,  419,   37,   22,   45,   41,   26,   37,   26,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+       13,   17,   19,   20,   20,   20,   20,   20,   20,   33,
+       42,   21,   34,   34,   19,   17,   21,   42,   13,   35,
+      145,   35,  145,   33,   42,   35,   21,   22,   41,   22,
+       22,   22,   22,   22,   22,   23,   41,   23,   23,   23,
+       23,   23,   23,   26,   22,   36,   44,   41,  430,   22,
+       44,  423,   23,  422,   45,   36,   55,   22,   36,   26,
 
-       26,   38,   23,   38,   37,   39,   51,   41,   45,   42,
-       51,   22,   38,   39,   49,   39,   42,   50,   39,  122,
-       50,   49,   49,   42,   39,   52,  418,  122,   50,   52,
-       55,   49,  167,  167,   49,   50,  135,  417,   52,   74,
-       74,   74,   74,   74,   74,   78,   78,   78,   78,   78,
-       78,  135,  120,  416,   74,  120,  120,  141,  415,  120,
-       78,  120,  192,  192,  192,  141,   74,  215,  215,  215,
-      414,   79,   78,   79,   79,   79,   79,   79,   79,   80,
-      413,   80,   80,   80,   80,   80,   80,  211,   79,  155,
-      155,  155,  155,  155,  155,  211,   80,   81,  411,   81,
+       37,   26,   26,   39,   37,   23,   38,   45,   38,   37,
+       47,   39,   49,   39,   22,   37,   39,   38,  421,   49,
+       49,  420,   39,   50,  419,   47,   50,   51,   47,   49,
+      135,   51,   49,   52,   50,  120,   55,   52,  120,  120,
+      417,   50,  120,  416,  120,  135,   52,   74,   74,   74,
+       74,   74,   74,   78,   78,   78,   78,   78,   78,  167,
+      167,  415,   74,  192,  192,  192,  413,   79,   78,   79,
+       79,   79,   79,   79,   79,   74,  215,  215,  215,  412,
+      411,   78,  410,   80,   79,   80,   80,   80,   80,   80,
+       80,  122,  226,  226,  226,  409,   81,   79,   81,  122,
 
-       79,  410,   81,   81,   81,   81,   81,   81,   80,   83,
-      381,   83,   83,   83,   83,   83,   83,  226,  226,  226,
-      409,  381,  151,  381,  151,  408,   83,  151,  151,  151,
-      151,  151,  151,  234,  234,  234,  398,  397,   83,  153,
-      153,  153,  153,  153,  153,  241,  241,  241,  396,  395,
-      154,  393,  154,  392,  153,  154,  154,  154,  154,  154,
-      154,  245,  245,  245,  391,  388,  153,  156,  156,  156,
-      156,  156,  156,  219,  219,  219,  219,  219,  219,  220,
-      220,  220,  220,  220,  220,  221,  221,  221,  221,  221,
-      221,  222,  222,  222,  222,  222,  222,  251,  251,  251,
+       80,   81,   81,   81,   81,   81,   81,  234,  234,  234,
+      408,  407,   83,   80,   83,   83,   83,   83,   83,   83,
+      141,  241,  241,  241,  398,  151,  397,  151,  141,   83,
+      151,  151,  151,  151,  151,  151,  153,  153,  153,  153,
+      153,  153,   83,  245,  245,  245,  396,  154,  395,  154,
+      393,  153,  154,  154,  154,  154,  154,  154,  155,  155,
+      155,  155,  155,  155,  153,  156,  156,  156,  156,  156,
+      156,  211,  219,  219,  219,  219,  219,  219,  392,  211,
+      220,  220,  220,  220,  220,  220,  221,  221,  221,  221,
+      221,  221,  222,  222,  222,  222,  222,  222,  251,  251,
 
-      422,  422,  422,  422,  423,  423,  424,  424,  425,  387,
-      425,  425,  385,  382,  380,  379,  378,  376,  375,  374,
-      371,  370,  369,  368,  367,  366,  365,  364,  359,  356,
-      353,  352,  351,  350,  349,  347,  345,  344,  343,  342,
-      340,  339,  337,  335,  334,  333,  332,  331,  330,  329,
-      327,  326,  325,  324,  323,  322,  321,  320,  319,  315,
-      314,  311,  300,  296,  295,  294,  293,  286,  285,  284,
-      279,  278,  277,  276,  275,  274,  271,  270,  269,  268,
-      267,  266,  265,  264,  263,  262,  261,  260,  259,  258,
-      257,  250,  249,  248,  247,  246,  244,  240,  239,  238,
+      251,  381,  391,  388,  387,  385,  382,  380,  379,  378,
+      376,  375,  381,  374,  381,  426,  426,  426,  426,  427,
+      427,  428,  428,  429,  371,  429,  429,  370,  369,  368,
+      367,  366,  365,  364,  359,  356,  353,  352,  351,  350,
+      349,  347,  345,  344,  343,  342,  340,  339,  337,  335,
+      334,  333,  332,  331,  330,  329,  327,  326,  325,  324,
+      323,  322,  321,  320,  319,  315,  314,  311,  300,  296,
+      295,  294,  293,  286,  285,  284,  279,  278,  277,  276,
+      275,  274,  271,  270,  269,  268,  267,  266,  265,  264,
+      263,  262,  261,  260,  259,  258,  257,  250,  249,  248,
 
-      237,  233,  232,  231,  230,  229,  228,  225,  223,  218,
-      217,  216,  214,  213,  212,  210,  209,  208,  207,  206,
-      205,  204,  203,  202,  201,  200,  199,  198,  197,  196,
-      195,  194,  193,  191,  190,  189,  188,  187,  186,  185,
-      184,  183,  182,  181,  180,  179,  177,  176,  175,  174,
-      173,  172,  171,  170,  169,  168,  166,  165,  164,  163,
-      162,  161,  146,  144,  143,  142,  140,  139,  138,  137,
-      136,  134,  133,  132,  131,  130,  129,  128,  127,  126,
-      125,  124,  123,  121,  118,  117,  116,  115,  114,  113,
-      112,  111,  110,  109,  108,  107,  106,  105,  104,  103,
+      247,  246,  244,  240,  239,  238,  237,  233,  232,  231,
+      230,  229,  228,  225,  223,  218,  217,  216,  214,  213,
+      212,  210,  209,  208,  207,  206,  205,  204,  203,  202,
+      201,  200,  199,  198,  197,  196,  195,  194,  193,  191,
+      190,  189,  188,  187,  186,  185,  184,  183,  182,  181,
+      180,  179,  177,  176,  175,  174,  173,  172,  171,  170,
+      169,  168,  166,  165,  164,  163,  162,  161,  146,  144,
+      143,  142,  140,  139,  138,  137,  136,  134,  133,  132,
+      131,  130,  129,  128,  127,  126,  125,  124,  123,  121,
+      118,  117,  116,  115,  114,  113,  112,  111,  110,  109,
 
-      102,  101,  100,   99,   98,   97,   96,   95,   91,   87,
-       60,   53,   48,   46,   43,   40,   27,   24,   16,   11,
-        7,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-      421,  421,  421,  421,  421,  421,  421
+      108,  107,  106,  105,  104,  103,  102,  101,  100,   99,
+       98,   97,   96,   95,   91,   87,   60,   53,   48,   46,
+       43,   40,   27,   24,   16,   11,    7,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  425,  425,  425
+
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[147] =
+static yyconst flex_int32_t yy_rule_can_match_eol[148] =
     {   0,
 0, 0, 0, 1, 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, 
@@ -744,7 +757,7 @@
     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, 1, 0, 0,     };
+    0, 0, 0, 0, 0, 1, 0, 0,     };
 
 /* The intent behind this definition is that it'll catch
  * any uses of REJECT which flex missed.
@@ -909,7 +922,12 @@
     
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
 #define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -917,7 +935,7 @@
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO fwrite( yytext, yyleng, 1, yyout )
+#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -928,7 +946,7 @@
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		int n; \
+		size_t n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
@@ -1070,13 +1088,13 @@
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 422 )
+				if ( yy_current_state >= 426 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 421 );
+		while ( yy_current_state != 425 );
 		yy_cp = yyg->yy_last_accepting_cpos;
 		yy_current_state = yyg->yy_last_accepting_state;
 
@@ -1297,11 +1315,11 @@
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-{ context->lexAfterType = true; return(STRUCT); }
+{ context->lexAfterType = true; return SAMPLER2DRECT; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-{ return reserved_word(yyscanner); }
+{ context->lexAfterType = true; return(STRUCT); }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
@@ -1461,30 +1479,30 @@
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
+{ return reserved_word(yyscanner); }
+	YY_BREAK
+case 90:
+YY_RULE_SETUP
 {
    yylval->lex.string = NewPoolTString(yytext); 
    return check_type(yyscanner);
 }
 	YY_BREAK
-case 90:
-YY_RULE_SETUP
-{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
-	YY_BREAK
 case 91:
 YY_RULE_SETUP
 { yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-{ context->error(yylineno, "Invalid Octal number.", yytext, "", ""); context->recover(); return 0;}
+{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
+{ context->error(yylineno, "Invalid Octal number.", yytext, "", ""); context->recover(); return 0;}
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
+{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
@@ -1496,198 +1514,202 @@
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-{  return(ADD_ASSIGN); }
+{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-{  return(SUB_ASSIGN); }
+{  return(ADD_ASSIGN); }
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-{  return(MUL_ASSIGN); }
+{  return(SUB_ASSIGN); }
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-{  return(DIV_ASSIGN); }
+{  return(MUL_ASSIGN); }
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-{  return(MOD_ASSIGN); }
+{  return(DIV_ASSIGN); }
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-{  return(LEFT_ASSIGN); }
+{  return(MOD_ASSIGN); }
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-{  return(RIGHT_ASSIGN); }
+{  return(LEFT_ASSIGN); }
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-{  return(AND_ASSIGN); }
+{  return(RIGHT_ASSIGN); }
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-{  return(XOR_ASSIGN); }
+{  return(AND_ASSIGN); }
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-{  return(OR_ASSIGN); }
+{  return(XOR_ASSIGN); }
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-{  return(INC_OP); }
+{  return(OR_ASSIGN); }
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-{  return(DEC_OP); }
+{  return(INC_OP); }
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-{  return(AND_OP); }
+{  return(DEC_OP); }
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
-{  return(OR_OP); }
+{  return(AND_OP); }
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-{  return(XOR_OP); }
+{  return(OR_OP); }
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
-{  return(LE_OP); }
+{  return(XOR_OP); }
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-{  return(GE_OP); }
+{  return(LE_OP); }
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
-{  return(EQ_OP); }
+{  return(GE_OP); }
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-{  return(NE_OP); }
+{  return(EQ_OP); }
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
-{  return(LEFT_OP); }
+{  return(NE_OP); }
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
-{  return(RIGHT_OP); }
+{  return(LEFT_OP); }
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-{ context->lexAfterType = false; return(SEMICOLON); }
+{  return(RIGHT_OP); }
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
-{ context->lexAfterType = false; return(LEFT_BRACE); }
+{ context->lexAfterType = false; return(SEMICOLON); }
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
-{ return(RIGHT_BRACE); }
+{ context->lexAfterType = false; return(LEFT_BRACE); }
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
-{ if (context->inTypeParen) context->lexAfterType = false; return(COMMA); }
+{ return(RIGHT_BRACE); }
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-{ return(COLON); }
+{ if (context->inTypeParen) context->lexAfterType = false; return(COMMA); }
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-{ context->lexAfterType = false; return(EQUAL); }
+{ return(COLON); }
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
-{ context->lexAfterType = false; context->inTypeParen = true; return(LEFT_PAREN); }
+{ context->lexAfterType = false; return(EQUAL); }
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
-{ context->inTypeParen = false; return(RIGHT_PAREN); }
+{ context->lexAfterType = false; context->inTypeParen = true; return(LEFT_PAREN); }
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
-{ return(LEFT_BRACKET); }
+{ context->inTypeParen = false; return(RIGHT_PAREN); }
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
-{ return(RIGHT_BRACKET); }
+{ return(LEFT_BRACKET); }
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-{ BEGIN(FIELDS);  return(DOT); }
+{ return(RIGHT_BRACKET); }
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
-{ return(BANG); }
+{ BEGIN(FIELDS);  return(DOT); }
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
-{ return(DASH); }
+{ return(BANG); }
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
-{ return(TILDE); }
+{ return(DASH); }
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
-{ return(PLUS); }
+{ return(TILDE); }
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
-{ return(STAR); }
+{ return(PLUS); }
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
-{ return(SLASH); }
+{ return(STAR); }
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
-{ return(PERCENT); }
+{ return(SLASH); }
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
-{ return(LEFT_ANGLE); }
+{ return(PERCENT); }
 	YY_BREAK
 case 137:
 YY_RULE_SETUP
-{ return(RIGHT_ANGLE); }
+{ return(LEFT_ANGLE); }
 	YY_BREAK
 case 138:
 YY_RULE_SETUP
-{ return(VERTICAL_BAR); }
+{ return(RIGHT_ANGLE); }
 	YY_BREAK
 case 139:
 YY_RULE_SETUP
-{ return(CARET); }
+{ return(VERTICAL_BAR); }
 	YY_BREAK
 case 140:
 YY_RULE_SETUP
-{ return(AMPERSAND); }
+{ return(CARET); }
 	YY_BREAK
 case 141:
 YY_RULE_SETUP
-{ return(QUESTION); }
+{ return(AMPERSAND); }
 	YY_BREAK
 case 142:
 YY_RULE_SETUP
+{ return(QUESTION); }
+	YY_BREAK
+case 143:
+YY_RULE_SETUP
 { 
     BEGIN(INITIAL);
     yylval->lex.string = NewPoolTString(yytext); 
     return FIELD_SELECTION;
 }
 	YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
 {}
 	YY_BREAK
-case 144:
-/* rule 144 can match eol */
+case 145:
+/* rule 145 can match eol */
 YY_RULE_SETUP
 {  }
 	YY_BREAK
@@ -1696,11 +1718,11 @@
 case YY_STATE_EOF(FIELDS):
 { context->AfterEOF = true; yyterminate(); }
 	YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
 { context->warning(yylineno, "Unknown char", yytext, ""); return 0; }
 	YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
 ECHO;
 	YY_BREAK
@@ -1996,7 +2018,7 @@
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 422 )
+			if ( yy_current_state >= 426 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2025,11 +2047,11 @@
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 422 )
+		if ( yy_current_state >= 426 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 421);
+	yy_is_jam = (yy_current_state == 425);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2439,8 +2461,8 @@
 
 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
  * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
diff --git a/src/compiler/glslang_tab.cpp b/src/compiler/glslang_tab.cpp
index b46e982..535177b 100644
--- a/src/compiler/glslang_tab.cpp
+++ b/src/compiler/glslang_tab.cpp
@@ -1,24 +1,23 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
+
+/* A Bison parser, made by GNU Bison 2.4.1.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
+   
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -29,7 +28,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -47,7 +46,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.3"
+#define YYBISON_VERSION "2.4.1"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -55,11 +54,55 @@
 /* Pure parsers.  */
 #define YYPURE 1
 
+/* Push parsers.  */
+#define YYPUSH 0
+
+/* Pull parsers.  */
+#define YYPULL 1
+
 /* Using locations.  */
 #define YYLSP_NEEDED 0
 
 
 
+/* Copy the first part of user declarations.  */
+
+
+//
+// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// This file is auto-generated by generate_parser.sh. DO NOT EDIT!
+
+#include "compiler/SymbolTable.h"
+#include "compiler/ParseHelper.h"
+#include "GLSLANG/ShaderLang.h"
+
+#define YYLEX_PARAM context->scanner
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
@@ -107,196 +150,68 @@
      SAMPLER2D = 296,
      SAMPLERCUBE = 297,
      SAMPLER_EXTERNAL_OES = 298,
-     IDENTIFIER = 299,
-     TYPE_NAME = 300,
-     FLOATCONSTANT = 301,
-     INTCONSTANT = 302,
-     BOOLCONSTANT = 303,
-     FIELD_SELECTION = 304,
-     LEFT_OP = 305,
-     RIGHT_OP = 306,
-     INC_OP = 307,
-     DEC_OP = 308,
-     LE_OP = 309,
-     GE_OP = 310,
-     EQ_OP = 311,
-     NE_OP = 312,
-     AND_OP = 313,
-     OR_OP = 314,
-     XOR_OP = 315,
-     MUL_ASSIGN = 316,
-     DIV_ASSIGN = 317,
-     ADD_ASSIGN = 318,
-     MOD_ASSIGN = 319,
-     LEFT_ASSIGN = 320,
-     RIGHT_ASSIGN = 321,
-     AND_ASSIGN = 322,
-     XOR_ASSIGN = 323,
-     OR_ASSIGN = 324,
-     SUB_ASSIGN = 325,
-     LEFT_PAREN = 326,
-     RIGHT_PAREN = 327,
-     LEFT_BRACKET = 328,
-     RIGHT_BRACKET = 329,
-     LEFT_BRACE = 330,
-     RIGHT_BRACE = 331,
-     DOT = 332,
-     COMMA = 333,
-     COLON = 334,
-     EQUAL = 335,
-     SEMICOLON = 336,
-     BANG = 337,
-     DASH = 338,
-     TILDE = 339,
-     PLUS = 340,
-     STAR = 341,
-     SLASH = 342,
-     PERCENT = 343,
-     LEFT_ANGLE = 344,
-     RIGHT_ANGLE = 345,
-     VERTICAL_BAR = 346,
-     CARET = 347,
-     AMPERSAND = 348,
-     QUESTION = 349
+     SAMPLER2DRECT = 299,
+     IDENTIFIER = 300,
+     TYPE_NAME = 301,
+     FLOATCONSTANT = 302,
+     INTCONSTANT = 303,
+     BOOLCONSTANT = 304,
+     FIELD_SELECTION = 305,
+     LEFT_OP = 306,
+     RIGHT_OP = 307,
+     INC_OP = 308,
+     DEC_OP = 309,
+     LE_OP = 310,
+     GE_OP = 311,
+     EQ_OP = 312,
+     NE_OP = 313,
+     AND_OP = 314,
+     OR_OP = 315,
+     XOR_OP = 316,
+     MUL_ASSIGN = 317,
+     DIV_ASSIGN = 318,
+     ADD_ASSIGN = 319,
+     MOD_ASSIGN = 320,
+     LEFT_ASSIGN = 321,
+     RIGHT_ASSIGN = 322,
+     AND_ASSIGN = 323,
+     XOR_ASSIGN = 324,
+     OR_ASSIGN = 325,
+     SUB_ASSIGN = 326,
+     LEFT_PAREN = 327,
+     RIGHT_PAREN = 328,
+     LEFT_BRACKET = 329,
+     RIGHT_BRACKET = 330,
+     LEFT_BRACE = 331,
+     RIGHT_BRACE = 332,
+     DOT = 333,
+     COMMA = 334,
+     COLON = 335,
+     EQUAL = 336,
+     SEMICOLON = 337,
+     BANG = 338,
+     DASH = 339,
+     TILDE = 340,
+     PLUS = 341,
+     STAR = 342,
+     SLASH = 343,
+     PERCENT = 344,
+     LEFT_ANGLE = 345,
+     RIGHT_ANGLE = 346,
+     VERTICAL_BAR = 347,
+     CARET = 348,
+     AMPERSAND = 349,
+     QUESTION = 350
    };
 #endif
-/* Tokens.  */
-#define INVARIANT 258
-#define HIGH_PRECISION 259
-#define MEDIUM_PRECISION 260
-#define LOW_PRECISION 261
-#define PRECISION 262
-#define ATTRIBUTE 263
-#define CONST_QUAL 264
-#define BOOL_TYPE 265
-#define FLOAT_TYPE 266
-#define INT_TYPE 267
-#define BREAK 268
-#define CONTINUE 269
-#define DO 270
-#define ELSE 271
-#define FOR 272
-#define IF 273
-#define DISCARD 274
-#define RETURN 275
-#define BVEC2 276
-#define BVEC3 277
-#define BVEC4 278
-#define IVEC2 279
-#define IVEC3 280
-#define IVEC4 281
-#define VEC2 282
-#define VEC3 283
-#define VEC4 284
-#define MATRIX2 285
-#define MATRIX3 286
-#define MATRIX4 287
-#define IN_QUAL 288
-#define OUT_QUAL 289
-#define INOUT_QUAL 290
-#define UNIFORM 291
-#define VARYING 292
-#define STRUCT 293
-#define VOID_TYPE 294
-#define WHILE 295
-#define SAMPLER2D 296
-#define SAMPLERCUBE 297
-#define SAMPLER_EXTERNAL_OES 298
-#define IDENTIFIER 299
-#define TYPE_NAME 300
-#define FLOATCONSTANT 301
-#define INTCONSTANT 302
-#define BOOLCONSTANT 303
-#define FIELD_SELECTION 304
-#define LEFT_OP 305
-#define RIGHT_OP 306
-#define INC_OP 307
-#define DEC_OP 308
-#define LE_OP 309
-#define GE_OP 310
-#define EQ_OP 311
-#define NE_OP 312
-#define AND_OP 313
-#define OR_OP 314
-#define XOR_OP 315
-#define MUL_ASSIGN 316
-#define DIV_ASSIGN 317
-#define ADD_ASSIGN 318
-#define MOD_ASSIGN 319
-#define LEFT_ASSIGN 320
-#define RIGHT_ASSIGN 321
-#define AND_ASSIGN 322
-#define XOR_ASSIGN 323
-#define OR_ASSIGN 324
-#define SUB_ASSIGN 325
-#define LEFT_PAREN 326
-#define RIGHT_PAREN 327
-#define LEFT_BRACKET 328
-#define RIGHT_BRACKET 329
-#define LEFT_BRACE 330
-#define RIGHT_BRACE 331
-#define DOT 332
-#define COMMA 333
-#define COLON 334
-#define EQUAL 335
-#define SEMICOLON 336
-#define BANG 337
-#define DASH 338
-#define TILDE 339
-#define PLUS 340
-#define STAR 341
-#define SLASH 342
-#define PERCENT 343
-#define LEFT_ANGLE 344
-#define RIGHT_ANGLE 345
-#define VERTICAL_BAR 346
-#define CARET 347
-#define AMPERSAND 348
-#define QUESTION 349
 
 
 
-
-/* Copy the first part of user declarations.  */
-
-
-//
-// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-// This file is auto-generated by generate_parser.sh. DO NOT EDIT!
-
-#include "compiler/SymbolTable.h"
-#include "compiler/ParseHelper.h"
-#include "GLSLANG/ShaderLang.h"
-
-#define YYLEX_PARAM context->scanner
-
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-
 {
+
+
     struct {
         TSourceLoc line;
         union {
@@ -326,17 +241,16 @@
             TTypeList* typeList;
         };
     } interm;
-}
-/* Line 193 of yacc.c.  */
 
-	YYSTYPE;
+
+
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
-
 /* Copy the second part of user declarations.  */
 
 
@@ -366,8 +280,6 @@
 }
 
 
-/* Line 216 of yacc.c.  */
-
 
 #ifdef short
 # undef short
@@ -417,7 +329,7 @@
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
+# if YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -442,14 +354,14 @@
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static int
-YYID (int i)
+YYID (int yyi)
 #else
 static int
-YYID (i)
-    int i;
+YYID (yyi)
+    int yyi;
 #endif
 {
-  return i;
+  return yyi;
 }
 #endif
 
@@ -530,9 +442,9 @@
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss;
-  YYSTYPE yyvs;
-  };
+  yytype_int16 yyss_alloc;
+  YYSTYPE yyvs_alloc;
+};
 
 /* The size of the maximum gap between one aligned stack and the next.  */
 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
@@ -566,12 +478,12 @@
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack)					\
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
     do									\
       {									\
 	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack, Stack, yysize);				\
-	Stack = &yyptr->Stack;						\
+	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
+	Stack = &yyptr->Stack_alloc;					\
 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
 	yyptr += yynewbytes / sizeof (*yyptr);				\
       }									\
@@ -580,22 +492,22 @@
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  70
+#define YYFINAL  71
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1327
+#define YYLAST   1370
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  95
+#define YYNTOKENS  96
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  80
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  196
+#define YYNRULES  197
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  299
+#define YYNSTATES  300
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   349
+#define YYMAXUTOK   350
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -637,7 +549,8 @@
       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,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95
 };
 
 #if YYDEBUG
@@ -658,74 +571,75 @@
      298,   303,   306,   308,   311,   313,   315,   317,   320,   322,
      324,   327,   329,   331,   333,   335,   340,   342,   344,   346,
      348,   350,   352,   354,   356,   358,   360,   362,   364,   366,
-     368,   370,   372,   374,   376,   378,   380,   382,   383,   390,
-     391,   397,   399,   402,   406,   408,   412,   414,   419,   421,
-     423,   425,   427,   429,   431,   433,   435,   437,   440,   441,
-     442,   448,   450,   452,   455,   459,   461,   464,   466,   469,
-     475,   479,   481,   483,   488,   489,   496,   497,   506,   507,
-     515,   517,   519,   521,   522,   525,   529,   532,   535,   538,
-     542,   545,   547,   550,   552,   554,   555
+     368,   370,   372,   374,   376,   378,   380,   382,   384,   385,
+     392,   393,   399,   401,   404,   408,   410,   414,   416,   421,
+     423,   425,   427,   429,   431,   433,   435,   437,   439,   442,
+     443,   444,   450,   452,   454,   457,   461,   463,   466,   468,
+     471,   477,   481,   483,   485,   490,   491,   498,   499,   508,
+     509,   517,   519,   521,   523,   524,   527,   531,   534,   537,
+     540,   544,   547,   549,   552,   554,   556,   557
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     171,     0,    -1,    44,    -1,    96,    -1,    47,    -1,    46,
-      -1,    48,    -1,    71,   123,    72,    -1,    97,    -1,    98,
-      73,    99,    74,    -1,   100,    -1,    98,    77,    49,    -1,
-      98,    52,    -1,    98,    53,    -1,   123,    -1,   101,    -1,
-     102,    -1,    98,    77,   102,    -1,   104,    72,    -1,   103,
-      72,    -1,   105,    39,    -1,   105,    -1,   105,   121,    -1,
-     104,    78,   121,    -1,   106,    71,    -1,   141,    -1,    44,
-      -1,    49,    -1,    98,    -1,    52,   107,    -1,    53,   107,
-      -1,   108,   107,    -1,    85,    -1,    83,    -1,    82,    -1,
-     107,    -1,   109,    86,   107,    -1,   109,    87,   107,    -1,
-     109,    -1,   110,    85,   109,    -1,   110,    83,   109,    -1,
-     110,    -1,   111,    -1,   112,    89,   111,    -1,   112,    90,
-     111,    -1,   112,    54,   111,    -1,   112,    55,   111,    -1,
-     112,    -1,   113,    56,   112,    -1,   113,    57,   112,    -1,
-     113,    -1,   114,    -1,   115,    -1,   116,    -1,   117,    58,
-     116,    -1,   117,    -1,   118,    60,   117,    -1,   118,    -1,
-     119,    59,   118,    -1,   119,    -1,   119,    94,   123,    79,
-     121,    -1,   120,    -1,   107,   122,   121,    -1,    80,    -1,
-      61,    -1,    62,    -1,    63,    -1,    70,    -1,   121,    -1,
-     123,    78,   121,    -1,   120,    -1,   126,    81,    -1,   134,
-      81,    -1,     7,   139,   140,    81,    -1,   127,    72,    -1,
-     129,    -1,   128,    -1,   129,   131,    -1,   128,    78,   131,
-      -1,   136,    44,    71,    -1,   138,    44,    -1,   138,    44,
-      73,   124,    74,    -1,   137,   132,   130,    -1,   132,   130,
-      -1,   137,   132,   133,    -1,   132,   133,    -1,    -1,    33,
-      -1,    34,    -1,    35,    -1,   138,    -1,   135,    -1,   134,
-      78,    44,    -1,   134,    78,    44,    73,    74,    -1,   134,
-      78,    44,    73,   124,    74,    -1,   134,    78,    44,    80,
-     149,    -1,   136,    -1,   136,    44,    -1,   136,    44,    73,
-      74,    -1,   136,    44,    73,   124,    74,    -1,   136,    44,
-      80,   149,    -1,     3,    44,    -1,   138,    -1,   137,   138,
+     172,     0,    -1,    45,    -1,    97,    -1,    48,    -1,    47,
+      -1,    49,    -1,    72,   124,    73,    -1,    98,    -1,    99,
+      74,   100,    75,    -1,   101,    -1,    99,    78,    50,    -1,
+      99,    53,    -1,    99,    54,    -1,   124,    -1,   102,    -1,
+     103,    -1,    99,    78,   103,    -1,   105,    73,    -1,   104,
+      73,    -1,   106,    39,    -1,   106,    -1,   106,   122,    -1,
+     105,    79,   122,    -1,   107,    72,    -1,   142,    -1,    45,
+      -1,    50,    -1,    99,    -1,    53,   108,    -1,    54,   108,
+      -1,   109,   108,    -1,    86,    -1,    84,    -1,    83,    -1,
+     108,    -1,   110,    87,   108,    -1,   110,    88,   108,    -1,
+     110,    -1,   111,    86,   110,    -1,   111,    84,   110,    -1,
+     111,    -1,   112,    -1,   113,    90,   112,    -1,   113,    91,
+     112,    -1,   113,    55,   112,    -1,   113,    56,   112,    -1,
+     113,    -1,   114,    57,   113,    -1,   114,    58,   113,    -1,
+     114,    -1,   115,    -1,   116,    -1,   117,    -1,   118,    59,
+     117,    -1,   118,    -1,   119,    61,   118,    -1,   119,    -1,
+     120,    60,   119,    -1,   120,    -1,   120,    95,   124,    80,
+     122,    -1,   121,    -1,   108,   123,   122,    -1,    81,    -1,
+      62,    -1,    63,    -1,    64,    -1,    71,    -1,   122,    -1,
+     124,    79,   122,    -1,   121,    -1,   127,    82,    -1,   135,
+      82,    -1,     7,   140,   141,    82,    -1,   128,    73,    -1,
+     130,    -1,   129,    -1,   130,   132,    -1,   129,    79,   132,
+      -1,   137,    45,    72,    -1,   139,    45,    -1,   139,    45,
+      74,   125,    75,    -1,   138,   133,   131,    -1,   133,   131,
+      -1,   138,   133,   134,    -1,   133,   134,    -1,    -1,    33,
+      -1,    34,    -1,    35,    -1,   139,    -1,   136,    -1,   135,
+      79,    45,    -1,   135,    79,    45,    74,    75,    -1,   135,
+      79,    45,    74,   125,    75,    -1,   135,    79,    45,    81,
+     150,    -1,   137,    -1,   137,    45,    -1,   137,    45,    74,
+      75,    -1,   137,    45,    74,   125,    75,    -1,   137,    45,
+      81,   150,    -1,     3,    45,    -1,   139,    -1,   138,   139,
       -1,     9,    -1,     8,    -1,    37,    -1,     3,    37,    -1,
-      36,    -1,   140,    -1,   139,   140,    -1,     4,    -1,     5,
-      -1,     6,    -1,   141,    -1,   141,    73,   124,    74,    -1,
+      36,    -1,   141,    -1,   140,   141,    -1,     4,    -1,     5,
+      -1,     6,    -1,   142,    -1,   142,    74,   125,    75,    -1,
       39,    -1,    11,    -1,    12,    -1,    10,    -1,    27,    -1,
       28,    -1,    29,    -1,    21,    -1,    22,    -1,    23,    -1,
       24,    -1,    25,    -1,    26,    -1,    30,    -1,    31,    -1,
-      32,    -1,    41,    -1,    42,    -1,    43,    -1,   142,    -1,
-      45,    -1,    -1,    38,    44,    75,   143,   145,    76,    -1,
-      -1,    38,    75,   144,   145,    76,    -1,   146,    -1,   145,
-     146,    -1,   138,   147,    81,    -1,   148,    -1,   147,    78,
-     148,    -1,    44,    -1,    44,    73,   124,    74,    -1,   121,
-      -1,   125,    -1,   153,    -1,   152,    -1,   150,    -1,   159,
-      -1,   160,    -1,   163,    -1,   170,    -1,    75,    76,    -1,
-      -1,    -1,    75,   154,   158,   155,    76,    -1,   157,    -1,
-     152,    -1,    75,    76,    -1,    75,   158,    76,    -1,   151,
-      -1,   158,   151,    -1,    81,    -1,   123,    81,    -1,    18,
-      71,   123,    72,   161,    -1,   151,    16,   151,    -1,   151,
-      -1,   123,    -1,   136,    44,    80,   149,    -1,    -1,    40,
-      71,   164,   162,    72,   156,    -1,    -1,    15,   165,   151,
-      40,    71,   123,    72,    81,    -1,    -1,    17,    71,   166,
-     167,   169,    72,   156,    -1,   159,    -1,   150,    -1,   162,
-      -1,    -1,   168,    81,    -1,   168,    81,   123,    -1,    14,
-      81,    -1,    13,    81,    -1,    20,    81,    -1,    20,   123,
-      81,    -1,    19,    81,    -1,   172,    -1,   171,   172,    -1,
-     173,    -1,   125,    -1,    -1,   126,   174,   157,    -1
+      32,    -1,    41,    -1,    42,    -1,    43,    -1,    44,    -1,
+     143,    -1,    46,    -1,    -1,    38,    45,    76,   144,   146,
+      77,    -1,    -1,    38,    76,   145,   146,    77,    -1,   147,
+      -1,   146,   147,    -1,   139,   148,    82,    -1,   149,    -1,
+     148,    79,   149,    -1,    45,    -1,    45,    74,   125,    75,
+      -1,   122,    -1,   126,    -1,   154,    -1,   153,    -1,   151,
+      -1,   160,    -1,   161,    -1,   164,    -1,   171,    -1,    76,
+      77,    -1,    -1,    -1,    76,   155,   159,   156,    77,    -1,
+     158,    -1,   153,    -1,    76,    77,    -1,    76,   159,    77,
+      -1,   152,    -1,   159,   152,    -1,    82,    -1,   124,    82,
+      -1,    18,    72,   124,    73,   162,    -1,   152,    16,   152,
+      -1,   152,    -1,   124,    -1,   137,    45,    81,   150,    -1,
+      -1,    40,    72,   165,   163,    73,   157,    -1,    -1,    15,
+     166,   152,    40,    72,   124,    73,    82,    -1,    -1,    17,
+      72,   167,   168,   170,    73,   157,    -1,   160,    -1,   151,
+      -1,   163,    -1,    -1,   169,    82,    -1,   169,    82,   124,
+      -1,    14,    82,    -1,    13,    82,    -1,    20,    82,    -1,
+      20,   124,    82,    -1,    19,    82,    -1,   173,    -1,   172,
+     173,    -1,   174,    -1,   126,    -1,    -1,   127,   175,   158,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -744,13 +658,13 @@
     1316,  1336,  1412,  1421,  1444,  1447,  1453,  1461,  1469,  1477,
     1487,  1494,  1497,  1500,  1506,  1509,  1524,  1528,  1532,  1536,
     1545,  1550,  1555,  1560,  1565,  1570,  1575,  1580,  1585,  1590,
-    1596,  1602,  1608,  1613,  1618,  1627,  1632,  1645,  1645,  1659,
-    1659,  1668,  1671,  1686,  1722,  1726,  1732,  1740,  1756,  1760,
-    1764,  1765,  1771,  1772,  1773,  1774,  1775,  1779,  1780,  1780,
-    1780,  1790,  1791,  1796,  1799,  1809,  1812,  1818,  1819,  1823,
-    1831,  1835,  1845,  1850,  1867,  1867,  1872,  1872,  1879,  1879,
-    1887,  1890,  1896,  1899,  1905,  1909,  1916,  1923,  1930,  1937,
-    1948,  1957,  1961,  1968,  1971,  1977,  1977
+    1596,  1602,  1608,  1613,  1618,  1627,  1636,  1641,  1654,  1654,
+    1668,  1668,  1677,  1680,  1695,  1731,  1735,  1741,  1749,  1765,
+    1769,  1773,  1774,  1780,  1781,  1782,  1783,  1784,  1788,  1789,
+    1789,  1789,  1799,  1800,  1805,  1808,  1818,  1821,  1827,  1828,
+    1832,  1840,  1844,  1854,  1859,  1876,  1876,  1881,  1881,  1888,
+    1888,  1896,  1899,  1905,  1908,  1914,  1918,  1925,  1932,  1939,
+    1946,  1957,  1966,  1970,  1977,  1980,  1986,  1986
 };
 #endif
 
@@ -766,16 +680,16 @@
   "BVEC4", "IVEC2", "IVEC3", "IVEC4", "VEC2", "VEC3", "VEC4", "MATRIX2",
   "MATRIX3", "MATRIX4", "IN_QUAL", "OUT_QUAL", "INOUT_QUAL", "UNIFORM",
   "VARYING", "STRUCT", "VOID_TYPE", "WHILE", "SAMPLER2D", "SAMPLERCUBE",
-  "SAMPLER_EXTERNAL_OES", "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT",
-  "INTCONSTANT", "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", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET",
-  "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON",
-  "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH",
-  "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET",
-  "AMPERSAND", "QUESTION", "$accept", "variable_identifier",
+  "SAMPLER_EXTERNAL_OES", "SAMPLER2DRECT", "IDENTIFIER", "TYPE_NAME",
+  "FLOATCONSTANT", "INTCONSTANT", "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", "LEFT_PAREN", "RIGHT_PAREN",
+  "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT",
+  "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS",
+  "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR",
+  "CARET", "AMPERSAND", "QUESTION", "$accept", "variable_identifier",
   "primary_expression", "postfix_expression", "integer_expression",
   "function_call", "function_call_or_method", "function_call_generic",
   "function_call_header_no_parameters",
@@ -794,16 +708,16 @@
   "init_declarator_list", "single_declaration", "fully_specified_type",
   "type_qualifier", "type_specifier", "precision_qualifier",
   "type_specifier_no_prec", "type_specifier_nonarray", "struct_specifier",
-  "@1", "@2", "struct_declaration_list", "struct_declaration",
+  "$@1", "$@2", "struct_declaration_list", "struct_declaration",
   "struct_declarator_list", "struct_declarator", "initializer",
   "declaration_statement", "statement", "simple_statement",
-  "compound_statement", "@3", "@4", "statement_no_new_scope",
+  "compound_statement", "$@3", "$@4", "statement_no_new_scope",
   "compound_statement_no_new_scope", "statement_list",
   "expression_statement", "selection_statement",
-  "selection_rest_statement", "condition", "iteration_statement", "@5",
-  "@6", "@7", "for_init_statement", "conditionopt", "for_rest_statement",
+  "selection_rest_statement", "condition", "iteration_statement", "$@5",
+  "$@6", "$@7", "for_init_statement", "conditionopt", "for_rest_statement",
   "jump_statement", "translation_unit", "external_declaration",
-  "function_definition", "@8", 0
+  "function_definition", "$@8", 0
 };
 #endif
 
@@ -821,33 +735,33 @@
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,   349
+     345,   346,   347,   348,   349,   350
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    95,    96,    97,    97,    97,    97,    97,    98,    98,
-      98,    98,    98,    98,    99,   100,   101,   101,   102,   102,
-     103,   103,   104,   104,   105,   106,   106,   106,   107,   107,
-     107,   107,   108,   108,   108,   109,   109,   109,   110,   110,
-     110,   111,   112,   112,   112,   112,   112,   113,   113,   113,
-     114,   115,   116,   117,   117,   118,   118,   119,   119,   120,
-     120,   121,   121,   122,   122,   122,   122,   122,   123,   123,
-     124,   125,   125,   125,   126,   127,   127,   128,   128,   129,
-     130,   130,   131,   131,   131,   131,   132,   132,   132,   132,
-     133,   134,   134,   134,   134,   134,   135,   135,   135,   135,
-     135,   135,   136,   136,   137,   137,   137,   137,   137,   138,
-     138,   139,   139,   139,   140,   140,   141,   141,   141,   141,
-     141,   141,   141,   141,   141,   141,   141,   141,   141,   141,
-     141,   141,   141,   141,   141,   141,   141,   143,   142,   144,
-     142,   145,   145,   146,   147,   147,   148,   148,   149,   150,
-     151,   151,   152,   152,   152,   152,   152,   153,   154,   155,
-     153,   156,   156,   157,   157,   158,   158,   159,   159,   160,
-     161,   161,   162,   162,   164,   163,   165,   163,   166,   163,
-     167,   167,   168,   168,   169,   169,   170,   170,   170,   170,
-     170,   171,   171,   172,   172,   174,   173
+       0,    96,    97,    98,    98,    98,    98,    98,    99,    99,
+      99,    99,    99,    99,   100,   101,   102,   102,   103,   103,
+     104,   104,   105,   105,   106,   107,   107,   107,   108,   108,
+     108,   108,   109,   109,   109,   110,   110,   110,   111,   111,
+     111,   112,   113,   113,   113,   113,   113,   114,   114,   114,
+     115,   116,   117,   118,   118,   119,   119,   120,   120,   121,
+     121,   122,   122,   123,   123,   123,   123,   123,   124,   124,
+     125,   126,   126,   126,   127,   128,   128,   129,   129,   130,
+     131,   131,   132,   132,   132,   132,   133,   133,   133,   133,
+     134,   135,   135,   135,   135,   135,   136,   136,   136,   136,
+     136,   136,   137,   137,   138,   138,   138,   138,   138,   139,
+     139,   140,   140,   140,   141,   141,   142,   142,   142,   142,
+     142,   142,   142,   142,   142,   142,   142,   142,   142,   142,
+     142,   142,   142,   142,   142,   142,   142,   142,   144,   143,
+     145,   143,   146,   146,   147,   148,   148,   149,   149,   150,
+     151,   152,   152,   153,   153,   153,   153,   153,   154,   155,
+     156,   154,   157,   157,   158,   158,   159,   159,   160,   160,
+     161,   162,   162,   163,   163,   165,   164,   166,   164,   167,
+     164,   168,   168,   169,   169,   170,   170,   171,   171,   171,
+     171,   171,   172,   172,   173,   173,   175,   174
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -866,13 +780,13 @@
        4,     2,     1,     2,     1,     1,     1,     2,     1,     1,
        2,     1,     1,     1,     1,     4,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     6,     0,
-       5,     1,     2,     3,     1,     3,     1,     4,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     0,     0,
-       5,     1,     1,     2,     3,     1,     2,     1,     2,     5,
-       3,     1,     1,     4,     0,     6,     0,     8,     0,     7,
-       1,     1,     1,     0,     2,     3,     2,     2,     2,     3,
-       2,     1,     2,     1,     1,     0,     3
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
+       0,     5,     1,     2,     3,     1,     3,     1,     4,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
+       0,     5,     1,     1,     2,     3,     1,     2,     1,     2,
+       5,     3,     1,     1,     4,     0,     6,     0,     8,     0,
+       7,     1,     1,     1,     0,     2,     3,     2,     2,     2,
+       3,     2,     1,     2,     1,     1,     0,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -883,96 +797,96 @@
        0,     0,   111,   112,   113,     0,   105,   104,   119,   117,
      118,   123,   124,   125,   126,   127,   128,   120,   121,   122,
      129,   130,   131,   108,   106,     0,   116,   132,   133,   134,
-     136,   194,   195,     0,    76,    86,     0,    91,    96,     0,
-     102,     0,   109,   114,   135,     0,   191,   193,   107,   101,
-       0,     0,   139,    71,     0,    74,    86,     0,    87,    88,
-      89,    77,     0,    86,     0,    72,    97,   103,   110,     0,
-       1,   192,     0,   137,     0,     0,   196,    78,    83,    85,
-      90,     0,    92,    79,     0,     0,     2,     5,     4,     6,
-      27,     0,     0,     0,    34,    33,    32,     3,     8,    28,
-      10,    15,    16,     0,     0,    21,     0,    35,     0,    38,
-      41,    42,    47,    50,    51,    52,    53,    55,    57,    59,
-      70,     0,    25,    73,     0,     0,     0,   141,     0,     0,
-     176,     0,     0,     0,     0,     0,   158,   163,   167,    35,
-      61,    68,     0,   149,     0,   114,   152,   165,   151,   150,
-       0,   153,   154,   155,   156,    80,    82,    84,     0,     0,
-      98,     0,   148,   100,    29,    30,     0,    12,    13,     0,
-       0,    19,    18,     0,    20,    22,    24,    31,     0,     0,
+     135,   137,   195,   196,     0,    76,    86,     0,    91,    96,
+       0,   102,     0,   109,   114,   136,     0,   192,   194,   107,
+     101,     0,     0,   140,    71,     0,    74,    86,     0,    87,
+      88,    89,    77,     0,    86,     0,    72,    97,   103,   110,
+       0,     1,   193,     0,   138,     0,     0,   197,    78,    83,
+      85,    90,     0,    92,    79,     0,     0,     2,     5,     4,
+       6,    27,     0,     0,     0,    34,    33,    32,     3,     8,
+      28,    10,    15,    16,     0,     0,    21,     0,    35,     0,
+      38,    41,    42,    47,    50,    51,    52,    53,    55,    57,
+      59,    70,     0,    25,    73,     0,     0,     0,   142,     0,
+       0,   177,     0,     0,     0,     0,     0,   159,   164,   168,
+      35,    61,    68,     0,   150,     0,   114,   153,   166,   152,
+     151,     0,   154,   155,   156,   157,    80,    82,    84,     0,
+       0,    98,     0,   149,   100,    29,    30,     0,    12,    13,
+       0,     0,    19,    18,     0,    20,    22,    24,    31,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   115,     0,   146,     0,   144,   140,   142,   187,
-     186,     0,   178,     0,   190,   188,     0,   174,   157,     0,
-      64,    65,    66,    67,    63,     0,     0,   168,   164,   166,
-       0,    93,     0,    95,    99,     7,     0,    14,    26,    11,
-      17,    23,    36,    37,    40,    39,    45,    46,    43,    44,
-      48,    49,    54,    56,    58,     0,   138,     0,     0,   143,
-       0,     0,     0,   189,     0,   159,    62,    69,     0,    94,
-       9,     0,     0,   145,     0,   181,   180,   183,     0,   172,
-       0,     0,     0,    81,    60,   147,     0,   182,     0,     0,
-     171,   169,     0,     0,   160,     0,   184,     0,     0,     0,
-     162,   175,   161,     0,   185,   179,   170,   173,   177
+       0,     0,     0,   115,     0,   147,     0,   145,   141,   143,
+     188,   187,     0,   179,     0,   191,   189,     0,   175,   158,
+       0,    64,    65,    66,    67,    63,     0,     0,   169,   165,
+     167,     0,    93,     0,    95,    99,     7,     0,    14,    26,
+      11,    17,    23,    36,    37,    40,    39,    45,    46,    43,
+      44,    48,    49,    54,    56,    58,     0,   139,     0,     0,
+     144,     0,     0,     0,   190,     0,   160,    62,    69,     0,
+      94,     9,     0,     0,   146,     0,   182,   181,   184,     0,
+     173,     0,     0,     0,    81,    60,   148,     0,   183,     0,
+       0,   172,   170,     0,     0,   161,     0,   185,     0,     0,
+       0,   163,   176,   162,     0,   186,   180,   171,   174,   178
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    97,    98,    99,   226,   100,   101,   102,   103,   104,
-     105,   106,   139,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   140,   141,   215,   142,   121,
-     143,   144,    33,    34,    35,    78,    61,    62,    79,    36,
-      37,    38,    39,    40,    41,    42,   122,    44,   124,    74,
-     126,   127,   195,   196,   163,   146,   147,   148,   149,   209,
-     272,   291,   292,   150,   151,   152,   281,   271,   153,   254,
-     201,   251,   267,   278,   279,   154,    45,    46,    47,    54
+      -1,    98,    99,   100,   227,   101,   102,   103,   104,   105,
+     106,   107,   140,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   141,   142,   216,   143,   122,
+     144,   145,    34,    35,    36,    79,    62,    63,    80,    37,
+      38,    39,    40,    41,    42,    43,   123,    45,   125,    75,
+     127,   128,   196,   197,   164,   147,   148,   149,   150,   210,
+     273,   292,   293,   151,   152,   153,   282,   272,   154,   255,
+     202,   252,   268,   279,   280,   155,    46,    47,    48,    55
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -242
+#define YYPACT_NINF -251
 static const yytype_int16 yypact[] =
 {
-    1179,    -6,  -242,  -242,  -242,   151,  -242,  -242,  -242,  -242,
-    -242,  -242,  -242,  -242,  -242,  -242,  -242,  -242,  -242,  -242,
-    -242,  -242,  -242,  -242,  -242,   -39,  -242,  -242,  -242,  -242,
-    -242,  -242,   -69,   -37,   -32,    21,   -61,  -242,    26,  1221,
-    -242,  1282,  -242,   -58,  -242,   207,  -242,  -242,  -242,  -242,
-    1282,    22,  -242,  -242,    33,  -242,    70,    88,  -242,  -242,
-    -242,  -242,  1221,   125,    42,  -242,    -8,  -242,  -242,   961,
-    -242,  -242,    72,  -242,  1221,   286,  -242,  -242,  -242,  -242,
-     117,  1221,   -57,  -242,   766,   961,    94,  -242,  -242,  -242,
-    -242,   961,   961,   961,  -242,  -242,  -242,  -242,  -242,    14,
-    -242,  -242,  -242,    99,   -35,  1026,   101,  -242,   961,   -27,
-      46,  -242,   -21,    56,  -242,  -242,  -242,   115,   119,   -45,
-    -242,   103,  -242,  -242,  1221,   136,  1094,  -242,   102,   104,
-    -242,   111,   116,   105,   831,   118,   112,  -242,  -242,    39,
-    -242,  -242,    17,  -242,   -69,    93,  -242,  -242,  -242,  -242,
-     369,  -242,  -242,  -242,  -242,   122,  -242,  -242,   896,   961,
-    -242,   123,  -242,  -242,  -242,  -242,    10,  -242,  -242,   961,
-    1246,  -242,  -242,   961,   120,  -242,  -242,  -242,   961,   961,
-     961,   961,   961,   961,   961,   961,   961,   961,   961,   961,
-     961,   961,  -242,  1136,   126,    49,  -242,  -242,  -242,  -242,
-    -242,   452,  -242,   961,  -242,  -242,    71,  -242,  -242,   452,
-    -242,  -242,  -242,  -242,  -242,   961,   961,  -242,  -242,  -242,
-     961,  -242,   124,  -242,  -242,  -242,   128,   114,  -242,   129,
-    -242,  -242,  -242,  -242,   -27,   -27,  -242,  -242,  -242,  -242,
-     -21,   -21,  -242,   115,   119,    89,  -242,   961,   136,  -242,
-     150,   618,    11,  -242,   701,   452,  -242,  -242,   130,  -242,
-    -242,   961,   131,  -242,   137,  -242,  -242,   701,   452,   114,
-     152,   148,   145,  -242,  -242,  -242,   961,  -242,   141,   153,
-     208,  -242,   143,   535,  -242,    38,   961,   535,   452,   961,
-    -242,  -242,  -242,   146,   114,  -242,  -242,  -242,  -242
+    1250,   -17,  -251,  -251,  -251,   113,  -251,  -251,  -251,  -251,
+    -251,  -251,  -251,  -251,  -251,  -251,  -251,  -251,  -251,  -251,
+    -251,  -251,  -251,  -251,  -251,   -39,  -251,  -251,  -251,  -251,
+    -251,  -251,  -251,   -65,   -34,   -10,    21,   -32,  -251,    28,
+     207,  -251,  1324,  -251,    56,  -251,  1206,  -251,  -251,  -251,
+    -251,  1324,    74,  -251,  -251,    86,  -251,    71,    95,  -251,
+    -251,  -251,  -251,   207,   119,   120,  -251,   -56,  -251,  -251,
+     971,  -251,  -251,    84,  -251,   207,   287,  -251,  -251,  -251,
+    -251,   124,   207,   -59,  -251,   773,   971,    98,  -251,  -251,
+    -251,  -251,   971,   971,   971,  -251,  -251,  -251,  -251,  -251,
+      35,  -251,  -251,  -251,   100,    -9,  1037,   102,  -251,   971,
+     -27,    -1,  -251,   -24,    99,  -251,  -251,  -251,   112,   111,
+     -51,  -251,   103,  -251,  -251,   207,   135,  1106,  -251,   101,
+     104,  -251,   109,   115,   106,   839,   117,   107,  -251,  -251,
+      39,  -251,  -251,   -11,  -251,   -65,    54,  -251,  -251,  -251,
+    -251,   371,  -251,  -251,  -251,  -251,   116,  -251,  -251,   905,
+     971,  -251,   118,  -251,  -251,  -251,  -251,     8,  -251,  -251,
+     971,  1287,  -251,  -251,   971,   125,  -251,  -251,  -251,   971,
+     971,   971,   971,   971,   971,   971,   971,   971,   971,   971,
+     971,   971,   971,  -251,  1149,   122,    17,  -251,  -251,  -251,
+    -251,  -251,   455,  -251,   971,  -251,  -251,    32,  -251,  -251,
+     455,  -251,  -251,  -251,  -251,  -251,   971,   971,  -251,  -251,
+    -251,   971,  -251,   123,  -251,  -251,  -251,   126,   121,  -251,
+     127,  -251,  -251,  -251,  -251,   -27,   -27,  -251,  -251,  -251,
+    -251,   -24,   -24,  -251,   112,   111,    79,  -251,   971,   135,
+    -251,   151,   623,    11,  -251,   707,   455,  -251,  -251,   128,
+    -251,  -251,   971,   130,  -251,   134,  -251,  -251,   707,   455,
+     121,   147,   136,   131,  -251,  -251,  -251,   971,  -251,   132,
+     142,   200,  -251,   139,   539,  -251,    19,   971,   539,   455,
+     971,  -251,  -251,  -251,   140,   121,  -251,  -251,  -251,  -251
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -242,  -242,  -242,  -242,  -242,  -242,  -242,    77,  -242,  -242,
-    -242,  -242,   -44,  -242,   -63,  -242,   -62,   -17,  -242,  -242,
-    -242,    52,    37,    51,  -242,   -66,   -83,  -242,   -92,   -73,
-       7,     8,  -242,  -242,  -242,   161,   197,   193,   176,  -242,
-    -242,  -241,   -29,   -30,   253,   -22,     0,  -242,  -242,  -242,
-     135,  -122,  -242,    12,  -138,    13,  -140,  -203,  -242,  -242,
-    -242,   -26,   209,    53,    15,  -242,  -242,    -2,  -242,  -242,
-    -242,  -242,  -242,  -242,  -242,  -242,  -242,   224,  -242,  -242
+    -251,  -251,  -251,  -251,  -251,  -251,  -251,    50,  -251,  -251,
+    -251,  -251,   -44,  -251,   -21,  -251,   -62,   -20,  -251,  -251,
+    -251,    34,    36,    33,  -251,   -66,   -83,  -251,   -92,   -73,
+       7,    13,  -251,  -251,  -251,   143,   170,   176,   159,  -251,
+    -251,  -247,   -22,   -30,   237,   -15,     0,  -251,  -251,  -251,
+     129,  -122,  -251,    -6,  -159,    -8,  -140,  -250,  -251,  -251,
+    -251,   -41,   202,    48,     9,  -251,  -251,    -5,  -251,  -251,
+    -251,  -251,  -251,  -251,  -251,  -251,  -251,   213,  -251,  -251
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -982,276 +896,286 @@
 #define YYTABLE_NINF -117
 static const yytype_int16 yytable[] =
 {
-      43,   166,   162,   120,   198,    51,    63,    31,    32,    67,
-     219,   161,    53,   270,   190,    69,   158,    64,   120,    68,
-      65,   223,   175,   159,    57,   107,   270,    63,    72,     6,
-       7,    48,    80,   182,   183,    55,    52,   172,    49,    43,
-     107,    43,   206,   173,   125,    43,    56,   164,   165,   191,
-      43,    80,    31,    32,    58,    59,    60,    23,    24,   178,
-     179,   250,    43,    83,   177,    84,   167,   168,   184,   185,
-      66,   198,    85,    57,    43,   145,   162,   227,     6,     7,
-     290,    43,   225,   268,   290,   222,    82,   169,   216,   216,
-     231,   170,   120,   -75,   125,   216,   125,    73,   217,   245,
-     210,   211,   212,    58,    59,    60,    23,    24,    75,   213,
-     293,   252,   186,   187,   107,   219,   216,   234,   235,   214,
-     236,   237,   238,   239,    43,    48,    43,   248,   280,   180,
-     249,   181,   256,   257,   232,   233,   107,   107,   107,   107,
-     107,   107,   107,   107,   107,   107,   107,   258,   296,   216,
-     145,   297,   253,   123,   120,     2,     3,     4,    58,    59,
-      60,   155,   269,   125,   -25,   -26,    69,   216,   261,   240,
-     241,   171,   176,   188,   262,   269,   107,   192,   274,   189,
-     194,   120,   202,   199,   285,   200,   204,   203,   208,   207,
-     264,  -116,   216,    43,   294,   220,   282,   224,   259,   247,
-     -27,   145,   260,   107,   273,   275,   162,    70,   276,   145,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-     283,   284,   286,   289,   288,   287,   243,   298,    11,    12,
+      44,   224,   167,   163,   121,   199,    52,    32,   271,   191,
+      68,   220,   162,    33,    64,   159,    84,    54,    85,   121,
+      49,   271,   160,   176,    58,    86,   108,    69,    50,     6,
+       7,   183,   184,    81,   291,    64,    73,    53,   291,    56,
+      44,   108,    44,   207,   192,   126,    44,    65,   165,   166,
+      66,    44,    81,    32,    59,    60,    61,    23,    24,    33,
+     179,   180,   251,    44,   173,   178,   185,   186,   217,    57,
+     174,   218,   199,    67,    58,    44,   146,   163,   228,     6,
+       7,   226,    44,   181,   269,   182,   223,   217,   168,   169,
+     217,   232,   294,   121,   -75,   126,   249,   126,   217,   250,
+     246,   211,   212,   213,    59,    60,    61,    23,    24,   170,
+     214,   217,   253,   171,   254,   108,   220,     2,     3,     4,
+     215,   237,   238,   239,   240,    44,   -25,    44,    70,   281,
+      70,   298,    49,   257,   258,   233,   234,   108,   108,   108,
+     108,   108,   108,   108,   108,   108,   108,   108,   259,   297,
+      74,   146,    59,    60,    61,   121,   187,   188,   217,   262,
+     235,   236,    76,   270,   126,    83,   124,   241,   242,   156,
+     -26,   189,   190,   172,   177,   263,   270,   108,   193,   275,
+     195,   203,   121,   200,   209,   286,   201,   204,   205,   208,
+     221,   265,   283,   225,    44,   295,   248,  -116,   260,   -27,
+     217,   261,   146,   274,   108,   276,   277,   163,   285,   284,
+     146,     2,     3,     4,   287,   288,   289,     8,     9,    10,
+     290,   231,   299,   243,   245,   157,   244,    78,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-     242,   244,   156,    23,    24,    25,    26,   230,    27,    28,
-      29,   145,    30,    77,   145,   145,    81,   157,    50,   193,
-     263,   295,   255,    76,   265,   277,   266,   145,   145,    71,
+      82,   158,    51,   264,   266,    25,    26,   296,    27,    28,
+      29,    30,   146,    31,   194,   146,   146,    77,   256,    72,
+       0,   267,     0,   278,     0,     0,     0,     0,   146,   146,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   145,     0,     0,     0,   145,   145,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,   128,
-     129,   130,     0,   131,   132,   133,   134,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
-       0,     0,    23,    24,    25,    26,   135,    27,    28,    29,
-      86,    30,    87,    88,    89,    90,     0,     0,    91,    92,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    93,     0,     0,
-       0,   136,   137,     0,     0,     0,     0,   138,    94,    95,
-       0,    96,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,   128,   129,   130,     0,   131,   132,   133,   134,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,     0,     0,     0,    23,    24,    25,    26,   135,
-      27,    28,    29,    86,    30,    87,    88,    89,    90,     0,
-       0,    91,    92,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      93,     0,     0,     0,   136,   218,     0,     0,     0,     0,
-     138,    94,    95,     0,    96,     1,     2,     3,     4,     5,
-       6,     7,     8,     9,    10,   128,   129,   130,     0,   131,
-     132,   133,   134,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,     0,     0,     0,    23,    24,
-      25,    26,   135,    27,    28,    29,    86,    30,    87,    88,
-      89,    90,     0,     0,    91,    92,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    93,     0,     0,     0,   136,     0,     0,
-       0,     0,     0,   138,    94,    95,     0,    96,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,   128,   129,
-     130,     0,   131,   132,   133,   134,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,     0,     0,
-       0,    23,    24,    25,    26,   135,    27,    28,    29,    86,
-      30,    87,    88,    89,    90,     0,     0,    91,    92,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    93,     0,     0,     0,
-      75,     0,     0,     0,     0,     0,   138,    94,    95,     0,
-      96,     1,     2,     3,     4,     5,     6,     7,     8,     9,
-      10,     0,     0,     0,     0,     0,     0,     0,     0,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,     0,     0,     0,    23,    24,    25,    26,     0,    27,
-      28,    29,    86,    30,    87,    88,    89,    90,     0,     0,
-      91,    92,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    93,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   138,
-      94,    95,     0,    96,    57,     2,     3,     4,     0,     6,
-       7,     8,     9,    10,     0,     0,     0,     0,     0,     0,
-       0,     0,    11,    12,    13,    14,    15,    16,    17,    18,
+       0,     0,     0,     0,   146,     0,     0,     0,   146,   146,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+     129,   130,   131,     0,   132,   133,   134,   135,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+       0,     0,     0,    23,    24,    25,    26,   136,    27,    28,
+      29,    30,    87,    31,    88,    89,    90,    91,     0,     0,
+      92,    93,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    94,
+       0,     0,     0,   137,   138,     0,     0,     0,     0,   139,
+      95,    96,     0,    97,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,   129,   130,   131,     0,   132,   133,
+     134,   135,    11,    12,    13,    14,    15,    16,    17,    18,
       19,    20,    21,    22,     0,     0,     0,    23,    24,    25,
-      26,     0,    27,    28,    29,    86,    30,    87,    88,    89,
-      90,     0,     0,    91,    92,     0,     0,     0,     0,     0,
+      26,   136,    27,    28,    29,    30,    87,    31,    88,    89,
+      90,    91,     0,     0,    92,    93,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    93,     0,     0,     0,     8,     9,    10,     0,
-       0,     0,     0,    94,    95,     0,    96,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
-       0,     0,     0,     0,    25,    26,     0,    27,    28,    29,
-      86,    30,    87,    88,    89,    90,     0,     0,    91,    92,
+       0,     0,     0,    94,     0,     0,     0,   137,   219,     0,
+       0,     0,     0,   139,    95,    96,     0,    97,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,   129,   130,
+     131,     0,   132,   133,   134,   135,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,     0,     0,
+       0,    23,    24,    25,    26,   136,    27,    28,    29,    30,
+      87,    31,    88,    89,    90,    91,     0,     0,    92,    93,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    93,     0,     0,
-     160,     8,     9,    10,     0,     0,     0,     0,    94,    95,
-       0,    96,    11,    12,    13,    14,    15,    16,    17,    18,
+       0,     0,     0,     0,     0,     0,     0,    94,     0,     0,
+       0,   137,     0,     0,     0,     0,     0,   139,    95,    96,
+       0,    97,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,   129,   130,   131,     0,   132,   133,   134,   135,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,     0,     0,     0,    23,    24,    25,    26,   136,
+      27,    28,    29,    30,    87,    31,    88,    89,    90,    91,
+       0,     0,    92,    93,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    94,     0,     0,     0,    76,     0,     0,     0,     0,
+       0,   139,    95,    96,     0,    97,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,     0,     0,     0,     0,
+       0,     0,     0,     0,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,     0,    27,    28,    29,    30,    87,    31,
+      88,    89,    90,    91,     0,     0,    92,    93,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    94,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   139,    95,    96,     0,    97,
+      58,     2,     3,     4,     0,     6,     7,     8,     9,    10,
+       0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+       0,     0,     0,    23,    24,    25,    26,     0,    27,    28,
+      29,    30,    87,    31,    88,    89,    90,    91,     0,     0,
+      92,    93,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    94,
+       0,     0,     0,     8,     9,    10,     0,     0,     0,     0,
+      95,    96,     0,    97,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,     0,     0,     0,     0,
+       0,    25,    26,     0,    27,    28,    29,    30,    87,    31,
+      88,    89,    90,    91,     0,     0,    92,    93,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    94,     0,     0,   161,     8,
+       9,    10,     0,     0,     0,     0,    95,    96,     0,    97,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,     0,     0,     0,     0,     0,    25,    26,     0,
+      27,    28,    29,    30,    87,    31,    88,    89,    90,    91,
+       0,     0,    92,    93,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    94,     0,     0,     0,     8,     9,    10,     0,     0,
+       0,   206,    95,    96,     0,    97,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,     0,     0,
+       0,     0,     0,    25,    26,     0,    27,    28,    29,    30,
+      87,    31,    88,    89,    90,    91,     0,     0,    92,    93,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    94,     0,     0,
+     222,     8,     9,    10,     0,     0,     0,     0,    95,    96,
+       0,    97,    11,    12,    13,    14,    15,    16,    17,    18,
       19,    20,    21,    22,     0,     0,     0,     0,     0,    25,
-      26,     0,    27,    28,    29,    86,    30,    87,    88,    89,
-      90,     0,     0,    91,    92,     0,     0,     0,     0,     0,
+      26,     0,    27,    28,    29,    30,    87,    31,    88,    89,
+      90,    91,     0,     0,    92,    93,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    93,     0,     0,     0,     8,     9,    10,     0,
-       0,     0,   205,    94,    95,     0,    96,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
-       0,     0,     0,     0,    25,    26,     0,    27,    28,    29,
-      86,    30,    87,    88,    89,    90,     0,     0,    91,    92,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    93,     0,     0,
-     221,     8,     9,    10,     0,     0,     0,     0,    94,    95,
-       0,    96,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,     0,     0,     0,     0,     0,    25,
-      26,     0,    27,    28,    29,    86,    30,    87,    88,    89,
-      90,     0,     0,    91,    92,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    93,     0,     0,     0,     8,     9,    10,     0,
-       0,     0,     0,    94,    95,     0,    96,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
-       0,     0,     0,     0,    25,   174,     0,    27,    28,    29,
-      86,    30,    87,    88,    89,    90,     0,     0,    91,    92,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    93,     2,     3,
-       4,     0,     0,     0,     8,     9,    10,     0,    94,    95,
-       0,    96,     0,     0,     0,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,     0,     0,     0,
-       0,     0,    25,    26,     0,    27,    28,    29,     0,    30,
+       0,     0,     0,    94,     0,     0,     0,     8,     9,    10,
+       0,     0,     0,     0,    95,    96,     0,    97,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+       0,     0,     0,     0,     0,    25,   175,     0,    27,    28,
+      29,    30,    87,    31,    88,    89,    90,    91,     0,     0,
+      92,    93,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    94,
        2,     3,     4,     0,     0,     0,     8,     9,    10,     0,
-       0,     0,     0,     0,     0,     0,     0,    11,    12,    13,
+      95,    96,     0,    97,     0,     0,     0,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
-     197,     0,     0,     0,    25,    26,     0,    27,    28,    29,
-       0,    30,     1,     2,     3,     4,     5,     6,     7,     8,
+       0,     0,     0,     0,    25,    26,     0,    27,    28,    29,
+      30,     0,    31,     2,     3,     4,     0,     0,     0,     8,
        9,    10,     0,     0,     0,     0,     0,     0,     0,     0,
       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,   246,     0,     0,    23,    24,    25,    26,     0,
-      27,    28,    29,     0,    30,     2,     3,     4,     0,     0,
-       0,     8,     9,    10,     0,     0,     0,     0,     0,     0,
-       0,     0,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,     0,     0,     8,     9,    10,    25,
-      26,     0,    27,    28,    29,     0,    30,    11,    12,    13,
+      21,    22,     0,   198,     0,     0,     0,    25,    26,     0,
+      27,    28,    29,    30,     0,    31,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    71,     0,     0,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,     0,
+       0,     0,     0,     0,     0,     0,   247,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
-       0,     0,     0,     0,    25,    26,     0,    27,    28,    29,
-     228,    30,     8,     9,    10,   229,     0,     0,     0,     0,
-       0,     0,     0,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,     0,     0,     0,     0,     0,
-      25,    26,     0,    27,    28,    29,     0,    30
+       0,     0,    23,    24,    25,    26,     0,    27,    28,    29,
+      30,     0,    31,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,     0,     0,     0,     0,     0,     0,     0,
+       0,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,     0,     0,     0,    23,    24,    25,    26,
+       0,    27,    28,    29,    30,     0,    31,     8,     9,    10,
+       0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+       0,     0,     0,     0,     0,    25,    26,     0,    27,    28,
+      29,    30,   229,    31,     8,     9,    10,   230,     0,     0,
+       0,     0,     0,     0,     0,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,     0,     0,     0,
+       0,     0,    25,    26,     0,    27,    28,    29,    30,     0,
+      31
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    93,    85,    69,   126,    44,    35,     0,     0,    39,
-     150,    84,    81,   254,    59,    73,    73,    78,    84,    41,
-      81,   159,   105,    80,     3,    69,   267,    56,    50,     8,
-       9,    37,    62,    54,    55,    72,    75,    72,    44,    39,
-      84,    41,   134,    78,    74,    45,    78,    91,    92,    94,
-      50,    81,    45,    45,    33,    34,    35,    36,    37,    86,
-      87,   201,    62,    71,   108,    73,    52,    53,    89,    90,
-      44,   193,    80,     3,    74,    75,   159,   169,     8,     9,
-     283,    81,    72,    72,   287,   158,    44,    73,    78,    78,
-     173,    77,   158,    72,   124,    78,   126,    75,    81,   191,
-      61,    62,    63,    33,    34,    35,    36,    37,    75,    70,
-      72,   203,    56,    57,   158,   255,    78,   180,   181,    80,
-     182,   183,   184,   185,   124,    37,   126,    78,   268,    83,
-      81,    85,   215,   216,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   220,   288,    78,
-     150,   289,    81,    81,   220,     4,     5,     6,    33,    34,
-      35,    44,   254,   193,    71,    71,    73,    78,    79,   186,
-     187,    72,    71,    58,   247,   267,   220,    74,   261,    60,
-      44,   247,    71,    81,   276,    81,    81,    71,    76,    71,
-      40,    71,    78,   193,   286,    73,    44,    74,    74,    73,
-      71,   201,    74,   247,    74,    74,   289,     0,    71,   209,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      72,    76,    81,    80,    16,    72,   189,    81,    21,    22,
+       0,   160,    94,    86,    70,   127,    45,     0,   255,    60,
+      40,   151,    85,     0,    36,    74,    72,    82,    74,    85,
+      37,   268,    81,   106,     3,    81,    70,    42,    45,     8,
+       9,    55,    56,    63,   284,    57,    51,    76,   288,    73,
+      40,    85,    42,   135,    95,    75,    46,    79,    92,    93,
+      82,    51,    82,    46,    33,    34,    35,    36,    37,    46,
+      87,    88,   202,    63,    73,   109,    90,    91,    79,    79,
+      79,    82,   194,    45,     3,    75,    76,   160,   170,     8,
+       9,    73,    82,    84,    73,    86,   159,    79,    53,    54,
+      79,   174,    73,   159,    73,   125,    79,   127,    79,    82,
+     192,    62,    63,    64,    33,    34,    35,    36,    37,    74,
+      71,    79,   204,    78,    82,   159,   256,     4,     5,     6,
+      81,   183,   184,   185,   186,   125,    72,   127,    74,   269,
+      74,   290,    37,   216,   217,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   221,   289,
+      76,   151,    33,    34,    35,   221,    57,    58,    79,    80,
+     181,   182,    76,   255,   194,    45,    82,   187,   188,    45,
+      72,    59,    61,    73,    72,   248,   268,   221,    75,   262,
+      45,    72,   248,    82,    77,   277,    82,    72,    82,    72,
+      74,    40,    45,    75,   194,   287,    74,    72,    75,    72,
+      79,    75,   202,    75,   248,    75,    72,   290,    77,    73,
+     210,     4,     5,     6,    82,    73,    16,    10,    11,    12,
+      81,   171,    82,   189,   191,    82,   190,    57,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-     188,   190,    81,    36,    37,    38,    39,   170,    41,    42,
-      43,   251,    45,    56,   254,   255,    63,    81,     5,   124,
-     248,   287,   209,    54,   251,   267,   251,   267,   268,    45,
+      64,    82,     5,   249,   252,    38,    39,   288,    41,    42,
+      43,    44,   252,    46,   125,   255,   256,    55,   210,    46,
+      -1,   252,    -1,   268,    -1,    -1,    -1,    -1,   268,   269,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   283,    -1,    -1,    -1,   287,   288,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
-      -1,    -1,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    -1,    -1,    52,    53,
+      -1,    -1,    -1,    -1,   284,    -1,    -1,    -1,   288,   289,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    -1,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      -1,    -1,    -1,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    -1,    -1,
+      53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+      -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    82,
+      83,    84,    -1,    86,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    -1,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    -1,    -1,    -1,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    -1,    -1,    53,    54,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
-      -1,    75,    76,    -1,    -1,    -1,    -1,    81,    82,    83,
-      -1,    85,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    -1,    -1,    -1,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    -1,
-      -1,    52,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      71,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,
-      81,    82,    83,    -1,    85,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    -1,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    -1,    -1,    -1,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,    -1,
-      -1,    -1,    -1,    81,    82,    83,    -1,    85,     3,     4,
+      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    77,    -1,
+      -1,    -1,    -1,    82,    83,    84,    -1,    86,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
       -1,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    -1,    -1,    52,    53,    -1,
+      45,    46,    47,    48,    49,    50,    -1,    -1,    53,    54,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
-      75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
-      85,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    -1,    -1,    -1,    36,    37,    38,    39,    -1,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    -1,    -1,
-      52,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,
-      82,    83,    -1,    85,     3,     4,     5,     6,    -1,     8,
-       9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    -1,    -1,    -1,    36,    37,    38,
-      39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
+      -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,
+      -1,    86,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    -1,    -1,    -1,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      -1,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    71,    -1,    -1,    -1,    10,    11,    12,    -1,
-      -1,    -1,    -1,    82,    83,    -1,    85,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
-      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    -1,    -1,    52,    53,
+      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
+      -1,    82,    83,    84,    -1,    86,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    36,
+      37,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    -1,    -1,    53,    54,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
-      74,    10,    11,    12,    -1,    -1,    -1,    -1,    82,    83,
-      -1,    85,    21,    22,    23,    24,    25,    26,    27,    28,
+      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    -1,    86,
+       3,     4,     5,     6,    -1,     8,     9,    10,    11,    12,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      -1,    -1,    -1,    36,    37,    38,    39,    -1,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    -1,    -1,
+      53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+      -1,    -1,    -1,    10,    11,    12,    -1,    -1,    -1,    -1,
+      83,    84,    -1,    86,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    -1,
+      -1,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    -1,    -1,    53,    54,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    75,    10,
+      11,    12,    -1,    -1,    -1,    -1,    83,    84,    -1,    86,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      -1,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    72,    -1,    -1,    -1,    10,    11,    12,    -1,    -1,
+      -1,    82,    83,    84,    -1,    86,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
+      -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    -1,    -1,    53,    54,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
+      75,    10,    11,    12,    -1,    -1,    -1,    -1,    83,    84,
+      -1,    86,    21,    22,    23,    24,    25,    26,    27,    28,
       29,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,
       39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,    -1,
+      49,    50,    -1,    -1,    53,    54,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    71,    -1,    -1,    -1,    10,    11,    12,    -1,
-      -1,    -1,    81,    82,    83,    -1,    85,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
-      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    -1,    -1,    52,    53,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
-      74,    10,    11,    12,    -1,    -1,    -1,    -1,    82,    83,
-      -1,    85,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,
-      39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    71,    -1,    -1,    -1,    10,    11,    12,    -1,
-      -1,    -1,    -1,    82,    83,    -1,    85,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
-      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    -1,    -1,    52,    53,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,     4,     5,
-       6,    -1,    -1,    -1,    10,    11,    12,    -1,    82,    83,
-      -1,    85,    -1,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
-      -1,    -1,    38,    39,    -1,    41,    42,    43,    -1,    45,
+      -1,    -1,    -1,    72,    -1,    -1,    -1,    10,    11,    12,
+      -1,    -1,    -1,    -1,    83,    84,    -1,    86,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      -1,    -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    -1,    -1,
+      53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,
        4,     5,     6,    -1,    -1,    -1,    10,    11,    12,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,    23,
+      83,    84,    -1,    86,    -1,    -1,    -1,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
-      76,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
-      -1,    45,     3,     4,     5,     6,     7,     8,     9,    10,
+      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
+      44,    -1,    46,     4,     5,     6,    -1,    -1,    -1,    10,
       11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    76,    -1,    -1,    36,    37,    38,    39,    -1,
-      41,    42,    43,    -1,    45,     4,     5,     6,    -1,    -1,
-      -1,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    -1,    -1,    10,    11,    12,    38,
-      39,    -1,    41,    42,    43,    -1,    45,    21,    22,    23,
+      31,    32,    -1,    77,    -1,    -1,    -1,    38,    39,    -1,
+      41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    77,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
-      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
-      44,    45,    10,    11,    12,    49,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
-      38,    39,    -1,    41,    42,    43,    -1,    45
+      -1,    -1,    36,    37,    38,    39,    -1,    41,    42,    43,
+      44,    -1,    46,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    -1,    -1,    -1,    36,    37,    38,    39,
+      -1,    41,    42,    43,    44,    -1,    46,    10,    11,    12,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      -1,    -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,
+      43,    44,    45,    46,    10,    11,    12,    50,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
+      -1,    -1,    38,    39,    -1,    41,    42,    43,    44,    -1,
+      46
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1261,33 +1185,33 @@
        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    36,    37,    38,    39,    41,    42,    43,
-      45,   125,   126,   127,   128,   129,   134,   135,   136,   137,
-     138,   139,   140,   141,   142,   171,   172,   173,    37,    44,
-     139,    44,    75,    81,   174,    72,    78,     3,    33,    34,
-      35,   131,   132,   137,    78,    81,    44,   138,   140,    73,
-       0,   172,   140,    75,   144,    75,   157,   131,   130,   133,
-     138,   132,    44,    71,    73,    80,    44,    46,    47,    48,
-      49,    52,    53,    71,    82,    83,    85,    96,    97,    98,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+      44,    46,   126,   127,   128,   129,   130,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   172,   173,   174,    37,
+      45,   140,    45,    76,    82,   175,    73,    79,     3,    33,
+      34,    35,   132,   133,   138,    79,    82,    45,   139,   141,
+      74,     0,   173,   141,    76,   145,    76,   158,   132,   131,
+     134,   139,   133,    45,    72,    74,    81,    45,    47,    48,
+      49,    50,    53,    54,    72,    83,    84,    86,    97,    98,
+      99,   101,   102,   103,   104,   105,   106,   107,   108,   109,
      110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   124,   141,    81,   143,   138,   145,   146,    13,    14,
-      15,    17,    18,    19,    20,    40,    75,    76,    81,   107,
-     120,   121,   123,   125,   126,   141,   150,   151,   152,   153,
-     158,   159,   160,   163,   170,    44,   130,   133,    73,    80,
-      74,   124,   121,   149,   107,   107,   123,    52,    53,    73,
-      77,    72,    72,    78,    39,   121,    71,   107,    86,    87,
-      83,    85,    54,    55,    89,    90,    56,    57,    58,    60,
-      59,    94,    74,   145,    44,   147,   148,    76,   146,    81,
-      81,   165,    71,    71,    81,    81,   123,    71,    76,   154,
-      61,    62,    63,    70,    80,   122,    78,    81,    76,   151,
-      73,    74,   124,   149,    74,    72,    99,   123,    44,    49,
-     102,   121,   107,   107,   109,   109,   111,   111,   111,   111,
-     112,   112,   116,   117,   118,   123,    76,    73,    78,    81,
-     151,   166,   123,    81,   164,   158,   121,   121,   124,    74,
-      74,    79,   124,   148,    40,   150,   159,   167,    72,   123,
-     136,   162,   155,    74,   121,    74,    71,   162,   168,   169,
-     151,   161,    44,    72,    76,   123,    81,    72,    16,    80,
-     152,   156,   157,    72,   123,   156,   151,   149,    81
+     120,   121,   125,   142,    82,   144,   139,   146,   147,    13,
+      14,    15,    17,    18,    19,    20,    40,    76,    77,    82,
+     108,   121,   122,   124,   126,   127,   142,   151,   152,   153,
+     154,   159,   160,   161,   164,   171,    45,   131,   134,    74,
+      81,    75,   125,   122,   150,   108,   108,   124,    53,    54,
+      74,    78,    73,    73,    79,    39,   122,    72,   108,    87,
+      88,    84,    86,    55,    56,    90,    91,    57,    58,    59,
+      61,    60,    95,    75,   146,    45,   148,   149,    77,   147,
+      82,    82,   166,    72,    72,    82,    82,   124,    72,    77,
+     155,    62,    63,    64,    71,    81,   123,    79,    82,    77,
+     152,    74,    75,   125,   150,    75,    73,   100,   124,    45,
+      50,   103,   122,   108,   108,   110,   110,   112,   112,   112,
+     112,   113,   113,   117,   118,   119,   124,    77,    74,    79,
+      82,   152,   167,   124,    82,   165,   159,   122,   122,   125,
+      75,    75,    80,   125,   149,    40,   151,   160,   168,    73,
+     124,   137,   163,   156,    75,   122,    75,    72,   163,   169,
+     170,   152,   162,    45,    73,    77,   124,    82,    73,    16,
+      81,   153,   157,   158,    73,   124,   157,   152,   150,    82
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -1361,7 +1285,7 @@
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+# if YYLTYPE_IS_TRIVIAL
 #  define YY_LOCATION_PRINT(File, Loc)			\
      fprintf (File, "%d.%d-%d.%d",			\
 	      (Loc).first_line, (Loc).first_column,	\
@@ -1475,17 +1399,20 @@
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
 #else
 static void
-yy_stack_print (bottom, top)
-    yytype_int16 *bottom;
-    yytype_int16 *top;
+yy_stack_print (yybottom, yytop)
+    yytype_int16 *yybottom;
+    yytype_int16 *yytop;
 #endif
 {
   YYFPRINTF (stderr, "Stack now");
-  for (; bottom <= top; ++bottom)
-    YYFPRINTF (stderr, " %d", *bottom);
+  for (; yybottom <= yytop; yybottom++)
+    {
+      int yybot = *yybottom;
+      YYFPRINTF (stderr, " %d", yybot);
+    }
   YYFPRINTF (stderr, "\n");
 }
 
@@ -1520,11 +1447,11 @@
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
-      fprintf (stderr, "   $%d = ", yyi + 1);
+      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
 		       &(yyvsp[(yyi + 1) - (yynrhs)])
 		       		       , context);
-      fprintf (stderr, "\n");
+      YYFPRINTF (stderr, "\n");
     }
 }
 
@@ -1806,10 +1733,8 @@
 	break;
     }
 }
-
 
 /* Prevent warnings from -Wmissing-prototypes.  */
-
 #ifdef YYPARSE_PARAM
 #if defined __STDC__ || defined __cplusplus
 int yyparse (void *YYPARSE_PARAM);
@@ -1828,10 +1753,9 @@
 
 
 
-
-/*----------.
-| yyparse.  |
-`----------*/
+/*-------------------------.
+| yyparse or yypush_parse.  |
+`-------------------------*/
 
 #ifdef YYPARSE_PARAM
 #if (defined __STDC__ || defined __C99__FUNC__ \
@@ -1855,22 +1779,46 @@
 #endif
 #endif
 {
-  /* The look-ahead symbol.  */
+/* The lookahead symbol.  */
 int yychar;
 
-/* The semantic value of the look-ahead symbol.  */
+/* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
 
-/* Number of syntax errors so far.  */
-int yynerrs;
+    /* Number of syntax errors so far.  */
+    int yynerrs;
 
-  int yystate;
+    int yystate;
+    /* Number of tokens to shift before error messages enabled.  */
+    int yyerrstatus;
+
+    /* The stacks and their tools:
+       `yyss': related to states.
+       `yyvs': related to semantic values.
+
+       Refer to the stacks thru separate pointers, to allow yyoverflow
+       to reallocate them elsewhere.  */
+
+    /* The state stack.  */
+    yytype_int16 yyssa[YYINITDEPTH];
+    yytype_int16 *yyss;
+    yytype_int16 *yyssp;
+
+    /* The semantic value stack.  */
+    YYSTYPE yyvsa[YYINITDEPTH];
+    YYSTYPE *yyvs;
+    YYSTYPE *yyvsp;
+
+    YYSIZE_T yystacksize;
+
   int yyn;
   int yyresult;
-  /* Number of tokens to shift before error messages enabled.  */
-  int yyerrstatus;
-  /* Look-ahead token as an internal (translated) token number.  */
-  int yytoken = 0;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yytoken;
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
 #if YYERROR_VERBOSE
   /* Buffer for error messages, and its allocated size.  */
   char yymsgbuf[128];
@@ -1878,51 +1826,28 @@
   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
 #endif
 
-  /* Three stacks and their tools:
-     `yyss': related to states,
-     `yyvs': related to semantic values,
-     `yyls': related to locations.
-
-     Refer to the stacks thru separate pointers, to allow yyoverflow
-     to reallocate them elsewhere.  */
-
-  /* The state stack.  */
-  yytype_int16 yyssa[YYINITDEPTH];
-  yytype_int16 *yyss = yyssa;
-  yytype_int16 *yyssp;
-
-  /* The semantic value stack.  */
-  YYSTYPE yyvsa[YYINITDEPTH];
-  YYSTYPE *yyvs = yyvsa;
-  YYSTYPE *yyvsp;
-
-
-
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
-  YYSIZE_T yystacksize = YYINITDEPTH;
-
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
-
-
   /* The number of symbols on the RHS of the reduced rule.
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
+  yytoken = 0;
+  yyss = yyssa;
+  yyvs = yyvsa;
+  yystacksize = YYINITDEPTH;
+
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
   yynerrs = 0;
-  yychar = YYEMPTY;		/* Cause a token to be read.  */
+  yychar = YYEMPTY; /* Cause a token to be read.  */
 
   /* Initialize stack pointers.
      Waste one element of value and location stack
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
-
   yyssp = yyss;
   yyvsp = yyvs;
 
@@ -1952,7 +1877,6 @@
 	YYSTYPE *yyvs1 = yyvs;
 	yytype_int16 *yyss1 = yyss;
 
-
 	/* Each stack pointer address is followed by the size of the
 	   data in use in that stack, in bytes.  This used to be a
 	   conditional around just the two extra args, but that might
@@ -1960,7 +1884,6 @@
 	yyoverflow (YY_("memory exhausted"),
 		    &yyss1, yysize * sizeof (*yyssp),
 		    &yyvs1, yysize * sizeof (*yyvsp),
-
 		    &yystacksize);
 
 	yyss = yyss1;
@@ -1983,9 +1906,8 @@
 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
 	if (! yyptr)
 	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss);
-	YYSTACK_RELOCATE (yyvs);
-
+	YYSTACK_RELOCATE (yyss_alloc, yyss);
+	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
 	if (yyss1 != yyssa)
 	  YYSTACK_FREE (yyss1);
@@ -1996,7 +1918,6 @@
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
 		  (unsigned long int) yystacksize));
 
@@ -2006,6 +1927,9 @@
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
+  if (yystate == YYFINAL)
+    YYACCEPT;
+
   goto yybackup;
 
 /*-----------.
@@ -2014,16 +1938,16 @@
 yybackup:
 
   /* Do appropriate processing given the current state.  Read a
-     look-ahead token if we need one and don't already have one.  */
+     lookahead token if we need one and don't already have one.  */
 
-  /* First try to decide what to do without reference to look-ahead token.  */
+  /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a look-ahead token if don't already have one.  */
+  /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
@@ -2055,20 +1979,16 @@
       goto yyreduce;
     }
 
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
   /* Count tokens shifted since error; after three, turn off error
      status.  */
   if (yyerrstatus)
     yyerrstatus--;
 
-  /* Shift the look-ahead token.  */
+  /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 
-  /* Discard the shifted token unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
 
   yystate = yyn;
   *++yyvsp = yylval;
@@ -2140,14 +2060,14 @@
             (yyval.interm.intermTypedNode) = context->intermediate.addSymbol(variable->getUniqueId(),
                                                      variable->getName(),
                                                      variable->getType(), (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 3:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
-    ;}
+    }
     break;
 
   case 4:
@@ -2164,7 +2084,7 @@
         ConstantUnion *unionArray = new ConstantUnion[1];
         unionArray->setIConst((yyvsp[(1) - (1)].lex).i);
         (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 5:
@@ -2173,7 +2093,7 @@
         ConstantUnion *unionArray = new ConstantUnion[1];
         unionArray->setFConst((yyvsp[(1) - (1)].lex).f);
         (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtFloat, EbpUndefined, EvqConst), (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 6:
@@ -2182,21 +2102,21 @@
         ConstantUnion *unionArray = new ConstantUnion[1];
         unionArray->setBConst((yyvsp[(1) - (1)].lex).b);
         (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 7:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode);
-    ;}
+    }
     break;
 
   case 8:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
-    ;}
+    }
     break;
 
   case 9:
@@ -2273,14 +2193,14 @@
             (yyval.interm.intermTypedNode)->setType(TType((yyvsp[(1) - (4)].interm.intermTypedNode)->getBasicType(), (yyvsp[(1) - (4)].interm.intermTypedNode)->getPrecision(), EvqTemporary));
         else
             (yyval.interm.intermTypedNode)->setType((yyvsp[(1) - (4)].interm.intermTypedNode)->getType());
-    ;}
+    }
     break;
 
   case 10:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
-    ;}
+    }
     break;
 
   case 11:
@@ -2393,7 +2313,7 @@
             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
         }
         // don't delete $3.string, it's from the pool
-    ;}
+    }
     break;
 
   case 12:
@@ -2407,7 +2327,7 @@
             context->recover();
             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (2)].interm.intermTypedNode);
         }
-    ;}
+    }
     break;
 
   case 13:
@@ -2421,7 +2341,7 @@
             context->recover();
             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (2)].interm.intermTypedNode);
         }
-    ;}
+    }
     break;
 
   case 14:
@@ -2430,7 +2350,7 @@
         if (context->integerErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "[]"))
             context->recover();
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
-    ;}
+    }
     break;
 
   case 15:
@@ -2530,14 +2450,14 @@
             }
         }
         delete fnCall;
-    ;}
+    }
     break;
 
   case 16:
 
     {
         (yyval.interm) = (yyvsp[(1) - (1)].interm);
-    ;}
+    }
     break;
 
   case 17:
@@ -2546,7 +2466,7 @@
         context->error((yyvsp[(3) - (3)].interm).line, "methods are not supported", "", "");
         context->recover();
         (yyval.interm) = (yyvsp[(3) - (3)].interm);
-    ;}
+    }
     break;
 
   case 18:
@@ -2554,7 +2474,7 @@
     {
         (yyval.interm) = (yyvsp[(1) - (2)].interm);
         (yyval.interm).line = (yyvsp[(2) - (2)].lex).line;
-    ;}
+    }
     break;
 
   case 19:
@@ -2562,7 +2482,7 @@
     {
         (yyval.interm) = (yyvsp[(1) - (2)].interm);
         (yyval.interm).line = (yyvsp[(2) - (2)].lex).line;
-    ;}
+    }
     break;
 
   case 20:
@@ -2570,7 +2490,7 @@
     {
         (yyval.interm).function = (yyvsp[(1) - (2)].interm.function);
         (yyval.interm).intermNode = 0;
-    ;}
+    }
     break;
 
   case 21:
@@ -2578,7 +2498,7 @@
     {
         (yyval.interm).function = (yyvsp[(1) - (1)].interm.function);
         (yyval.interm).intermNode = 0;
-    ;}
+    }
     break;
 
   case 22:
@@ -2588,7 +2508,7 @@
         (yyvsp[(1) - (2)].interm.function)->addParameter(param);
         (yyval.interm).function = (yyvsp[(1) - (2)].interm.function);
         (yyval.interm).intermNode = (yyvsp[(2) - (2)].interm.intermTypedNode);
-    ;}
+    }
     break;
 
   case 23:
@@ -2598,14 +2518,14 @@
         (yyvsp[(1) - (3)].interm).function->addParameter(param);
         (yyval.interm).function = (yyvsp[(1) - (3)].interm).function;
         (yyval.interm).intermNode = context->intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line);
-    ;}
+    }
     break;
 
   case 24:
 
     {
         (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function);
-    ;}
+    }
     break;
 
   case 25:
@@ -2664,7 +2584,7 @@
         TType type((yyvsp[(1) - (1)].interm.type));
         TFunction *function = new TFunction(&tempString, type, op);
         (yyval.interm.function) = function;
-    ;}
+    }
     break;
 
   case 26:
@@ -2675,7 +2595,7 @@
         TType type(EbtVoid, EbpUndefined);
         TFunction *function = new TFunction((yyvsp[(1) - (1)].lex).string, type);
         (yyval.interm.function) = function;
-    ;}
+    }
     break;
 
   case 27:
@@ -2686,14 +2606,14 @@
         TType type(EbtVoid, EbpUndefined);
         TFunction *function = new TFunction((yyvsp[(1) - (1)].lex).string, type);
         (yyval.interm.function) = function;
-    ;}
+    }
     break;
 
   case 28:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
-    ;}
+    }
     break;
 
   case 29:
@@ -2707,7 +2627,7 @@
             context->recover();
             (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode);
         }
-    ;}
+    }
     break;
 
   case 30:
@@ -2721,7 +2641,7 @@
             context->recover();
             (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode);
         }
-    ;}
+    }
     break;
 
   case 31:
@@ -2742,27 +2662,27 @@
             }
         } else
             (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode);
-    ;}
+    }
     break;
 
   case 32:
 
-    { (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpNull; ;}
+    { (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpNull; }
     break;
 
   case 33:
 
-    { (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpNegative; ;}
+    { (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpNegative; }
     break;
 
   case 34:
 
-    { (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpLogicalNot; ;}
+    { (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpLogicalNot; }
     break;
 
   case 35:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 36:
@@ -2775,7 +2695,7 @@
             context->recover();
             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
         }
-    ;}
+    }
     break;
 
   case 37:
@@ -2788,12 +2708,12 @@
             context->recover();
             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
         }
-    ;}
+    }
     break;
 
   case 38:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 39:
@@ -2805,7 +2725,7 @@
             context->recover();
             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
         }
-    ;}
+    }
     break;
 
   case 40:
@@ -2817,17 +2737,17 @@
             context->recover();
             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
         }
-    ;}
+    }
     break;
 
   case 41:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 42:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 43:
@@ -2841,7 +2761,7 @@
             unionArray->setBConst(false);
             (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yyvsp[(2) - (3)].lex).line);
         }
-    ;}
+    }
     break;
 
   case 44:
@@ -2855,7 +2775,7 @@
             unionArray->setBConst(false);
             (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yyvsp[(2) - (3)].lex).line);
         }
-    ;}
+    }
     break;
 
   case 45:
@@ -2869,7 +2789,7 @@
             unionArray->setBConst(false);
             (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yyvsp[(2) - (3)].lex).line);
         }
-    ;}
+    }
     break;
 
   case 46:
@@ -2883,12 +2803,12 @@
             unionArray->setBConst(false);
             (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yyvsp[(2) - (3)].lex).line);
         }
-    ;}
+    }
     break;
 
   case 47:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 48:
@@ -2902,7 +2822,7 @@
             unionArray->setBConst(false);
             (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yyvsp[(2) - (3)].lex).line);
         }
-    ;}
+    }
     break;
 
   case 49:
@@ -2916,27 +2836,27 @@
             unionArray->setBConst(false);
             (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yyvsp[(2) - (3)].lex).line);
         }
-    ;}
+    }
     break;
 
   case 50:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 51:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 52:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 53:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 54:
@@ -2950,12 +2870,12 @@
             unionArray->setBConst(false);
             (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yyvsp[(2) - (3)].lex).line);
         }
-    ;}
+    }
     break;
 
   case 55:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 56:
@@ -2969,12 +2889,12 @@
             unionArray->setBConst(false);
             (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yyvsp[(2) - (3)].lex).line);
         }
-    ;}
+    }
     break;
 
   case 57:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 58:
@@ -2988,12 +2908,12 @@
             unionArray->setBConst(false);
             (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yyvsp[(2) - (3)].lex).line);
         }
-    ;}
+    }
     break;
 
   case 59:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 60:
@@ -3011,12 +2931,12 @@
             context->recover();
             (yyval.interm.intermTypedNode) = (yyvsp[(5) - (5)].interm.intermTypedNode);
         }
-    ;}
+    }
     break;
 
   case 61:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 62:
@@ -3030,39 +2950,39 @@
             context->recover();
             (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
         }
-    ;}
+    }
     break;
 
   case 63:
 
-    {                                    (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpAssign; ;}
+    {                                    (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpAssign; }
     break;
 
   case 64:
 
-    { FRAG_VERT_ONLY("*=", (yyvsp[(1) - (1)].lex).line);     (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpMulAssign; ;}
+    { FRAG_VERT_ONLY("*=", (yyvsp[(1) - (1)].lex).line);     (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpMulAssign; }
     break;
 
   case 65:
 
-    { FRAG_VERT_ONLY("/=", (yyvsp[(1) - (1)].lex).line);     (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpDivAssign; ;}
+    { FRAG_VERT_ONLY("/=", (yyvsp[(1) - (1)].lex).line);     (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpDivAssign; }
     break;
 
   case 66:
 
-    {                                    (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpAddAssign; ;}
+    {                                    (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpAddAssign; }
     break;
 
   case 67:
 
-    {                                    (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpSubAssign; ;}
+    {                                    (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpSubAssign; }
     break;
 
   case 68:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
-    ;}
+    }
     break;
 
   case 69:
@@ -3074,7 +2994,7 @@
             context->recover();
             (yyval.interm.intermTypedNode) = (yyvsp[(3) - (3)].interm.intermTypedNode);
         }
-    ;}
+    }
     break;
 
   case 70:
@@ -3083,7 +3003,7 @@
         if (context->constErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode)))
             context->recover();
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
-    ;}
+    }
     break;
 
   case 71:
@@ -3112,7 +3032,7 @@
         
         prototype->setOp(EOpPrototype);
         (yyval.interm.intermNode) = prototype;
-    ;}
+    }
     break;
 
   case 72:
@@ -3121,7 +3041,7 @@
         if ((yyvsp[(1) - (2)].interm).intermAggregate)
             (yyvsp[(1) - (2)].interm).intermAggregate->setOp(EOpDeclaration);
         (yyval.interm.intermNode) = (yyvsp[(1) - (2)].interm).intermAggregate;
-    ;}
+    }
     break;
 
   case 73:
@@ -3129,7 +3049,7 @@
     {
         context->symbolTable.setDefaultPrecision( (yyvsp[(3) - (4)].interm.type).type, (yyvsp[(2) - (4)].interm.precision) );
         (yyval.interm.intermNode) = 0;
-    ;}
+    }
     break;
 
   case 74:
@@ -3166,21 +3086,21 @@
         (yyval.interm).line = (yyvsp[(2) - (2)].lex).line;
 
         context->symbolTable.insert(*(yyval.interm).function);
-    ;}
+    }
     break;
 
   case 75:
 
     {
         (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
-    ;}
+    }
     break;
 
   case 76:
 
     {
         (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
-    ;}
+    }
     break;
 
   case 77:
@@ -3192,7 +3112,7 @@
             (yyvsp[(1) - (2)].interm.function)->addParameter((yyvsp[(2) - (2)].interm).param);
         else
             delete (yyvsp[(2) - (2)].interm).param.type;
-    ;}
+    }
     break;
 
   case 78:
@@ -3214,7 +3134,7 @@
             (yyval.interm.function) = (yyvsp[(1) - (3)].interm.function);
             (yyvsp[(1) - (3)].interm.function)->addParameter((yyvsp[(3) - (3)].interm).param);
         }
-    ;}
+    }
     break;
 
   case 79:
@@ -3233,7 +3153,7 @@
         TType type((yyvsp[(1) - (3)].interm.type));
         function = new TFunction((yyvsp[(2) - (3)].lex).string, type);
         (yyval.interm.function) = function;
-    ;}
+    }
     break;
 
   case 80:
@@ -3248,7 +3168,7 @@
         TParameter param = {(yyvsp[(2) - (2)].lex).string, new TType((yyvsp[(1) - (2)].interm.type))};
         (yyval.interm).line = (yyvsp[(2) - (2)].lex).line;
         (yyval.interm).param = param;
-    ;}
+    }
     break;
 
   case 81:
@@ -3270,7 +3190,7 @@
         TParameter param = { (yyvsp[(2) - (5)].lex).string, type };
         (yyval.interm).line = (yyvsp[(2) - (5)].lex).line;
         (yyval.interm).param = param;
-    ;}
+    }
     break;
 
   case 82:
@@ -3279,7 +3199,7 @@
         (yyval.interm) = (yyvsp[(3) - (3)].interm);
         if (context->paramErrorCheck((yyvsp[(3) - (3)].interm).line, (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type))
             context->recover();
-    ;}
+    }
     break;
 
   case 83:
@@ -3290,7 +3210,7 @@
             context->recover();
         if (context->paramErrorCheck((yyvsp[(2) - (2)].interm).line, EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
             context->recover();
-    ;}
+    }
     break;
 
   case 84:
@@ -3299,7 +3219,7 @@
         (yyval.interm) = (yyvsp[(3) - (3)].interm);
         if (context->paramErrorCheck((yyvsp[(3) - (3)].interm).line, (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type))
             context->recover();
-    ;}
+    }
     break;
 
   case 85:
@@ -3310,35 +3230,35 @@
             context->recover();
         if (context->paramErrorCheck((yyvsp[(2) - (2)].interm).line, EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
             context->recover();
-    ;}
+    }
     break;
 
   case 86:
 
     {
         (yyval.interm.qualifier) = EvqIn;
-    ;}
+    }
     break;
 
   case 87:
 
     {
         (yyval.interm.qualifier) = EvqIn;
-    ;}
+    }
     break;
 
   case 88:
 
     {
         (yyval.interm.qualifier) = EvqOut;
-    ;}
+    }
     break;
 
   case 89:
 
     {
         (yyval.interm.qualifier) = EvqInOut;
-    ;}
+    }
     break;
 
   case 90:
@@ -3346,14 +3266,14 @@
     {
         TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) };
         (yyval.interm).param = param;
-    ;}
+    }
     break;
 
   case 91:
 
     {
         (yyval.interm) = (yyvsp[(1) - (1)].interm);
-    ;}
+    }
     break;
 
   case 92:
@@ -3373,7 +3293,7 @@
             context->recover();
         if (symbol && variable)
             symbol->setId(variable->getUniqueId());
-    ;}
+    }
     break;
 
   case 93:
@@ -3395,7 +3315,7 @@
             if (context->arrayErrorCheck((yyvsp[(4) - (5)].lex).line, *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, variable))
                 context->recover();
         }
-    ;}
+    }
     break;
 
   case 94:
@@ -3423,7 +3343,7 @@
             type.setArraySize(size);
             (yyval.interm).intermAggregate = context->intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, context->intermediate.addSymbol(variable ? variable->getUniqueId() : 0, *(yyvsp[(3) - (6)].lex).string, type, (yyvsp[(3) - (6)].lex).line), (yyvsp[(3) - (6)].lex).line);
         }
-    ;}
+    }
     break;
 
   case 95:
@@ -3447,7 +3367,7 @@
             context->recover();
             (yyval.interm).intermAggregate = 0;
         }
-    ;}
+    }
     break;
 
   case 96:
@@ -3455,7 +3375,7 @@
     {
         (yyval.interm).type = (yyvsp[(1) - (1)].interm.type);
         (yyval.interm).intermAggregate = context->intermediate.makeAggregate(context->intermediate.addSymbol(0, "", TType((yyvsp[(1) - (1)].interm.type)), (yyvsp[(1) - (1)].interm.type).line), (yyvsp[(1) - (1)].interm.type).line);
-    ;}
+    }
     break;
 
   case 97:
@@ -3477,7 +3397,7 @@
             context->recover();
         if (variable && symbol)
             symbol->setId(variable->getUniqueId());
-    ;}
+    }
     break;
 
   case 98:
@@ -3489,7 +3409,7 @@
         TIntermSymbol* symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (4)].lex).string, TType((yyvsp[(1) - (4)].interm.type)), (yyvsp[(2) - (4)].lex).line);
         (yyval.interm).intermAggregate = context->intermediate.makeAggregate(symbol, (yyvsp[(2) - (4)].lex).line);
         (yyval.interm).type = (yyvsp[(1) - (4)].interm.type);
-    ;}
+    }
     break;
 
   case 99:
@@ -3525,7 +3445,7 @@
             if (variable && symbol)
                 symbol->setId(variable->getUniqueId());
         }
-    ;}
+    }
     break;
 
   case 100:
@@ -3549,7 +3469,7 @@
             context->recover();
             (yyval.interm).intermAggregate = 0;
         }
-    ;}
+    }
     break;
 
   case 101:
@@ -3558,7 +3478,7 @@
         VERTEX_ONLY("invariant declaration", (yyvsp[(1) - (2)].lex).line);
         (yyval.interm).qualifier = EvqInvariantVaryingOut;
         (yyval.interm).intermAggregate = 0;
-    ;}
+    }
     break;
 
   case 102:
@@ -3571,7 +3491,7 @@
             context->recover();
             (yyvsp[(1) - (1)].interm.type).setArray(false);
         }
-    ;}
+    }
     break;
 
   case 103:
@@ -3595,14 +3515,14 @@
         }
         (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type);
         (yyval.interm.type).qualifier = (yyvsp[(1) - (2)].interm.type).qualifier;
-    ;}
+    }
     break;
 
   case 104:
 
     {
         (yyval.interm.type).setBasic(EbtVoid, EvqConst, (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 105:
@@ -3612,7 +3532,7 @@
         if (context->globalErrorCheck((yyvsp[(1) - (1)].lex).line, context->symbolTable.atGlobalLevel(), "attribute"))
             context->recover();
         (yyval.interm.type).setBasic(EbtVoid, EvqAttribute, (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 106:
@@ -3624,7 +3544,7 @@
             (yyval.interm.type).setBasic(EbtVoid, EvqVaryingOut, (yyvsp[(1) - (1)].lex).line);
         else
             (yyval.interm.type).setBasic(EbtVoid, EvqVaryingIn, (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 107:
@@ -3636,7 +3556,7 @@
             (yyval.interm.type).setBasic(EbtVoid, EvqInvariantVaryingOut, (yyvsp[(1) - (2)].lex).line);
         else
             (yyval.interm.type).setBasic(EbtVoid, EvqInvariantVaryingIn, (yyvsp[(1) - (2)].lex).line);
-    ;}
+    }
     break;
 
   case 108:
@@ -3645,7 +3565,7 @@
         if (context->globalErrorCheck((yyvsp[(1) - (1)].lex).line, context->symbolTable.atGlobalLevel(), "uniform"))
             context->recover();
         (yyval.interm.type).setBasic(EbtVoid, EvqUniform, (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 109:
@@ -3659,7 +3579,7 @@
                 context->recover();
             }
         }
-    ;}
+    }
     break;
 
   case 110:
@@ -3667,35 +3587,35 @@
     {
         (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type);
         (yyval.interm.type).precision = (yyvsp[(1) - (2)].interm.precision);
-    ;}
+    }
     break;
 
   case 111:
 
     {
         (yyval.interm.precision) = EbpHigh;
-    ;}
+    }
     break;
 
   case 112:
 
     {
         (yyval.interm.precision) = EbpMedium;
-    ;}
+    }
     break;
 
   case 113:
 
     {
         (yyval.interm.precision) = EbpLow;
-    ;}
+    }
     break;
 
   case 114:
 
     {
         (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
-    ;}
+    }
     break;
 
   case 115:
@@ -3711,7 +3631,7 @@
                 context->recover();
             (yyval.interm.type).setArray(true, size);
         }
-    ;}
+    }
     break;
 
   case 116:
@@ -3719,7 +3639,7 @@
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtVoid, qual, (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 117:
@@ -3727,7 +3647,7 @@
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 118:
@@ -3735,7 +3655,7 @@
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 119:
@@ -3743,7 +3663,7 @@
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 120:
@@ -3752,7 +3672,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(2);
-    ;}
+    }
     break;
 
   case 121:
@@ -3761,7 +3681,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(3);
-    ;}
+    }
     break;
 
   case 122:
@@ -3770,7 +3690,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(4);
-    ;}
+    }
     break;
 
   case 123:
@@ -3779,7 +3699,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(2);
-    ;}
+    }
     break;
 
   case 124:
@@ -3788,7 +3708,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(3);
-    ;}
+    }
     break;
 
   case 125:
@@ -3797,7 +3717,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(4);
-    ;}
+    }
     break;
 
   case 126:
@@ -3806,7 +3726,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(2);
-    ;}
+    }
     break;
 
   case 127:
@@ -3815,7 +3735,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(3);
-    ;}
+    }
     break;
 
   case 128:
@@ -3824,7 +3744,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(4);
-    ;}
+    }
     break;
 
   case 129:
@@ -3834,7 +3754,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(2, true);
-    ;}
+    }
     break;
 
   case 130:
@@ -3844,7 +3764,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(3, true);
-    ;}
+    }
     break;
 
   case 131:
@@ -3854,7 +3774,7 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(4, true);
-    ;}
+    }
     break;
 
   case 132:
@@ -3863,7 +3783,7 @@
         FRAG_VERT_ONLY("sampler2D", (yyvsp[(1) - (1)].lex).line);
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtSampler2D, qual, (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 133:
@@ -3872,7 +3792,7 @@
         FRAG_VERT_ONLY("samplerCube", (yyvsp[(1) - (1)].lex).line);
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtSamplerCube, qual, (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 134:
@@ -3885,21 +3805,34 @@
         FRAG_VERT_ONLY("samplerExternalOES", (yyvsp[(1) - (1)].lex).line);
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtSamplerExternalOES, qual, (yyvsp[(1) - (1)].lex).line);
-    ;}
+    }
     break;
 
   case 135:
 
     {
-        FRAG_VERT_ONLY("struct", (yyvsp[(1) - (1)].interm.type).line);
-        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
-        (yyval.interm.type).qualifier = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
-    ;}
+        if (!context->supportsExtension("GL_ARB_texture_rectangle")) {
+            context->error((yyvsp[(1) - (1)].lex).line, "unsupported type", "sampler2DRect", "");
+            context->recover();
+        }
+        FRAG_VERT_ONLY("sampler2DRect", (yyvsp[(1) - (1)].lex).line);
+        TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
+        (yyval.interm.type).setBasic(EbtSampler2DRect, qual, (yyvsp[(1) - (1)].lex).line);
+    }
     break;
 
   case 136:
 
     {
+        FRAG_VERT_ONLY("struct", (yyvsp[(1) - (1)].interm.type).line);
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+        (yyval.interm.type).qualifier = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
+    }
+    break;
+
+  case 137:
+
+    {
         //
         // This is for user defined type names.  The lexical phase looked up the
         // type.
@@ -3908,16 +3841,16 @@
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtStruct, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).userDef = &structure;
-    ;}
-    break;
-
-  case 137:
-
-    { if (context->enterStructDeclaration((yyvsp[(2) - (3)].lex).line, *(yyvsp[(2) - (3)].lex).string)) context->recover(); ;}
+    }
     break;
 
   case 138:
 
+    { if (context->enterStructDeclaration((yyvsp[(2) - (3)].lex).line, *(yyvsp[(2) - (3)].lex).string)) context->recover(); }
+    break;
+
+  case 139:
+
     {
         if (context->reservedErrorCheck((yyvsp[(2) - (6)].lex).line, *(yyvsp[(2) - (6)].lex).string))
             context->recover();
@@ -3931,34 +3864,34 @@
         (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yyvsp[(1) - (6)].lex).line);
         (yyval.interm.type).userDef = structure;
         context->exitStructDeclaration();
-    ;}
-    break;
-
-  case 139:
-
-    { if (context->enterStructDeclaration((yyvsp[(2) - (2)].lex).line, *(yyvsp[(2) - (2)].lex).string)) context->recover(); ;}
+    }
     break;
 
   case 140:
 
+    { if (context->enterStructDeclaration((yyvsp[(2) - (2)].lex).line, *(yyvsp[(2) - (2)].lex).string)) context->recover(); }
+    break;
+
+  case 141:
+
     {
         TType* structure = new TType((yyvsp[(4) - (5)].interm.typeList), TString(""));
         (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yyvsp[(1) - (5)].lex).line);
         (yyval.interm.type).userDef = structure;
         context->exitStructDeclaration();
-    ;}
-    break;
-
-  case 141:
-
-    {
-        (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList);
-    ;}
+    }
     break;
 
   case 142:
 
     {
+        (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList);
+    }
+    break;
+
+  case 143:
+
+    {
         (yyval.interm.typeList) = (yyvsp[(1) - (2)].interm.typeList);
         for (unsigned int i = 0; i < (yyvsp[(2) - (2)].interm.typeList)->size(); ++i) {
             for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) {
@@ -3969,10 +3902,10 @@
             }
             (yyval.interm.typeList)->push_back((*(yyvsp[(2) - (2)].interm.typeList))[i]);
         }
-    ;}
+    }
     break;
 
-  case 143:
+  case 144:
 
     {
         (yyval.interm.typeList) = (yyvsp[(2) - (3)].interm.typeList);
@@ -4006,37 +3939,37 @@
                 context->recover();
             }
         }
-    ;}
-    break;
-
-  case 144:
-
-    {
-        (yyval.interm.typeList) = NewPoolTTypeList();
-        (yyval.interm.typeList)->push_back((yyvsp[(1) - (1)].interm.typeLine));
-    ;}
+    }
     break;
 
   case 145:
 
     {
-        (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine));
-    ;}
+        (yyval.interm.typeList) = NewPoolTTypeList();
+        (yyval.interm.typeList)->push_back((yyvsp[(1) - (1)].interm.typeLine));
+    }
     break;
 
   case 146:
 
     {
+        (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine));
+    }
+    break;
+
+  case 147:
+
+    {
         if (context->reservedErrorCheck((yyvsp[(1) - (1)].lex).line, *(yyvsp[(1) - (1)].lex).string))
             context->recover();
 
         (yyval.interm.typeLine).type = new TType(EbtVoid, EbpUndefined);
         (yyval.interm.typeLine).line = (yyvsp[(1) - (1)].lex).line;
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (1)].lex).string);
-    ;}
+    }
     break;
 
-  case 147:
+  case 148:
 
     {
         if (context->reservedErrorCheck((yyvsp[(1) - (4)].lex).line, *(yyvsp[(1) - (4)].lex).string))
@@ -4050,169 +3983,169 @@
         if (context->arraySizeErrorCheck((yyvsp[(2) - (4)].lex).line, (yyvsp[(3) - (4)].interm.intermTypedNode), size))
             context->recover();
         (yyval.interm.typeLine).type->setArraySize(size);
-    ;}
-    break;
-
-  case 148:
-
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
+    }
     break;
 
   case 149:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 150:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 151:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); }
     break;
 
   case 152:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 153:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 154:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 155:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 156:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 157:
 
-    { (yyval.interm.intermAggregate) = 0; ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 158:
 
-    { context->symbolTable.push(); ;}
+    { (yyval.interm.intermAggregate) = 0; }
     break;
 
   case 159:
 
-    { context->symbolTable.pop(); ;}
+    { context->symbolTable.push(); }
     break;
 
   case 160:
 
+    { context->symbolTable.pop(); }
+    break;
+
+  case 161:
+
     {
         if ((yyvsp[(3) - (5)].interm.intermAggregate) != 0) {
             (yyvsp[(3) - (5)].interm.intermAggregate)->setOp(EOpSequence);
             (yyvsp[(3) - (5)].interm.intermAggregate)->setEndLine((yyvsp[(5) - (5)].lex).line);
         }
         (yyval.interm.intermAggregate) = (yyvsp[(3) - (5)].interm.intermAggregate);
-    ;}
-    break;
-
-  case 161:
-
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
+    }
     break;
 
   case 162:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 163:
 
-    {
-        (yyval.interm.intermNode) = 0;
-    ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 164:
 
     {
+        (yyval.interm.intermNode) = 0;
+    }
+    break;
+
+  case 165:
+
+    {
         if ((yyvsp[(2) - (3)].interm.intermAggregate)) {
             (yyvsp[(2) - (3)].interm.intermAggregate)->setOp(EOpSequence);
             (yyvsp[(2) - (3)].interm.intermAggregate)->setEndLine((yyvsp[(3) - (3)].lex).line);
         }
         (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermAggregate);
-    ;}
-    break;
-
-  case 165:
-
-    {
-        (yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode), 0);
-    ;}
+    }
     break;
 
   case 166:
 
     {
-        (yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermAggregate), (yyvsp[(2) - (2)].interm.intermNode), 0);
-    ;}
+        (yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode), 0);
+    }
     break;
 
   case 167:
 
-    { (yyval.interm.intermNode) = 0; ;}
+    {
+        (yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermAggregate), (yyvsp[(2) - (2)].interm.intermNode), 0);
+    }
     break;
 
   case 168:
 
-    { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); ;}
+    { (yyval.interm.intermNode) = 0; }
     break;
 
   case 169:
 
-    {
-        if (context->boolErrorCheck((yyvsp[(1) - (5)].lex).line, (yyvsp[(3) - (5)].interm.intermTypedNode)))
-            context->recover();
-        (yyval.interm.intermNode) = context->intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yyvsp[(1) - (5)].lex).line);
-    ;}
+    { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); }
     break;
 
   case 170:
 
     {
-        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode);
-        (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode);
-    ;}
+        if (context->boolErrorCheck((yyvsp[(1) - (5)].lex).line, (yyvsp[(3) - (5)].interm.intermTypedNode)))
+            context->recover();
+        (yyval.interm.intermNode) = context->intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yyvsp[(1) - (5)].lex).line);
+    }
     break;
 
   case 171:
 
     {
-        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode);
-        (yyval.interm.nodePair).node2 = 0;
-    ;}
+        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode);
+        (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode);
+    }
     break;
 
   case 172:
 
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
-        if (context->boolErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode)->getLine(), (yyvsp[(1) - (1)].interm.intermTypedNode)))
-            context->recover();
-    ;}
+        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode);
+        (yyval.interm.nodePair).node2 = 0;
+    }
     break;
 
   case 173:
 
     {
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+        if (context->boolErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode)->getLine(), (yyvsp[(1) - (1)].interm.intermTypedNode)))
+            context->recover();
+    }
+    break;
+
+  case 174:
+
+    {
         TIntermNode* intermNode;
         if (context->structQualifierErrorCheck((yyvsp[(2) - (4)].lex).line, (yyvsp[(1) - (4)].interm.type)))
             context->recover();
@@ -4225,109 +4158,109 @@
             context->recover();
             (yyval.interm.intermTypedNode) = 0;
         }
-    ;}
-    break;
-
-  case 174:
-
-    { context->symbolTable.push(); ++context->loopNestingLevel; ;}
+    }
     break;
 
   case 175:
 
+    { context->symbolTable.push(); ++context->loopNestingLevel; }
+    break;
+
+  case 176:
+
     {
         context->symbolTable.pop();
         (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopWhile, 0, (yyvsp[(4) - (6)].interm.intermTypedNode), 0, (yyvsp[(6) - (6)].interm.intermNode), (yyvsp[(1) - (6)].lex).line);
         --context->loopNestingLevel;
-    ;}
-    break;
-
-  case 176:
-
-    { ++context->loopNestingLevel; ;}
+    }
     break;
 
   case 177:
 
+    { ++context->loopNestingLevel; }
+    break;
+
+  case 178:
+
     {
         if (context->boolErrorCheck((yyvsp[(8) - (8)].lex).line, (yyvsp[(6) - (8)].interm.intermTypedNode)))
             context->recover();
 
         (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopDoWhile, 0, (yyvsp[(6) - (8)].interm.intermTypedNode), 0, (yyvsp[(3) - (8)].interm.intermNode), (yyvsp[(4) - (8)].lex).line);
         --context->loopNestingLevel;
-    ;}
-    break;
-
-  case 178:
-
-    { context->symbolTable.push(); ++context->loopNestingLevel; ;}
+    }
     break;
 
   case 179:
 
-    {
-        context->symbolTable.pop();
-        (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopFor, (yyvsp[(4) - (7)].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node2), (yyvsp[(7) - (7)].interm.intermNode), (yyvsp[(1) - (7)].lex).line);
-        --context->loopNestingLevel;
-    ;}
+    { context->symbolTable.push(); ++context->loopNestingLevel; }
     break;
 
   case 180:
 
     {
-        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
-    ;}
+        context->symbolTable.pop();
+        (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopFor, (yyvsp[(4) - (7)].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node2), (yyvsp[(7) - (7)].interm.intermNode), (yyvsp[(1) - (7)].lex).line);
+        --context->loopNestingLevel;
+    }
     break;
 
   case 181:
 
     {
         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
-    ;}
+    }
     break;
 
   case 182:
 
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
-    ;}
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+    }
     break;
 
   case 183:
 
     {
-        (yyval.interm.intermTypedNode) = 0;
-    ;}
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+    }
     break;
 
   case 184:
 
     {
-        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode);
-        (yyval.interm.nodePair).node2 = 0;
-    ;}
+        (yyval.interm.intermTypedNode) = 0;
+    }
     break;
 
   case 185:
 
     {
-        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode);
-        (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode);
-    ;}
+        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode);
+        (yyval.interm.nodePair).node2 = 0;
+    }
     break;
 
   case 186:
 
     {
+        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode);
+        (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode);
+    }
+    break;
+
+  case 187:
+
+    {
         if (context->loopNestingLevel <= 0) {
             context->error((yyvsp[(1) - (2)].lex).line, "continue statement only allowed in loops", "", "");
             context->recover();
         }
         (yyval.interm.intermNode) = context->intermediate.addBranch(EOpContinue, (yyvsp[(1) - (2)].lex).line);
-    ;}
+    }
     break;
 
-  case 187:
+  case 188:
 
     {
         if (context->loopNestingLevel <= 0) {
@@ -4335,10 +4268,10 @@
             context->recover();
         }
         (yyval.interm.intermNode) = context->intermediate.addBranch(EOpBreak, (yyvsp[(1) - (2)].lex).line);
-    ;}
+    }
     break;
 
-  case 188:
+  case 189:
 
     {
         (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).line);
@@ -4346,10 +4279,10 @@
             context->error((yyvsp[(1) - (2)].lex).line, "non-void function must return a value", "return", "");
             context->recover();
         }
-    ;}
+    }
     break;
 
-  case 189:
+  case 190:
 
     {
         (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).line);
@@ -4361,50 +4294,50 @@
             context->error((yyvsp[(1) - (3)].lex).line, "function return is not matching type:", "return", "");
             context->recover();
         }
-    ;}
-    break;
-
-  case 190:
-
-    {
-        FRAG_ONLY("discard", (yyvsp[(1) - (2)].lex).line);
-        (yyval.interm.intermNode) = context->intermediate.addBranch(EOpKill, (yyvsp[(1) - (2)].lex).line);
-    ;}
+    }
     break;
 
   case 191:
 
     {
-        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
-        context->treeRoot = (yyval.interm.intermNode);
-    ;}
+        FRAG_ONLY("discard", (yyvsp[(1) - (2)].lex).line);
+        (yyval.interm.intermNode) = context->intermediate.addBranch(EOpKill, (yyvsp[(1) - (2)].lex).line);
+    }
     break;
 
   case 192:
 
     {
-        (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), 0);
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
         context->treeRoot = (yyval.interm.intermNode);
-    ;}
+    }
     break;
 
   case 193:
 
     {
-        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
-    ;}
+        (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), 0);
+        context->treeRoot = (yyval.interm.intermNode);
+    }
     break;
 
   case 194:
 
     {
         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
-    ;}
+    }
     break;
 
   case 195:
 
     {
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+    }
+    break;
+
+  case 196:
+
+    {
         TFunction* function = (yyvsp[(1) - (1)].interm).function;
         TFunction* prevDec = static_cast<TFunction*>(context->symbolTable.find(function->getMangledName()));
         //
@@ -4484,10 +4417,10 @@
         context->intermediate.setAggregateOperator(paramNodes, EOpParameters, (yyvsp[(1) - (1)].interm).line);
         (yyvsp[(1) - (1)].interm).intermAggregate = paramNodes;
         context->loopNestingLevel = 0;
-    ;}
+    }
     break;
 
-  case 196:
+  case 197:
 
     {
         //?? Check that all paths return a value if return type != void ?
@@ -4510,11 +4443,10 @@
 
         if ((yyvsp[(3) - (3)].interm.intermNode) && (yyvsp[(3) - (3)].interm.intermNode)->getAsAggregate())
             (yyval.interm.intermNode)->getAsAggregate()->setEndLine((yyvsp[(3) - (3)].interm.intermNode)->getAsAggregate()->getEndLine());
-    ;}
+    }
     break;
 
 
-/* Line 1267 of yacc.c.  */
 
       default: break;
     }
@@ -4526,7 +4458,6 @@
 
   *++yyvsp = yyval;
 
-
   /* Now `shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
@@ -4591,7 +4522,7 @@
 
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse look-ahead token after an
+      /* If just tried and failed to reuse lookahead token after an
 	 error, discard it.  */
 
       if (yychar <= YYEOF)
@@ -4608,7 +4539,7 @@
 	}
     }
 
-  /* Else will try to reuse look-ahead token after shifting the error
+  /* Else will try to reuse lookahead token after shifting the error
      token.  */
   goto yyerrlab1;
 
@@ -4665,9 +4596,6 @@
       YY_STACK_PRINT (yyss, yyssp);
     }
 
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
   *++yyvsp = yylval;
 
 
@@ -4692,7 +4620,7 @@
   yyresult = 1;
   goto yyreturn;
 
-#ifndef yyoverflow
+#if !defined(yyoverflow) || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -4703,7 +4631,7 @@
 #endif
 
 yyreturn:
-  if (yychar != YYEOF && yychar != YYEMPTY)
+  if (yychar != YYEMPTY)
      yydestruct ("Cleanup: discarding lookahead",
 		 yytoken, &yylval, context);
   /* Do not reclaim the symbols of the rule which action triggered
diff --git a/src/compiler/glslang_tab.h b/src/compiler/glslang_tab.h
index 55c271c..987c308 100644
--- a/src/compiler/glslang_tab.h
+++ b/src/compiler/glslang_tab.h
@@ -1,24 +1,23 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
+
+/* A Bison parser, made by GNU Bison 2.4.1.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
+   
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -29,10 +28,11 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
@@ -80,160 +80,68 @@
      SAMPLER2D = 296,
      SAMPLERCUBE = 297,
      SAMPLER_EXTERNAL_OES = 298,
-     IDENTIFIER = 299,
-     TYPE_NAME = 300,
-     FLOATCONSTANT = 301,
-     INTCONSTANT = 302,
-     BOOLCONSTANT = 303,
-     FIELD_SELECTION = 304,
-     LEFT_OP = 305,
-     RIGHT_OP = 306,
-     INC_OP = 307,
-     DEC_OP = 308,
-     LE_OP = 309,
-     GE_OP = 310,
-     EQ_OP = 311,
-     NE_OP = 312,
-     AND_OP = 313,
-     OR_OP = 314,
-     XOR_OP = 315,
-     MUL_ASSIGN = 316,
-     DIV_ASSIGN = 317,
-     ADD_ASSIGN = 318,
-     MOD_ASSIGN = 319,
-     LEFT_ASSIGN = 320,
-     RIGHT_ASSIGN = 321,
-     AND_ASSIGN = 322,
-     XOR_ASSIGN = 323,
-     OR_ASSIGN = 324,
-     SUB_ASSIGN = 325,
-     LEFT_PAREN = 326,
-     RIGHT_PAREN = 327,
-     LEFT_BRACKET = 328,
-     RIGHT_BRACKET = 329,
-     LEFT_BRACE = 330,
-     RIGHT_BRACE = 331,
-     DOT = 332,
-     COMMA = 333,
-     COLON = 334,
-     EQUAL = 335,
-     SEMICOLON = 336,
-     BANG = 337,
-     DASH = 338,
-     TILDE = 339,
-     PLUS = 340,
-     STAR = 341,
-     SLASH = 342,
-     PERCENT = 343,
-     LEFT_ANGLE = 344,
-     RIGHT_ANGLE = 345,
-     VERTICAL_BAR = 346,
-     CARET = 347,
-     AMPERSAND = 348,
-     QUESTION = 349
+     SAMPLER2DRECT = 299,
+     IDENTIFIER = 300,
+     TYPE_NAME = 301,
+     FLOATCONSTANT = 302,
+     INTCONSTANT = 303,
+     BOOLCONSTANT = 304,
+     FIELD_SELECTION = 305,
+     LEFT_OP = 306,
+     RIGHT_OP = 307,
+     INC_OP = 308,
+     DEC_OP = 309,
+     LE_OP = 310,
+     GE_OP = 311,
+     EQ_OP = 312,
+     NE_OP = 313,
+     AND_OP = 314,
+     OR_OP = 315,
+     XOR_OP = 316,
+     MUL_ASSIGN = 317,
+     DIV_ASSIGN = 318,
+     ADD_ASSIGN = 319,
+     MOD_ASSIGN = 320,
+     LEFT_ASSIGN = 321,
+     RIGHT_ASSIGN = 322,
+     AND_ASSIGN = 323,
+     XOR_ASSIGN = 324,
+     OR_ASSIGN = 325,
+     SUB_ASSIGN = 326,
+     LEFT_PAREN = 327,
+     RIGHT_PAREN = 328,
+     LEFT_BRACKET = 329,
+     RIGHT_BRACKET = 330,
+     LEFT_BRACE = 331,
+     RIGHT_BRACE = 332,
+     DOT = 333,
+     COMMA = 334,
+     COLON = 335,
+     EQUAL = 336,
+     SEMICOLON = 337,
+     BANG = 338,
+     DASH = 339,
+     TILDE = 340,
+     PLUS = 341,
+     STAR = 342,
+     SLASH = 343,
+     PERCENT = 344,
+     LEFT_ANGLE = 345,
+     RIGHT_ANGLE = 346,
+     VERTICAL_BAR = 347,
+     CARET = 348,
+     AMPERSAND = 349,
+     QUESTION = 350
    };
 #endif
-/* Tokens.  */
-#define INVARIANT 258
-#define HIGH_PRECISION 259
-#define MEDIUM_PRECISION 260
-#define LOW_PRECISION 261
-#define PRECISION 262
-#define ATTRIBUTE 263
-#define CONST_QUAL 264
-#define BOOL_TYPE 265
-#define FLOAT_TYPE 266
-#define INT_TYPE 267
-#define BREAK 268
-#define CONTINUE 269
-#define DO 270
-#define ELSE 271
-#define FOR 272
-#define IF 273
-#define DISCARD 274
-#define RETURN 275
-#define BVEC2 276
-#define BVEC3 277
-#define BVEC4 278
-#define IVEC2 279
-#define IVEC3 280
-#define IVEC4 281
-#define VEC2 282
-#define VEC3 283
-#define VEC4 284
-#define MATRIX2 285
-#define MATRIX3 286
-#define MATRIX4 287
-#define IN_QUAL 288
-#define OUT_QUAL 289
-#define INOUT_QUAL 290
-#define UNIFORM 291
-#define VARYING 292
-#define STRUCT 293
-#define VOID_TYPE 294
-#define WHILE 295
-#define SAMPLER2D 296
-#define SAMPLERCUBE 297
-#define SAMPLER_EXTERNAL_OES 298
-#define IDENTIFIER 299
-#define TYPE_NAME 300
-#define FLOATCONSTANT 301
-#define INTCONSTANT 302
-#define BOOLCONSTANT 303
-#define FIELD_SELECTION 304
-#define LEFT_OP 305
-#define RIGHT_OP 306
-#define INC_OP 307
-#define DEC_OP 308
-#define LE_OP 309
-#define GE_OP 310
-#define EQ_OP 311
-#define NE_OP 312
-#define AND_OP 313
-#define OR_OP 314
-#define XOR_OP 315
-#define MUL_ASSIGN 316
-#define DIV_ASSIGN 317
-#define ADD_ASSIGN 318
-#define MOD_ASSIGN 319
-#define LEFT_ASSIGN 320
-#define RIGHT_ASSIGN 321
-#define AND_ASSIGN 322
-#define XOR_ASSIGN 323
-#define OR_ASSIGN 324
-#define SUB_ASSIGN 325
-#define LEFT_PAREN 326
-#define RIGHT_PAREN 327
-#define LEFT_BRACKET 328
-#define RIGHT_BRACKET 329
-#define LEFT_BRACE 330
-#define RIGHT_BRACE 331
-#define DOT 332
-#define COMMA 333
-#define COLON 334
-#define EQUAL 335
-#define SEMICOLON 336
-#define BANG 337
-#define DASH 338
-#define TILDE 339
-#define PLUS 340
-#define STAR 341
-#define SLASH 342
-#define PERCENT 343
-#define LEFT_ANGLE 344
-#define RIGHT_ANGLE 345
-#define VERTICAL_BAR 346
-#define CARET 347
-#define AMPERSAND 348
-#define QUESTION 349
-
 
 
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-
 {
+
+
     struct {
         TSourceLoc line;
         union {
@@ -263,14 +171,15 @@
             TTypeList* typeList;
         };
     } interm;
-}
-/* Line 1489 of yacc.c.  */
 
-	YYSTYPE;
+
+
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
 
+