Merge branch 'amdrexu-feature'
authorJohn Kessenich <cepheus@frii.com>
Fri, 9 Jun 2017 18:51:03 +0000 (12:51 -0600)
committerJohn Kessenich <cepheus@frii.com>
Fri, 9 Jun 2017 18:52:21 +0000 (12:52 -0600)
1  2 
glslang/MachineIndependent/glslang_tab.cpp
glslang/MachineIndependent/glslang_tab.cpp.h

@@@ -105,317 -110,324 +105,327 @@@ using namespace glslang
  # define YYERROR_VERBOSE 1
  #endif
  
 -/* Enabling the token table.  */
 -#ifndef YYTOKEN_TABLE
 -# define YYTOKEN_TABLE 0
 +/* In a future release of Bison, this section will be replaced
 +   by #include "glslang_tab.cpp.h".  */
 +#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
 +# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
 +/* Debug traces.  */
 +#ifndef YYDEBUG
 +# define YYDEBUG 1
 +#endif
 +#if YYDEBUG
 +extern int yydebug;
  #endif
  
 -
 -/* Tokens.  */
 +/* Token type.  */
  #ifndef YYTOKENTYPE
  # define YYTOKENTYPE
 -   /* Put the tokens into the symbol table, so that GDB and other debuggers
 -      know about them.  */
 -   enum yytokentype {
 -     ATTRIBUTE = 258,
 -     VARYING = 259,
 -     CONST = 260,
 -     BOOL = 261,
 -     FLOAT = 262,
 -     DOUBLE = 263,
 -     INT = 264,
 -     UINT = 265,
 -     INT64_T = 266,
 -     UINT64_T = 267,
 -     INT16_T = 268,
 -     UINT16_T = 269,
 -     FLOAT16_T = 270,
 -     BREAK = 271,
 -     CONTINUE = 272,
 -     DO = 273,
 -     ELSE = 274,
 -     FOR = 275,
 -     IF = 276,
 -     DISCARD = 277,
 -     RETURN = 278,
 -     SWITCH = 279,
 -     CASE = 280,
 -     DEFAULT = 281,
 -     SUBROUTINE = 282,
 -     BVEC2 = 283,
 -     BVEC3 = 284,
 -     BVEC4 = 285,
 -     IVEC2 = 286,
 -     IVEC3 = 287,
 -     IVEC4 = 288,
 -     I64VEC2 = 289,
 -     I64VEC3 = 290,
 -     I64VEC4 = 291,
 -     UVEC2 = 292,
 -     UVEC3 = 293,
 -     UVEC4 = 294,
 -     U64VEC2 = 295,
 -     U64VEC3 = 296,
 -     U64VEC4 = 297,
 -     VEC2 = 298,
 -     VEC3 = 299,
 -     VEC4 = 300,
 -     MAT2 = 301,
 -     MAT3 = 302,
 -     MAT4 = 303,
 -     CENTROID = 304,
 -     IN = 305,
 -     OUT = 306,
 -     INOUT = 307,
 -     UNIFORM = 308,
 -     PATCH = 309,
 -     SAMPLE = 310,
 -     BUFFER = 311,
 -     SHARED = 312,
 -     COHERENT = 313,
 -     VOLATILE = 314,
 -     RESTRICT = 315,
 -     READONLY = 316,
 -     WRITEONLY = 317,
 -     DVEC2 = 318,
 -     DVEC3 = 319,
 -     DVEC4 = 320,
 -     DMAT2 = 321,
 -     DMAT3 = 322,
 -     DMAT4 = 323,
 -     F16VEC2 = 324,
 -     F16VEC3 = 325,
 -     F16VEC4 = 326,
 -     F16MAT2 = 327,
 -     F16MAT3 = 328,
 -     F16MAT4 = 329,
 -     I16VEC2 = 330,
 -     I16VEC3 = 331,
 -     I16VEC4 = 332,
 -     U16VEC2 = 333,
 -     U16VEC3 = 334,
 -     U16VEC4 = 335,
 -     NOPERSPECTIVE = 336,
 -     FLAT = 337,
 -     SMOOTH = 338,
 -     LAYOUT = 339,
 -     __EXPLICITINTERPAMD = 340,
 -     MAT2X2 = 341,
 -     MAT2X3 = 342,
 -     MAT2X4 = 343,
 -     MAT3X2 = 344,
 -     MAT3X3 = 345,
 -     MAT3X4 = 346,
 -     MAT4X2 = 347,
 -     MAT4X3 = 348,
 -     MAT4X4 = 349,
 -     DMAT2X2 = 350,
 -     DMAT2X3 = 351,
 -     DMAT2X4 = 352,
 -     DMAT3X2 = 353,
 -     DMAT3X3 = 354,
 -     DMAT3X4 = 355,
 -     DMAT4X2 = 356,
 -     DMAT4X3 = 357,
 -     DMAT4X4 = 358,
 -     F16MAT2X2 = 359,
 -     F16MAT2X3 = 360,
 -     F16MAT2X4 = 361,
 -     F16MAT3X2 = 362,
 -     F16MAT3X3 = 363,
 -     F16MAT3X4 = 364,
 -     F16MAT4X2 = 365,
 -     F16MAT4X3 = 366,
 -     F16MAT4X4 = 367,
 -     ATOMIC_UINT = 368,
 -     SAMPLER1D = 369,
 -     SAMPLER2D = 370,
 -     SAMPLER3D = 371,
 -     SAMPLERCUBE = 372,
 -     SAMPLER1DSHADOW = 373,
 -     SAMPLER2DSHADOW = 374,
 -     SAMPLERCUBESHADOW = 375,
 -     SAMPLER1DARRAY = 376,
 -     SAMPLER2DARRAY = 377,
 -     SAMPLER1DARRAYSHADOW = 378,
 -     SAMPLER2DARRAYSHADOW = 379,
 -     ISAMPLER1D = 380,
 -     ISAMPLER2D = 381,
 -     ISAMPLER3D = 382,
 -     ISAMPLERCUBE = 383,
 -     ISAMPLER1DARRAY = 384,
 -     ISAMPLER2DARRAY = 385,
 -     USAMPLER1D = 386,
 -     USAMPLER2D = 387,
 -     USAMPLER3D = 388,
 -     USAMPLERCUBE = 389,
 -     USAMPLER1DARRAY = 390,
 -     USAMPLER2DARRAY = 391,
 -     SAMPLER2DRECT = 392,
 -     SAMPLER2DRECTSHADOW = 393,
 -     ISAMPLER2DRECT = 394,
 -     USAMPLER2DRECT = 395,
 -     SAMPLERBUFFER = 396,
 -     ISAMPLERBUFFER = 397,
 -     USAMPLERBUFFER = 398,
 -     SAMPLERCUBEARRAY = 399,
 -     SAMPLERCUBEARRAYSHADOW = 400,
 -     ISAMPLERCUBEARRAY = 401,
 -     USAMPLERCUBEARRAY = 402,
 -     SAMPLER2DMS = 403,
 -     ISAMPLER2DMS = 404,
 -     USAMPLER2DMS = 405,
 -     SAMPLER2DMSARRAY = 406,
 -     ISAMPLER2DMSARRAY = 407,
 -     USAMPLER2DMSARRAY = 408,
 -     SAMPLEREXTERNALOES = 409,
 -     SAMPLER = 410,
 -     SAMPLERSHADOW = 411,
 -     TEXTURE1D = 412,
 -     TEXTURE2D = 413,
 -     TEXTURE3D = 414,
 -     TEXTURECUBE = 415,
 -     TEXTURE1DARRAY = 416,
 -     TEXTURE2DARRAY = 417,
 -     ITEXTURE1D = 418,
 -     ITEXTURE2D = 419,
 -     ITEXTURE3D = 420,
 -     ITEXTURECUBE = 421,
 -     ITEXTURE1DARRAY = 422,
 -     ITEXTURE2DARRAY = 423,
 -     UTEXTURE1D = 424,
 -     UTEXTURE2D = 425,
 -     UTEXTURE3D = 426,
 -     UTEXTURECUBE = 427,
 -     UTEXTURE1DARRAY = 428,
 -     UTEXTURE2DARRAY = 429,
 -     TEXTURE2DRECT = 430,
 -     ITEXTURE2DRECT = 431,
 -     UTEXTURE2DRECT = 432,
 -     TEXTUREBUFFER = 433,
 -     ITEXTUREBUFFER = 434,
 -     UTEXTUREBUFFER = 435,
 -     TEXTURECUBEARRAY = 436,
 -     ITEXTURECUBEARRAY = 437,
 -     UTEXTURECUBEARRAY = 438,
 -     TEXTURE2DMS = 439,
 -     ITEXTURE2DMS = 440,
 -     UTEXTURE2DMS = 441,
 -     TEXTURE2DMSARRAY = 442,
 -     ITEXTURE2DMSARRAY = 443,
 -     UTEXTURE2DMSARRAY = 444,
 -     SUBPASSINPUT = 445,
 -     SUBPASSINPUTMS = 446,
 -     ISUBPASSINPUT = 447,
 -     ISUBPASSINPUTMS = 448,
 -     USUBPASSINPUT = 449,
 -     USUBPASSINPUTMS = 450,
 -     IMAGE1D = 451,
 -     IIMAGE1D = 452,
 -     UIMAGE1D = 453,
 -     IMAGE2D = 454,
 -     IIMAGE2D = 455,
 -     UIMAGE2D = 456,
 -     IMAGE3D = 457,
 -     IIMAGE3D = 458,
 -     UIMAGE3D = 459,
 -     IMAGE2DRECT = 460,
 -     IIMAGE2DRECT = 461,
 -     UIMAGE2DRECT = 462,
 -     IMAGECUBE = 463,
 -     IIMAGECUBE = 464,
 -     UIMAGECUBE = 465,
 -     IMAGEBUFFER = 466,
 -     IIMAGEBUFFER = 467,
 -     UIMAGEBUFFER = 468,
 -     IMAGE1DARRAY = 469,
 -     IIMAGE1DARRAY = 470,
 -     UIMAGE1DARRAY = 471,
 -     IMAGE2DARRAY = 472,
 -     IIMAGE2DARRAY = 473,
 -     UIMAGE2DARRAY = 474,
 -     IMAGECUBEARRAY = 475,
 -     IIMAGECUBEARRAY = 476,
 -     UIMAGECUBEARRAY = 477,
 -     IMAGE2DMS = 478,
 -     IIMAGE2DMS = 479,
 -     UIMAGE2DMS = 480,
 -     IMAGE2DMSARRAY = 481,
 -     IIMAGE2DMSARRAY = 482,
 -     UIMAGE2DMSARRAY = 483,
 -     STRUCT = 484,
 -     VOID = 485,
 -     WHILE = 486,
 -     IDENTIFIER = 487,
 -     TYPE_NAME = 488,
 -     FLOATCONSTANT = 489,
 -     DOUBLECONSTANT = 490,
 -     INTCONSTANT = 491,
 -     UINTCONSTANT = 492,
 -     INT64CONSTANT = 493,
 -     UINT64CONSTANT = 494,
 -     INT16CONSTANT = 495,
 -     UINT16CONSTANT = 496,
 -     BOOLCONSTANT = 497,
 -     FLOAT16CONSTANT = 498,
 -     LEFT_OP = 499,
 -     RIGHT_OP = 500,
 -     INC_OP = 501,
 -     DEC_OP = 502,
 -     LE_OP = 503,
 -     GE_OP = 504,
 -     EQ_OP = 505,
 -     NE_OP = 506,
 -     AND_OP = 507,
 -     OR_OP = 508,
 -     XOR_OP = 509,
 -     MUL_ASSIGN = 510,
 -     DIV_ASSIGN = 511,
 -     ADD_ASSIGN = 512,
 -     MOD_ASSIGN = 513,
 -     LEFT_ASSIGN = 514,
 -     RIGHT_ASSIGN = 515,
 -     AND_ASSIGN = 516,
 -     XOR_ASSIGN = 517,
 -     OR_ASSIGN = 518,
 -     SUB_ASSIGN = 519,
 -     LEFT_PAREN = 520,
 -     RIGHT_PAREN = 521,
 -     LEFT_BRACKET = 522,
 -     RIGHT_BRACKET = 523,
 -     LEFT_BRACE = 524,
 -     RIGHT_BRACE = 525,
 -     DOT = 526,
 -     COMMA = 527,
 -     COLON = 528,
 -     EQUAL = 529,
 -     SEMICOLON = 530,
 -     BANG = 531,
 -     DASH = 532,
 -     TILDE = 533,
 -     PLUS = 534,
 -     STAR = 535,
 -     SLASH = 536,
 -     PERCENT = 537,
 -     LEFT_ANGLE = 538,
 -     RIGHT_ANGLE = 539,
 -     VERTICAL_BAR = 540,
 -     CARET = 541,
 -     AMPERSAND = 542,
 -     QUESTION = 543,
 -     INVARIANT = 544,
 -     PRECISE = 545,
 -     HIGH_PRECISION = 546,
 -     MEDIUM_PRECISION = 547,
 -     LOW_PRECISION = 548,
 -     PRECISION = 549,
 -     PACKED = 550,
 -     RESOURCE = 551,
 -     SUPERP = 552
 -   };
 +  enum yytokentype
 +  {
 +    ATTRIBUTE = 258,
 +    VARYING = 259,
 +    CONST = 260,
 +    BOOL = 261,
 +    FLOAT = 262,
 +    DOUBLE = 263,
 +    INT = 264,
 +    UINT = 265,
 +    INT64_T = 266,
 +    UINT64_T = 267,
-     FLOAT16_T = 268,
-     BREAK = 269,
-     CONTINUE = 270,
-     DO = 271,
-     ELSE = 272,
-     FOR = 273,
-     IF = 274,
-     DISCARD = 275,
-     RETURN = 276,
-     SWITCH = 277,
-     CASE = 278,
-     DEFAULT = 279,
-     SUBROUTINE = 280,
-     BVEC2 = 281,
-     BVEC3 = 282,
-     BVEC4 = 283,
-     IVEC2 = 284,
-     IVEC3 = 285,
-     IVEC4 = 286,
-     I64VEC2 = 287,
-     I64VEC3 = 288,
-     I64VEC4 = 289,
-     UVEC2 = 290,
-     UVEC3 = 291,
-     UVEC4 = 292,
-     U64VEC2 = 293,
-     U64VEC3 = 294,
-     U64VEC4 = 295,
-     VEC2 = 296,
-     VEC3 = 297,
-     VEC4 = 298,
-     MAT2 = 299,
-     MAT3 = 300,
-     MAT4 = 301,
-     CENTROID = 302,
-     IN = 303,
-     OUT = 304,
-     INOUT = 305,
-     UNIFORM = 306,
-     PATCH = 307,
-     SAMPLE = 308,
-     BUFFER = 309,
-     SHARED = 310,
-     COHERENT = 311,
-     VOLATILE = 312,
-     RESTRICT = 313,
-     READONLY = 314,
-     WRITEONLY = 315,
-     DVEC2 = 316,
-     DVEC3 = 317,
-     DVEC4 = 318,
-     DMAT2 = 319,
-     DMAT3 = 320,
-     DMAT4 = 321,
-     F16VEC2 = 322,
-     F16VEC3 = 323,
-     F16VEC4 = 324,
-     F16MAT2 = 325,
-     F16MAT3 = 326,
-     F16MAT4 = 327,
-     NOPERSPECTIVE = 328,
-     FLAT = 329,
-     SMOOTH = 330,
-     LAYOUT = 331,
-     __EXPLICITINTERPAMD = 332,
-     MAT2X2 = 333,
-     MAT2X3 = 334,
-     MAT2X4 = 335,
-     MAT3X2 = 336,
-     MAT3X3 = 337,
-     MAT3X4 = 338,
-     MAT4X2 = 339,
-     MAT4X3 = 340,
-     MAT4X4 = 341,
-     DMAT2X2 = 342,
-     DMAT2X3 = 343,
-     DMAT2X4 = 344,
-     DMAT3X2 = 345,
-     DMAT3X3 = 346,
-     DMAT3X4 = 347,
-     DMAT4X2 = 348,
-     DMAT4X3 = 349,
-     DMAT4X4 = 350,
-     F16MAT2X2 = 351,
-     F16MAT2X3 = 352,
-     F16MAT2X4 = 353,
-     F16MAT3X2 = 354,
-     F16MAT3X3 = 355,
-     F16MAT3X4 = 356,
-     F16MAT4X2 = 357,
-     F16MAT4X3 = 358,
-     F16MAT4X4 = 359,
-     ATOMIC_UINT = 360,
-     SAMPLER1D = 361,
-     SAMPLER2D = 362,
-     SAMPLER3D = 363,
-     SAMPLERCUBE = 364,
-     SAMPLER1DSHADOW = 365,
-     SAMPLER2DSHADOW = 366,
-     SAMPLERCUBESHADOW = 367,
-     SAMPLER1DARRAY = 368,
-     SAMPLER2DARRAY = 369,
-     SAMPLER1DARRAYSHADOW = 370,
-     SAMPLER2DARRAYSHADOW = 371,
-     ISAMPLER1D = 372,
-     ISAMPLER2D = 373,
-     ISAMPLER3D = 374,
-     ISAMPLERCUBE = 375,
-     ISAMPLER1DARRAY = 376,
-     ISAMPLER2DARRAY = 377,
-     USAMPLER1D = 378,
-     USAMPLER2D = 379,
-     USAMPLER3D = 380,
-     USAMPLERCUBE = 381,
-     USAMPLER1DARRAY = 382,
-     USAMPLER2DARRAY = 383,
-     SAMPLER2DRECT = 384,
-     SAMPLER2DRECTSHADOW = 385,
-     ISAMPLER2DRECT = 386,
-     USAMPLER2DRECT = 387,
-     SAMPLERBUFFER = 388,
-     ISAMPLERBUFFER = 389,
-     USAMPLERBUFFER = 390,
-     SAMPLERCUBEARRAY = 391,
-     SAMPLERCUBEARRAYSHADOW = 392,
-     ISAMPLERCUBEARRAY = 393,
-     USAMPLERCUBEARRAY = 394,
-     SAMPLER2DMS = 395,
-     ISAMPLER2DMS = 396,
-     USAMPLER2DMS = 397,
-     SAMPLER2DMSARRAY = 398,
-     ISAMPLER2DMSARRAY = 399,
-     USAMPLER2DMSARRAY = 400,
-     SAMPLEREXTERNALOES = 401,
-     SAMPLER = 402,
-     SAMPLERSHADOW = 403,
-     TEXTURE1D = 404,
-     TEXTURE2D = 405,
-     TEXTURE3D = 406,
-     TEXTURECUBE = 407,
-     TEXTURE1DARRAY = 408,
-     TEXTURE2DARRAY = 409,
-     ITEXTURE1D = 410,
-     ITEXTURE2D = 411,
-     ITEXTURE3D = 412,
-     ITEXTURECUBE = 413,
-     ITEXTURE1DARRAY = 414,
-     ITEXTURE2DARRAY = 415,
-     UTEXTURE1D = 416,
-     UTEXTURE2D = 417,
-     UTEXTURE3D = 418,
-     UTEXTURECUBE = 419,
-     UTEXTURE1DARRAY = 420,
-     UTEXTURE2DARRAY = 421,
-     TEXTURE2DRECT = 422,
-     ITEXTURE2DRECT = 423,
-     UTEXTURE2DRECT = 424,
-     TEXTUREBUFFER = 425,
-     ITEXTUREBUFFER = 426,
-     UTEXTUREBUFFER = 427,
-     TEXTURECUBEARRAY = 428,
-     ITEXTURECUBEARRAY = 429,
-     UTEXTURECUBEARRAY = 430,
-     TEXTURE2DMS = 431,
-     ITEXTURE2DMS = 432,
-     UTEXTURE2DMS = 433,
-     TEXTURE2DMSARRAY = 434,
-     ITEXTURE2DMSARRAY = 435,
-     UTEXTURE2DMSARRAY = 436,
-     SUBPASSINPUT = 437,
-     SUBPASSINPUTMS = 438,
-     ISUBPASSINPUT = 439,
-     ISUBPASSINPUTMS = 440,
-     USUBPASSINPUT = 441,
-     USUBPASSINPUTMS = 442,
-     IMAGE1D = 443,
-     IIMAGE1D = 444,
-     UIMAGE1D = 445,
-     IMAGE2D = 446,
-     IIMAGE2D = 447,
-     UIMAGE2D = 448,
-     IMAGE3D = 449,
-     IIMAGE3D = 450,
-     UIMAGE3D = 451,
-     IMAGE2DRECT = 452,
-     IIMAGE2DRECT = 453,
-     UIMAGE2DRECT = 454,
-     IMAGECUBE = 455,
-     IIMAGECUBE = 456,
-     UIMAGECUBE = 457,
-     IMAGEBUFFER = 458,
-     IIMAGEBUFFER = 459,
-     UIMAGEBUFFER = 460,
-     IMAGE1DARRAY = 461,
-     IIMAGE1DARRAY = 462,
-     UIMAGE1DARRAY = 463,
-     IMAGE2DARRAY = 464,
-     IIMAGE2DARRAY = 465,
-     UIMAGE2DARRAY = 466,
-     IMAGECUBEARRAY = 467,
-     IIMAGECUBEARRAY = 468,
-     UIMAGECUBEARRAY = 469,
-     IMAGE2DMS = 470,
-     IIMAGE2DMS = 471,
-     UIMAGE2DMS = 472,
-     IMAGE2DMSARRAY = 473,
-     IIMAGE2DMSARRAY = 474,
-     UIMAGE2DMSARRAY = 475,
-     STRUCT = 476,
-     VOID = 477,
-     WHILE = 478,
-     IDENTIFIER = 479,
-     TYPE_NAME = 480,
-     FLOATCONSTANT = 481,
-     DOUBLECONSTANT = 482,
-     INTCONSTANT = 483,
-     UINTCONSTANT = 484,
-     INT64CONSTANT = 485,
-     UINT64CONSTANT = 486,
-     BOOLCONSTANT = 487,
-     FLOAT16CONSTANT = 488,
-     LEFT_OP = 489,
-     RIGHT_OP = 490,
-     INC_OP = 491,
-     DEC_OP = 492,
-     LE_OP = 493,
-     GE_OP = 494,
-     EQ_OP = 495,
-     NE_OP = 496,
-     AND_OP = 497,
-     OR_OP = 498,
-     XOR_OP = 499,
-     MUL_ASSIGN = 500,
-     DIV_ASSIGN = 501,
-     ADD_ASSIGN = 502,
-     MOD_ASSIGN = 503,
-     LEFT_ASSIGN = 504,
-     RIGHT_ASSIGN = 505,
-     AND_ASSIGN = 506,
-     XOR_ASSIGN = 507,
-     OR_ASSIGN = 508,
-     SUB_ASSIGN = 509,
-     LEFT_PAREN = 510,
-     RIGHT_PAREN = 511,
-     LEFT_BRACKET = 512,
-     RIGHT_BRACKET = 513,
-     LEFT_BRACE = 514,
-     RIGHT_BRACE = 515,
-     DOT = 516,
-     COMMA = 517,
-     COLON = 518,
-     EQUAL = 519,
-     SEMICOLON = 520,
-     BANG = 521,
-     DASH = 522,
-     TILDE = 523,
-     PLUS = 524,
-     STAR = 525,
-     SLASH = 526,
-     PERCENT = 527,
-     LEFT_ANGLE = 528,
-     RIGHT_ANGLE = 529,
-     VERTICAL_BAR = 530,
-     CARET = 531,
-     AMPERSAND = 532,
-     QUESTION = 533,
-     INVARIANT = 534,
-     PRECISE = 535,
-     HIGH_PRECISION = 536,
-     MEDIUM_PRECISION = 537,
-     LOW_PRECISION = 538,
-     PRECISION = 539,
-     PACKED = 540,
-     RESOURCE = 541,
-     SUPERP = 542
++    INT16_T = 268,
++    UINT16_T = 269,
++    FLOAT16_T = 270,
++    BREAK = 271,
++    CONTINUE = 272,
++    DO = 273,
++    ELSE = 274,
++    FOR = 275,
++    IF = 276,
++    DISCARD = 277,
++    RETURN = 278,
++    SWITCH = 279,
++    CASE = 280,
++    DEFAULT = 281,
++    SUBROUTINE = 282,
++    BVEC2 = 283,
++    BVEC3 = 284,
++    BVEC4 = 285,
++    IVEC2 = 286,
++    IVEC3 = 287,
++    IVEC4 = 288,
++    I64VEC2 = 289,
++    I64VEC3 = 290,
++    I64VEC4 = 291,
++    UVEC2 = 292,
++    UVEC3 = 293,
++    UVEC4 = 294,
++    U64VEC2 = 295,
++    U64VEC3 = 296,
++    U64VEC4 = 297,
++    VEC2 = 298,
++    VEC3 = 299,
++    VEC4 = 300,
++    MAT2 = 301,
++    MAT3 = 302,
++    MAT4 = 303,
++    CENTROID = 304,
++    IN = 305,
++    OUT = 306,
++    INOUT = 307,
++    UNIFORM = 308,
++    PATCH = 309,
++    SAMPLE = 310,
++    BUFFER = 311,
++    SHARED = 312,
++    COHERENT = 313,
++    VOLATILE = 314,
++    RESTRICT = 315,
++    READONLY = 316,
++    WRITEONLY = 317,
++    DVEC2 = 318,
++    DVEC3 = 319,
++    DVEC4 = 320,
++    DMAT2 = 321,
++    DMAT3 = 322,
++    DMAT4 = 323,
++    F16VEC2 = 324,
++    F16VEC3 = 325,
++    F16VEC4 = 326,
++    F16MAT2 = 327,
++    F16MAT3 = 328,
++    F16MAT4 = 329,
++    I16VEC2 = 330,
++    I16VEC3 = 331,
++    I16VEC4 = 332,
++    U16VEC2 = 333,
++    U16VEC3 = 334,
++    U16VEC4 = 335,
++    NOPERSPECTIVE = 336,
++    FLAT = 337,
++    SMOOTH = 338,
++    LAYOUT = 339,
++    __EXPLICITINTERPAMD = 340,
++    MAT2X2 = 341,
++    MAT2X3 = 342,
++    MAT2X4 = 343,
++    MAT3X2 = 344,
++    MAT3X3 = 345,
++    MAT3X4 = 346,
++    MAT4X2 = 347,
++    MAT4X3 = 348,
++    MAT4X4 = 349,
++    DMAT2X2 = 350,
++    DMAT2X3 = 351,
++    DMAT2X4 = 352,
++    DMAT3X2 = 353,
++    DMAT3X3 = 354,
++    DMAT3X4 = 355,
++    DMAT4X2 = 356,
++    DMAT4X3 = 357,
++    DMAT4X4 = 358,
++    F16MAT2X2 = 359,
++    F16MAT2X3 = 360,
++    F16MAT2X4 = 361,
++    F16MAT3X2 = 362,
++    F16MAT3X3 = 363,
++    F16MAT3X4 = 364,
++    F16MAT4X2 = 365,
++    F16MAT4X3 = 366,
++    F16MAT4X4 = 367,
++    ATOMIC_UINT = 368,
++    SAMPLER1D = 369,
++    SAMPLER2D = 370,
++    SAMPLER3D = 371,
++    SAMPLERCUBE = 372,
++    SAMPLER1DSHADOW = 373,
++    SAMPLER2DSHADOW = 374,
++    SAMPLERCUBESHADOW = 375,
++    SAMPLER1DARRAY = 376,
++    SAMPLER2DARRAY = 377,
++    SAMPLER1DARRAYSHADOW = 378,
++    SAMPLER2DARRAYSHADOW = 379,
++    ISAMPLER1D = 380,
++    ISAMPLER2D = 381,
++    ISAMPLER3D = 382,
++    ISAMPLERCUBE = 383,
++    ISAMPLER1DARRAY = 384,
++    ISAMPLER2DARRAY = 385,
++    USAMPLER1D = 386,
++    USAMPLER2D = 387,
++    USAMPLER3D = 388,
++    USAMPLERCUBE = 389,
++    USAMPLER1DARRAY = 390,
++    USAMPLER2DARRAY = 391,
++    SAMPLER2DRECT = 392,
++    SAMPLER2DRECTSHADOW = 393,
++    ISAMPLER2DRECT = 394,
++    USAMPLER2DRECT = 395,
++    SAMPLERBUFFER = 396,
++    ISAMPLERBUFFER = 397,
++    USAMPLERBUFFER = 398,
++    SAMPLERCUBEARRAY = 399,
++    SAMPLERCUBEARRAYSHADOW = 400,
++    ISAMPLERCUBEARRAY = 401,
++    USAMPLERCUBEARRAY = 402,
++    SAMPLER2DMS = 403,
++    ISAMPLER2DMS = 404,
++    USAMPLER2DMS = 405,
++    SAMPLER2DMSARRAY = 406,
++    ISAMPLER2DMSARRAY = 407,
++    USAMPLER2DMSARRAY = 408,
++    SAMPLEREXTERNALOES = 409,
++    SAMPLER = 410,
++    SAMPLERSHADOW = 411,
++    TEXTURE1D = 412,
++    TEXTURE2D = 413,
++    TEXTURE3D = 414,
++    TEXTURECUBE = 415,
++    TEXTURE1DARRAY = 416,
++    TEXTURE2DARRAY = 417,
++    ITEXTURE1D = 418,
++    ITEXTURE2D = 419,
++    ITEXTURE3D = 420,
++    ITEXTURECUBE = 421,
++    ITEXTURE1DARRAY = 422,
++    ITEXTURE2DARRAY = 423,
++    UTEXTURE1D = 424,
++    UTEXTURE2D = 425,
++    UTEXTURE3D = 426,
++    UTEXTURECUBE = 427,
++    UTEXTURE1DARRAY = 428,
++    UTEXTURE2DARRAY = 429,
++    TEXTURE2DRECT = 430,
++    ITEXTURE2DRECT = 431,
++    UTEXTURE2DRECT = 432,
++    TEXTUREBUFFER = 433,
++    ITEXTUREBUFFER = 434,
++    UTEXTUREBUFFER = 435,
++    TEXTURECUBEARRAY = 436,
++    ITEXTURECUBEARRAY = 437,
++    UTEXTURECUBEARRAY = 438,
++    TEXTURE2DMS = 439,
++    ITEXTURE2DMS = 440,
++    UTEXTURE2DMS = 441,
++    TEXTURE2DMSARRAY = 442,
++    ITEXTURE2DMSARRAY = 443,
++    UTEXTURE2DMSARRAY = 444,
++    SUBPASSINPUT = 445,
++    SUBPASSINPUTMS = 446,
++    ISUBPASSINPUT = 447,
++    ISUBPASSINPUTMS = 448,
++    USUBPASSINPUT = 449,
++    USUBPASSINPUTMS = 450,
++    IMAGE1D = 451,
++    IIMAGE1D = 452,
++    UIMAGE1D = 453,
++    IMAGE2D = 454,
++    IIMAGE2D = 455,
++    UIMAGE2D = 456,
++    IMAGE3D = 457,
++    IIMAGE3D = 458,
++    UIMAGE3D = 459,
++    IMAGE2DRECT = 460,
++    IIMAGE2DRECT = 461,
++    UIMAGE2DRECT = 462,
++    IMAGECUBE = 463,
++    IIMAGECUBE = 464,
++    UIMAGECUBE = 465,
++    IMAGEBUFFER = 466,
++    IIMAGEBUFFER = 467,
++    UIMAGEBUFFER = 468,
++    IMAGE1DARRAY = 469,
++    IIMAGE1DARRAY = 470,
++    UIMAGE1DARRAY = 471,
++    IMAGE2DARRAY = 472,
++    IIMAGE2DARRAY = 473,
++    UIMAGE2DARRAY = 474,
++    IMAGECUBEARRAY = 475,
++    IIMAGECUBEARRAY = 476,
++    UIMAGECUBEARRAY = 477,
++    IMAGE2DMS = 478,
++    IIMAGE2DMS = 479,
++    UIMAGE2DMS = 480,
++    IMAGE2DMSARRAY = 481,
++    IIMAGE2DMSARRAY = 482,
++    UIMAGE2DMSARRAY = 483,
++    STRUCT = 484,
++    VOID = 485,
++    WHILE = 486,
++    IDENTIFIER = 487,
++    TYPE_NAME = 488,
++    FLOATCONSTANT = 489,
++    DOUBLECONSTANT = 490,
++    INTCONSTANT = 491,
++    UINTCONSTANT = 492,
++    INT64CONSTANT = 493,
++    UINT64CONSTANT = 494,
++    INT16CONSTANT = 495,
++    UINT16CONSTANT = 496,
++    BOOLCONSTANT = 497,
++    FLOAT16CONSTANT = 498,
++    LEFT_OP = 499,
++    RIGHT_OP = 500,
++    INC_OP = 501,
++    DEC_OP = 502,
++    LE_OP = 503,
++    GE_OP = 504,
++    EQ_OP = 505,
++    NE_OP = 506,
++    AND_OP = 507,
++    OR_OP = 508,
++    XOR_OP = 509,
++    MUL_ASSIGN = 510,
++    DIV_ASSIGN = 511,
++    ADD_ASSIGN = 512,
++    MOD_ASSIGN = 513,
++    LEFT_ASSIGN = 514,
++    RIGHT_ASSIGN = 515,
++    AND_ASSIGN = 516,
++    XOR_ASSIGN = 517,
++    OR_ASSIGN = 518,
++    SUB_ASSIGN = 519,
++    LEFT_PAREN = 520,
++    RIGHT_PAREN = 521,
++    LEFT_BRACKET = 522,
++    RIGHT_BRACKET = 523,
++    LEFT_BRACE = 524,
++    RIGHT_BRACE = 525,
++    DOT = 526,
++    COMMA = 527,
++    COLON = 528,
++    EQUAL = 529,
++    SEMICOLON = 530,
++    BANG = 531,
++    DASH = 532,
++    TILDE = 533,
++    PLUS = 534,
++    STAR = 535,
++    SLASH = 536,
++    PERCENT = 537,
++    LEFT_ANGLE = 538,
++    RIGHT_ANGLE = 539,
++    VERTICAL_BAR = 540,
++    CARET = 541,
++    AMPERSAND = 542,
++    QUESTION = 543,
++    INVARIANT = 544,
++    PRECISE = 545,
++    HIGH_PRECISION = 546,
++    MEDIUM_PRECISION = 547,
++    LOW_PRECISION = 548,
++    PRECISION = 549,
++    PACKED = 550,
++    RESOURCE = 551,
++    SUPERP = 552
 +  };
  #endif
  
 -
 -
 +/* Value type.  */
  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 -typedef union YYSTYPE
 -{
  
 -/* Line 214 of yacc.c  */
 -#line 68 "glslang.y"
 +union YYSTYPE
 +{
 +#line 68 "MachineIndependent/glslang.y" /* yacc.c:355  */
  
      struct {
          glslang::TSourceLoc loc;
          };
      } interm;
  
- #line 453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355  */
++#line 463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355  */
 +};
  
 -
 -/* Line 214 of yacc.c  */
 -#line 468 "glslang_tab.cpp"
 -} YYSTYPE;
 +typedef union YYSTYPE YYSTYPE;
  # define YYSTYPE_IS_TRIVIAL 1
 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */
  # define YYSTYPE_IS_DECLARED 1
  #endif
  
@@@ -480,7 -491,9 +490,7 @@@ int yyparse (glslang::TParseContext* pP
  extern int yylex(YYSTYPE*, TParseContext&);
  
  
- #line 484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358  */
 -
 -/* Line 264 of yacc.c  */
 -#line 497 "glslang_tab.cpp"
++#line 494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358  */
  
  #ifdef short
  # undef short
@@@ -699,50 -705,28 +709,50 @@@ union yyallo
  
  #endif
  
 +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
 +/* Copy COUNT objects from SRC to DST.  The source and destination do
 +   not overlap.  */
 +# ifndef YYCOPY
 +#  if defined __GNUC__ && 1 < __GNUC__
 +#   define YYCOPY(Dst, Src, Count) \
 +      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
 +#  else
 +#   define YYCOPY(Dst, Src, Count)              \
 +      do                                        \
 +        {                                       \
 +          YYSIZE_T yyi;                         \
 +          for (yyi = 0; yyi < (Count); yyi++)   \
 +            (Dst)[yyi] = (Src)[yyi];            \
 +        }                                       \
 +      while (0)
 +#  endif
 +# endif
 +#endif /* !YYCOPY_NEEDED */
 +
  /* YYFINAL -- State number of the termination state.  */
- #define YYFINAL  265
+ #define YYFINAL  273
  /* YYLAST -- Last index in YYTABLE.  */
- #define YYLAST   6373
+ #define YYLAST   6608
  
  /* YYNTOKENS -- Number of terminals.  */
- #define YYNTOKENS  288
+ #define YYNTOKENS  298
  /* YYNNTS -- Number of nonterminals.  */
  #define YYNNTS  100
  /* YYNRULES -- Number of rules.  */
- #define YYNRULES  439
+ #define YYNRULES  449
 -/* YYNRULES -- Number of states.  */
 +/* YYNSTATES -- Number of states.  */
- #define YYNSTATES  571
+ #define YYNSTATES  581
  
 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
 +   by yylex, with out-of-bounds checking.  */
  #define YYUNDEFTOK  2
- #define YYMAXUTOK   542
+ #define YYMAXUTOK   552
  
 -#define YYTRANSLATE(YYX)                                              \
 +#define YYTRANSLATE(YYX)                                                \
    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  
 -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
 +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
 +   as returned by yylex, without out-of-bounds checking.  */
  static const yytype_uint16 yytranslate[] =
  {
         0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  };
  
  #if YYDEBUG
 -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
 -   YYRHS.  */
 -static const yytype_uint16 yyprhs[] =
 -{
 -       0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
 -      19,    21,    23,    25,    27,    31,    33,    38,    40,    44,
 -      47,    50,    52,    54,    56,    59,    62,    65,    67,    70,
 -      74,    77,    79,    81,    83,    86,    89,    92,    94,    96,
 -      98,   100,   102,   106,   110,   114,   116,   120,   124,   126,
 -     130,   134,   136,   140,   144,   148,   152,   154,   158,   162,
 -     164,   168,   170,   174,   176,   180,   182,   186,   188,   192,
 -     194,   198,   200,   201,   208,   210,   214,   216,   218,   220,
 -     222,   224,   226,   228,   230,   232,   234,   236,   238,   242,
 -     244,   247,   250,   255,   258,   262,   267,   270,   274,   279,
 -     280,   287,   290,   294,   297,   299,   301,   304,   308,   312,
 -     315,   319,   322,   324,   327,   329,   331,   333,   337,   342,
 -     349,   355,   357,   360,   364,   370,   375,   377,   380,   382,
 -     384,   386,   388,   390,   395,   397,   401,   403,   407,   409,
 -     411,   413,   416,   418,   420,   422,   424,   426,   428,   430,
 -     432,   434,   436,   438,   440,   442,   444,   446,   448,   450,
 -     452,   454,   456,   458,   460,   462,   464,   469,   471,   475,
 -     477,   480,   483,   487,   491,   496,   498,   500,   502,   504,
 -     506,   508,   510,   512,   514,   516,   518,   520,   522,   524,
 -     526,   528,   530,   532,   534,   536,   538,   540,   542,   544,
 -     546,   548,   550,   552,   554,   556,   558,   560,   562,   564,
 -     566,   568,   570,   572,   574,   576,   578,   580,   582,   584,
 -     586,   588,   590,   592,   594,   596,   598,   600,   602,   604,
 -     606,   608,   610,   612,   614,   616,   618,   620,   622,   624,
 -     626,   628,   630,   632,   634,   636,   638,   640,   642,   644,
 -     646,   648,   650,   652,   654,   656,   658,   660,   662,   664,
 -     666,   668,   670,   672,   674,   676,   678,   680,   682,   684,
 -     686,   688,   690,   692,   694,   696,   698,   700,   702,   704,
 -     706,   708,   710,   712,   714,   716,   718,   720,   722,   724,
 -     726,   728,   730,   732,   734,   736,   738,   740,   742,   744,
 -     746,   748,   750,   752,   754,   756,   758,   760,   762,   764,
 -     766,   768,   770,   772,   774,   776,   778,   780,   782,   784,
 -     786,   788,   790,   792,   794,   796,   798,   800,   802,   804,
 -     806,   808,   810,   812,   814,   816,   818,   820,   822,   824,
 -     826,   828,   830,   832,   834,   836,   838,   840,   842,   844,
 -     846,   848,   850,   852,   854,   856,   858,   860,   862,   864,
 -     866,   868,   870,   872,   874,   876,   878,   880,   882,   884,
 -     886,   888,   890,   892,   893,   900,   901,   907,   909,   912,
 -     916,   921,   923,   927,   929,   932,   934,   938,   943,   945,
 -     949,   951,   953,   955,   957,   959,   961,   963,   965,   967,
 -     969,   972,   973,   974,   980,   982,   984,   985,   988,   989,
 -     992,   995,   999,  1001,  1004,  1006,  1009,  1015,  1019,  1021,
 -    1023,  1028,  1029,  1038,  1039,  1041,  1045,  1048,  1049,  1056,
 -    1057,  1066,  1067,  1075,  1077,  1079,  1081,  1082,  1085,  1089,
 -    1092,  1095,  1098,  1102,  1105,  1107,  1110,  1112,  1114,  1115
 -};
 -
 -/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 -static const yytype_int16 yyrhs[] =
 -{
 -     394,     0,    -1,   232,    -1,   299,    -1,   236,    -1,   237,
 -      -1,   238,    -1,   239,    -1,   240,    -1,   241,    -1,   234,
 -      -1,   235,    -1,   243,    -1,   242,    -1,   265,   327,   266,
 -      -1,   300,    -1,   301,   267,   302,   268,    -1,   303,    -1,
 -     301,   271,   232,    -1,   301,   246,    -1,   301,   247,    -1,
 -     327,    -1,   304,    -1,   305,    -1,   307,   266,    -1,   306,
 -     266,    -1,   308,   230,    -1,   308,    -1,   308,   325,    -1,
 -     307,   272,   325,    -1,   309,   265,    -1,   353,    -1,   301,
 -      -1,   301,    -1,   246,   310,    -1,   247,   310,    -1,   311,
 -     310,    -1,   279,    -1,   277,    -1,   276,    -1,   278,    -1,
 -     310,    -1,   312,   280,   310,    -1,   312,   281,   310,    -1,
 -     312,   282,   310,    -1,   312,    -1,   313,   279,   312,    -1,
 -     313,   277,   312,    -1,   313,    -1,   314,   244,   313,    -1,
 -     314,   245,   313,    -1,   314,    -1,   315,   283,   314,    -1,
 -     315,   284,   314,    -1,   315,   248,   314,    -1,   315,   249,
 -     314,    -1,   315,    -1,   316,   250,   315,    -1,   316,   251,
 -     315,    -1,   316,    -1,   317,   287,   316,    -1,   317,    -1,
 -     318,   286,   317,    -1,   318,    -1,   319,   285,   318,    -1,
 -     319,    -1,   320,   252,   319,    -1,   320,    -1,   321,   254,
 -     320,    -1,   321,    -1,   322,   253,   321,    -1,   322,    -1,
 -      -1,   322,   288,   324,   327,   273,   325,    -1,   323,    -1,
 -     310,   326,   325,    -1,   274,    -1,   255,    -1,   256,    -1,
 -     258,    -1,   257,    -1,   264,    -1,   259,    -1,   260,    -1,
 -     261,    -1,   262,    -1,   263,    -1,   325,    -1,   327,   272,
 -     325,    -1,   323,    -1,   333,   275,    -1,   340,   275,    -1,
 -     294,   356,   353,   275,    -1,   330,   275,    -1,   330,   232,
 -     275,    -1,   330,   232,   354,   275,    -1,   349,   275,    -1,
 -     349,   232,   275,    -1,   349,   232,   332,   275,    -1,    -1,
 -     349,   232,   269,   331,   360,   270,    -1,   272,   232,    -1,
 -     332,   272,   232,    -1,   334,   266,    -1,   336,    -1,   335,
 -      -1,   336,   338,    -1,   335,   272,   338,    -1,   342,   232,
 -     265,    -1,   353,   232,    -1,   353,   232,   354,    -1,   349,
 -     337,    -1,   337,    -1,   349,   339,    -1,   339,    -1,   353,
 -      -1,   341,    -1,   340,   272,   232,    -1,   340,   272,   232,
 -     354,    -1,   340,   272,   232,   354,   274,   364,    -1,   340,
 -     272,   232,   274,   364,    -1,   342,    -1,   342,   232,    -1,
 -     342,   232,   354,    -1,   342,   232,   354,   274,   364,    -1,
 -     342,   232,   274,   364,    -1,   353,    -1,   349,   353,    -1,
 -     289,    -1,    83,    -1,    82,    -1,    81,    -1,    85,    -1,
 -      84,   265,   346,   266,    -1,   347,    -1,   346,   272,   347,
 -      -1,   232,    -1,   232,   274,   328,    -1,    57,    -1,   290,
 -      -1,   350,    -1,   349,   350,    -1,   351,    -1,   345,    -1,
 -     356,    -1,   344,    -1,   343,    -1,   348,    -1,     5,    -1,
 -       3,    -1,     4,    -1,    52,    -1,    50,    -1,    51,    -1,
 -      49,    -1,    54,    -1,    55,    -1,    53,    -1,    56,    -1,
 -      57,    -1,    58,    -1,    59,    -1,    60,    -1,    61,    -1,
 -      62,    -1,    27,    -1,    27,   265,   352,   266,    -1,   232,
 -      -1,   352,   272,   232,    -1,   355,    -1,   355,   354,    -1,
 -     267,   268,    -1,   267,   323,   268,    -1,   354,   267,   268,
 -      -1,   354,   267,   323,   268,    -1,   230,    -1,     7,    -1,
 -       8,    -1,    15,    -1,     9,    -1,    10,    -1,    11,    -1,
 -      12,    -1,    13,    -1,    14,    -1,     6,    -1,    43,    -1,
 -      44,    -1,    45,    -1,    63,    -1,    64,    -1,    65,    -1,
 -      69,    -1,    70,    -1,    71,    -1,    28,    -1,    29,    -1,
 -      30,    -1,    31,    -1,    32,    -1,    33,    -1,    34,    -1,
 -      35,    -1,    36,    -1,    75,    -1,    76,    -1,    77,    -1,
 -      37,    -1,    38,    -1,    39,    -1,    40,    -1,    41,    -1,
 -      42,    -1,    78,    -1,    79,    -1,    80,    -1,    46,    -1,
 -      47,    -1,    48,    -1,    86,    -1,    87,    -1,    88,    -1,
 -      89,    -1,    90,    -1,    91,    -1,    92,    -1,    93,    -1,
 -      94,    -1,    66,    -1,    67,    -1,    68,    -1,    95,    -1,
 -      96,    -1,    97,    -1,    98,    -1,    99,    -1,   100,    -1,
 -     101,    -1,   102,    -1,   103,    -1,    72,    -1,    73,    -1,
 -      74,    -1,   104,    -1,   105,    -1,   106,    -1,   107,    -1,
 -     108,    -1,   109,    -1,   110,    -1,   111,    -1,   112,    -1,
 -     113,    -1,   114,    -1,   115,    -1,   116,    -1,   117,    -1,
 -     118,    -1,   119,    -1,   120,    -1,   121,    -1,   122,    -1,
 -     123,    -1,   124,    -1,   144,    -1,   145,    -1,   125,    -1,
 -     126,    -1,   127,    -1,   128,    -1,   129,    -1,   130,    -1,
 -     146,    -1,   131,    -1,   132,    -1,   133,    -1,   134,    -1,
 -     135,    -1,   136,    -1,   147,    -1,   137,    -1,   138,    -1,
 -     139,    -1,   140,    -1,   141,    -1,   142,    -1,   143,    -1,
 -     148,    -1,   149,    -1,   150,    -1,   151,    -1,   152,    -1,
 -     153,    -1,   155,    -1,   156,    -1,   157,    -1,   158,    -1,
 -     159,    -1,   160,    -1,   161,    -1,   162,    -1,   181,    -1,
 -     163,    -1,   164,    -1,   165,    -1,   166,    -1,   167,    -1,
 -     168,    -1,   182,    -1,   169,    -1,   170,    -1,   171,    -1,
 -     172,    -1,   173,    -1,   174,    -1,   183,    -1,   175,    -1,
 -     176,    -1,   177,    -1,   178,    -1,   179,    -1,   180,    -1,
 -     184,    -1,   185,    -1,   186,    -1,   187,    -1,   188,    -1,
 -     189,    -1,   196,    -1,   197,    -1,   198,    -1,   199,    -1,
 -     200,    -1,   201,    -1,   202,    -1,   203,    -1,   204,    -1,
 -     205,    -1,   206,    -1,   207,    -1,   208,    -1,   209,    -1,
 -     210,    -1,   211,    -1,   212,    -1,   213,    -1,   214,    -1,
 -     215,    -1,   216,    -1,   217,    -1,   218,    -1,   219,    -1,
 -     220,    -1,   221,    -1,   222,    -1,   223,    -1,   224,    -1,
 -     225,    -1,   226,    -1,   227,    -1,   228,    -1,   154,    -1,
 -     190,    -1,   191,    -1,   192,    -1,   193,    -1,   194,    -1,
 -     195,    -1,   357,    -1,   233,    -1,   291,    -1,   292,    -1,
 -     293,    -1,    -1,   229,   232,   269,   358,   360,   270,    -1,
 -      -1,   229,   269,   359,   360,   270,    -1,   361,    -1,   360,
 -     361,    -1,   353,   362,   275,    -1,   349,   353,   362,   275,
 -      -1,   363,    -1,   362,   272,   363,    -1,   232,    -1,   232,
 -     354,    -1,   325,    -1,   269,   365,   270,    -1,   269,   365,
 -     272,   270,    -1,   364,    -1,   365,   272,   364,    -1,   329,
 -      -1,   369,    -1,   368,    -1,   366,    -1,   378,    -1,   379,
 -      -1,   382,    -1,   385,    -1,   386,    -1,   393,    -1,   269,
 -     270,    -1,    -1,    -1,   269,   370,   377,   371,   270,    -1,
 -     376,    -1,   368,    -1,    -1,   374,   369,    -1,    -1,   375,
 -     368,    -1,   269,   270,    -1,   269,   377,   270,    -1,   367,
 -      -1,   377,   367,    -1,   275,    -1,   327,   275,    -1,    21,
 -     265,   327,   266,   380,    -1,   373,    19,   373,    -1,   373,
 -      -1,   327,    -1,   342,   232,   274,   364,    -1,    -1,    24,
 -     265,   327,   266,   383,   269,   384,   270,    -1,    -1,   377,
 -      -1,    25,   327,   273,    -1,    26,   273,    -1,    -1,   231,
 -     265,   387,   381,   266,   372,    -1,    -1,    18,   388,   367,
 -     231,   265,   327,   266,   275,    -1,    -1,    20,   265,   389,
 -     390,   392,   266,   372,    -1,   378,    -1,   366,    -1,   381,
 -      -1,    -1,   391,   275,    -1,   391,   275,   327,    -1,    17,
 -     275,    -1,    16,   275,    -1,    23,   275,    -1,    23,   327,
 -     275,    -1,    22,   275,    -1,   395,    -1,   394,   395,    -1,
 -     396,    -1,   329,    -1,    -1,   333,   397,   376,    -1
 -};
 -
 -/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 +  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
  static const yytype_uint16 yyrline[] =
  {
-        0,   252,   252,   258,   261,   264,   268,   272,   276,   279,
-      283,   289,   292,   300,   303,   306,   309,   312,   317,   325,
-      332,   339,   345,   349,   356,   359,   365,   372,   382,   390,
-      395,   425,   431,   435,   439,   459,   460,   461,   462,   468,
-      469,   474,   479,   488,   489,   494,   502,   503,   509,   518,
-      519,   524,   529,   534,   542,   543,   551,   562,   563,   572,
-      573,   582,   583,   592,   593,   601,   602,   610,   611,   619,
-      620,   620,   638,   639,   654,   658,   662,   666,   671,   675,
-      679,   683,   687,   691,   695,   702,   705,   716,   723,   728,
-      733,   741,   745,   749,   753,   758,   763,   772,   772,   783,
-      787,   794,   801,   804,   811,   819,   839,   857,   872,   895,
-      906,   916,   926,   936,   945,   948,   952,   956,   961,   969,
-      974,   979,   984,   989,   998,  1009,  1036,  1045,  1052,  1059,
-     1066,  1078,  1084,  1087,  1094,  1098,  1102,  1110,  1119,  1122,
-     1133,  1136,  1139,  1143,  1147,  1151,  1158,  1162,  1174,  1188,
-     1193,  1199,  1205,  1212,  1218,  1223,  1228,  1233,  1241,  1245,
-     1249,  1253,  1257,  1261,  1267,  1276,  1279,  1287,  1291,  1300,
-     1305,  1313,  1317,  1327,  1331,  1335,  1340,  1347,  1351,  1356,
-     1361,  1366,  1370,  1375,  1380,  1385,  1391,  1397,  1403,  1411,
-     1419,  1427,  1432,  1437,  1442,  1447,  1452,  1457,  1463,  1469,
-     1475,  1481,  1487,  1493,  1499,  1505,  1511,  1516,  1521,  1526,
-     1531,  1536,  1541,  1546,  1551,  1556,  1561,  1566,  1571,  1577,
-     1583,  1589,  1595,  1601,  1607,  1613,  1619,  1625,  1631,  1637,
-     1643,  1651,  1659,  1667,  1675,  1683,  1691,  1699,  1707,  1715,
-     1723,  1731,  1739,  1744,  1749,  1754,  1759,  1764,  1769,  1774,
-     1779,  1784,  1789,  1794,  1799,  1804,  1809,  1814,  1819,  1824,
-     1829,  1834,  1839,  1844,  1849,  1854,  1859,  1864,  1869,  1874,
-     1879,  1884,  1889,  1894,  1899,  1904,  1909,  1914,  1919,  1924,
-     1929,  1934,  1939,  1944,  1949,  1954,  1959,  1964,  1969,  1974,
-     1979,  1984,  1989,  1994,  1999,  2004,  2009,  2014,  2019,  2024,
-     2029,  2034,  2039,  2044,  2049,  2054,  2059,  2064,  2069,  2074,
-     2079,  2084,  2089,  2094,  2099,  2104,  2109,  2114,  2119,  2124,
-     2129,  2134,  2139,  2144,  2149,  2154,  2159,  2164,  2169,  2174,
-     2179,  2184,  2189,  2194,  2199,  2204,  2209,  2214,  2219,  2224,
-     2229,  2234,  2239,  2244,  2249,  2254,  2259,  2264,  2269,  2274,
-     2279,  2284,  2290,  2296,  2302,  2308,  2314,  2320,  2326,  2331,
-     2347,  2352,  2357,  2365,  2365,  2376,  2376,  2386,  2389,  2402,
-     2420,  2444,  2448,  2454,  2459,  2470,  2473,  2479,  2488,  2491,
-     2497,  2501,  2502,  2508,  2509,  2510,  2511,  2512,  2513,  2514,
-     2518,  2519,  2523,  2519,  2535,  2536,  2540,  2540,  2547,  2547,
-     2561,  2564,  2572,  2580,  2591,  2592,  2596,  2603,  2607,  2615,
-     2619,  2632,  2632,  2652,  2655,  2661,  2673,  2685,  2685,  2700,
-     2700,  2716,  2716,  2737,  2740,  2746,  2749,  2755,  2759,  2766,
-     2771,  2776,  2783,  2786,  2795,  2799,  2806,  2809,  2815,  2815
+        0,   253,   253,   259,   262,   265,   269,   273,   277,   283,
+      289,   292,   296,   302,   305,   313,   316,   319,   322,   325,
+      330,   338,   345,   352,   358,   362,   369,   372,   378,   385,
+      395,   403,   408,   438,   444,   448,   452,   472,   473,   474,
+      475,   481,   482,   487,   492,   501,   502,   507,   515,   516,
+      522,   531,   532,   537,   542,   547,   555,   556,   564,   575,
+      576,   585,   586,   595,   596,   605,   606,   614,   615,   623,
+      624,   632,   633,   633,   651,   652,   667,   671,   675,   679,
+      684,   688,   692,   696,   700,   704,   708,   715,   718,   729,
+      736,   741,   746,   754,   758,   762,   766,   771,   776,   785,
+      785,   796,   800,   807,   814,   817,   824,   832,   852,   870,
+      885,   908,   919,   929,   939,   949,   958,   961,   965,   969,
+      974,   982,   987,   992,   997,  1002,  1011,  1022,  1049,  1058,
+     1065,  1072,  1079,  1091,  1097,  1100,  1107,  1111,  1115,  1123,
+     1132,  1135,  1146,  1149,  1152,  1156,  1160,  1164,  1171,  1175,
+     1187,  1201,  1206,  1212,  1218,  1225,  1231,  1236,  1241,  1246,
+     1254,  1258,  1262,  1266,  1270,  1274,  1280,  1289,  1292,  1300,
+     1304,  1313,  1318,  1326,  1330,  1340,  1344,  1348,  1353,  1360,
+     1364,  1369,  1374,  1379,  1386,  1393,  1397,  1402,  1407,  1412,
+     1418,  1424,  1430,  1438,  1446,  1454,  1459,  1464,  1469,  1474,
+     1479,  1484,  1490,  1496,  1502,  1510,  1518,  1526,  1532,  1538,
+     1544,  1550,  1556,  1562,  1570,  1578,  1586,  1591,  1596,  1601,
+     1606,  1611,  1616,  1621,  1626,  1631,  1636,  1641,  1646,  1652,
+     1658,  1664,  1670,  1676,  1682,  1688,  1694,  1700,  1706,  1712,
+     1718,  1726,  1734,  1742,  1750,  1758,  1766,  1774,  1782,  1790,
+     1798,  1806,  1814,  1819,  1824,  1829,  1834,  1839,  1844,  1849,
+     1854,  1859,  1864,  1869,  1874,  1879,  1884,  1889,  1894,  1899,
+     1904,  1909,  1914,  1919,  1924,  1929,  1934,  1939,  1944,  1949,
+     1954,  1959,  1964,  1969,  1974,  1979,  1984,  1989,  1994,  1999,
+     2004,  2009,  2014,  2019,  2024,  2029,  2034,  2039,  2044,  2049,
+     2054,  2059,  2064,  2069,  2074,  2079,  2084,  2089,  2094,  2099,
+     2104,  2109,  2114,  2119,  2124,  2129,  2134,  2139,  2144,  2149,
+     2154,  2159,  2164,  2169,  2174,  2179,  2184,  2189,  2194,  2199,
+     2204,  2209,  2214,  2219,  2224,  2229,  2234,  2239,  2244,  2249,
+     2254,  2259,  2264,  2269,  2274,  2279,  2284,  2289,  2294,  2299,
+     2304,  2309,  2314,  2319,  2324,  2329,  2334,  2339,  2344,  2349,
+     2354,  2359,  2365,  2371,  2377,  2383,  2389,  2395,  2401,  2406,
+     2422,  2427,  2432,  2440,  2440,  2451,  2451,  2461,  2464,  2477,
+     2495,  2519,  2523,  2529,  2534,  2545,  2548,  2554,  2563,  2566,
+     2572,  2576,  2577,  2583,  2584,  2585,  2586,  2587,  2588,  2589,
+     2593,  2594,  2598,  2594,  2610,  2611,  2615,  2615,  2622,  2622,
+     2636,  2639,  2647,  2655,  2666,  2667,  2671,  2678,  2682,  2690,
+     2694,  2707,  2707,  2727,  2730,  2736,  2748,  2760,  2760,  2775,
+     2775,  2791,  2791,  2812,  2815,  2821,  2824,  2830,  2834,  2841,
+     2846,  2851,  2858,  2861,  2870,  2874,  2881,  2884,  2890,  2890
  };
  #endif
  
@@@ -989,219 -1145,316 +1003,223 @@@ static const yytype_uint16 yytoknum[] 
  };
  # endif
  
- #define YYPACT_NINF -512
 -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 -static const yytype_uint16 yyr1[] =
 -{
 -       0,   298,   299,   300,   300,   300,   300,   300,   300,   300,
 -     300,   300,   300,   300,   300,   301,   301,   301,   301,   301,
 -     301,   302,   303,   304,   305,   305,   306,   306,   307,   307,
 -     308,   309,   309,   310,   310,   310,   310,   311,   311,   311,
 -     311,   312,   312,   312,   312,   313,   313,   313,   314,   314,
 -     314,   315,   315,   315,   315,   315,   316,   316,   316,   317,
 -     317,   318,   318,   319,   319,   320,   320,   321,   321,   322,
 -     322,   323,   324,   323,   325,   325,   326,   326,   326,   326,
 -     326,   326,   326,   326,   326,   326,   326,   327,   327,   328,
 -     329,   329,   329,   329,   329,   329,   329,   329,   329,   331,
 -     330,   332,   332,   333,   334,   334,   335,   335,   336,   337,
 -     337,   338,   338,   338,   338,   339,   340,   340,   340,   340,
 -     340,   341,   341,   341,   341,   341,   342,   342,   343,   344,
 -     344,   344,   344,   345,   346,   346,   347,   347,   347,   348,
 -     349,   349,   350,   350,   350,   350,   350,   350,   351,   351,
 -     351,   351,   351,   351,   351,   351,   351,   351,   351,   351,
 -     351,   351,   351,   351,   351,   351,   351,   352,   352,   353,
 -     353,   354,   354,   354,   354,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
 -     356,   356,   356,   358,   357,   359,   357,   360,   360,   361,
 -     361,   362,   362,   363,   363,   364,   364,   364,   365,   365,
 -     366,   367,   367,   368,   368,   368,   368,   368,   368,   368,
 -     369,   370,   371,   369,   372,   372,   374,   373,   375,   373,
 -     376,   376,   377,   377,   378,   378,   379,   380,   380,   381,
 -     381,   383,   382,   384,   384,   385,   385,   387,   386,   388,
 -     386,   389,   386,   390,   390,   391,   391,   392,   392,   393,
 -     393,   393,   393,   393,   394,   394,   395,   395,   397,   396
 -};
++#define YYPACT_NINF -522
  
 -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 -static const yytype_uint8 yyr2[] =
 -{
 -       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     3,     1,     4,     1,     3,     2,
 -       2,     1,     1,     1,     2,     2,     2,     1,     2,     3,
 -       2,     1,     1,     1,     2,     2,     2,     1,     1,     1,
 -       1,     1,     3,     3,     3,     1,     3,     3,     1,     3,
 -       3,     1,     3,     3,     3,     3,     1,     3,     3,     1,
 -       3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
 -       3,     1,     0,     6,     1,     3,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
 -       2,     2,     4,     2,     3,     4,     2,     3,     4,     0,
 -       6,     2,     3,     2,     1,     1,     2,     3,     3,     2,
 -       3,     2,     1,     2,     1,     1,     1,     3,     4,     6,
 -       5,     1,     2,     3,     5,     4,     1,     2,     1,     1,
 -       1,     1,     1,     4,     1,     3,     1,     3,     1,     1,
 -       1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     4,     1,     3,     1,
 -       2,     2,     3,     3,     4,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     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,
 -       4,     1,     3,     1,     2,     1,     3,     4,     1,     3,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       2,     0,     0,     5,     1,     1,     0,     2,     0,     2,
 -       2,     3,     1,     2,     1,     2,     5,     3,     1,     1,
 -       4,     0,     8,     0,     1,     3,     2,     0,     6,     0,
 -       8,     0,     7,     1,     1,     1,     0,     2,     3,     2,
 -       2,     2,     3,     2,     1,     2,     1,     1,     0,     3
 -};
 +#define yypact_value_is_default(Yystate) \
-   (!!((Yystate) == (-512)))
++  (!!((Yystate) == (-522)))
  
- #define YYTABLE_NINF -397
 -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
 -   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
 -   means the default is an error.  */
 -static const yytype_uint16 yydefact[] =
 -{
 -       0,   149,   150,   148,   185,   176,   177,   179,   180,   181,
 -     182,   183,   184,   178,   165,   195,   196,   197,   198,   199,
 -     200,   201,   202,   203,   207,   208,   209,   210,   211,   212,
 -     186,   187,   188,   216,   217,   218,   154,   152,   153,   151,
 -     157,   155,   156,   158,   159,   160,   161,   162,   163,   164,
 -     189,   190,   191,   228,   229,   230,   192,   193,   194,   240,
 -     241,   242,   204,   205,   206,   213,   214,   215,   131,   130,
 -     129,     0,   132,   219,   220,   221,   222,   223,   224,   225,
 -     226,   227,   231,   232,   233,   234,   235,   236,   237,   238,
 -     239,   243,   244,   245,   246,   247,   248,   249,   250,   251,
 -     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
 -     262,   263,   266,   267,   268,   269,   270,   271,   273,   274,
 -     275,   276,   277,   278,   280,   281,   282,   283,   284,   285,
 -     286,   264,   265,   272,   279,   287,   288,   289,   290,   291,
 -     292,   361,   293,   294,   295,   296,   297,   298,   299,   300,
 -     302,   303,   304,   305,   306,   307,   309,   310,   311,   312,
 -     313,   314,   316,   317,   318,   319,   320,   321,   301,   308,
 -     315,   322,   323,   324,   325,   326,   327,   362,   363,   364,
 -     365,   366,   367,   328,   329,   330,   331,   332,   333,   334,
 -     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
 -     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
 -     355,   356,   357,   358,   359,   360,     0,   175,   369,   128,
 -     139,   370,   371,   372,     0,   447,     0,   448,     0,   105,
 -     104,     0,   116,   121,   146,   145,   143,   147,     0,   140,
 -     142,   126,   169,   144,   368,     0,   444,   446,     0,     0,
 -       0,   375,     0,     0,    93,    90,     0,   103,     0,   112,
 -     106,   114,     0,   115,     0,    91,   122,     0,    96,   141,
 -     127,     0,   170,     1,   445,   167,     0,   138,   136,     0,
 -     134,   373,     0,     0,    94,     0,     0,   449,   107,   111,
 -     113,   109,   117,   108,     0,   123,    99,     0,    97,     0,
 -       2,    10,    11,     4,     5,     6,     7,     8,     9,    13,
 -      12,     0,     0,     0,   171,    39,    38,    40,    37,     3,
 -      15,    33,    17,    22,    23,     0,     0,    27,     0,    41,
 -       0,    45,    48,    51,    56,    59,    61,    63,    65,    67,
 -      69,    71,     0,    31,     0,   166,     0,     0,   133,     0,
 -       0,     0,     0,     0,   377,    92,    95,     0,     0,   429,
 -       0,     0,     0,     0,     0,     0,     0,     0,   401,   410,
 -     414,    41,    74,    87,     0,   390,     0,   126,   393,   412,
 -     392,   391,     0,   394,   395,   396,   397,   398,   399,   110,
 -       0,   118,     0,   385,   125,     0,     0,   101,     0,    98,
 -      34,    35,     0,    19,    20,     0,     0,    25,    24,     0,
 -     175,    28,    30,    36,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,    72,   172,   173,     0,   168,    89,   137,
 -     135,     0,     0,   383,     0,   381,   376,   378,   440,   439,
 -       0,   431,     0,   443,   441,     0,     0,     0,   426,   427,
 -     400,     0,    77,    78,    80,    79,    82,    83,    84,    85,
 -      86,    81,    76,     0,     0,   415,   411,   413,   120,     0,
 -     388,     0,   124,     0,   102,    14,     0,    21,    18,    29,
 -      42,    43,    44,    47,    46,    49,    50,    54,    55,    52,
 -      53,    57,    58,    60,    62,    64,    66,    68,    70,     0,
 -     174,   374,     0,   384,     0,   379,     0,     0,     0,   442,
 -       0,   425,     0,   402,    75,    88,   119,   386,     0,   100,
 -      16,     0,   380,   382,     0,   434,   433,   436,   408,   421,
 -     419,     0,     0,     0,     0,   387,   389,     0,     0,   435,
 -       0,     0,   418,     0,     0,   416,     0,     0,     0,   403,
 -      73,     0,   437,     0,   408,   407,   409,   423,     0,   405,
 -     428,   404,     0,   438,   432,   417,   424,     0,   420,   430,
 -     422
 -};
++#define YYTABLE_NINF -407
  
 -/* YYDEFGOTO[NTERM-NUM].  */
 -static const yytype_int16 yydefgoto[] =
 -{
 -      -1,   319,   320,   321,   486,   322,   323,   324,   325,   326,
 -     327,   328,   371,   330,   331,   332,   333,   334,   335,   336,
 -     337,   338,   339,   340,   341,   372,   509,   373,   473,   374,
 -     439,   375,   226,   396,   299,   376,   228,   229,   230,   259,
 -     260,   261,   231,   232,   233,   234,   235,   236,   279,   280,
 -     237,   238,   239,   240,   276,   343,   272,   242,   243,   244,
 -     350,   282,   353,   354,   444,   445,   394,   481,   378,   379,
 -     380,   381,   461,   544,   570,   552,   553,   554,   571,   382,
 -     383,   384,   555,   543,   385,   556,   577,   386,   387,   522,
 -     450,   517,   537,   550,   551,   388,   245,   246,   247,   256
 -};
 +#define yytable_value_is_error(Yytable_value) \
 +  0
  
 -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
 -   STATE-NUM.  */
 -#define YYPACT_NINF -522
 +  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
 +     STATE-NUM.  */
  static const yytype_int16 yypact[] =
  {
-     2538,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -235,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -201,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -203,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -153,  -512,  -210,  -220,
-     -152,  -189,  4119,  -160,  -512,  -128,  -512,  -512,  -512,  -512,
-     3079,  -512,  -512,  -512,  -122,  -512,  -512,   564,  -512,  -512,
-      -71,   -46,  -105,  -512,  6148,  -216,  -512,  -512,  -102,  -512,
-     4119,  -512,  -512,  -512,  4119,   -68,   -66,  -512,  -225,  -187,
-     -512,  -512,  -512,  4606,   -98,  -512,  -512,  -512,  -179,  -512,
-     -104,  -172,  -512,  -512,  4119,  -101,  -512,  -186,   846,  -512,
-     -512,  -512,  -512,  -122,  -233,  -512,  4870,  -217,  -512,   -63,
-     -512,  -151,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  5648,  5648,  5648,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -209,  -512,  -512,  -512,   -94,  -170,  5898,   -92,  -512,
-     5648,  -139,  -133,  -109,  -223,  -103,  -111,  -108,  -106,   -72,
-      -73,  -218,   -86,  -512,  5134,  -512,   -51,  5648,  -512,   -46,
-     4119,  4119,   -50,  3342,  -512,  -512,  -512,   -90,   -89,  -512,
-      -78,   -76,   -85,  5398,   -70,  5648,   -80,   -69,   -64,  -512,
-     -512,  -184,  -512,  -512,  -150,  -512,  -220,   -67,  -512,  -512,
-     -512,  -512,  1128,  -512,  -512,  -512,  -512,  -512,  -512,   -98,
-     4870,  -183,  4870,  -512,  -512,  4870,  4119,  -512,   -40,  -512,
-     -512,  -512,  -169,  -512,  -512,  5648,   -35,  -512,  -512,  5648,
-      -65,  -512,  -512,  -512,  5648,  5648,  5648,  5648,  5648,  5648,
-     5648,  5648,  5648,  5648,  5648,  5648,  5648,  5648,  5648,  5648,
-     5648,  5648,  5648,  -512,  -512,  -512,   -61,  -512,  -512,  -512,
-     -512,  3601,   -50,  -122,  -144,  -512,  -512,  -512,  -512,  -512,
-     1410,  -512,  5648,  -512,  -512,  -142,  5648,  -123,  -512,  -512,
-     -512,  1410,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  5648,  5648,  -512,  -512,  -512,  -512,  4870,
-     -512,  -226,  -512,  3860,  -512,  -512,   -60,   -62,  -512,  -512,
-     -512,  -512,  -512,  -139,  -139,  -133,  -133,  -109,  -109,  -109,
-     -109,  -223,  -223,  -103,  -111,  -108,  -106,   -72,   -73,  5648,
-     -512,  -512,  -138,   -98,   -50,  -512,   -33,  2256,  -168,  -512,
-     -167,  -512,  2798,  1410,  -512,  -512,  -512,  -512,  4342,  -512,
-     -512,  -121,  -512,  -512,   -56,  -512,  -512,  2798,   -58,  -512,
-      -62,   -32,  4119,   -52,   -53,  -512,  -512,  5648,  5648,  -512,
-      -57,   -47,   177,   -48,  1974,  -512,   -45,   -49,  1692,  -512,
-     -512,  -165,  5648,  1692,   -58,  -512,  -512,  1410,  4870,  -512,
-     -512,  -512,   -44,   -62,  -512,  -512,  1410,   -43,  -512,  -512,
-     -512
+     2618,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -224,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -217,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -214,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -261,  -522,  -215,  -213,  -184,  -182,
+     4254,  -196,  -522,  -122,  -522,  -522,  -522,  -522,  3177,  -522,
+     -522,  -522,  -129,  -522,  -522,   574,  -522,  -522,   -90,   -48,
+     -125,  -522,  6375,  -232,  -522,  -522,  -117,  -522,  4254,  -522,
+     -522,  -522,  4254,   -75,   -74,  -522,  -240,  -183,  -522,  -522,
+     -522,  4759,  -108,  -522,  -522,  -522,  -179,  -522,  -114,  -175,
+     -522,  -522,  4254,  -113,  -522,  -216,   866,  -522,  -522,  -522,
+     -522,  -129,  -222,  -522,  5033,  -193,  -522,   -71,  -522,  -158,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  5855,  5855,  5855,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -227,  -522,  -522,  -522,  -102,  -164,  6115,  -100,  -522,
+     5855,  -145,  -199,  -195,  -226,  -128,  -124,  -120,  -116,   -82,
+      -83,  -225,   -96,  -522,  5307,  -522,   -59,  5855,  -522,   -48,
+     4254,  4254,   -58,  3450,  -522,  -522,  -522,   -99,   -98,  -522,
+      -87,   -86,   -95,  5581,   -84,  5855,   -88,   -79,   -80,  -522,
+     -522,  -191,  -522,  -522,  -156,  -522,  -213,   -78,  -522,  -522,
+     -522,  -522,  1158,  -522,  -522,  -522,  -522,  -522,  -522,  -108,
+     5033,  -190,  5033,  -522,  -522,  5033,  4254,  -522,   -57,  -522,
+     -522,  -522,  -163,  -522,  -522,  5855,   -41,  -522,  -522,  5855,
+      -73,  -522,  -522,  -522,  5855,  5855,  5855,  5855,  5855,  5855,
+     5855,  5855,  5855,  5855,  5855,  5855,  5855,  5855,  5855,  5855,
+     5855,  5855,  5855,  -522,  -522,  -522,   -76,  -522,  -522,  -522,
+     -522,  3718,   -58,  -129,  -143,  -522,  -522,  -522,  -522,  -522,
+     1450,  -522,  5855,  -522,  -522,  -142,  5855,  -178,  -522,  -522,
+     -522,  1450,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  5855,  5855,  -522,  -522,  -522,  -522,  5033,
+     -522,  -131,  -522,  3986,  -522,  -522,   -72,   -77,  -522,  -522,
+     -522,  -522,  -522,  -145,  -145,  -199,  -199,  -195,  -195,  -195,
+     -195,  -226,  -226,  -128,  -124,  -120,  -116,   -82,   -83,  5855,
+     -522,  -522,  -141,  -108,   -58,  -522,   -37,  2326,  -161,  -522,
+     -160,  -522,  2886,  1450,  -522,  -522,  -522,  -522,  4485,  -522,
+     -522,  -127,  -522,  -522,   -68,  -522,  -522,  2886,   -70,  -522,
+      -77,   -30,  4254,   -63,   -66,  -522,  -522,  5855,  5855,  -522,
+      -69,   -61,   188,   -55,  2034,  -522,   -54,   -64,  1742,  -522,
+     -522,  -159,  5855,  1742,   -70,  -522,  -522,  1450,  5033,  -522,
+     -522,  -522,   -56,   -77,  -522,  -522,  1450,   -53,  -522,  -522,
+     -522
  };
  
 -/* YYPGOTO[NTERM-NUM].  */
 +  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
 +     Performed when YYTABLE does not specify something else to do.  Zero
 +     means the default is an error.  */
 +static const yytype_uint16 yydefact[] =
 +{
-        0,   147,   148,   146,   181,   174,   175,   177,   178,   179,
-      180,   176,   163,   191,   192,   193,   194,   195,   196,   197,
-      198,   199,   200,   201,   202,   203,   204,   205,   182,   183,
-      184,   206,   207,   208,   152,   150,   151,   149,   155,   153,
-      154,   156,   157,   158,   159,   160,   161,   162,   185,   186,
-      187,   218,   219,   220,   188,   189,   190,   230,   231,   232,
-      129,   128,   127,     0,   130,   209,   210,   211,   212,   213,
-      214,   215,   216,   217,   221,   222,   223,   224,   225,   226,
-      227,   228,   229,   233,   234,   235,   236,   237,   238,   239,
-      240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-      250,   251,   252,   253,   256,   257,   258,   259,   260,   261,
-      263,   264,   265,   266,   267,   268,   270,   271,   272,   273,
-      274,   275,   276,   254,   255,   262,   269,   277,   278,   279,
-      280,   281,   282,   351,   283,   284,   285,   286,   287,   288,
-      289,   290,   292,   293,   294,   295,   296,   297,   299,   300,
-      301,   302,   303,   304,   306,   307,   308,   309,   310,   311,
-      291,   298,   305,   312,   313,   314,   315,   316,   317,   352,
-      353,   354,   355,   356,   357,   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,   350,     0,   173,
-      359,   126,   137,   360,   361,   362,     0,   437,     0,   438,
-        0,   103,   102,     0,   114,   119,   144,   143,   141,   145,
-        0,   138,   140,   124,   167,   142,   358,     0,   434,   436,
-        0,     0,     0,   365,     0,     0,    91,    88,     0,   101,
-        0,   110,   104,   112,     0,   113,     0,    89,   120,     0,
-       94,   139,   125,     0,   168,     1,   435,   165,     0,   136,
-      134,     0,   132,   363,     0,     0,    92,     0,     0,   439,
-      105,   109,   111,   107,   115,   106,     0,   121,    97,     0,
-       95,     0,     2,     8,     9,     4,     5,     6,     7,    11,
-       10,     0,     0,     0,   169,    37,    36,    38,    35,     3,
-       13,    31,    15,    20,    21,     0,     0,    25,     0,    39,
-        0,    43,    46,    49,    54,    57,    59,    61,    63,    65,
-       67,    69,     0,    29,     0,   164,     0,     0,   131,     0,
-        0,     0,     0,     0,   367,    90,    93,     0,     0,   419,
-        0,     0,     0,     0,     0,     0,     0,     0,   391,   400,
-      404,    39,    72,    85,     0,   380,     0,   124,   383,   402,
-      382,   381,     0,   384,   385,   386,   387,   388,   389,   108,
-        0,   116,     0,   375,   123,     0,     0,    99,     0,    96,
-       32,    33,     0,    17,    18,     0,     0,    23,    22,     0,
-      173,    26,    28,    34,     0,     0,     0,     0,     0,     0,
++       0,   149,   150,   148,   185,   176,   177,   179,   180,   181,
++     182,   183,   184,   178,   165,   195,   196,   197,   198,   199,
++     200,   201,   202,   203,   207,   208,   209,   210,   211,   212,
++     186,   187,   188,   216,   217,   218,   154,   152,   153,   151,
++     157,   155,   156,   158,   159,   160,   161,   162,   163,   164,
++     189,   190,   191,   228,   229,   230,   192,   193,   194,   240,
++     241,   242,   204,   205,   206,   213,   214,   215,   131,   130,
++     129,     0,   132,   219,   220,   221,   222,   223,   224,   225,
++     226,   227,   231,   232,   233,   234,   235,   236,   237,   238,
++     239,   243,   244,   245,   246,   247,   248,   249,   250,   251,
++     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
++     262,   263,   266,   267,   268,   269,   270,   271,   273,   274,
++     275,   276,   277,   278,   280,   281,   282,   283,   284,   285,
++     286,   264,   265,   272,   279,   287,   288,   289,   290,   291,
++     292,   361,   293,   294,   295,   296,   297,   298,   299,   300,
++     302,   303,   304,   305,   306,   307,   309,   310,   311,   312,
++     313,   314,   316,   317,   318,   319,   320,   321,   301,   308,
++     315,   322,   323,   324,   325,   326,   327,   362,   363,   364,
++     365,   366,   367,   328,   329,   330,   331,   332,   333,   334,
++     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
++     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
++     355,   356,   357,   358,   359,   360,     0,   175,   369,   128,
++     139,   370,   371,   372,     0,   447,     0,   448,     0,   105,
++     104,     0,   116,   121,   146,   145,   143,   147,     0,   140,
++     142,   126,   169,   144,   368,     0,   444,   446,     0,     0,
++       0,   375,     0,     0,    93,    90,     0,   103,     0,   112,
++     106,   114,     0,   115,     0,    91,   122,     0,    96,   141,
++     127,     0,   170,     1,   445,   167,     0,   138,   136,     0,
++     134,   373,     0,     0,    94,     0,     0,   449,   107,   111,
++     113,   109,   117,   108,     0,   123,    99,     0,    97,     0,
++       2,    10,    11,     4,     5,     6,     7,     8,     9,    13,
++      12,     0,     0,     0,   171,    39,    38,    40,    37,     3,
++      15,    33,    17,    22,    23,     0,     0,    27,     0,    41,
++       0,    45,    48,    51,    56,    59,    61,    63,    65,    67,
++      69,    71,     0,    31,     0,   166,     0,     0,   133,     0,
++       0,     0,     0,     0,   377,    92,    95,     0,     0,   429,
++       0,     0,     0,     0,     0,     0,     0,     0,   401,   410,
++     414,    41,    74,    87,     0,   390,     0,   126,   393,   412,
++     392,   391,     0,   394,   395,   396,   397,   398,   399,   110,
++       0,   118,     0,   385,   125,     0,     0,   101,     0,    98,
++      34,    35,     0,    19,    20,     0,     0,    25,    24,     0,
++     175,    28,    30,    36,     0,     0,     0,     0,     0,     0,
 +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,    70,   170,   171,     0,   166,    87,   135,
-      133,     0,     0,   373,     0,   371,   366,   368,   430,   429,
-        0,   421,     0,   433,   431,     0,     0,     0,   416,   417,
-      390,     0,    75,    76,    78,    77,    80,    81,    82,    83,
-       84,    79,    74,     0,     0,   405,   401,   403,   118,     0,
-      378,     0,   122,     0,   100,    12,     0,    19,    16,    27,
-       40,    41,    42,    45,    44,    47,    48,    52,    53,    50,
-       51,    55,    56,    58,    60,    62,    64,    66,    68,     0,
-      172,   364,     0,   374,     0,   369,     0,     0,     0,   432,
-        0,   415,     0,   392,    73,    86,   117,   376,     0,    98,
-       14,     0,   370,   372,     0,   424,   423,   426,   398,   411,
-      409,     0,     0,     0,     0,   377,   379,     0,     0,   425,
-        0,     0,   408,     0,     0,   406,     0,     0,     0,   393,
-       71,     0,   427,     0,   398,   397,   399,   413,     0,   395,
-      418,   394,     0,   428,   422,   407,   414,     0,   410,   420,
-      412
++       0,     0,     0,    72,   172,   173,     0,   168,    89,   137,
++     135,     0,     0,   383,     0,   381,   376,   378,   440,   439,
++       0,   431,     0,   443,   441,     0,     0,     0,   426,   427,
++     400,     0,    77,    78,    80,    79,    82,    83,    84,    85,
++      86,    81,    76,     0,     0,   415,   411,   413,   120,     0,
++     388,     0,   124,     0,   102,    14,     0,    21,    18,    29,
++      42,    43,    44,    47,    46,    49,    50,    54,    55,    52,
++      53,    57,    58,    60,    62,    64,    66,    68,    70,     0,
++     174,   374,     0,   384,     0,   379,     0,     0,     0,   442,
++       0,   425,     0,   402,    75,    88,   119,   386,     0,   100,
++      16,     0,   380,   382,     0,   434,   433,   436,   408,   421,
++     419,     0,     0,     0,     0,   387,   389,     0,     0,   435,
++       0,     0,   418,     0,     0,   416,     0,     0,     0,   403,
++      73,     0,   437,     0,   408,   407,   409,   423,     0,   405,
++     428,   404,     0,   438,   432,   417,   424,     0,   420,   430,
++     422
 +};
 +
 +  /* YYPGOTO[NTERM-NUM].  */
  static const yytype_int16 yypgoto[] =
  {
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,   -96,  -512,  -263,  -262,  -304,  -264,  -205,  -200,
-     -206,  -197,  -202,  -196,  -512,  -252,  -512,  -282,  -512,  -296,
-     -512,     3,  -512,  -512,  -512,     6,  -512,  -512,  -512,   -34,
-      -25,   -27,  -512,  -512,  -489,  -512,  -512,  -512,  -512,  -110,
-     -512,  -221,  -228,  -512,  -512,     0,  -240,  -512,    12,  -512,
-     -512,  -512,  -328,  -330,  -199,  -272,  -363,  -512,  -273,  -364,
-     -511,  -308,  -512,  -512,  -314,  -309,  -512,  -512,    -2,  -441,
-     -260,  -512,  -512,  -279,  -512,  -512,  -512,  -512,  -512,  -512,
-     -512,  -512,  -512,  -512,  -512,  -512,  -512,    14,  -512,  -512
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -103,  -522,  -267,  -266,  -296,  -270,  -211,  -210,
+     -218,  -209,  -208,  -212,  -522,  -259,  -522,  -291,  -522,  -309,
+     -522,     5,  -522,  -522,  -522,     6,  -522,  -522,  -522,   -40,
+      -34,   -36,  -522,  -522,  -498,  -522,  -522,  -522,  -522,  -118,
+     -522,  -229,  -236,  -522,  -522,     0,  -245,  -522,     1,  -522,
+     -522,  -522,  -335,  -343,  -207,  -285,  -379,  -522,  -284,  -375,
+     -521,  -321,  -522,  -522,  -329,  -328,  -522,  -522,   -16,  -447,
+     -275,  -522,  -522,  -294,  -522,  -522,  -522,  -522,  -522,  -522,
+     -522,  -522,  -522,  -522,  -522,  -522,  -522,     2,  -522,  -522
  };
  
 -/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
 -   positive, shift that token.  If negative, reduce the rule which
 -   number is the opposite.  If zero, do what YYDEFACT says.
 -   If YYTABLE_NINF, syntax error.  */
 -#define YYTABLE_NINF -407
 +  /* YYDEFGOTO[NTERM-NUM].  */
 +static const yytype_int16 yydefgoto[] =
 +{
-       -1,   309,   310,   311,   476,   312,   313,   314,   315,   316,
-      317,   318,   361,   320,   321,   322,   323,   324,   325,   326,
-      327,   328,   329,   330,   331,   362,   499,   363,   463,   364,
-      429,   365,   218,   386,   291,   366,   220,   221,   222,   251,
-      252,   253,   223,   224,   225,   226,   227,   228,   271,   272,
-      229,   230,   231,   232,   268,   333,   264,   234,   235,   236,
-      340,   274,   343,   344,   434,   435,   384,   471,   368,   369,
-      370,   371,   451,   534,   560,   542,   543,   544,   561,   372,
-      373,   374,   545,   533,   375,   546,   567,   376,   377,   512,
-      440,   507,   527,   540,   541,   378,   237,   238,   239,   248
++      -1,   319,   320,   321,   486,   322,   323,   324,   325,   326,
++     327,   328,   371,   330,   331,   332,   333,   334,   335,   336,
++     337,   338,   339,   340,   341,   372,   509,   373,   473,   374,
++     439,   375,   226,   396,   299,   376,   228,   229,   230,   259,
++     260,   261,   231,   232,   233,   234,   235,   236,   279,   280,
++     237,   238,   239,   240,   276,   343,   272,   242,   243,   244,
++     350,   282,   353,   354,   444,   445,   394,   481,   378,   379,
++     380,   381,   461,   544,   570,   552,   553,   554,   571,   382,
++     383,   384,   555,   543,   385,   556,   577,   386,   387,   522,
++     450,   517,   537,   550,   551,   388,   245,   246,   247,   256
 +};
 +
 +  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
 +     positive, shift that token.  If negative, reduce the rule whose
 +     number is the opposite.  If YYTABLE_NINF, syntax error.  */
  static const yytype_int16 yytable[] =
  {
-      233,   254,   261,   217,   383,   277,   219,   392,   467,   269,
-      513,   332,   431,   437,   245,   411,   412,   468,   287,   470,
-      240,   242,   472,   531,   263,   422,   261,   393,   394,   254,
-      285,   380,   263,   556,   517,   401,   518,   559,   531,   286,
-      334,   263,   559,   379,   381,   247,   -30,   385,   395,   276,
-      413,   414,   396,   341,   241,   246,   243,   445,   473,   447,
-      423,   452,   453,   454,   455,   456,   457,   458,   459,   460,
-      461,   334,   288,   250,   334,   289,   506,   335,   290,   346,
-      462,   469,   426,   336,   338,   428,   398,   475,   528,   529,
-      339,   562,   399,   464,   464,   464,   258,   464,   383,   477,
-      383,   437,   256,   383,   249,   257,   516,   487,   488,   489,
-      490,   388,   464,   261,   389,   465,   566,   479,   504,   341,
-      464,   505,   341,   509,   504,   409,   410,   522,   213,   214,
-      215,   404,   405,   406,   407,   263,   408,   415,   416,   464,
-      511,   464,   537,   437,   483,   484,   508,   485,   486,   467,
-      510,   491,   492,   267,   273,   536,   283,   278,   284,   334,
-      337,   387,   397,   402,   345,   341,   417,   319,   418,   419,
-      420,   421,   424,   427,   433,   438,   439,   441,   270,   442,
-      443,   514,   515,   448,   474,   446,   449,   383,   -29,   478,
-      524,   -24,   547,   503,   554,   568,   450,   500,   520,   538,
-      464,  -396,   467,   521,   548,   390,   391,   549,   552,   553,
-      341,   358,   493,   495,   557,   558,   530,   570,   494,   497,
-      281,   569,   255,   496,   403,   280,   498,   282,   244,   430,
-      262,   530,   523,   502,   525,   555,   383,   233,   319,   564,
-      217,   319,   551,   219,   275,   565,   279,   526,   539,     0,
-      255,   266,   341,     0,   255,   550,   563,     0,     0,     0,
+      241,   262,   269,   393,   402,   225,   227,   477,   285,   277,
+      447,   478,   342,   480,   523,   441,   482,   253,   250,   403,
+      404,   295,   421,   422,   541,   293,   269,   271,   432,   262,
+      221,   222,   223,   566,   294,   271,   411,   569,   -32,   541,
+      405,   248,   569,   284,   406,   271,   389,   391,   249,   419,
+      420,   344,   390,   351,   455,   251,   457,   423,   424,   356,
+      254,   483,   255,   433,   462,   463,   464,   465,   466,   467,
+      468,   469,   470,   471,   344,   516,   264,   344,   417,   265,
+      418,   395,   257,   472,   479,   436,   296,   345,   438,   297,
+      258,   348,   298,   346,   474,   521,   487,   349,   447,   393,
+      526,   393,   408,   485,   393,   538,   539,   572,   409,   474,
+      266,   474,   474,   474,   398,   269,   474,   399,   489,   475,
+      576,   351,   425,   426,   351,   497,   498,   499,   500,   514,
+      474,   514,   515,   519,   532,   414,   415,   416,   271,   527,
+      447,   528,   275,   518,   281,   474,   547,   520,   477,   546,
+      493,   494,   286,   495,   496,   501,   502,   291,   292,   344,
+      347,   397,   355,   427,   407,   412,   428,   351,   329,   429,
+      430,   431,   434,   437,   443,   484,   448,   449,   451,   452,
+      453,   456,   524,   525,   278,   458,   459,   -31,   393,   578,
+      460,   488,   510,   -26,   534,   474,   530,   548,   513,  -406,
+      531,   477,   557,   558,   559,   563,   562,   564,   400,   401,
+      568,   505,   351,   540,   368,   567,   503,   580,   504,   579,
+      508,   506,   289,   507,   288,   252,   290,   413,   540,   533,
+      263,   440,   565,   535,   574,   512,   575,   393,   270,   561,
+      287,   329,   536,   549,   329,   241,     0,   274,     0,     0,
+      225,   227,   283,   573,   351,     0,   560,     0,   263,     0,
+        0,     0,   263,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,   393,     0,     0,
+        0,     0,   352,     0,     0,     0,   377,     0,     0,     0,
+        0,     0,     0,   542,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,   269,     0,   542,     0,
+        0,   490,   491,   492,   329,   329,   329,   329,   329,   329,
+      329,   329,   329,   329,   329,   329,   329,   329,   329,   329,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,   342,     0,   383,     0,   367,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,   532,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,   261,     0,   532,     0,   480,   481,
-      482,   319,   319,   319,   319,   319,   319,   319,   319,   319,
-      319,   319,   319,   319,   319,   319,   319,     0,     0,     0,
+      352,   442,     0,   352,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      342,   432,     0,   342,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,   377,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,   352,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,   367,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,   342,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@@ -2340,113 -2526,224 +2291,224 @@@ static const yytype_int16 yycheck[] 
       186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
       196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
       206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-      216,   217,   218,   219,   220,   221,   222,    -1,   224,   225,
-      226,   227,   228,   229,   230,   231,   232,   233,    -1,    -1,
-      236,   237,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   255,
-       -1,    -1,   258,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      266,   267,   268,   269,     6,     7,     8,     9,    10,    11,
-       12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    26,    27,    28,    29,    30,    31,
-       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-       42,    43,    44,    45,    46,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,
-       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-       72,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    81,
-       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-      122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-      132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-      152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-      162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-      172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-      222,    -1,   224,   225,   226,   227,   228,   229,   230,   231,
-      232,   233,    -1,    -1,   236,   237,    -1,    -1,    -1,    -1,
+      216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+      226,   227,   228,   229,   230,    -1,    -1,   233,    -1,    -1,
+       -1,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+       15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    28,    29,    30,    31,    32,    33,    34,
+       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+       45,    46,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,   289,   290,   291,   292,   293,    63,    64,
+       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+       75,    76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,
+       -1,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+      215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+      225,   226,   227,   228,   229,   230,    -1,   232,   233,   234,
+      235,   236,   237,   238,   239,   240,   241,   242,   243,    -1,
+       -1,   246,   247,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,   255,     6,     7,     8,     9,    10,    11,
-       12,    13,    -1,   265,   266,   267,   268,   269,    -1,    -1,
-       -1,    -1,    -1,    -1,    26,    27,    28,    29,    30,    31,
-       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-       42,    43,    44,    45,    46,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,
-       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-       72,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    81,
-       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-      122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-      132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-      152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-      162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-      172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-      222,    -1,   224,   225,   226,   227,   228,   229,   230,   231,
-      232,   233,    -1,    -1,   236,   237,    -1,    -1,    -1,    -1,
+      265,    -1,    -1,    -1,   269,   270,    -1,    -1,    -1,    -1,
+       -1,   276,   277,   278,   279,     6,     7,     8,     9,    10,
+       11,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,
+       31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+       41,    42,    43,    44,    45,    46,    47,    48,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,   255,     6,     7,     8,     9,    10,    11,
-       12,    13,    -1,    -1,   266,   267,   268,   269,    -1,    -1,
-       -1,    -1,    -1,    -1,    26,    27,    28,    29,    30,    31,
-       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-       42,    43,    44,    45,    46,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,
-       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-       72,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    81,
-       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-      122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-      132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-      152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-      162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-      172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-      222,    -1,   224,   225,   226,   227,   228,   229,   230,   231,
-      232,   233,    -1,    -1,   236,   237,    -1,    -1,    -1,    -1,
+       -1,    -1,    63,    64,    65,    66,    67,    68,    69,    70,
+       71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+       -1,    -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,
+       91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+      101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+      111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+      121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
+      131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+      141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+      151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+      171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
+      181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+      191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+      201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
+      211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
+      221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
+       -1,   232,   233,   234,   235,   236,   237,   238,   239,   240,
+      241,   242,   243,    -1,    -1,   246,   247,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,   255,     6,     7,     8,     9,    10,    11,
-       12,    13,    -1,    -1,   266,   267,   268,   269,    -1,    -1,
-       -1,    -1,    -1,    -1,    26,    27,    28,    29,    30,    31,
-       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-       42,    43,    44,    45,    46,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,
-       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-       72,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    81,
-       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-      122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-      132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-      152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-      162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-      172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-      222,    -1,    -1,   225
+       -1,    -1,    -1,    -1,   265,    -1,    -1,   268,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,   276,   277,   278,   279,     6,
+        7,     8,     9,    10,    11,    12,    13,    14,    15,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+       47,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    63,    64,    65,    66,
+       67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+       77,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,    86,
+       87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+      107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+      117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+      127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+      137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+      147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+      157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+      167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+      177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+      187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+      197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+      207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+      217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+      227,   228,   229,   230,    -1,   232,   233,   234,   235,   236,
+      237,   238,   239,   240,   241,   242,   243,    -1,    -1,   246,
+      247,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   265,    -1,
+       -1,    -1,   269,    -1,    -1,    -1,    -1,    -1,    -1,   276,
+      277,   278,   279,     6,     7,     8,     9,    10,    11,    12,
+       13,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,
+       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+       43,    44,    45,    46,    47,    48,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+       73,    74,    75,    76,    77,    78,    79,    80,    -1,    -1,
+       -1,    -1,    -1,    86,    87,    88,    89,    90,    91,    92,
+       93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
+      103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+      113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+      133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+      143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
+      153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+      163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+      173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
+      183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+      193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
+      203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+      213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+      223,   224,   225,   226,   227,   228,   229,   230,    -1,   232,
+      233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
+      243,    -1,    -1,   246,   247,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,   265,    -1,    -1,   268,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,   276,   277,   278,   279,     6,     7,     8,
+        9,    10,    11,    12,    13,    14,    15,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
+       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    63,    64,    65,    66,    67,    68,
+       69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+       79,    80,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
+       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+       99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+      109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+      119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+      129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+      149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+      159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+      169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+      179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+      189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+      199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+      209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+      219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+      229,   230,    -1,   232,   233,   234,   235,   236,   237,   238,
+      239,   240,   241,   242,   243,    -1,    -1,   246,   247,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,   275,   276,   277,   278,
+      279,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+       15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    28,    29,    30,    31,    32,    33,    34,
+       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+       45,    46,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,
+       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+       75,    76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,
+       -1,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+      215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+      225,   226,   227,   228,   229,   230,    -1,   232,   233,   234,
+      235,   236,   237,   238,   239,   240,   241,   242,   243,    -1,
+       -1,   246,   247,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      265,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+       15,   276,   277,   278,   279,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    28,    29,    30,    31,    32,    33,    34,
+       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+       45,    46,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,
+       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+       75,    76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,
+       -1,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+      215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+      225,   226,   227,   228,   229,   230,    -1,   232,   233,   234,
+      235,   236,   237,   238,   239,   240,   241,   242,   243,    -1,
+       -1,   246,   247,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      265,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+       15,   276,   277,   278,   279,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    28,    29,    30,    31,    32,    33,    34,
+       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+       45,    46,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,
+       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+       75,    76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,
+       -1,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+      215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+      225,   226,   227,   228,   229,   230,    -1,    -1,   233
  };
  
 -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
 -   symbol of state STATE-NUM.  */
 +  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
 +     symbol of state STATE-NUM.  */
  static const yytype_uint16 yystos[] =
  {
         0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
       203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
       213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-      225,   279,   280,   281,   282,   283,   284,   319,   320,   323,
-      324,   325,   326,   330,   331,   332,   333,   334,   335,   338,
-      339,   340,   341,   343,   345,   346,   347,   384,   385,   386,
-      255,   255,   224,   259,   346,   224,   265,   265,   387,   256,
-      262,   327,   328,   329,   339,   343,   262,   265,   224,   224,
-      265,   340,   343,   257,   344,     0,   385,   224,   342,    55,
-      224,   336,   337,   259,   349,   343,   265,   344,   259,   366,
-      328,   327,   329,   224,   224,   255,   264,   344,   259,   262,
-      265,   322,   224,   226,   227,   228,   229,   230,   231,   232,
-      233,   236,   237,   255,   258,   266,   267,   268,   269,   289,
-      290,   291,   293,   294,   295,   296,   297,   298,   299,   300,
-      301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
-      311,   312,   313,   343,   257,   256,   262,   264,   256,   262,
-      348,   339,   343,   350,   351,   265,   265,    14,    15,    16,
-       18,    19,    20,    21,    22,    23,    24,   223,   259,   260,
-      265,   300,   313,   315,   317,   319,   323,   343,   356,   357,
-      358,   359,   367,   368,   369,   372,   375,   376,   383,   344,
-      264,   344,   259,   315,   354,   264,   321,   224,   262,   265,
-      300,   300,   317,   236,   237,   257,   261,   256,   256,   262,
-      222,   315,   255,   300,   270,   271,   272,   267,   269,   234,
-      235,   238,   239,   273,   274,   240,   241,   277,   276,   275,
-      242,   244,   243,   278,   258,   258,   313,   224,   313,   318,
-      337,   350,   343,   224,   352,   353,   260,   351,   265,   265,
-      378,   255,   255,   265,   265,   317,   255,   317,   263,   255,
-      260,   360,   245,   246,   247,   248,   249,   250,   251,   252,
-      253,   254,   264,   316,   262,   265,   260,   357,   354,   264,
-      354,   355,   354,   350,   224,   256,   292,   317,   224,   315,
-      300,   300,   300,   302,   302,   303,   303,   304,   304,   304,
-      304,   305,   305,   306,   307,   308,   309,   310,   311,   314,
-      258,   260,   352,   344,   262,   265,   357,   379,   317,   265,
-      317,   263,   377,   367,   315,   315,   354,   260,   262,   260,
-      258,   317,   265,   353,   223,   356,   368,   380,   256,   256,
-      317,   332,   339,   371,   361,   260,   354,   263,   255,   371,
-      381,   382,   363,   364,   365,   370,   373,   224,   256,   260,
-      315,   317,   265,   256,    17,   359,   358,   259,   264,   358,
-      362,   366,   256,   317,   362,   363,   367,   374,   354,   265,
-      260
+      223,   224,   225,   226,   227,   228,   229,   230,   233,   289,
+      290,   291,   292,   293,   294,   329,   330,   333,   334,   335,
+      336,   340,   341,   342,   343,   344,   345,   348,   349,   350,
+      351,   353,   355,   356,   357,   394,   395,   396,   265,   265,
+      232,   269,   356,   232,   275,   275,   397,   266,   272,   337,
+      338,   339,   349,   353,   272,   275,   232,   232,   275,   350,
+      353,   267,   354,     0,   395,   232,   352,    57,   232,   346,
+      347,   269,   359,   353,   275,   354,   269,   376,   338,   337,
+      339,   232,   232,   265,   274,   354,   269,   272,   275,   332,
+      232,   234,   235,   236,   237,   238,   239,   240,   241,   242,
+      243,   246,   247,   265,   268,   276,   277,   278,   279,   299,
+      300,   301,   303,   304,   305,   306,   307,   308,   309,   310,
+      311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
+      321,   322,   323,   353,   267,   266,   272,   274,   266,   272,
+      358,   349,   353,   360,   361,   275,   275,    16,    17,    18,
+       20,    21,    22,    23,    24,    25,    26,   231,   269,   270,
+      275,   310,   323,   325,   327,   329,   333,   353,   366,   367,
+      368,   369,   377,   378,   379,   382,   385,   386,   393,   354,
+      274,   354,   269,   325,   364,   274,   331,   232,   272,   275,
+      310,   310,   327,   246,   247,   267,   271,   266,   266,   272,
+      230,   325,   265,   310,   280,   281,   282,   277,   279,   244,
+      245,   248,   249,   283,   284,   250,   251,   287,   286,   285,
+      252,   254,   253,   288,   268,   268,   323,   232,   323,   328,
+      347,   360,   353,   232,   362,   363,   270,   361,   275,   275,
+      388,   265,   265,   275,   275,   327,   265,   327,   273,   265,
+      270,   370,   255,   256,   257,   258,   259,   260,   261,   262,
+      263,   264,   274,   326,   272,   275,   270,   367,   364,   274,
+      364,   365,   364,   360,   232,   266,   302,   327,   232,   325,
+      310,   310,   310,   312,   312,   313,   313,   314,   314,   314,
+      314,   315,   315,   316,   317,   318,   319,   320,   321,   324,
+      268,   270,   362,   354,   272,   275,   367,   389,   327,   275,
+      327,   273,   387,   377,   325,   325,   364,   270,   272,   270,
+      268,   327,   275,   363,   231,   366,   378,   390,   266,   266,
+      327,   342,   349,   381,   371,   270,   364,   273,   265,   381,
+      391,   392,   373,   374,   375,   380,   383,   232,   266,   270,
+      325,   327,   275,   266,    19,   369,   368,   269,   274,   368,
+      372,   376,   266,   327,   372,   373,   377,   384,   364,   275,
+      270
  };
  
 -#define yyerrok               (yyerrstatus = 0)
 -#define yyclearin     (yychar = YYEMPTY)
 -#define YYEMPTY               (-2)
 -#define YYEOF         0
 +  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 +static const yytype_uint16 yyr1[] =
 +{
-        0,   288,   289,   290,   290,   290,   290,   290,   290,   290,
-      290,   290,   290,   291,   291,   291,   291,   291,   291,   292,
-      293,   294,   295,   295,   296,   296,   297,   297,   298,   299,
-      299,   300,   300,   300,   300,   301,   301,   301,   301,   302,
-      302,   302,   302,   303,   303,   303,   304,   304,   304,   305,
-      305,   305,   305,   305,   306,   306,   306,   307,   307,   308,
-      308,   309,   309,   310,   310,   311,   311,   312,   312,   313,
-      314,   313,   315,   315,   316,   316,   316,   316,   316,   316,
-      316,   316,   316,   316,   316,   317,   317,   318,   319,   319,
-      319,   319,   319,   319,   319,   319,   319,   321,   320,   322,
-      322,   323,   324,   324,   325,   325,   326,   327,   327,   328,
-      328,   328,   328,   329,   330,   330,   330,   330,   330,   331,
-      331,   331,   331,   331,   332,   332,   333,   334,   334,   334,
-      334,   335,   336,   336,   337,   337,   337,   338,   339,   339,
-      340,   340,   340,   340,   340,   340,   341,   341,   341,   341,
-      341,   341,   341,   341,   341,   341,   341,   341,   341,   341,
-      341,   341,   341,   341,   341,   342,   342,   343,   343,   344,
-      344,   344,   344,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
-      346,   346,   346,   348,   347,   349,   347,   350,   350,   351,
-      351,   352,   352,   353,   353,   354,   354,   354,   355,   355,
-      356,   357,   357,   358,   358,   358,   358,   358,   358,   358,
-      359,   360,   361,   359,   362,   362,   364,   363,   365,   363,
-      366,   366,   367,   367,   368,   368,   369,   370,   370,   371,
-      371,   373,   372,   374,   374,   375,   375,   377,   376,   378,
-      376,   379,   376,   380,   380,   381,   381,   382,   382,   383,
-      383,   383,   383,   383,   384,   384,   385,   385,   387,   386
++       0,   298,   299,   300,   300,   300,   300,   300,   300,   300,
++     300,   300,   300,   300,   300,   301,   301,   301,   301,   301,
++     301,   302,   303,   304,   305,   305,   306,   306,   307,   307,
++     308,   309,   309,   310,   310,   310,   310,   311,   311,   311,
++     311,   312,   312,   312,   312,   313,   313,   313,   314,   314,
++     314,   315,   315,   315,   315,   315,   316,   316,   316,   317,
++     317,   318,   318,   319,   319,   320,   320,   321,   321,   322,
++     322,   323,   324,   323,   325,   325,   326,   326,   326,   326,
++     326,   326,   326,   326,   326,   326,   326,   327,   327,   328,
++     329,   329,   329,   329,   329,   329,   329,   329,   329,   331,
++     330,   332,   332,   333,   334,   334,   335,   335,   336,   337,
++     337,   338,   338,   338,   338,   339,   340,   340,   340,   340,
++     340,   341,   341,   341,   341,   341,   342,   342,   343,   344,
++     344,   344,   344,   345,   346,   346,   347,   347,   347,   348,
++     349,   349,   350,   350,   350,   350,   350,   350,   351,   351,
++     351,   351,   351,   351,   351,   351,   351,   351,   351,   351,
++     351,   351,   351,   351,   351,   351,   351,   352,   352,   353,
++     353,   354,   354,   354,   354,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     355,   355,   355,   355,   355,   355,   355,   355,   355,   355,
++     356,   356,   356,   358,   357,   359,   357,   360,   360,   361,
++     361,   362,   362,   363,   363,   364,   364,   364,   365,   365,
++     366,   367,   367,   368,   368,   368,   368,   368,   368,   368,
++     369,   370,   371,   369,   372,   372,   374,   373,   375,   373,
++     376,   376,   377,   377,   378,   378,   379,   380,   380,   381,
++     381,   383,   382,   384,   384,   385,   385,   387,   386,   388,
++     386,   389,   386,   390,   390,   391,   391,   392,   392,   393,
++     393,   393,   393,   393,   394,   394,   395,   395,   397,   396
 +};
 +
 +  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 +static const yytype_uint8 yyr2[] =
 +{
 +       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-        1,     1,     3,     1,     4,     1,     3,     2,     2,     1,
-        1,     1,     2,     2,     2,     1,     2,     3,     2,     1,
-        1,     1,     2,     2,     2,     1,     1,     1,     1,     1,
-        3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
-        3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
++       1,     1,     1,     1,     3,     1,     4,     1,     3,     2,
++       2,     1,     1,     1,     2,     2,     2,     1,     2,     3,
++       2,     1,     1,     1,     2,     2,     2,     1,     1,     1,
++       1,     1,     3,     3,     3,     1,     3,     3,     1,     3,
++       3,     1,     3,     3,     3,     3,     1,     3,     3,     1,
 +       3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
-        0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
-        1,     1,     1,     1,     1,     1,     3,     1,     2,     2,
-        4,     2,     3,     4,     2,     3,     4,     0,     6,     2,
-        3,     2,     1,     1,     2,     3,     3,     2,     3,     2,
-        1,     2,     1,     1,     1,     3,     4,     6,     5,     1,
-        2,     3,     5,     4,     1,     2,     1,     1,     1,     1,
-        1,     4,     1,     3,     1,     3,     1,     1,     1,     2,
++       3,     1,     0,     6,     1,     3,     1,     1,     1,     1,
++       1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
++       2,     2,     4,     2,     3,     4,     2,     3,     4,     0,
++       6,     2,     3,     2,     1,     1,     2,     3,     3,     2,
++       3,     2,     1,     2,     1,     1,     1,     3,     4,     6,
++       5,     1,     2,     3,     5,     4,     1,     2,     1,     1,
++       1,     1,     1,     4,     1,     3,     1,     3,     1,     1,
++       1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     1,     1,     1,     4,     1,     3,     1,
++       2,     2,     3,     3,     4,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-        1,     1,     1,     1,     4,     1,     3,     1,     2,     2,
-        3,     3,     4,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     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,
 +       4,     1,     3,     1,     2,     1,     3,     4,     1,     3,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       2,     0,     0,     5,     1,     1,     0,     2,     0,     2,
 +       2,     3,     1,     2,     1,     2,     5,     3,     1,     1,
 +       4,     0,     8,     0,     1,     3,     2,     0,     6,     0,
 +       8,     0,     7,     1,     1,     1,     0,     2,     3,     2,
 +       2,     2,     3,     2,     1,     2,     1,     1,     0,     3
 +};
  
 -#define YYACCEPT      goto yyacceptlab
 -#define YYABORT               goto yyabortlab
 -#define YYERROR               goto yyerrorlab
  
 +#define yyerrok         (yyerrstatus = 0)
 +#define yyclearin       (yychar = YYEMPTY)
 +#define YYEMPTY         (-2)
 +#define YYEOF           0
  
 -/* Like YYERROR except do call yyerror.  This remains here temporarily
 -   to ease the transition to the new meaning of YYERROR, for GCC.
 -   Once GCC version 2 has supplanted version 1, this can go.  */
 +#define YYACCEPT        goto yyacceptlab
 +#define YYABORT         goto yyabortlab
 +#define YYERROR         goto yyerrorlab
  
 -#define YYFAIL                goto yyerrlab
  
  #define YYRECOVERING()  (!!yyerrstatus)
  
@@@ -3287,258 -3621,312 +3352,280 @@@ yyreduce
    switch (yyn)
      {
          case 2:
- #line 252 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 -
 -/* Line 1455 of yacc.c  */
 -#line 253 "glslang.y"
++#line 253 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[(1) - (1)].lex).loc, (yyvsp[(1) - (1)].lex).symbol, (yyvsp[(1) - (1)].lex).string);
 -    ;}
 +        (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
 +    }
- #line 3295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
    case 3:
- #line 258 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 -
 -/* Line 1455 of yacc.c  */
 -#line 259 "glslang.y"
++#line 259 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
 -    ;}
 +        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
 +    }
- #line 3303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
    case 4:
- #line 261 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 -
 -/* Line 1455 of yacc.c  */
 -#line 262 "glslang.y"
++#line 262 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i, (yyvsp[(1) - (1)].lex).loc, true);
 -    ;}
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
 +    }
- #line 3311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
    case 5:
- #line 264 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 -
 -/* Line 1455 of yacc.c  */
 -#line 265 "glslang.y"
++#line 265 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned literal");
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u, (yyvsp[(1) - (1)].lex).loc, true);
 -    ;}
 +        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
 +    }
- #line 3320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
    case 6:
- #line 268 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 -
 -/* Line 1455 of yacc.c  */
 -#line 269 "glslang.y"
++#line 269 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer literal");
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i64, (yyvsp[(1) - (1)].lex).loc, true);
 -    ;}
 +        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal");
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true);
 +    }
- #line 3329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
    case 7:
- #line 272 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 -
 -/* Line 1455 of yacc.c  */
 -#line 273 "glslang.y"
++#line 273 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer literal");
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u64, (yyvsp[(1) - (1)].lex).loc, true);
 -    ;}
 +        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal");
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true);
 +    }
- #line 3338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
    case 8:
- #line 276 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 -
 -/* Line 1455 of yacc.c  */
 -#line 277 "glslang.y"
++#line 277 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
-         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
+ #ifdef AMD_EXTENSIONS
 -        parseContext.int16Check((yyvsp[(1) - (1)].lex).loc, "16-bit integer literal");
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[(1) - (1)].lex).i, (yyvsp[(1) - (1)].lex).loc, true);
++        parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer literal");
++        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
+ #endif
 -    ;}
 +    }
- #line 3346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
    case 9:
- #line 279 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 -
 -/* Line 1455 of yacc.c  */
 -#line 283 "glslang.y"
++#line 283 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+     {
+ #ifdef AMD_EXTENSIONS
 -        parseContext.int16Check((yyvsp[(1) - (1)].lex).loc, "16-bit unsigned integer literal");
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[(1) - (1)].lex).u, (yyvsp[(1) - (1)].lex).loc, true);
++        parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal");
++        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
+ #endif
 -    ;}
++    }
++#line 3425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+     break;
+   case 10:
 -
 -/* Line 1455 of yacc.c  */
 -#line 289 "glslang.y"
++#line 289 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+     {
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtFloat, (yyvsp[(1) - (1)].lex).loc, true);
 -    ;}
++        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
++    }
++#line 3433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+     break;
+   case 11:
 -
 -/* Line 1455 of yacc.c  */
 -#line 292 "glslang.y"
++#line 292 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double literal");
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtDouble, (yyvsp[(1) - (1)].lex).loc, true);
 -    ;}
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
 +    }
- #line 3355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3442 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 10:
- #line 283 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 12:
 -
 -/* Line 1455 of yacc.c  */
 -#line 296 "glslang.y"
++#line 296 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float literal");
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtFloat16, (yyvsp[(1) - (1)].lex).loc, true);
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float literal");
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true);
  #endif
 -    ;}
 +    }
- #line 3366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 11:
- #line 289 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 13:
 -
 -/* Line 1455 of yacc.c  */
 -#line 302 "glslang.y"
++#line 302 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).b, (yyvsp[(1) - (1)].lex).loc, true);
 -    ;}
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
 +    }
- #line 3374 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 12:
- #line 292 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 14:
 -
 -/* Line 1455 of yacc.c  */
 -#line 305 "glslang.y"
++#line 305 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode);
 +        (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
          if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
              (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
 -    ;}
 +    }
- #line 3384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 13:
- #line 300 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 15:
 -
 -/* Line 1455 of yacc.c  */
 -#line 313 "glslang.y"
++#line 313 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
 -    ;}
 +        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
 +    }
- #line 3392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 14:
- #line 303 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 16:
 -
 -/* Line 1455 of yacc.c  */
 -#line 316 "glslang.y"
++#line 316 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.intermTypedNode), (yyvsp[(3) - (4)].interm.intermTypedNode));
 -    ;}
 +        (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
 +    }
- #line 3400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 15:
- #line 306 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 17:
 -
 -/* Line 1455 of yacc.c  */
 -#line 319 "glslang.y"
++#line 319 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
 -    ;}
 +        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
 +    }
- #line 3408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 16:
- #line 309 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 18:
 -
 -/* Line 1455 of yacc.c  */
 -#line 322 "glslang.y"
++#line 322 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[(3) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode), *(yyvsp[(3) - (3)].lex).string);
 -    ;}
 +        (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
 +    }
- #line 3416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 17:
- #line 312 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 19:
 -
 -/* Line 1455 of yacc.c  */
 -#line 325 "glslang.y"
++#line 325 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode));
 -        parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "++", (yyvsp[(1) - (2)].interm.intermTypedNode));
 -        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "++", EOpPostIncrement, (yyvsp[(1) - (2)].interm.intermTypedNode));
 -    ;}
 +        parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
 +        parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode));
 +    }
- #line 3426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 18:
- #line 317 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 20:
 -
 -/* Line 1455 of yacc.c  */
 -#line 330 "glslang.y"
++#line 330 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode));
 -        parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "--", (yyvsp[(1) - (2)].interm.intermTypedNode));
 -        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "--", EOpPostDecrement, (yyvsp[(1) - (2)].interm.intermTypedNode));
 -    ;}
 +        parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
 +        parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode));
 +    }
- #line 3436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 19:
- #line 325 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 21:
 -
 -/* Line 1455 of yacc.c  */
 -#line 338 "glslang.y"
++#line 338 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.integerCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "[]");
 -        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
 -    ;}
 +        parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
 +        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
 +    }
- #line 3445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 20:
- #line 332 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 22:
 -
 -/* Line 1455 of yacc.c  */
 -#line 345 "glslang.y"
++#line 345 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[(1) - (1)].interm).loc, (yyvsp[(1) - (1)].interm).function, (yyvsp[(1) - (1)].interm).intermNode);
 -        delete (yyvsp[(1) - (1)].interm).function;
 -    ;}
 +        (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
 +        delete (yyvsp[0].interm).function;
 +    }
- #line 3454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 21:
- #line 339 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 23:
 -
 -/* Line 1455 of yacc.c  */
 -#line 352 "glslang.y"
++#line 352 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (1)].interm);
 -    ;}
 +        (yyval.interm) = (yyvsp[0].interm);
 +    }
- #line 3462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 22:
- #line 345 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 24:
 -
 -/* Line 1455 of yacc.c  */
 -#line 358 "glslang.y"
++#line 358 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (2)].interm);
 -        (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
 -    ;}
 +        (yyval.interm) = (yyvsp[-1].interm);
 +        (yyval.interm).loc = (yyvsp[0].lex).loc;
 +    }
- #line 3471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 23:
- #line 349 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 25:
 -
 -/* Line 1455 of yacc.c  */
 -#line 362 "glslang.y"
++#line 362 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (2)].interm);
 -        (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
 -    ;}
 +        (yyval.interm) = (yyvsp[-1].interm);
 +        (yyval.interm).loc = (yyvsp[0].lex).loc;
 +    }
- #line 3480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 24:
- #line 356 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 26:
 -
 -/* Line 1455 of yacc.c  */
 -#line 369 "glslang.y"
++#line 369 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (2)].interm);
 -    ;}
 +        (yyval.interm) = (yyvsp[-1].interm);
 +    }
- #line 3488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 25:
- #line 359 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 27:
 -
 -/* Line 1455 of yacc.c  */
 -#line 372 "glslang.y"
++#line 372 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (1)].interm);
 -    ;}
 +        (yyval.interm) = (yyvsp[0].interm);
 +    }
- #line 3496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3583 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 26:
- #line 365 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 28:
 -
 -/* Line 1455 of yacc.c  */
 -#line 378 "glslang.y"
++#line 378 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          TParameter param = { 0, new TType };
 -        param.type->shallowCopy((yyvsp[(2) - (2)].interm.intermTypedNode)->getType());
 -        (yyvsp[(1) - (2)].interm).function->addParameter(param);
 -        (yyval.interm).function = (yyvsp[(1) - (2)].interm).function;
 -        (yyval.interm).intermNode = (yyvsp[(2) - (2)].interm.intermTypedNode);
 -    ;}
 +        param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
 +        (yyvsp[-1].interm).function->addParameter(param);
 +        (yyval.interm).function = (yyvsp[-1].interm).function;
 +        (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
 +    }
- #line 3508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 27:
- #line 372 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 29:
 -
 -/* Line 1455 of yacc.c  */
 -#line 385 "glslang.y"
++#line 385 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          TParameter param = { 0, new TType };
 -        param.type->shallowCopy((yyvsp[(3) - (3)].interm.intermTypedNode)->getType());
 -        (yyvsp[(1) - (3)].interm).function->addParameter(param);
 -        (yyval.interm).function = (yyvsp[(1) - (3)].interm).function;
 -        (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc);
 -    ;}
 +        param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
 +        (yyvsp[-2].interm).function->addParameter(param);
 +        (yyval.interm).function = (yyvsp[-2].interm).function;
 +        (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
 +    }
- #line 3520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 28:
- #line 382 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 30:
 -
 -/* Line 1455 of yacc.c  */
 -#line 395 "glslang.y"
++#line 395 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (2)].interm);
 -    ;}
 +        (yyval.interm) = (yyvsp[-1].interm);
 +    }
- #line 3528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 29:
- #line 390 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 31:
 -
 -/* Line 1455 of yacc.c  */
 -#line 403 "glslang.y"
++#line 403 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          // Constructor
          (yyval.interm).intermNode = 0;
 -        (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type));
 -    ;}
 +        (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
 +    }
- #line 3538 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 30:
- #line 395 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 32:
 -
 -/* Line 1455 of yacc.c  */
 -#line 408 "glslang.y"
++#line 408 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          //
          // Should be a method or subroutine call, but we haven't recognized the arguments yet.
              TString empty("");
              (yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull);
          }
 -    ;}
 +    }
- #line 3570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 31:
- #line 425 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 33:
 -
 -/* Line 1455 of yacc.c  */
 -#line 438 "glslang.y"
++#line 438 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.variableCheck((yyvsp[(1) - (1)].interm.intermTypedNode));
 -        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
 -        if (TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode())
 -            parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
 -    ;}
 +        parseContext.variableCheck((yyvsp[0].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
 +        if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
 +            parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
 +    }
- #line 3581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 32:
- #line 431 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 34:
 -
 -/* Line 1455 of yacc.c  */
 -#line 444 "glslang.y"
++#line 444 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "++", (yyvsp[(2) - (2)].interm.intermTypedNode));
 -        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "++", EOpPreIncrement, (yyvsp[(2) - (2)].interm.intermTypedNode));
 -    ;}
 +        parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode));
 +    }
- #line 3590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3677 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 33:
- #line 435 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 35:
 -
 -/* Line 1455 of yacc.c  */
 -#line 448 "glslang.y"
++#line 448 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "--", (yyvsp[(2) - (2)].interm.intermTypedNode));
 -        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "--", EOpPreDecrement, (yyvsp[(2) - (2)].interm.intermTypedNode));
 -    ;}
 +        parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode));
 +    }
- #line 3599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 34:
- #line 439 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 36:
 -
 -/* Line 1455 of yacc.c  */
 -#line 452 "glslang.y"
++#line 452 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        if ((yyvsp[(1) - (2)].interm).op != EOpNull) {
 +        if ((yyvsp[-1].interm).op != EOpNull) {
              char errorOp[2] = {0, 0};
 -            switch((yyvsp[(1) - (2)].interm).op) {
 +            switch((yyvsp[-1].interm).op) {
              case EOpNegative:   errorOp[0] = '-'; break;
              case EOpLogicalNot: errorOp[0] = '!'; break;
              case EOpBitwiseNot: errorOp[0] = '~'; break;
              if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
                  (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
          }
 -    ;}
 +    }
- #line 3620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 35:
- #line 459 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 37:
 -
 -/* Line 1455 of yacc.c  */
 -#line 472 "glslang.y"
 -    { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNull; ;}
++#line 472 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
- #line 3626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 36:
- #line 460 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 38:
 -
 -/* Line 1455 of yacc.c  */
 -#line 473 "glslang.y"
 -    { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNegative; ;}
++#line 473 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
- #line 3632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 37:
- #line 461 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 39:
 -
 -/* Line 1455 of yacc.c  */
 -#line 474 "glslang.y"
 -    { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLogicalNot; ;}
++#line 474 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
- #line 3638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 38:
- #line 462 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 40:
 -
 -/* Line 1455 of yacc.c  */
 -#line 475 "glslang.y"
 -    { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpBitwiseNot;
 -              parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise not"); ;}
++#line 475 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
 +              parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
- #line 3645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 39:
- #line 468 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 41:
 -
 -/* Line 1455 of yacc.c  */
 -#line 481 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 481 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3651 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 40:
- #line 469 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 42:
 -
 -/* Line 1455 of yacc.c  */
 -#line 482 "glslang.y"
++#line 482 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "*", EOpMul, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
 -    ;}
 +            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
 +    }
- #line 3661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 41:
- #line 474 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 43:
 -
 -/* Line 1455 of yacc.c  */
 -#line 487 "glslang.y"
++#line 487 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "/", EOpDiv, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
 -    ;}
 +            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
 +    }
- #line 3671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 42:
- #line 479 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 44:
 -
 -/* Line 1455 of yacc.c  */
 -#line 492 "glslang.y"
++#line 492 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "%");
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "%", EOpMod, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%");
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
 -    ;}
 +            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
 +    }
- #line 3682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 43:
- #line 488 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 45:
 -
 -/* Line 1455 of yacc.c  */
 -#line 501 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 501 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 44:
- #line 489 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 46:
 -
 -/* Line 1455 of yacc.c  */
 -#line 502 "glslang.y"
++#line 502 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "+", EOpAdd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
 -    ;}
 +            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
 +    }
- #line 3698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 45:
- #line 494 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 47:
 -
 -/* Line 1455 of yacc.c  */
 -#line 507 "glslang.y"
++#line 507 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "-", EOpSub, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
 -    ;}
 +            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
 +    }
- #line 3708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 46:
- #line 502 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 48:
 -
 -/* Line 1455 of yacc.c  */
 -#line 515 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 515 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 47:
- #line 503 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 49:
 -
 -/* Line 1455 of yacc.c  */
 -#line 516 "glslang.y"
++#line 516 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift left");
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<<", EOpLeftShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left");
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
 -    ;}
 +            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
 +    }
- #line 3725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 48:
- #line 509 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 50:
 -
 -/* Line 1455 of yacc.c  */
 -#line 522 "glslang.y"
++#line 522 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift right");
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">>", EOpRightShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right");
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
 -    ;}
 +            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
 +    }
- #line 3736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 49:
- #line 518 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 51:
 -
 -/* Line 1455 of yacc.c  */
 -#line 531 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 531 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 50:
- #line 519 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 52:
 -
 -/* Line 1455 of yacc.c  */
 -#line 532 "glslang.y"
++#line 532 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<", EOpLessThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
 -    ;}
 +            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
 +    }
- #line 3752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 51:
- #line 524 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 53:
 -
 -/* Line 1455 of yacc.c  */
 -#line 537 "glslang.y"
++#line 537 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">", EOpGreaterThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
 -    ;}
 +            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
 +    }
- #line 3762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 52:
- #line 529 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 54:
 -
 -/* Line 1455 of yacc.c  */
 -#line 542 "glslang.y"
++#line 542 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<=", EOpLessThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
 -    ;}
 +            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
 +    }
- #line 3772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 53:
- #line 534 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 55:
 -
 -/* Line 1455 of yacc.c  */
 -#line 547 "glslang.y"
++#line 547 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
 -    ;}
 +            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
 +    }
- #line 3782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 54:
- #line 542 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 56:
 -
 -/* Line 1455 of yacc.c  */
 -#line 555 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 555 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 55:
- #line 543 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 57:
 -
 -/* Line 1455 of yacc.c  */
 -#line 556 "glslang.y"
++#line 556 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison");
 -        parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "==");
 -        parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "==");
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "==", EOpEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
 +        parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
 +        parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "==", EOpEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
 -    ;}
 +            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
 +    }
- #line 3801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 56:
- #line 551 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 58:
 -
 -/* Line 1455 of yacc.c  */
 -#line 564 "glslang.y"
++#line 564 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison");
 -        parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!=");
 -        parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!=");
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "!=", EOpNotEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
 +        parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
 +        parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "!=", EOpNotEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
 -    ;}
 +            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
 +    }
- #line 3814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 57:
- #line 562 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 59:
 -
 -/* Line 1455 of yacc.c  */
 -#line 575 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 575 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 58:
- #line 563 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 60:
 -
 -/* Line 1455 of yacc.c  */
 -#line 576 "glslang.y"
++#line 576 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise and");
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&", EOpAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and");
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
 -    ;}
 +            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
 +    }
- #line 3831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 59:
- #line 572 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 61:
 -
 -/* Line 1455 of yacc.c  */
 -#line 585 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 585 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 60:
- #line 573 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 62:
 -
 -/* Line 1455 of yacc.c  */
 -#line 586 "glslang.y"
++#line 586 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise exclusive or");
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^", EOpExclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or");
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
 -    ;}
 +            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
 +    }
- #line 3848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 61:
- #line 582 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 63:
 -
 -/* Line 1455 of yacc.c  */
 -#line 595 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 595 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 62:
- #line 583 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 64:
 -
 -/* Line 1455 of yacc.c  */
 -#line 596 "glslang.y"
++#line 596 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise inclusive or");
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "|", EOpInclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or");
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
 -    ;}
 +            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
 +    }
- #line 3865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 63:
- #line 592 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 65:
 -
 -/* Line 1455 of yacc.c  */
 -#line 605 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 605 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 64:
- #line 593 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 66:
 -
 -/* Line 1455 of yacc.c  */
 -#line 606 "glslang.y"
++#line 606 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&&", EOpLogicalAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
 -    ;}
 +            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
 +    }
- #line 3881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 65:
- #line 601 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 67:
 -
 -/* Line 1455 of yacc.c  */
 -#line 614 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 614 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 66:
- #line 602 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 68:
 -
 -/* Line 1455 of yacc.c  */
 -#line 615 "glslang.y"
++#line 615 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^^", EOpLogicalXor, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
 -    ;}
 +            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
 +    }
- #line 3897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 67:
- #line 610 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 69:
 -
 -/* Line 1455 of yacc.c  */
 -#line 623 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 623 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3903 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 3990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 68:
- #line 611 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 70:
 -
 -/* Line 1455 of yacc.c  */
 -#line 624 "glslang.y"
++#line 624 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "||", EOpLogicalOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
          if ((yyval.interm.intermTypedNode) == 0)
 -            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
 -    ;}
 +            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
 +    }
- #line 3913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 69:
- #line 619 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 71:
 -
 -/* Line 1455 of yacc.c  */
 -#line 632 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 632 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 70:
- #line 620 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 72:
 -
 -/* Line 1455 of yacc.c  */
 -#line 633 "glslang.y"
++#line 633 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          ++parseContext.controlFlowNestingLevel;
 -    ;}
 +    }
- #line 3927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 71:
- #line 623 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 73:
 -
 -/* Line 1455 of yacc.c  */
 -#line 636 "glslang.y"
++#line 636 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          --parseContext.controlFlowNestingLevel;
 -        parseContext.boolCheck((yyvsp[(2) - (6)].lex).loc, (yyvsp[(1) - (6)].interm.intermTypedNode));
 -        parseContext.rValueErrorCheck((yyvsp[(2) - (6)].lex).loc, "?", (yyvsp[(1) - (6)].interm.intermTypedNode));
 -        parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode));
 -        parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(6) - (6)].interm.intermTypedNode));
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[(1) - (6)].interm.intermTypedNode), (yyvsp[(4) - (6)].interm.intermTypedNode), (yyvsp[(6) - (6)].interm.intermTypedNode), (yyvsp[(2) - (6)].lex).loc);
 +        parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode));
 +        parseContext.rValueErrorCheck((yyvsp[-4].lex).loc, "?", (yyvsp[-5].interm.intermTypedNode));
 +        parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode));
 +        parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[0].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[-5].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-4].lex).loc);
          if ((yyval.interm.intermTypedNode) == 0) {
 -            parseContext.binaryOpError((yyvsp[(2) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(6) - (6)].interm.intermTypedNode)->getCompleteString());
 -            (yyval.interm.intermTypedNode) = (yyvsp[(6) - (6)].interm.intermTypedNode);
 +            parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
 +            (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
          }
 -    ;}
 +    }
- #line 3944 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 72:
- #line 638 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 74:
 -
 -/* Line 1455 of yacc.c  */
 -#line 651 "glslang.y"
 -    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
++#line 651 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
- #line 3950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 73:
- #line 639 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 75:
 -
 -/* Line 1455 of yacc.c  */
 -#line 652 "glslang.y"
 -    {
 -        parseContext.arrayObjectCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array assignment");
 -        parseContext.opaqueCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=");
 -        parseContext.specializationCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=");
 -        parseContext.lValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode));
 -        parseContext.rValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(3) - (3)].interm.intermTypedNode));
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[(2) - (3)].interm).op, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].interm).loc);
++#line 652 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    {
 +        parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment");
 +        parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
 +        parseContext.specializationCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
 +        parseContext.lValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode));
 +        parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].interm).loc);
          if ((yyval.interm.intermTypedNode) == 0) {
 -            parseContext.assignError((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString());
 -            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
 +            parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
 +            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
          }
 -    ;}
 +    }
- #line 3967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 74:
- #line 654 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 76:
 -
 -/* Line 1455 of yacc.c  */
 -#line 667 "glslang.y"
++#line 667 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
 +        (yyval.interm).loc = (yyvsp[0].lex).loc;
          (yyval.interm).op = EOpAssign;
 -    ;}
 +    }
- #line 3976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 75:
- #line 658 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 77:
 -
 -/* Line 1455 of yacc.c  */
 -#line 671 "glslang.y"
++#line 671 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
 +        (yyval.interm).loc = (yyvsp[0].lex).loc;
          (yyval.interm).op = EOpMulAssign;
 -    ;}
 +    }
- #line 3985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 76:
- #line 662 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 78:
 -
 -/* Line 1455 of yacc.c  */
 -#line 675 "glslang.y"
++#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
 +        (yyval.interm).loc = (yyvsp[0].lex).loc;
          (yyval.interm).op = EOpDivAssign;
 -    ;}
 +    }
- #line 3994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 77:
- #line 666 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 79:
 -
 -/* Line 1455 of yacc.c  */
 -#line 679 "glslang.y"
++#line 679 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "%=");
 -        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
 +        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%=");
 +        (yyval.interm).loc = (yyvsp[0].lex).loc;
          (yyval.interm).op = EOpModAssign;
 -    ;}
 +    }
- #line 4004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4091 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 78:
- #line 671 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 80:
 -
 -/* Line 1455 of yacc.c  */
 -#line 684 "glslang.y"
++#line 684 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
 +        (yyval.interm).loc = (yyvsp[0].lex).loc;
          (yyval.interm).op = EOpAddAssign;
 -    ;}
 +    }
- #line 4013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 79:
- #line 675 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 81:
 -
 -/* Line 1455 of yacc.c  */
 -#line 688 "glslang.y"
++#line 688 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
 +        (yyval.interm).loc = (yyvsp[0].lex).loc;
          (yyval.interm).op = EOpSubAssign;
 -    ;}
 +    }
- #line 4022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 80:
- #line 679 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 82:
 -
 -/* Line 1455 of yacc.c  */
 -#line 692 "glslang.y"
++#line 692 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift left assign");
 -        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
 -    ;}
 +        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
 +        (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
 +    }
- #line 4031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 81:
- #line 683 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 83:
 -
 -/* Line 1455 of yacc.c  */
 -#line 696 "glslang.y"
++#line 696 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift right assign");
 -        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
 -    ;}
 +        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
 +        (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
 +    }
- #line 4040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 82:
- #line 687 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 84:
 -
 -/* Line 1455 of yacc.c  */
 -#line 700 "glslang.y"
++#line 700 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-and assign");
 -        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpAndAssign;
 -    ;}
 +        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
 +        (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
 +    }
- #line 4049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 83:
- #line 691 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 85:
 -
 -/* Line 1455 of yacc.c  */
 -#line 704 "glslang.y"
++#line 704 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-xor assign");
 -        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
 -    ;}
 +        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
 +        (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
 +    }
- #line 4058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 84:
- #line 695 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 86:
 -
 -/* Line 1455 of yacc.c  */
 -#line 708 "glslang.y"
++#line 708 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-or assign");
 -        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
 -    ;}
 +        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
 +        (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
 +    }
- #line 4067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4154 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 85:
- #line 702 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 87:
 -
 -/* Line 1455 of yacc.c  */
 -#line 715 "glslang.y"
++#line 715 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
 -    ;}
 +        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
 +    }
- #line 4075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 86:
- #line 705 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 88:
 -
 -/* Line 1455 of yacc.c  */
 -#line 718 "glslang.y"
++#line 718 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.samplerConstructorLocationCheck((yyvsp[(2) - (3)].lex).loc, ",", (yyvsp[(3) - (3)].interm.intermTypedNode));
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc);
 +        parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode));
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
          if ((yyval.interm.intermTypedNode) == 0) {
 -            parseContext.binaryOpError((yyvsp[(2) - (3)].lex).loc, ",", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString());
 -            (yyval.interm.intermTypedNode) = (yyvsp[(3) - (3)].interm.intermTypedNode);
 +            parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
 +            (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
          }
 -    ;}
 +    }
- #line 4088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 87:
- #line 716 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 89:
 -
 -/* Line 1455 of yacc.c  */
 -#line 729 "glslang.y"
++#line 729 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.constantValueCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "");
 -        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
 -    ;}
 +        parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
 +        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
 +    }
- #line 4097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 88:
- #line 723 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 90:
 -
 -/* Line 1455 of yacc.c  */
 -#line 736 "glslang.y"
++#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.handleFunctionDeclarator((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).function, true /* prototype */);
 +        parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */);
          (yyval.interm.intermNode) = 0;
          // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
 -    ;}
 +    }
- #line 4107 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 89:
- #line 728 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 91:
 -
 -/* Line 1455 of yacc.c  */
 -#line 741 "glslang.y"
++#line 741 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        if ((yyvsp[(1) - (2)].interm).intermNode && (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate())
 -            (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
 -        (yyval.interm.intermNode) = (yyvsp[(1) - (2)].interm).intermNode;
 -    ;}
 +        if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate())
 +            (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
 +        (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
 +    }
- #line 4117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 90:
- #line 733 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 92:
 -
 -/* Line 1455 of yacc.c  */
 -#line 746 "glslang.y"
++#line 746 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ENoProfile, 130, 0, "precision statement");
 +        parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement");
  
          // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope
          parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]);
 -        parseContext.setDefaultPrecision((yyvsp[(1) - (4)].lex).loc, (yyvsp[(3) - (4)].interm.type), (yyvsp[(2) - (4)].interm.type).qualifier.precision);
 +        parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
          (yyval.interm.intermNode) = 0;
 -    ;}
 +    }
- #line 4130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 91:
- #line 741 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 93:
 -
 -/* Line 1455 of yacc.c  */
 -#line 754 "glslang.y"
++#line 754 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.declareBlock((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).typeList);
 +        parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
          (yyval.interm.intermNode) = 0;
 -    ;}
 +    }
- #line 4139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 92:
- #line 745 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 94:
 -
 -/* Line 1455 of yacc.c  */
 -#line 758 "glslang.y"
++#line 758 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.declareBlock((yyvsp[(1) - (3)].interm).loc, *(yyvsp[(1) - (3)].interm).typeList, (yyvsp[(2) - (3)].lex).string);
 +        parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
          (yyval.interm.intermNode) = 0;
 -    ;}
 +    }
- #line 4148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 93:
- #line 749 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 95:
 -
 -/* Line 1455 of yacc.c  */
 -#line 762 "glslang.y"
++#line 762 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.declareBlock((yyvsp[(1) - (4)].interm).loc, *(yyvsp[(1) - (4)].interm).typeList, (yyvsp[(2) - (4)].lex).string, (yyvsp[(3) - (4)].interm).arraySizes);
 +        parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
          (yyval.interm.intermNode) = 0;
 -    ;}
 +    }
- #line 4157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 94:
- #line 753 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 96:
 -
 -/* Line 1455 of yacc.c  */
 -#line 766 "glslang.y"
++#line 766 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier);
 -        parseContext.updateStandaloneQualifierDefaults((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type));
 +        parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
 +        parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
          (yyval.interm.intermNode) = 0;
 -    ;}
 +    }
- #line 4167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 95:
- #line 758 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 97:
 -
 -/* Line 1455 of yacc.c  */
 -#line 771 "glslang.y"
++#line 771 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.checkNoShaderLayouts((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).shaderQualifiers);
 -        parseContext.addQualifierToExisting((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).qualifier, *(yyvsp[(2) - (3)].lex).string);
 +        parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers);
 +        parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
          (yyval.interm.intermNode) = 0;
 -    ;}
 +    }
- #line 4177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 96:
- #line 763 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 98:
 -
 -/* Line 1455 of yacc.c  */
 -#line 776 "glslang.y"
++#line 776 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers);
 -        (yyvsp[(3) - (4)].interm.identifierList)->push_back((yyvsp[(2) - (4)].lex).string);
 -        parseContext.addQualifierToExisting((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier, *(yyvsp[(3) - (4)].interm.identifierList));
 +        parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers);
 +        (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string);
 +        parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
          (yyval.interm.intermNode) = 0;
 -    ;}
 +    }
- #line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 97:
- #line 772 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 99:
 -
 -/* Line 1455 of yacc.c  */
 -#line 785 "glslang.y"
 -    { parseContext.nestedBlockCheck((yyvsp[(1) - (3)].interm.type).loc); ;}
++#line 785 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
- #line 4194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 98:
- #line 772 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 100:
 -
 -/* Line 1455 of yacc.c  */
 -#line 785 "glslang.y"
++#line 785 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          --parseContext.structNestingLevel;
 -        parseContext.blockName = (yyvsp[(2) - (6)].lex).string;
 -        parseContext.globalQualifierFixCheck((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).qualifier);
 -        parseContext.checkNoShaderLayouts((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).shaderQualifiers);
 -        parseContext.currentBlockQualifier = (yyvsp[(1) - (6)].interm.type).qualifier;
 -        (yyval.interm).loc = (yyvsp[(1) - (6)].interm.type).loc;
 -        (yyval.interm).typeList = (yyvsp[(5) - (6)].interm.typeList);
 -    ;}
 +        parseContext.blockName = (yyvsp[-4].lex).string;
 +        parseContext.globalQualifierFixCheck((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).qualifier);
 +        parseContext.checkNoShaderLayouts((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).shaderQualifiers);
 +        parseContext.currentBlockQualifier = (yyvsp[-5].interm.type).qualifier;
 +        (yyval.interm).loc = (yyvsp[-5].interm.type).loc;
 +        (yyval.interm).typeList = (yyvsp[-1].interm.typeList);
 +    }
- #line 4208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 99:
- #line 783 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 101:
 -
 -/* Line 1455 of yacc.c  */
 -#line 796 "glslang.y"
++#line 796 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          (yyval.interm.identifierList) = new TIdentifierList;
 -        (yyval.interm.identifierList)->push_back((yyvsp[(2) - (2)].lex).string);
 -    ;}
 +        (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
 +    }
- #line 4217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 100:
- #line 787 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 102:
 -
 -/* Line 1455 of yacc.c  */
 -#line 800 "glslang.y"
++#line 800 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.identifierList) = (yyvsp[(1) - (3)].interm.identifierList);
 -        (yyval.interm.identifierList)->push_back((yyvsp[(3) - (3)].lex).string);
 -    ;}
 +        (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
 +        (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
 +    }
- #line 4226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 101:
- #line 794 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 103:
 -
 -/* Line 1455 of yacc.c  */
 -#line 807 "glslang.y"
++#line 807 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).function = (yyvsp[(1) - (2)].interm.function);
 -        (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
 -    ;}
 +        (yyval.interm).function = (yyvsp[-1].interm.function);
 +        (yyval.interm).loc = (yyvsp[0].lex).loc;
 +    }
- #line 4235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 102:
- #line 801 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 104:
 -
 -/* Line 1455 of yacc.c  */
 -#line 814 "glslang.y"
++#line 814 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
 -    ;}
 +        (yyval.interm.function) = (yyvsp[0].interm.function);
 +    }
- #line 4243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 103:
- #line 804 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 105:
 -
 -/* Line 1455 of yacc.c  */
 -#line 817 "glslang.y"
++#line 817 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
 -    ;}
 +        (yyval.interm.function) = (yyvsp[0].interm.function);
 +    }
- #line 4251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 104:
- #line 811 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 106:
 -
 -/* Line 1455 of yacc.c  */
 -#line 824 "glslang.y"
++#line 824 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          // Add the parameter
 -        (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function);
 -        if ((yyvsp[(2) - (2)].interm).param.type->getBasicType() != EbtVoid)
 -            (yyvsp[(1) - (2)].interm.function)->addParameter((yyvsp[(2) - (2)].interm).param);
 +        (yyval.interm.function) = (yyvsp[-1].interm.function);
 +        if ((yyvsp[0].interm).param.type->getBasicType() != EbtVoid)
 +            (yyvsp[-1].interm.function)->addParameter((yyvsp[0].interm).param);
          else
 -            delete (yyvsp[(2) - (2)].interm).param.type;
 -    ;}
 +            delete (yyvsp[0].interm).param.type;
 +    }
- #line 4264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 105:
- #line 819 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 107:
 -
 -/* Line 1455 of yacc.c  */
 -#line 832 "glslang.y"
++#line 832 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          //
          // Only first parameter of one-parameter functions can be void
              //
              // This parameter > first is void
              //
 -            parseContext.error((yyvsp[(2) - (3)].lex).loc, "cannot be an argument type except for '(void)'", "void", "");
 -            delete (yyvsp[(3) - (3)].interm).param.type;
 +            parseContext.error((yyvsp[-1].lex).loc, "cannot be an argument type except for '(void)'", "void", "");
 +            delete (yyvsp[0].interm).param.type;
          } else {
              // Add the parameter
 -            (yyval.interm.function) = (yyvsp[(1) - (3)].interm.function);
 -            (yyvsp[(1) - (3)].interm.function)->addParameter((yyvsp[(3) - (3)].interm).param);
 +            (yyval.interm.function) = (yyvsp[-2].interm.function);
 +            (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
          }
 -    ;}
 +    }
- #line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 106:
- #line 839 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 108:
 -
 -/* Line 1455 of yacc.c  */
 -#line 852 "glslang.y"
++#line 852 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        if ((yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqGlobal && (yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqTemporary) {
 -            parseContext.error((yyvsp[(2) - (3)].lex).loc, "no qualifiers allowed for function return",
 -                               GetStorageQualifierString((yyvsp[(1) - (3)].interm.type).qualifier.storage), "");
 +        if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) {
 +            parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return",
 +                               GetStorageQualifierString((yyvsp[-2].interm.type).qualifier.storage), "");
          }
 -        if ((yyvsp[(1) - (3)].interm.type).arraySizes)
 -            parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes);
 +        if ((yyvsp[-2].interm.type).arraySizes)
 +            parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
  
          // Add the function as a prototype after parsing it (we do not support recursion)
          TFunction *function;
 -        TType type((yyvsp[(1) - (3)].interm.type));
 -        function = new TFunction((yyvsp[(2) - (3)].lex).string, type);
 +        TType type((yyvsp[-2].interm.type));
 +        function = new TFunction((yyvsp[-1].lex).string, type);
          (yyval.interm.function) = function;
 -    ;}
 +    }
- #line 4305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 107:
- #line 857 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 109:
 -
 -/* Line 1455 of yacc.c  */
 -#line 870 "glslang.y"
++#line 870 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        if ((yyvsp[(1) - (2)].interm.type).arraySizes) {
 -            parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 -            parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
 -            parseContext.arraySizeRequiredCheck((yyvsp[(1) - (2)].interm.type).loc, *(yyvsp[(1) - (2)].interm.type).arraySizes);
 +        if ((yyvsp[-1].interm.type).arraySizes) {
 +            parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 +            parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
 +            parseContext.arraySizeRequiredCheck((yyvsp[-1].interm.type).loc, *(yyvsp[-1].interm.type).arraySizes);
          }
 -        if ((yyvsp[(1) - (2)].interm.type).basicType == EbtVoid) {
 -            parseContext.error((yyvsp[(2) - (2)].lex).loc, "illegal use of type 'void'", (yyvsp[(2) - (2)].lex).string->c_str(), "");
 +        if ((yyvsp[-1].interm.type).basicType == EbtVoid) {
 +            parseContext.error((yyvsp[0].lex).loc, "illegal use of type 'void'", (yyvsp[0].lex).string->c_str(), "");
          }
 -        parseContext.reservedErrorCheck((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string);
 +        parseContext.reservedErrorCheck((yyvsp[0].lex).loc, *(yyvsp[0].lex).string);
  
 -        TParameter param = {(yyvsp[(2) - (2)].lex).string, new TType((yyvsp[(1) - (2)].interm.type))};
 -        (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
 +        TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type))};
 +        (yyval.interm).loc = (yyvsp[0].lex).loc;
          (yyval.interm).param = param;
 -    ;}
 +    }
- #line 4325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4412 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 108:
- #line 872 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 110:
 -
 -/* Line 1455 of yacc.c  */
 -#line 885 "glslang.y"
++#line 885 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        if ((yyvsp[(1) - (3)].interm.type).arraySizes) {
 -            parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 -            parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
 -            parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes);
 +        if ((yyvsp[-2].interm.type).arraySizes) {
 +            parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 +            parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
 +            parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
          }
 -        parseContext.arrayDimCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.type).arraySizes, (yyvsp[(3) - (3)].interm).arraySizes);
 +        parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.type).arraySizes, (yyvsp[0].interm).arraySizes);
  
 -        parseContext.arraySizeRequiredCheck((yyvsp[(3) - (3)].interm).loc, *(yyvsp[(3) - (3)].interm).arraySizes);
 -        parseContext.reservedErrorCheck((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string);
 +        parseContext.arraySizeRequiredCheck((yyvsp[0].interm).loc, *(yyvsp[0].interm).arraySizes);
 +        parseContext.reservedErrorCheck((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string);
  
 -        (yyvsp[(1) - (3)].interm.type).arraySizes = (yyvsp[(3) - (3)].interm).arraySizes;
 +        (yyvsp[-2].interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
  
 -        TParameter param = { (yyvsp[(2) - (3)].lex).string, new TType((yyvsp[(1) - (3)].interm.type))};
 -        (yyval.interm).loc = (yyvsp[(2) - (3)].lex).loc;
 +        TParameter param = { (yyvsp[-1].lex).string, new TType((yyvsp[-2].interm.type))};
 +        (yyval.interm).loc = (yyvsp[-1].lex).loc;
          (yyval.interm).param = param;
 -    ;}
 +    }
- #line 4347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 109:
- #line 895 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 111:
 -
 -/* Line 1455 of yacc.c  */
 -#line 908 "glslang.y"
++#line 908 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(2) - (2)].interm);
 -        if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone)
 -            (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision;
 +        (yyval.interm) = (yyvsp[0].interm);
 +        if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
 +            (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision;
          parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
  
 -        parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers);
 -        parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type);
 -        parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type);
 +        parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
 +        parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
 +        parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
  
 -    ;}
 +    }
- #line 4363 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 110:
- #line 906 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 112:
 -
 -/* Line 1455 of yacc.c  */
 -#line 919 "glslang.y"
++#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (1)].interm);
 +        (yyval.interm) = (yyvsp[0].interm);
  
 -        parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type);
 -        parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type);
 +        parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type);
 +        parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
          parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
 -    ;}
 +    }
- #line 4375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 111:
- #line 916 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 113:
 -
 -/* Line 1455 of yacc.c  */
 -#line 929 "glslang.y"
++#line 929 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(2) - (2)].interm);
 -        if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone)
 -            (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision;
 -        parseContext.precisionQualifierCheck((yyvsp[(1) - (2)].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
 +        (yyval.interm) = (yyvsp[0].interm);
 +        if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
 +            (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision;
 +        parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
  
 -        parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers);
 -        parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type);
 -        parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type);
 -    ;}
 +        parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
 +        parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
 +        parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
 +    }
- #line 4390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4477 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 112:
- #line 926 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 114:
 -
 -/* Line 1455 of yacc.c  */
 -#line 939 "glslang.y"
++#line 939 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (1)].interm);
 +        (yyval.interm) = (yyvsp[0].interm);
  
 -        parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type);
 -        parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type);
 +        parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type);
 +        parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
          parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
 -    ;}
 +    }
- #line 4402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 113:
- #line 936 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 115:
 -
 -/* Line 1455 of yacc.c  */
 -#line 949 "glslang.y"
++#line 949 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) };
 +        TParameter param = { 0, new TType((yyvsp[0].interm.type)) };
          (yyval.interm).param = param;
 -        if ((yyvsp[(1) - (1)].interm.type).arraySizes)
 -            parseContext.arraySizeRequiredCheck((yyvsp[(1) - (1)].interm.type).loc, *(yyvsp[(1) - (1)].interm.type).arraySizes);
 -    ;}
 +        if ((yyvsp[0].interm.type).arraySizes)
 +            parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
 +    }
- #line 4413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 114:
- #line 945 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 116:
 -
 -/* Line 1455 of yacc.c  */
 -#line 958 "glslang.y"
++#line 958 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (1)].interm);
 -    ;}
 +        (yyval.interm) = (yyvsp[0].interm);
 +    }
- #line 4421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 115:
- #line 948 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 117:
 -
 -/* Line 1455 of yacc.c  */
 -#line 961 "glslang.y"
++#line 961 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (3)].interm);
 -        parseContext.declareVariable((yyvsp[(3) - (3)].lex).loc, *(yyvsp[(3) - (3)].lex).string, (yyvsp[(1) - (3)].interm).type);
 -    ;}
 +        (yyval.interm) = (yyvsp[-2].interm);
 +        parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
 +    }
- #line 4430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 116:
- #line 952 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 118:
 -
 -/* Line 1455 of yacc.c  */
 -#line 965 "glslang.y"
++#line 965 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (4)].interm);
 -        parseContext.declareVariable((yyvsp[(3) - (4)].lex).loc, *(yyvsp[(3) - (4)].lex).string, (yyvsp[(1) - (4)].interm).type, (yyvsp[(4) - (4)].interm).arraySizes);
 -    ;}
 +        (yyval.interm) = (yyvsp[-3].interm);
 +        parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
 +    }
- #line 4439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 117:
- #line 956 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 119:
 -
 -/* Line 1455 of yacc.c  */
 -#line 969 "glslang.y"
++#line 969 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).type = (yyvsp[(1) - (6)].interm).type;
 -        TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (6)].lex).loc, *(yyvsp[(3) - (6)].lex).string, (yyvsp[(1) - (6)].interm).type, (yyvsp[(4) - (6)].interm).arraySizes, (yyvsp[(6) - (6)].interm.intermTypedNode));
 -        (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, initNode, (yyvsp[(5) - (6)].lex).loc);
 -    ;}
 +        (yyval.interm).type = (yyvsp[-5].interm).type;
 +        TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
 +        (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
 +    }
- #line 4449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 118:
- #line 961 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 120:
 -
 -/* Line 1455 of yacc.c  */
 -#line 974 "glslang.y"
++#line 974 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).type = (yyvsp[(1) - (5)].interm).type;
 -        TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (5)].lex).loc, *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, 0, (yyvsp[(5) - (5)].interm.intermTypedNode));
 -        (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (5)].interm).intermNode, initNode, (yyvsp[(4) - (5)].lex).loc);
 -    ;}
 +        (yyval.interm).type = (yyvsp[-4].interm).type;
 +        TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode));
 +        (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
 +    }
- #line 4459 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 119:
- #line 969 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 121:
 -
 -/* Line 1455 of yacc.c  */
 -#line 982 "glslang.y"
++#line 982 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).type = (yyvsp[(1) - (1)].interm.type);
 +        (yyval.interm).type = (yyvsp[0].interm.type);
          (yyval.interm).intermNode = 0;
          parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
 -    ;}
 +    }
- #line 4469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 120:
- #line 974 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 122:
 -
 -/* Line 1455 of yacc.c  */
 -#line 987 "glslang.y"
++#line 987 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).type = (yyvsp[(1) - (2)].interm.type);
 +        (yyval.interm).type = (yyvsp[-1].interm.type);
          (yyval.interm).intermNode = 0;
 -        parseContext.declareVariable((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string, (yyvsp[(1) - (2)].interm.type));
 -    ;}
 +        parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
 +    }
- #line 4479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 121:
- #line 979 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 123:
 -
 -/* Line 1455 of yacc.c  */
 -#line 992 "glslang.y"
++#line 992 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).type = (yyvsp[(1) - (3)].interm.type);
 +        (yyval.interm).type = (yyvsp[-2].interm.type);
          (yyval.interm).intermNode = 0;
 -        parseContext.declareVariable((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string, (yyvsp[(1) - (3)].interm.type), (yyvsp[(3) - (3)].interm).arraySizes);
 -    ;}
 +        parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
 +    }
- #line 4489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 122:
- #line 984 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 124:
 -
 -/* Line 1455 of yacc.c  */
 -#line 997 "glslang.y"
++#line 997 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).type = (yyvsp[(1) - (5)].interm.type);
 -        TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (5)].lex).loc, *(yyvsp[(2) - (5)].lex).string, (yyvsp[(1) - (5)].interm.type), (yyvsp[(3) - (5)].interm).arraySizes, (yyvsp[(5) - (5)].interm.intermTypedNode));
 -        (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(4) - (5)].lex).loc);
 -    ;}
 +        (yyval.interm).type = (yyvsp[-4].interm.type);
 +        TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
 +        (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
 +    }
- #line 4499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 123:
- #line 989 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 125:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1002 "glslang.y"
++#line 1002 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).type = (yyvsp[(1) - (4)].interm.type);
 -        TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode));
 -        (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(3) - (4)].lex).loc);
 -    ;}
 +        (yyval.interm).type = (yyvsp[-3].interm.type);
 +        TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
 +        (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
 +    }
- #line 4509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 124:
- #line 998 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 126:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1011 "glslang.y"
++#line 1011 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
  
 -        parseContext.globalQualifierTypeCheck((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type).qualifier, (yyval.interm.type));
 -        if ((yyvsp[(1) - (1)].interm.type).arraySizes) {
 -            parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 -            parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
 +        parseContext.globalQualifierTypeCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyval.interm.type));
 +        if ((yyvsp[0].interm.type).arraySizes) {
 +            parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 +            parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
          }
  
          parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
 -    ;}
 +    }
- #line 4525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 125:
- #line 1009 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 127:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1022 "glslang.y"
++#line 1022 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier);
 -        parseContext.globalQualifierTypeCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, (yyvsp[(2) - (2)].interm.type));
 +        parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
 +        parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type));
  
 -        if ((yyvsp[(2) - (2)].interm.type).arraySizes) {
 -            parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 -            parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
 +        if ((yyvsp[0].interm.type).arraySizes) {
 +            parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 +            parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
          }
  
 -        if ((yyvsp[(2) - (2)].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier))
 -            (yyvsp[(2) - (2)].interm.type).arraySizes = 0;
 +        if ((yyvsp[0].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).qualifier))
 +            (yyvsp[0].interm.type).arraySizes = 0;
  
 -        parseContext.checkNoShaderLayouts((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers);
 -        (yyvsp[(2) - (2)].interm.type).shaderQualifiers.merge((yyvsp[(1) - (2)].interm.type).shaderQualifiers);
 -        parseContext.mergeQualifiers((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).qualifier, (yyvsp[(1) - (2)].interm.type).qualifier, true);
 -        parseContext.precisionQualifierCheck((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).basicType, (yyvsp[(2) - (2)].interm.type).qualifier);
 +        parseContext.checkNoShaderLayouts((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
 +        (yyvsp[0].interm.type).shaderQualifiers.merge((yyvsp[-1].interm.type).shaderQualifiers);
 +        parseContext.mergeQualifiers((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyvsp[-1].interm.type).qualifier, true);
 +        parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier);
  
 -        (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type);
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
  
          if (! (yyval.interm.type).qualifier.isInterpolation() &&
              ((parseContext.language == EShLangVertex   && (yyval.interm.type).qualifier.storage == EvqVaryingOut) ||
               (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
              (yyval.interm.type).qualifier.smooth = true;
 -    ;}
 +    }
- #line 4554 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 126:
- #line 1036 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 128:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1049 "glslang.y"
++#line 1049 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "invariant");
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "invariant");
          parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.invariant = true;
 -    ;}
 +    }
- #line 4565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 127:
- #line 1045 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 129:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1058 "glslang.y"
++#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "smooth");
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "smooth");
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "smooth");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "smooth");
 +        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth");
 +        parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "smooth");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.smooth = true;
 -    ;}
 +    }
- #line 4577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4664 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 128:
- #line 1052 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 130:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1065 "glslang.y"
++#line 1065 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "flat");
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "flat");
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "flat");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "flat");
 +        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat");
 +        parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "flat");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.flat = true;
 -    ;}
 +    }
- #line 4589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 129:
- #line 1059 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 131:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1072 "glslang.y"
++#line 1072 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "noperspective");
 -        parseContext.requireProfile((yyvsp[(1) - (1)].lex).loc, ~EEsProfile, "noperspective");
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "noperspective");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective");
 +        parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "noperspective");
 +        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.nopersp = true;
 -    ;}
 +    }
- #line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 130:
- #line 1066 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 132:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1079 "glslang.y"
++#line 1079 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "__explicitInterpAMD");
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD");
 +        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
 +        parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.explicitInterp = true;
  #endif
 -    ;}
 +    }
- #line 4615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 131:
- #line 1078 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 133:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1091 "glslang.y"
++#line 1091 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type) = (yyvsp[(3) - (4)].interm.type);
 -    ;}
 +        (yyval.interm.type) = (yyvsp[-1].interm.type);
 +    }
- #line 4623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 132:
- #line 1084 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 134:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1097 "glslang.y"
++#line 1097 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 -    ;}
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
 +    }
- #line 4631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 133:
- #line 1087 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 135:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1100 "glslang.y"
++#line 1100 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type) = (yyvsp[(1) - (3)].interm.type);
 -        (yyval.interm.type).shaderQualifiers.merge((yyvsp[(3) - (3)].interm.type).shaderQualifiers);
 -        parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[(3) - (3)].interm.type).qualifier, false);
 -    ;}
 +        (yyval.interm.type) = (yyvsp[-2].interm.type);
 +        (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
 +        parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
 +    }
- #line 4641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 134:
- #line 1094 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 136:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1107 "glslang.y"
++#line 1107 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 -        parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (1)].lex).string);
 -    ;}
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
 +        parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
 +    }
- #line 4650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 135:
- #line 1098 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 137:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1111 "glslang.y"
++#line 1111 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (3)].lex).loc);
 -        parseContext.setLayoutQualifier((yyvsp[(1) - (3)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (3)].lex).string, (yyvsp[(3) - (3)].interm.intermTypedNode));
 -    ;}
 +        (yyval.interm.type).init((yyvsp[-2].lex).loc);
 +        parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode));
 +    }
- #line 4659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 136:
- #line 1102 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 138:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1115 "glslang.y"
++#line 1115 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      { // because "shared" is both an identifier and a keyword
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          TString strShared("shared");
 -        parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), strShared);
 -    ;}
 +        parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared);
 +    }
- #line 4669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 137:
- #line 1110 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 139:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1123 "glslang.y"
++#line 1123 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise");
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.noContraction = true;
 -    ;}
 +    }
- #line 4680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4767 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 138:
- #line 1119 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 140:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1132 "glslang.y"
++#line 1132 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 -    ;}
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
 +    }
- #line 4688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 139:
- #line 1122 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 141:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1135 "glslang.y"
++#line 1135 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type);
 +        (yyval.interm.type) = (yyvsp[-1].interm.type);
          if ((yyval.interm.type).basicType == EbtVoid)
 -            (yyval.interm.type).basicType = (yyvsp[(2) - (2)].interm.type).basicType;
 +            (yyval.interm.type).basicType = (yyvsp[0].interm.type).basicType;
  
 -        (yyval.interm.type).shaderQualifiers.merge((yyvsp[(2) - (2)].interm.type).shaderQualifiers);
 -        parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[(2) - (2)].interm.type).qualifier, false);
 -    ;}
 +        (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
 +        parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
 +    }
- #line 4701 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 140:
- #line 1133 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 142:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1146 "glslang.y"
++#line 1146 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 -    ;}
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
 +    }
- #line 4709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 141:
- #line 1136 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 143:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1149 "glslang.y"
++#line 1149 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 -    ;}
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
 +    }
- #line 4717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 142:
- #line 1139 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 144:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1152 "glslang.y"
++#line 1152 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.checkPrecisionQualifier((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type).qualifier.precision);
 -        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 -    ;}
 +        parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
 +    }
- #line 4726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 143:
- #line 1143 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 145:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1156 "glslang.y"
++#line 1156 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          // allow inheritance of storage qualifier from block declaration
 -        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 -    ;}
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
 +    }
- #line 4735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 144:
- #line 1147 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 146:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1160 "glslang.y"
++#line 1160 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          // allow inheritance of storage qualifier from block declaration
 -        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 -    ;}
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
 +    }
- #line 4744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 145:
- #line 1151 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 147:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1164 "glslang.y"
++#line 1164 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          // allow inheritance of storage qualifier from block declaration
 -        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 -    ;}
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
 +    }
- #line 4753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 146:
- #line 1158 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 148:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1171 "glslang.y"
++#line 1171 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.storage = EvqConst;  // will later turn into EvqConstReadOnly, if the initializer is not constant
 -    ;}
 +    }
- #line 4762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 147:
- #line 1162 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 149:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1175 "glslang.y"
++#line 1175 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangVertex, "attribute");
 -        parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "attribute");
 -        parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "attribute");
 -        parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "attribute");
 -        parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "attribute");
 +        parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
 +        parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
 +        parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute");
 +        parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "attribute");
 +        parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "attribute");
  
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "attribute");
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "attribute");
  
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.storage = EvqVaryingIn;
 -    ;}
 +    }
- #line 4779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 148:
- #line 1174 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 150:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1187 "glslang.y"
++#line 1187 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "varying");
 -        parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "varying");
 -        parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "varying");
 -        parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "varying");
 +        parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
 +        parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
 +        parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying");
 +        parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "varying");
  
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "varying");
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "varying");
  
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          if (parseContext.language == EShLangVertex)
              (yyval.interm.type).qualifier.storage = EvqVaryingOut;
          else
              (yyval.interm.type).qualifier.storage = EvqVaryingIn;
 -    ;}
 +    }
- #line 4798 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 149:
- #line 1188 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 151:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1201 "glslang.y"
++#line 1201 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "inout");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "inout");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.storage = EvqInOut;
 -    ;}
 +    }
- #line 4808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 150:
- #line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 152:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1206 "glslang.y"
++#line 1206 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "in");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "in");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later
          (yyval.interm.type).qualifier.storage = EvqIn;
 -    ;}
 +    }
- #line 4819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 151:
- #line 1199 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 153:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1212 "glslang.y"
++#line 1212 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "out");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "out");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later
          (yyval.interm.type).qualifier.storage = EvqOut;
 -    ;}
 +    }
- #line 4830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 152:
- #line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 154:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1218 "glslang.y"
++#line 1218 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 120, 0, "centroid");
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "centroid");
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "centroid");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
 +        parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "centroid");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.centroid = true;
 -    ;}
 +    }
- #line 4842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 153:
- #line 1212 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 155:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1225 "glslang.y"
++#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "patch");
 -        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "patch");
 +        parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.patch = true;
 -    ;}
 +    }
- #line 4853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 154:
- #line 1218 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 156:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1231 "glslang.y"
++#line 1231 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "sample");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.sample = true;
 -    ;}
 +    }
- #line 4863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 155:
- #line 1223 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 157:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1236 "glslang.y"
++#line 1236 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "uniform");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.storage = EvqUniform;
 -    ;}
 +    }
- #line 4873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 156:
- #line 1228 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 158:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1241 "glslang.y"
++#line 1241 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "buffer");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.storage = EvqBuffer;
 -    ;}
 +    }
- #line 4883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 157:
- #line 1233 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 159:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1246 "glslang.y"
++#line 1246 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "shared");
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 310, 0, "shared");
 -        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangCompute, "shared");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "shared");
 +        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
 +        parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared");
 +        parseContext.requireStage((yyvsp[0].lex).loc, EShLangCompute, "shared");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.storage = EvqShared;
 -    ;}
 +    }
- #line 4896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 158:
- #line 1241 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 160:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1254 "glslang.y"
++#line 1254 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.coherent = true;
 -    ;}
 +    }
- #line 4905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 4992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 159:
- #line 1245 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 161:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1258 "glslang.y"
++#line 1258 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.volatil = true;
 -    ;}
 +    }
- #line 4914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 160:
- #line 1249 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 162:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1262 "glslang.y"
++#line 1262 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.restrict = true;
 -    ;}
 +    }
- #line 4923 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5010 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 161:
- #line 1253 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 163:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1266 "glslang.y"
++#line 1266 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.readonly = true;
 -    ;}
 +    }
- #line 4932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 162:
- #line 1257 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 164:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1270 "glslang.y"
++#line 1270 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
          (yyval.interm.type).qualifier.writeonly = true;
 -    ;}
 +    }
- #line 4941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 163:
- #line 1261 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 165:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1274 "glslang.y"
++#line 1274 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.spvRemoved((yyvsp[(1) - (1)].lex).loc, "subroutine");
 -        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "subroutine");
 -        parseContext.unimplemented((yyvsp[(1) - (1)].lex).loc, "subroutine");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
 -    ;}
 +        parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine");
 +        parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine");
 +        parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc);
 +    }
- #line 4952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 164:
- #line 1267 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 166:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1280 "glslang.y"
++#line 1280 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.spvRemoved((yyvsp[(1) - (4)].lex).loc, "subroutine");
 -        parseContext.globalCheck((yyvsp[(1) - (4)].lex).loc, "subroutine");
 -        parseContext.unimplemented((yyvsp[(1) - (4)].lex).loc, "subroutine");
 -        (yyval.interm.type).init((yyvsp[(1) - (4)].lex).loc);
 -    ;}
 +        parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine");
 +        parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine");
 +        parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine");
 +        (yyval.interm.type).init((yyvsp[-3].lex).loc);
 +    }
- #line 4963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 165:
- #line 1276 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 167:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1289 "glslang.y"
++#line 1289 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          // TODO
 -    ;}
 +    }
- #line 4971 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 166:
- #line 1279 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 168:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1292 "glslang.y"
++#line 1292 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          // TODO: 4.0 semantics: subroutines
          // 1) make sure each identifier is a type declared earlier with SUBROUTINE
          // 2) save all of the identifiers for future comparison with the declared function
 -    ;}
 +    }
- #line 4981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 167:
- #line 1287 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 169:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1300 "glslang.y"
++#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
          (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
 -    ;}
 +    }
- #line 4990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 168:
- #line 1291 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 170:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1304 "glslang.y"
++#line 1304 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.arrayDimCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0);
 -        (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type);
 +        parseContext.arrayDimCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes, 0);
 +        (yyval.interm.type) = (yyvsp[-1].interm.type);
          (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
 -        (yyval.interm.type).arraySizes = (yyvsp[(2) - (2)].interm).arraySizes;
 -    ;}
 +        (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
 +    }
- #line 5001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 169:
- #line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 171:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1313 "glslang.y"
++#line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).loc = (yyvsp[(1) - (2)].lex).loc;
 +        (yyval.interm).loc = (yyvsp[-1].lex).loc;
          (yyval.interm).arraySizes = new TArraySizes;
          (yyval.interm).arraySizes->addInnerSize();
 -    ;}
 +    }
- #line 5011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 170:
- #line 1305 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 172:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1318 "glslang.y"
++#line 1318 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm).loc = (yyvsp[(1) - (3)].lex).loc;
 +        (yyval.interm).loc = (yyvsp[-2].lex).loc;
          (yyval.interm).arraySizes = new TArraySizes;
  
          TArraySize size;
 -        parseContext.arraySizeCheck((yyvsp[(2) - (3)].interm.intermTypedNode)->getLoc(), (yyvsp[(2) - (3)].interm.intermTypedNode), size);
 +        parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
          (yyval.interm).arraySizes->addInnerSize(size);
 -    ;}
 +    }
- #line 5024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 171:
- #line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 173:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1326 "glslang.y"
++#line 1326 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (3)].interm);
 +        (yyval.interm) = (yyvsp[-2].interm);
          (yyval.interm).arraySizes->addInnerSize();
 -    ;}
 +    }
- #line 5033 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 172:
- #line 1317 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 174:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1330 "glslang.y"
++#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm) = (yyvsp[(1) - (4)].interm);
 +        (yyval.interm) = (yyvsp[-3].interm);
  
          TArraySize size;
 -        parseContext.arraySizeCheck((yyvsp[(3) - (4)].interm.intermTypedNode)->getLoc(), (yyvsp[(3) - (4)].interm.intermTypedNode), size);
 +        parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
          (yyval.interm).arraySizes->addInnerSize(size);
 -    ;}
 +    }
- #line 5045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 173:
- #line 1327 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 175:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1340 "glslang.y"
++#line 1340 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtVoid;
 -    ;}
 +    }
- #line 5054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 174:
- #line 1331 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 176:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1344 "glslang.y"
++#line 1344 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
 -    ;}
 +    }
- #line 5063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 175:
- #line 1335 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 177:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1348 "glslang.y"
++#line 1348 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
 -    ;}
 +    }
- #line 5073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 176:
- #line 1340 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 178:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1353 "glslang.y"
++#line 1353 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
  #endif
 -    ;}
 +    }
- #line 5085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 177:
- #line 1347 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 179:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1360 "glslang.y"
++#line 1360 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtInt;
 -    ;}
 +    }
- #line 5094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 178:
- #line 1351 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 180:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1364 "glslang.y"
++#line 1364 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtUint;
 -    ;}
 +    }
- #line 5104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 179:
- #line 1356 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 181:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1369 "glslang.y"
++#line 1369 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtInt64;
 -    ;}
 +    }
- #line 5114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 180:
- #line 1361 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 182:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1374 "glslang.y"
++#line 1374 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtUint64;
 -    ;}
 +    }
- #line 5124 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 181:
- #line 1366 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 183:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1379 "glslang.y"
++#line 1379 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+     {
+ #ifdef AMD_EXTENSIONS
 -        parseContext.int16Check((yyvsp[(1) - (1)].lex).loc, "16-bit integer", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer", parseContext.symbolTable.atBuiltInLevel());
++        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+         (yyval.interm.type).basicType = EbtInt16;
+ #endif
 -    ;}
++    }
++#line 5223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+     break;
+   case 184:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1386 "glslang.y"
++#line 1386 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+     {
+ #ifdef AMD_EXTENSIONS
 -        parseContext.int16Check((yyvsp[(1) - (1)].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
++        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+         (yyval.interm.type).basicType = EbtUint16;
+ #endif
 -    ;}
++    }
++#line 5235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+     break;
+   case 185:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1393 "glslang.y"
++#line 1393 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtBool;
 -    ;}
 +    }
- #line 5133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 182:
- #line 1370 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 186:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1397 "glslang.y"
++#line 1397 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setVector(2);
 -    ;}
 +    }
- #line 5143 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 183:
- #line 1375 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 187:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1402 "glslang.y"
++#line 1402 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setVector(3);
 -    ;}
 +    }
- #line 5153 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 184:
- #line 1380 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 188:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1407 "glslang.y"
++#line 1407 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setVector(4);
 -    ;}
 +    }
- #line 5163 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 185:
- #line 1385 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 189:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1412 "glslang.y"
++#line 1412 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setVector(2);
 -    ;}
 +    }
- #line 5174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 186:
- #line 1391 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 190:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1418 "glslang.y"
++#line 1418 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setVector(3);
 -    ;}
 +    }
- #line 5185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 187:
- #line 1397 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 191:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1424 "glslang.y"
++#line 1424 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setVector(4);
 -    ;}
 +    }
- #line 5196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 188:
- #line 1403 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 192:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1430 "glslang.y"
++#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setVector(2);
  #endif
 -    ;}
 +    }
- #line 5209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 189:
- #line 1411 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 193:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1438 "glslang.y"
++#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setVector(3);
  #endif
 -    ;}
 +    }
- #line 5222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 190:
- #line 1419 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 194:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1446 "glslang.y"
++#line 1446 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setVector(4);
  #endif
 -    ;}
 +    }
- #line 5235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 191:
- #line 1427 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 195:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1454 "glslang.y"
++#line 1454 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtBool;
          (yyval.interm.type).setVector(2);
 -    ;}
 +    }
- #line 5245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 192:
- #line 1432 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 196:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1459 "glslang.y"
++#line 1459 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+     {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+         (yyval.interm.type).basicType = EbtBool;
+         (yyval.interm.type).setVector(3);
 -    ;}
++    }
++#line 5366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+     break;
+   case 197:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1464 "glslang.y"
++#line 1464 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtBool;
 -    ;}
+         (yyval.interm.type).setVector(4);
 -
 -/* Line 1455 of yacc.c  */
 -#line 1469 "glslang.y"
++    }
++#line 5376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+     break;
+   case 198:
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++#line 1469 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+     {
 -    ;}
++        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+         (yyval.interm.type).basicType = EbtInt;
+         (yyval.interm.type).setVector(2);
 -
 -/* Line 1455 of yacc.c  */
 -#line 1474 "glslang.y"
++    }
++#line 5386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+     break;
+   case 199:
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++#line 1474 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+     {
++        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+         (yyval.interm.type).basicType = EbtInt;
          (yyval.interm.type).setVector(3);
 -    ;}
 +    }
- #line 5255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 193:
- #line 1437 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 200:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1479 "glslang.y"
++#line 1479 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-         (yyval.interm.type).basicType = EbtBool;
+         (yyval.interm.type).basicType = EbtInt;
          (yyval.interm.type).setVector(4);
 -    ;}
 +    }
- #line 5265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 194:
- #line 1442 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 201:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1484 "glslang.y"
++#line 1484 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-         (yyval.interm.type).basicType = EbtInt;
+         (yyval.interm.type).basicType = EbtInt64;
          (yyval.interm.type).setVector(2);
 -    ;}
 +    }
- #line 5275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 195:
- #line 1447 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 202:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1490 "glslang.y"
++#line 1490 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-         (yyval.interm.type).basicType = EbtInt;
+         (yyval.interm.type).basicType = EbtInt64;
          (yyval.interm.type).setVector(3);
 -    ;}
 +    }
- #line 5285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 196:
- #line 1452 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 203:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1496 "glslang.y"
++#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-         (yyval.interm.type).basicType = EbtInt;
+         (yyval.interm.type).basicType = EbtInt64;
          (yyval.interm.type).setVector(4);
 -    ;}
 +    }
- #line 5295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 197:
- #line 1457 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 204:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1502 "glslang.y"
++#line 1502 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
-         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ #ifdef AMD_EXTENSIONS
 -        parseContext.int16Check((yyvsp[(1) - (1)].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-         (yyval.interm.type).basicType = EbtInt64;
+         (yyval.interm.type).basicType = EbtInt16;
          (yyval.interm.type).setVector(2);
 -    ;}
+ #endif
- #line 5306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
 +    }
++#line 5452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 198:
- #line 1463 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 205:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1510 "glslang.y"
++#line 1510 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
-         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ #ifdef AMD_EXTENSIONS
 -        parseContext.int16Check((yyvsp[(1) - (1)].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-         (yyval.interm.type).basicType = EbtInt64;
+         (yyval.interm.type).basicType = EbtInt16;
          (yyval.interm.type).setVector(3);
 -    ;}
+ #endif
- #line 5317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
 +    }
++#line 5465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 199:
- #line 1469 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 206:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1518 "glslang.y"
++#line 1518 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
-         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ #ifdef AMD_EXTENSIONS
 -        parseContext.int16Check((yyvsp[(1) - (1)].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-         (yyval.interm.type).basicType = EbtInt64;
+         (yyval.interm.type).basicType = EbtInt16;
          (yyval.interm.type).setVector(4);
 -    ;}
+ #endif
- #line 5328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
 +    }
++#line 5478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 200:
- #line 1475 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 207:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1526 "glslang.y"
++#line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtUint;
          (yyval.interm.type).setVector(2);
 -    ;}
 +    }
- #line 5339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 201:
- #line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 208:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1532 "glslang.y"
++#line 1532 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtUint;
          (yyval.interm.type).setVector(3);
 -    ;}
 +    }
- #line 5350 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 202:
- #line 1487 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 209:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1538 "glslang.y"
++#line 1538 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtUint;
          (yyval.interm.type).setVector(4);
 -    ;}
 +    }
- #line 5361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 203:
- #line 1493 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 210:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1544 "glslang.y"
++#line 1544 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtUint64;
          (yyval.interm.type).setVector(2);
 -    ;}
 +    }
- #line 5372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 204:
- #line 1499 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 211:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1550 "glslang.y"
++#line 1550 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtUint64;
          (yyval.interm.type).setVector(3);
 -    ;}
 +    }
- #line 5383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 205:
- #line 1505 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 212:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1556 "glslang.y"
++#line 1556 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtUint64;
          (yyval.interm.type).setVector(4);
 -    ;}
 +    }
- #line 5394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 206:
- #line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 213:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1562 "glslang.y"
++#line 1562 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+     {
+ #ifdef AMD_EXTENSIONS
 -        parseContext.int16Check((yyvsp[(1) - (1)].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
++        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+         (yyval.interm.type).basicType = EbtUint16;
+         (yyval.interm.type).setVector(2);
+ #endif
 -    ;}
++    }
++#line 5557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+     break;
+   case 214:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1570 "glslang.y"
++#line 1570 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+     {
+ #ifdef AMD_EXTENSIONS
 -        parseContext.int16Check((yyvsp[(1) - (1)].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
++        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+         (yyval.interm.type).basicType = EbtUint16;
+         (yyval.interm.type).setVector(3);
+ #endif
 -    ;}
++    }
++#line 5570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+     break;
+   case 215:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1578 "glslang.y"
++#line 1578 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+     {
+ #ifdef AMD_EXTENSIONS
 -        parseContext.int16Check((yyvsp[(1) - (1)].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
++        parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
++        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+         (yyval.interm.type).basicType = EbtUint16;
+         (yyval.interm.type).setVector(4);
+ #endif
 -    ;}
++    }
++#line 5583 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+     break;
+   case 216:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1586 "glslang.y"
++#line 1586 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(2, 2);
 -    ;}
 +    }
- #line 5404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5593 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 207:
- #line 1516 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 217:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1591 "glslang.y"
++#line 1591 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(3, 3);
 -    ;}
 +    }
- #line 5414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 208:
- #line 1521 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 218:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1596 "glslang.y"
++#line 1596 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(4, 4);
 -    ;}
 +    }
- #line 5424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 209:
- #line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 219:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1601 "glslang.y"
++#line 1601 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(2, 2);
 -    ;}
 +    }
- #line 5434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 210:
- #line 1531 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 220:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1606 "glslang.y"
++#line 1606 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(2, 3);
 -    ;}
 +    }
- #line 5444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 211:
- #line 1536 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 221:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1611 "glslang.y"
++#line 1611 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(2, 4);
 -    ;}
 +    }
- #line 5454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 212:
- #line 1541 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 222:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1616 "glslang.y"
++#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(3, 2);
 -    ;}
 +    }
- #line 5464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 213:
- #line 1546 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 223:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1621 "glslang.y"
++#line 1621 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(3, 3);
 -    ;}
 +    }
- #line 5474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 214:
- #line 1551 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 224:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1626 "glslang.y"
++#line 1626 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(3, 4);
 -    ;}
 +    }
- #line 5484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 215:
- #line 1556 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 225:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1631 "glslang.y"
++#line 1631 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(4, 2);
 -    ;}
 +    }
- #line 5494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 216:
- #line 1561 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 226:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1636 "glslang.y"
++#line 1636 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(4, 3);
 -    ;}
 +    }
- #line 5504 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 217:
- #line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 227:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1641 "glslang.y"
++#line 1641 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat;
          (yyval.interm.type).setMatrix(4, 4);
 -    ;}
 +    }
- #line 5514 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 218:
- #line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 228:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1646 "glslang.y"
++#line 1646 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(2, 2);
 -    ;}
 +    }
- #line 5525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 219:
- #line 1577 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 229:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1652 "glslang.y"
++#line 1652 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(3, 3);
 -    ;}
 +    }
- #line 5536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 220:
- #line 1583 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 230:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1658 "glslang.y"
++#line 1658 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(4, 4);
 -    ;}
 +    }
- #line 5547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 221:
- #line 1589 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 231:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1664 "glslang.y"
++#line 1664 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(2, 2);
 -    ;}
 +    }
- #line 5558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 222:
- #line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 232:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1670 "glslang.y"
++#line 1670 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(2, 3);
 -    ;}
 +    }
- #line 5569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 223:
- #line 1601 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 233:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1676 "glslang.y"
++#line 1676 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(2, 4);
 -    ;}
 +    }
- #line 5580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 224:
- #line 1607 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 234:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1682 "glslang.y"
++#line 1682 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(3, 2);
 -    ;}
 +    }
- #line 5591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 225:
- #line 1613 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 235:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1688 "glslang.y"
++#line 1688 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(3, 3);
 -    ;}
 +    }
- #line 5602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 226:
- #line 1619 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 236:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1694 "glslang.y"
++#line 1694 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(3, 4);
 -    ;}
 +    }
- #line 5613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 227:
- #line 1625 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 237:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1700 "glslang.y"
++#line 1700 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(4, 2);
 -    ;}
 +    }
- #line 5624 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 228:
- #line 1631 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 238:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1706 "glslang.y"
++#line 1706 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(4, 3);
 -    ;}
 +    }
- #line 5635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 229:
- #line 1637 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 239:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1712 "glslang.y"
++#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtDouble;
          (yyval.interm.type).setMatrix(4, 4);
 -    ;}
 +    }
- #line 5646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 230:
- #line 1643 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 240:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1718 "glslang.y"
++#line 1718 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(2, 2);
  #endif
 -    ;}
 +    }
- #line 5659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 231:
- #line 1651 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 241:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1726 "glslang.y"
++#line 1726 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(3, 3);
  #endif
 -    ;}
 +    }
- #line 5672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 232:
- #line 1659 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 242:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1734 "glslang.y"
++#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(4, 4);
  #endif
 -    ;}
 +    }
- #line 5685 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 233:
- #line 1667 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 243:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1742 "glslang.y"
++#line 1742 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(2, 2);
  #endif
 -    ;}
 +    }
- #line 5698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 234:
- #line 1675 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 244:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1750 "glslang.y"
++#line 1750 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(2, 3);
  #endif
 -    ;}
 +    }
- #line 5711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 235:
- #line 1683 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 245:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1758 "glslang.y"
++#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(2, 4);
  #endif
 -    ;}
 +    }
- #line 5724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 236:
- #line 1691 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 246:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1766 "glslang.y"
++#line 1766 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(3, 2);
  #endif
 -    ;}
 +    }
- #line 5737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 237:
- #line 1699 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 247:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1774 "glslang.y"
++#line 1774 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(3, 3);
  #endif
 -    ;}
 +    }
- #line 5750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 238:
- #line 1707 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 248:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1782 "glslang.y"
++#line 1782 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(3, 4);
  #endif
 -    ;}
 +    }
- #line 5763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 239:
- #line 1715 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 249:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1790 "glslang.y"
++#line 1790 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(4, 2);
  #endif
 -    ;}
 +    }
- #line 5776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5965 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 240:
- #line 1723 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 250:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1798 "glslang.y"
++#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(4, 3);
  #endif
 -    ;}
 +    }
- #line 5789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 241:
- #line 1731 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 251:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1806 "glslang.y"
++#line 1806 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
  #ifdef AMD_EXTENSIONS
 -        parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtFloat16;
          (yyval.interm.type).setMatrix(4, 4);
  #endif
 -    ;}
 +    }
- #line 5802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 5991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 242:
- #line 1739 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 252:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1814 "glslang.y"
++#line 1814 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.vulkanRemoved((yyvsp[(1) - (1)].lex).loc, "atomic counter types");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtAtomicUint;
 -    ;}
 +    }
- #line 5812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 243:
- #line 1744 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 253:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1819 "glslang.y"
++#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd1D);
 -    ;}
 +    }
- #line 5822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 244:
- #line 1749 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 254:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1824 "glslang.y"
++#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
 -    ;}
 +    }
- #line 5832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 245:
- #line 1754 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 255:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1829 "glslang.y"
++#line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd3D);
 -    ;}
 +    }
- #line 5842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 246:
- #line 1759 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 256:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1834 "glslang.y"
++#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, EsdCube);
 -    ;}
 +    }
- #line 5852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 247:
- #line 1764 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 257:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1839 "glslang.y"
++#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
 -    ;}
 +    }
- #line 5862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 248:
- #line 1769 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 258:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1844 "glslang.y"
++#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
 -    ;}
 +    }
- #line 5872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 249:
- #line 1774 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 259:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1849 "glslang.y"
++#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
 -    ;}
 +    }
- #line 5882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 250:
- #line 1779 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 260:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1854 "glslang.y"
++#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
 -    ;}
 +    }
- #line 5892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 251:
- #line 1784 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 261:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1859 "glslang.y"
++#line 1859 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
 -    ;}
 +    }
- #line 5902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6091 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 252:
- #line 1789 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 262:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1864 "glslang.y"
++#line 1864 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
 -    ;}
 +    }
- #line 5912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 253:
- #line 1794 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 263:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1869 "glslang.y"
++#line 1869 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
 -    ;}
 +    }
- #line 5922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 254:
- #line 1799 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 264:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1874 "glslang.y"
++#line 1874 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
 -    ;}
 +    }
- #line 5932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 255:
- #line 1804 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 265:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1879 "glslang.y"
++#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
 -    ;}
 +    }
- #line 5942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 256:
- #line 1809 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 266:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1884 "glslang.y"
++#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtInt, Esd1D);
 -    ;}
 +    }
- #line 5952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 257:
- #line 1814 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 267:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1889 "glslang.y"
++#line 1889 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtInt, Esd2D);
 -    ;}
 +    }
- #line 5962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6151 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 258:
- #line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 268:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1894 "glslang.y"
++#line 1894 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtInt, Esd3D);
 -    ;}
 +    }
- #line 5972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 259:
- #line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 269:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1899 "glslang.y"
++#line 1899 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtInt, EsdCube);
 -    ;}
 +    }
- #line 5982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 260:
- #line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 270:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1904 "glslang.y"
++#line 1904 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
 -    ;}
 +    }
- #line 5992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 261:
- #line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 271:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1909 "glslang.y"
++#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
 -    ;}
 +    }
- #line 6002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 262:
- #line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 272:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1914 "glslang.y"
++#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
 -    ;}
 +    }
- #line 6012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 263:
- #line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 273:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1919 "glslang.y"
++#line 1919 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtUint, Esd1D);
 -    ;}
 +    }
- #line 6022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 264:
- #line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 274:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1924 "glslang.y"
++#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtUint, Esd2D);
 -    ;}
 +    }
- #line 6032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 265:
- #line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 275:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1929 "glslang.y"
++#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtUint, Esd3D);
 -    ;}
 +    }
- #line 6042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 266:
- #line 1859 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 276:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1934 "glslang.y"
++#line 1934 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtUint, EsdCube);
 -    ;}
 +    }
- #line 6052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 267:
- #line 1864 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 277:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1939 "glslang.y"
++#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
 -    ;}
 +    }
- #line 6062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 268:
- #line 1869 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 278:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1944 "glslang.y"
++#line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
 -    ;}
 +    }
- #line 6072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 269:
- #line 1874 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 279:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1949 "glslang.y"
++#line 1949 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
 -    ;}
 +    }
- #line 6082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 270:
- #line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 280:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1954 "glslang.y"
++#line 1954 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, EsdRect);
 -    ;}
 +    }
- #line 6092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 271:
- #line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 281:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1959 "glslang.y"
++#line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
 -    ;}
 +    }
- #line 6102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 272:
- #line 1889 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 282:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1964 "glslang.y"
++#line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtInt, EsdRect);
 -    ;}
 +    }
- #line 6112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 273:
- #line 1894 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 283:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1969 "glslang.y"
++#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtUint, EsdRect);
 -    ;}
 +    }
- #line 6122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 274:
- #line 1899 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 284:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1974 "glslang.y"
++#line 1974 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
 -    ;}
 +    }
- #line 6132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 275:
- #line 1904 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 285:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1979 "glslang.y"
++#line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
 -    ;}
 +    }
- #line 6142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 276:
- #line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 286:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1984 "glslang.y"
++#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
 -    ;}
 +    }
- #line 6152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 277:
- #line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 287:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1989 "glslang.y"
++#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
 -    ;}
 +    }
- #line 6162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 278:
- #line 1919 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 288:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1994 "glslang.y"
++#line 1994 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
 -    ;}
 +    }
- #line 6172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 279:
- #line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 289:
 -
 -/* Line 1455 of yacc.c  */
 -#line 1999 "glslang.y"
++#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
 -    ;}
 +    }
- #line 6182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 280:
- #line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 290:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2004 "glslang.y"
++#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
 -    ;}
 +    }
- #line 6192 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 281:
- #line 1934 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 291:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2009 "glslang.y"
++#line 2009 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
 -    ;}
 +    }
- #line 6202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 282:
- #line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 292:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2014 "glslang.y"
++#line 2014 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
 -    ;}
 +    }
- #line 6212 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 283:
- #line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 293:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2019 "glslang.y"
++#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setPureSampler(false);
 -    ;}
 +    }
- #line 6222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 284:
- #line 1949 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 294:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2024 "glslang.y"
++#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setPureSampler(true);
 -    ;}
 +    }
- #line 6232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 285:
- #line 1954 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 295:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2029 "glslang.y"
++#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
 -    ;}
 +    }
- #line 6242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 286:
- #line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 296:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2034 "glslang.y"
++#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
 -    ;}
 +    }
- #line 6252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 287:
- #line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 297:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2039 "glslang.y"
++#line 2039 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
 -    ;}
 +    }
- #line 6262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 288:
- #line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 298:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2044 "glslang.y"
++#line 2044 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
 -    ;}
 +    }
- #line 6272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 289:
- #line 1974 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 299:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2049 "glslang.y"
++#line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
 -    ;}
 +    }
- #line 6282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 290:
- #line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 300:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2054 "glslang.y"
++#line 2054 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
 -    ;}
 +    }
- #line 6292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 291:
- #line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 301:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2059 "glslang.y"
++#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
 -    ;}
 +    }
- #line 6302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 292:
- #line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 302:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2064 "glslang.y"
++#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
 -    ;}
 +    }
- #line 6312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 293:
- #line 1994 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 303:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2069 "glslang.y"
++#line 2069 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
 -    ;}
 +    }
- #line 6322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 294:
- #line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 304:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2074 "glslang.y"
++#line 2074 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
 -    ;}
 +    }
- #line 6332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 295:
- #line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 305:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2079 "glslang.y"
++#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
 -    ;}
 +    }
- #line 6342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 296:
- #line 2009 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 306:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2084 "glslang.y"
++#line 2084 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
 -    ;}
 +    }
- #line 6352 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 297:
- #line 2014 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 307:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2089 "glslang.y"
++#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
 -    ;}
 +    }
- #line 6362 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 298:
- #line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 308:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2094 "glslang.y"
++#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
 -    ;}
 +    }
- #line 6372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 299:
- #line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 309:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2099 "glslang.y"
++#line 2099 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
 -    ;}
 +    }
- #line 6382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 300:
- #line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 310:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2104 "glslang.y"
++#line 2104 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
 -    ;}
 +    }
- #line 6392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 301:
- #line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 311:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2109 "glslang.y"
++#line 2109 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
 -    ;}
 +    }
- #line 6402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 302:
- #line 2039 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 312:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2114 "glslang.y"
++#line 2114 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
 -    ;}
 +    }
- #line 6412 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 303:
- #line 2044 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 313:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2119 "glslang.y"
++#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
 -    ;}
 +    }
- #line 6422 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 304:
- #line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 314:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2124 "glslang.y"
++#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
 -    ;}
 +    }
- #line 6432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 305:
- #line 2054 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 315:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2129 "glslang.y"
++#line 2129 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
 -    ;}
 +    }
- #line 6442 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 306:
- #line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 316:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2134 "glslang.y"
++#line 2134 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
 -    ;}
 +    }
- #line 6452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 307:
- #line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 317:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2139 "glslang.y"
++#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
 -    ;}
 +    }
- #line 6462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6651 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 308:
- #line 2069 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 318:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2144 "glslang.y"
++#line 2144 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
 -    ;}
 +    }
- #line 6472 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 309:
- #line 2074 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 319:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2149 "glslang.y"
++#line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
 -    ;}
 +    }
- #line 6482 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 310:
- #line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 320:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2154 "glslang.y"
++#line 2154 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
 -    ;}
 +    }
- #line 6492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6681 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 311:
- #line 2084 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 321:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2159 "glslang.y"
++#line 2159 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
 -    ;}
 +    }
- #line 6502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 312:
- #line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 322:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2164 "glslang.y"
++#line 2164 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
 -    ;}
 +    }
- #line 6512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6701 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 313:
- #line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 323:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2169 "glslang.y"
++#line 2169 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
 -    ;}
 +    }
- #line 6522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 314:
- #line 2099 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 324:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2174 "glslang.y"
++#line 2174 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
 -    ;}
 +    }
- #line 6532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 315:
- #line 2104 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 325:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2179 "glslang.y"
++#line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
 -    ;}
 +    }
- #line 6542 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 316:
- #line 2109 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 326:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2184 "glslang.y"
++#line 2184 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
 -    ;}
 +    }
- #line 6552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 317:
- #line 2114 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 327:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2189 "glslang.y"
++#line 2189 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
 -    ;}
 +    }
- #line 6562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 318:
- #line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 328:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2194 "glslang.y"
++#line 2194 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
 -    ;}
 +    }
- #line 6572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 319:
- #line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 329:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2199 "glslang.y"
++#line 2199 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
 -    ;}
 +    }
- #line 6582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 320:
- #line 2129 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 330:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2204 "glslang.y"
++#line 2204 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
 -    ;}
 +    }
- #line 6592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 321:
- #line 2134 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 331:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2209 "glslang.y"
++#line 2209 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
 -    ;}
 +    }
- #line 6602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 322:
- #line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 332:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2214 "glslang.y"
++#line 2214 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
 -    ;}
 +    }
- #line 6612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 323:
- #line 2144 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 333:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2219 "glslang.y"
++#line 2219 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
 -    ;}
 +    }
- #line 6622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 324:
- #line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 334:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2224 "glslang.y"
++#line 2224 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
 -    ;}
 +    }
- #line 6632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 325:
- #line 2154 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 335:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2229 "glslang.y"
++#line 2229 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
 -    ;}
 +    }
- #line 6642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 326:
- #line 2159 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 336:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2234 "glslang.y"
++#line 2234 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
 -    ;}
 +    }
- #line 6652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 327:
- #line 2164 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 337:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2239 "glslang.y"
++#line 2239 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
 -    ;}
 +    }
- #line 6662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6851 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 328:
- #line 2169 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 338:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2244 "glslang.y"
++#line 2244 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
 -    ;}
 +    }
- #line 6672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 329:
- #line 2174 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 339:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2249 "glslang.y"
++#line 2249 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
 -    ;}
 +    }
- #line 6682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 330:
- #line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 340:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2254 "glslang.y"
++#line 2254 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
 -    ;}
 +    }
- #line 6692 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 331:
- #line 2184 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 341:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2259 "glslang.y"
++#line 2259 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
 -    ;}
 +    }
- #line 6702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 332:
- #line 2189 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 342:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2264 "glslang.y"
++#line 2264 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
 -    ;}
 +    }
- #line 6712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 333:
- #line 2194 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 343:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2269 "glslang.y"
++#line 2269 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
 -    ;}
 +    }
- #line 6722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 334:
- #line 2199 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 344:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2274 "glslang.y"
++#line 2274 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
 -    ;}
 +    }
- #line 6732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 335:
- #line 2204 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 345:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2279 "glslang.y"
++#line 2279 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
 -    ;}
 +    }
- #line 6742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 336:
- #line 2209 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 346:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2284 "glslang.y"
++#line 2284 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
 -    ;}
 +    }
- #line 6752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 337:
- #line 2214 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 347:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2289 "glslang.y"
++#line 2289 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
 -    ;}
 +    }
- #line 6762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 338:
- #line 2219 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 348:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2294 "glslang.y"
++#line 2294 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
 -    ;}
 +    }
- #line 6772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 339:
- #line 2224 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 349:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2299 "glslang.y"
++#line 2299 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
 -    ;}
 +    }
- #line 6782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6971 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 340:
- #line 2229 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 350:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2304 "glslang.y"
++#line 2304 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
 -    ;}
 +    }
- #line 6792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 341:
- #line 2234 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 351:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2309 "glslang.y"
++#line 2309 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
 -    ;}
 +    }
- #line 6802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 6991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 342:
- #line 2239 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 352:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2314 "glslang.y"
++#line 2314 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
 -    ;}
 +    }
- #line 6812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 343:
- #line 2244 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 353:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2319 "glslang.y"
++#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
 -    ;}
 +    }
- #line 6822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 344:
- #line 2249 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 354:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2324 "glslang.y"
++#line 2324 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
 -    ;}
 +    }
- #line 6832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 345:
- #line 2254 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 355:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2329 "glslang.y"
++#line 2329 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
 -    ;}
 +    }
- #line 6842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 346:
- #line 2259 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 356:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2334 "glslang.y"
++#line 2334 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
 -    ;}
 +    }
- #line 6852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 347:
- #line 2264 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 357:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2339 "glslang.y"
++#line 2339 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
 -    ;}
 +    }
- #line 6862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 348:
- #line 2269 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 358:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2344 "glslang.y"
++#line 2344 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
 -    ;}
 +    }
- #line 6872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 349:
- #line 2274 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 359:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2349 "glslang.y"
++#line 2349 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
 -    ;}
 +    }
- #line 6882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 350:
- #line 2279 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 360:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2354 "glslang.y"
++#line 2354 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
 -    ;}
 +    }
- #line 6892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 351:
- #line 2284 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 361:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2359 "glslang.y"
++#line 2359 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {  // GL_OES_EGL_image_external
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
          (yyval.interm.type).sampler.external = true;
 -    ;}
 +    }
- #line 6903 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 352:
- #line 2290 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 362:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2365 "glslang.y"
++#line 2365 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setSubpass(EbtFloat);
 -    ;}
 +    }
- #line 6914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 353:
- #line 2296 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 363:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2371 "glslang.y"
++#line 2371 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setSubpass(EbtFloat, true);
 -    ;}
 +    }
- #line 6925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 354:
- #line 2302 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 364:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2377 "glslang.y"
++#line 2377 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setSubpass(EbtInt);
 -    ;}
 +    }
- #line 6936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 355:
- #line 2308 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 365:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2383 "glslang.y"
++#line 2383 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setSubpass(EbtInt, true);
 -    ;}
 +    }
- #line 6947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 356:
- #line 2314 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 366:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2389 "glslang.y"
++#line 2389 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setSubpass(EbtUint);
 -    ;}
 +    }
- #line 6958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 357:
- #line 2320 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 367:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2395 "glslang.y"
++#line 2395 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
          (yyval.interm.type).basicType = EbtSampler;
          (yyval.interm.type).sampler.setSubpass(EbtUint, true);
 -    ;}
 +    }
- #line 6969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 358:
- #line 2326 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 368:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2401 "glslang.y"
++#line 2401 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 +        (yyval.interm.type) = (yyvsp[0].interm.type);
          (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
          parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
 -    ;}
 +    }
- #line 6979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 359:
- #line 2331 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 369:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2406 "glslang.y"
++#line 2406 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          //
          // This is for user defined type names.  The lexical phase looked up the
              (yyval.interm.type).basicType = EbtStruct;
              (yyval.interm.type).userDef = &structure;
          } else
 -            parseContext.error((yyvsp[(1) - (1)].lex).loc, "expected type name", (yyvsp[(1) - (1)].lex).string->c_str(), "");
 -    ;}
 +            parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
 +    }
- #line 6997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 360:
- #line 2347 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 370:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2422 "glslang.y"
++#line 2422 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 -        parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
 -    ;}
 +        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
 +    }
- #line 7007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 361:
- #line 2352 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 371:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2427 "glslang.y"
++#line 2427 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 -        parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
 -    ;}
 +        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
 +    }
- #line 7017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 362:
- #line 2357 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 372:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2432 "glslang.y"
++#line 2432 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
 -        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
 -        parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqLow);
 -    ;}
 +        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
 +        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
 +        parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
 +    }
- #line 7027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 363:
- #line 2365 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 373:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2440 "glslang.y"
 -    { parseContext.nestedStructCheck((yyvsp[(1) - (3)].lex).loc); ;}
++#line 2440 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
- #line 7033 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 364:
- #line 2365 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 374:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2440 "glslang.y"
++#line 2440 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        TType* structure = new TType((yyvsp[(5) - (6)].interm.typeList), *(yyvsp[(2) - (6)].lex).string);
 -        parseContext.structArrayCheck((yyvsp[(2) - (6)].lex).loc, *structure);
 -        TVariable* userTypeDef = new TVariable((yyvsp[(2) - (6)].lex).string, *structure, true);
 +        TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
 +        parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
 +        TVariable* userTypeDef = new TVariable((yyvsp[-4].lex).string, *structure, true);
          if (! parseContext.symbolTable.insert(*userTypeDef))
 -            parseContext.error((yyvsp[(2) - (6)].lex).loc, "redefinition", (yyvsp[(2) - (6)].lex).string->c_str(), "struct");
 -        (yyval.interm.type).init((yyvsp[(1) - (6)].lex).loc);
 +            parseContext.error((yyvsp[-4].lex).loc, "redefinition", (yyvsp[-4].lex).string->c_str(), "struct");
 +        (yyval.interm.type).init((yyvsp[-5].lex).loc);
          (yyval.interm.type).basicType = EbtStruct;
          (yyval.interm.type).userDef = structure;
          --parseContext.structNestingLevel;
 -    ;}
 +    }
- #line 7049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 365:
- #line 2376 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 375:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2451 "glslang.y"
 -    { parseContext.nestedStructCheck((yyvsp[(1) - (2)].lex).loc); ;}
++#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
- #line 7055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 366:
- #line 2376 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 376:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2451 "glslang.y"
++#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        TType* structure = new TType((yyvsp[(4) - (5)].interm.typeList), TString(""));
 -        (yyval.interm.type).init((yyvsp[(1) - (5)].lex).loc);
 +        TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
 +        (yyval.interm.type).init((yyvsp[-4].lex).loc);
          (yyval.interm.type).basicType = EbtStruct;
          (yyval.interm.type).userDef = structure;
          --parseContext.structNestingLevel;
 -    ;}
 +    }
- #line 7067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 367:
- #line 2386 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 377:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2461 "glslang.y"
++#line 2461 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList);
 -    ;}
 +        (yyval.interm.typeList) = (yyvsp[0].interm.typeList);
 +    }
- #line 7075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 368:
- #line 2389 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 378:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2464 "glslang.y"
++#line 2464 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.typeList) = (yyvsp[(1) - (2)].interm.typeList);
 -        for (unsigned int i = 0; i < (yyvsp[(2) - (2)].interm.typeList)->size(); ++i) {
 +        (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
 +        for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
              for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) {
 -                if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName())
 -                    parseContext.error((*(yyvsp[(2) - (2)].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName().c_str());
 +                if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[0].interm.typeList))[i].type->getFieldName())
 +                    parseContext.error((*(yyvsp[0].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[0].interm.typeList))[i].type->getFieldName().c_str());
              }
 -            (yyval.interm.typeList)->push_back((*(yyvsp[(2) - (2)].interm.typeList))[i]);
 +            (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
          }
 -    ;}
 +    }
- #line 7090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 369:
- #line 2402 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 379:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2477 "glslang.y"
++#line 2477 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        if ((yyvsp[(1) - (3)].interm.type).arraySizes) {
 -            parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 -            parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
 +        if ((yyvsp[-2].interm.type).arraySizes) {
 +            parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 +            parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
              if (parseContext.profile == EEsProfile)
 -                parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes);
 +                parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
          }
  
 -        (yyval.interm.typeList) = (yyvsp[(2) - (3)].interm.typeList);
 +        (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
  
 -        parseContext.voidErrorCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyvsp[(2) - (3)].interm.typeList))[0].type->getFieldName(), (yyvsp[(1) - (3)].interm.type).basicType);
 -        parseContext.precisionQualifierCheck((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).basicType, (yyvsp[(1) - (3)].interm.type).qualifier);
 +        parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType);
 +        parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier);
  
          for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) {
 -            parseContext.arrayDimCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(1) - (3)].interm.type).arraySizes);
 -            (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(1) - (3)].interm.type));
 +            parseContext.arrayDimCheck((yyvsp[-2].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[-2].interm.type).arraySizes);
 +            (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type));
          }
 -    ;}
 +    }
- #line 7113 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 370:
- #line 2420 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 380:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2495 "glslang.y"
++#line 2495 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.globalQualifierFixCheck((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier);
 -        if ((yyvsp[(2) - (4)].interm.type).arraySizes) {
 -            parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 -            parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
 +        parseContext.globalQualifierFixCheck((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier);
 +        if ((yyvsp[-2].interm.type).arraySizes) {
 +            parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
 +            parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
              if (parseContext.profile == EEsProfile)
 -                parseContext.arraySizeRequiredCheck((yyvsp[(2) - (4)].interm.type).loc, *(yyvsp[(2) - (4)].interm.type).arraySizes);
 +                parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
          }
  
 -        (yyval.interm.typeList) = (yyvsp[(3) - (4)].interm.typeList);
 +        (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
  
 -        parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers);
 -        parseContext.voidErrorCheck((yyvsp[(2) - (4)].interm.type).loc, (*(yyvsp[(3) - (4)].interm.typeList))[0].type->getFieldName(), (yyvsp[(2) - (4)].interm.type).basicType);
 -        parseContext.mergeQualifiers((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).qualifier, (yyvsp[(1) - (4)].interm.type).qualifier, true);
 -        parseContext.precisionQualifierCheck((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).basicType, (yyvsp[(2) - (4)].interm.type).qualifier);
 +        parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers);
 +        parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType);
 +        parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true);
 +        parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier);
  
          for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) {
 -            parseContext.arrayDimCheck((yyvsp[(1) - (4)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(2) - (4)].interm.type).arraySizes);
 -            (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(2) - (4)].interm.type));
 +            parseContext.arrayDimCheck((yyvsp[-3].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[-2].interm.type).arraySizes);
 +            (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type));
          }
 -    ;}
 +    }
- #line 7139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 371:
- #line 2444 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 381:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2519 "glslang.y"
++#line 2519 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          (yyval.interm.typeList) = new TTypeList;
 -        (yyval.interm.typeList)->push_back((yyvsp[(1) - (1)].interm.typeLine));
 -    ;}
 +        (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
 +    }
- #line 7148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 372:
- #line 2448 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 382:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2523 "glslang.y"
++#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine));
 -    ;}
 +        (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
 +    }
- #line 7156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 373:
- #line 2454 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 383:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2529 "glslang.y"
++#line 2529 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          (yyval.interm.typeLine).type = new TType(EbtVoid);
 -        (yyval.interm.typeLine).loc = (yyvsp[(1) - (1)].lex).loc;
 -        (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (1)].lex).string);
 -    ;}
 +        (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
 +        (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
 +    }
- #line 7166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 374:
- #line 2459 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 384:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2534 "glslang.y"
++#line 2534 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.arrayDimCheck((yyvsp[(1) - (2)].lex).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0);
 +        parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes, 0);
  
          (yyval.interm.typeLine).type = new TType(EbtVoid);
 -        (yyval.interm.typeLine).loc = (yyvsp[(1) - (2)].lex).loc;
 -        (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (2)].lex).string);
 -        (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[(2) - (2)].interm).arraySizes);
 -    ;}
 +        (yyval.interm.typeLine).loc = (yyvsp[-1].lex).loc;
 +        (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
 +        (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[0].interm).arraySizes);
 +    }
- #line 7179 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 375:
- #line 2470 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 385:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2545 "glslang.y"
++#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
 -    ;}
 +        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
 +    }
- #line 7187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 376:
- #line 2473 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 386:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2548 "glslang.y"
++#line 2548 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          const char* initFeature = "{ } style initializers";
 -        parseContext.requireProfile((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, initFeature);
 -        parseContext.profileRequires((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
 -        (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode);
 -    ;}
 +        parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature);
 +        parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
 +        (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
 +    }
- #line 7198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 377:
- #line 2479 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 387:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2554 "glslang.y"
++#line 2554 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          const char* initFeature = "{ } style initializers";
 -        parseContext.requireProfile((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, initFeature);
 -        parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
 -        (yyval.interm.intermTypedNode) = (yyvsp[(2) - (4)].interm.intermTypedNode);
 -    ;}
 +        parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature);
 +        parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
 +        (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
 +    }
- #line 7209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 378:
- #line 2488 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 388:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2563 "glslang.y"
++#line 2563 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[(1) - (1)].interm.intermTypedNode), (yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc());
 -    ;}
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
 +    }
- #line 7217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 379:
- #line 2491 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 389:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2566 "glslang.y"
++#line 2566 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
 -    ;}
 +        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
 +    }
- #line 7225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 380:
- #line 2497 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 390:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2572 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2572 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 381:
- #line 2501 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 391:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2576 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2576 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 382:
- #line 2502 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 392:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2577 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2577 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 383:
- #line 2508 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 393:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2583 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2583 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 384:
- #line 2509 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 394:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2584 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2584 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 385:
- #line 2510 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 395:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2585 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2585 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 386:
- #line 2511 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 396:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2586 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2586 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7267 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 387:
- #line 2512 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 397:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2587 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2587 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 388:
- #line 2513 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 398:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2588 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2588 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 389:
- #line 2514 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 399:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2589 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 390:
- #line 2518 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 400:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2593 "glslang.y"
 -    { (yyval.interm.intermNode) = 0; ;}
++#line 2593 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = 0; }
- #line 7291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 391:
- #line 2519 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 401:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2594 "glslang.y"
++#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          parseContext.symbolTable.push();
          ++parseContext.statementNestingLevel;
 -    ;}
 +    }
- #line 7300 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 392:
- #line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 402:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2598 "glslang.y"
++#line 2598 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
          --parseContext.statementNestingLevel;
 -    ;}
 +    }
- #line 7309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 393:
- #line 2527 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 403:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2602 "glslang.y"
++#line 2602 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        if ((yyvsp[(3) - (5)].interm.intermNode) && (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate())
 -            (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
 -        (yyval.interm.intermNode) = (yyvsp[(3) - (5)].interm.intermNode);
 -    ;}
 +        if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
 +            (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
 +        (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
 +    }
- #line 7319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 394:
- #line 2535 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 404:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2610 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2610 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7514 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 395:
- #line 2536 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 405:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2611 "glslang.y"
 -    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
++#line 2611 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
- #line 7331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 396:
- #line 2540 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 406:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2615 "glslang.y"
++#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          ++parseContext.controlFlowNestingLevel;
 -    ;}
 +    }
- #line 7339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 397:
- #line 2543 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 407:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2618 "glslang.y"
++#line 2618 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          --parseContext.controlFlowNestingLevel;
 -        (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode);
 -    ;}
 +        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
 +    }
- #line 7348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 398:
- #line 2547 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 408:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2622 "glslang.y"
++#line 2622 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          parseContext.symbolTable.push();
          ++parseContext.statementNestingLevel;
          ++parseContext.controlFlowNestingLevel;
 -    ;}
 +    }
- #line 7358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 399:
- #line 2552 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 409:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2627 "glslang.y"
++#line 2627 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
          --parseContext.statementNestingLevel;
          --parseContext.controlFlowNestingLevel;
 -        (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode);
 -    ;}
 +        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
 +    }
- #line 7369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 400:
- #line 2561 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 410:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2636 "glslang.y"
++#line 2636 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          (yyval.interm.intermNode) = 0;
 -    ;}
 +    }
- #line 7377 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 401:
- #line 2564 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 411:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2639 "glslang.y"
++#line 2639 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        if ((yyvsp[(2) - (3)].interm.intermNode) && (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate())
 -            (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
 -        (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermNode);
 -    ;}
 +        if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
 +            (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
 +        (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
 +    }
- #line 7387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 402:
- #line 2572 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 412:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2647 "glslang.y"
++#line 2647 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode));
 -        if ((yyvsp[(1) - (1)].interm.intermNode) && (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
 -                                            (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
 -            parseContext.wrapupSwitchSubsequence(0, (yyvsp[(1) - (1)].interm.intermNode));
 +        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
 +        if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
 +                                            (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
 +            parseContext.wrapupSwitchSubsequence(0, (yyvsp[0].interm.intermNode));
              (yyval.interm.intermNode) = 0;  // start a fresh subsequence for what's after this case
          }
 -    ;}
 +    }
- #line 7400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 403:
- #line 2580 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 413:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2655 "glslang.y"
++#line 2655 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        if ((yyvsp[(2) - (2)].interm.intermNode) && (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
 -                                            (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
 -            parseContext.wrapupSwitchSubsequence((yyvsp[(1) - (2)].interm.intermNode) ? (yyvsp[(1) - (2)].interm.intermNode)->getAsAggregate() : 0, (yyvsp[(2) - (2)].interm.intermNode));
 +        if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
 +                                            (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
 +            parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0, (yyvsp[0].interm.intermNode));
              (yyval.interm.intermNode) = 0;  // start a fresh subsequence for what's after this case
          } else
 -            (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode));
 -    ;}
 +            (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
 +    }
- #line 7413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 404:
- #line 2591 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 414:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2666 "glslang.y"
 -    { (yyval.interm.intermNode) = 0; ;}
++#line 2666 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = 0; }
- #line 7419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 405:
- #line 2592 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 415:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2667 "glslang.y"
 -    { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); ;}
++#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646  */
 +    { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
- #line 7425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 406:
- #line 2596 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 416:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2671 "glslang.y"
++#line 2671 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.boolCheck((yyvsp[(1) - (5)].lex).loc, (yyvsp[(3) - (5)].interm.intermTypedNode));
 -        (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yyvsp[(1) - (5)].lex).loc);
 -    ;}
 +        parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
 +        (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
 +    }
- #line 7434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 407:
- #line 2603 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 417:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2678 "glslang.y"
++#line 2678 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode);
 -        (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode);
 -    ;}
 +        (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
 +        (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
 +    }
- #line 7443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 408:
- #line 2607 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 418:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2682 "glslang.y"
++#line 2682 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode);
 +        (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
          (yyval.interm.nodePair).node2 = 0;
 -    ;}
 +    }
- #line 7452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 409:
- #line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 419:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2690 "glslang.y"
++#line 2690 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
 -        parseContext.boolCheck((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), (yyvsp[(1) - (1)].interm.intermTypedNode));
 -    ;}
 +        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
 +        parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
 +    }
- #line 7461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 410:
- #line 2619 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 420:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2694 "glslang.y"
++#line 2694 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.boolCheck((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.type));
 +        parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
  
 -        TType type((yyvsp[(1) - (4)].interm.type));
 -        TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode));
 +        TType type((yyvsp[-3].interm.type));
 +        TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
          if (initNode)
              (yyval.interm.intermTypedNode) = initNode->getAsTyped();
          else
              (yyval.interm.intermTypedNode) = 0;
 -    ;}
 +    }
- #line 7476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 411:
- #line 2632 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 421:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2707 "glslang.y"
++#line 2707 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          // start new switch sequence on the switch stack
          ++parseContext.controlFlowNestingLevel;
          parseContext.switchSequenceStack.push_back(new TIntermSequence);
          parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
          parseContext.symbolTable.push();
 -    ;}
 +    }
- #line 7489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 412:
- #line 2640 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 422:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2715 "glslang.y"
++#line 2715 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[(1) - (8)].lex).loc, (yyvsp[(3) - (8)].interm.intermTypedNode), (yyvsp[(7) - (8)].interm.intermNode) ? (yyvsp[(7) - (8)].interm.intermNode)->getAsAggregate() : 0);
 +        (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
          delete parseContext.switchSequenceStack.back();
          parseContext.switchSequenceStack.pop_back();
          parseContext.switchLevel.pop_back();
          parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
          --parseContext.statementNestingLevel;
          --parseContext.controlFlowNestingLevel;
 -    ;}
 +    }
- #line 7503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7692 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 413:
- #line 2652 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 423:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2727 "glslang.y"
++#line 2727 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          (yyval.interm.intermNode) = 0;
 -    ;}
 +    }
- #line 7511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 414:
- #line 2655 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 424:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2730 "glslang.y"
++#line 2730 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
 -    ;}
 +        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
 +    }
- #line 7519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 415:
- #line 2661 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 425:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2736 "glslang.y"
++#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          (yyval.interm.intermNode) = 0;
          if (parseContext.switchLevel.size() == 0)
 -            parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot appear outside switch statement", "case", "");
 +            parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", "");
          else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel)
 -            parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot be nested inside control flow", "case", "");
 +            parseContext.error((yyvsp[-2].lex).loc, "cannot be nested inside control flow", "case", "");
          else {
 -            parseContext.constantValueCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case");
 -            parseContext.integerCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case");
 -            (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).loc);
 +            parseContext.constantValueCheck((yyvsp[-1].interm.intermTypedNode), "case");
 +            parseContext.integerCheck((yyvsp[-1].interm.intermTypedNode), "case");
 +            (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
          }
 -    ;}
 +    }
- #line 7536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 416:
- #line 2673 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 426:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2748 "glslang.y"
++#line 2748 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          (yyval.interm.intermNode) = 0;
          if (parseContext.switchLevel.size() == 0)
 -            parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot appear outside switch statement", "default", "");
 +            parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", "");
          else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel)
 -            parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot be nested inside control flow", "default", "");
 +            parseContext.error((yyvsp[-1].lex).loc, "cannot be nested inside control flow", "default", "");
          else
 -            (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[(1) - (2)].lex).loc);
 -    ;}
 +            (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
 +    }
- #line 7550 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 417:
- #line 2685 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 427:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2760 "glslang.y"
++#line 2760 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          if (! parseContext.limits.whileLoops)
 -            parseContext.error((yyvsp[(1) - (2)].lex).loc, "while loops not available", "limitation", "");
 +            parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
          parseContext.symbolTable.push();
          ++parseContext.loopNestingLevel;
          ++parseContext.statementNestingLevel;
          ++parseContext.controlFlowNestingLevel;
 -    ;}
 +    }
- #line 7563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 418:
- #line 2693 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 428:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2768 "glslang.y"
++#line 2768 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
 -        (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(6) - (6)].interm.intermNode), (yyvsp[(4) - (6)].interm.intermTypedNode), 0, true, (yyvsp[(1) - (6)].lex).loc);
 +        (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
          --parseContext.loopNestingLevel;
          --parseContext.statementNestingLevel;
          --parseContext.controlFlowNestingLevel;
 -    ;}
 +    }
- #line 7575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 419:
- #line 2700 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 429:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2775 "glslang.y"
++#line 2775 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          ++parseContext.loopNestingLevel;
          ++parseContext.statementNestingLevel;
          ++parseContext.controlFlowNestingLevel;
 -    ;}
 +    }
- #line 7585 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 420:
- #line 2705 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 430:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2780 "glslang.y"
++#line 2780 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          if (! parseContext.limits.whileLoops)
 -            parseContext.error((yyvsp[(1) - (8)].lex).loc, "do-while loops not available", "limitation", "");
 +            parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
  
 -        parseContext.boolCheck((yyvsp[(8) - (8)].lex).loc, (yyvsp[(6) - (8)].interm.intermTypedNode));
 +        parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode));
  
 -        (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(3) - (8)].interm.intermNode), (yyvsp[(6) - (8)].interm.intermTypedNode), 0, false, (yyvsp[(4) - (8)].lex).loc);
 +        (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc);
          --parseContext.loopNestingLevel;
          --parseContext.statementNestingLevel;
          --parseContext.controlFlowNestingLevel;
 -    ;}
 +    }
- #line 7601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 421:
- #line 2716 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 431:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2791 "glslang.y"
++#line 2791 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          parseContext.symbolTable.push();
          ++parseContext.loopNestingLevel;
          ++parseContext.statementNestingLevel;
          ++parseContext.controlFlowNestingLevel;
 -    ;}
 +    }
- #line 7612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 422:
- #line 2722 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 432:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2797 "glslang.y"
++#line 2797 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
 -        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(4) - (7)].interm.intermNode), (yyvsp[(2) - (7)].lex).loc);
 -        TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[(7) - (7)].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node2), true, (yyvsp[(1) - (7)].lex).loc);
 +        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
 +        TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node2), true, (yyvsp[-6].lex).loc);
          if (! parseContext.limits.nonInductiveForLoops)
 -            parseContext.inductiveLoopCheck((yyvsp[(1) - (7)].lex).loc, (yyvsp[(4) - (7)].interm.intermNode), forLoop);
 -        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[(1) - (7)].lex).loc);
 +            parseContext.inductiveLoopCheck((yyvsp[-6].lex).loc, (yyvsp[-3].interm.intermNode), forLoop);
 +        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[-6].lex).loc);
          (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
          --parseContext.loopNestingLevel;
          --parseContext.statementNestingLevel;
          --parseContext.controlFlowNestingLevel;
 -    ;}
 +    }
- #line 7629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 423:
- #line 2737 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 433:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2812 "glslang.y"
++#line 2812 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
 -    ;}
 +        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
 +    }
- #line 7637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 424:
- #line 2740 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 434:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2815 "glslang.y"
++#line 2815 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
 -    ;}
 +        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
 +    }
- #line 7645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 425:
- #line 2746 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 435:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2821 "glslang.y"
++#line 2821 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
 -    ;}
 +        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
 +    }
- #line 7653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 426:
- #line 2749 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 436:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2824 "glslang.y"
++#line 2824 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          (yyval.interm.intermTypedNode) = 0;
 -    ;}
 +    }
- #line 7661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 427:
- #line 2755 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 437:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2830 "glslang.y"
++#line 2830 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode);
 +        (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
          (yyval.interm.nodePair).node2 = 0;
 -    ;}
 +    }
- #line 7670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 428:
- #line 2759 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 438:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2834 "glslang.y"
++#line 2834 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode);
 -        (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode);
 -    ;}
 +        (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
 +        (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
 +    }
- #line 7679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 429:
- #line 2766 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 439:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2841 "glslang.y"
++#line 2841 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          if (parseContext.loopNestingLevel <= 0)
 -            parseContext.error((yyvsp[(1) - (2)].lex).loc, "continue statement only allowed in loops", "", "");
 -        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[(1) - (2)].lex).loc);
 -    ;}
 +            parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
 +        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
 +    }
- #line 7689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 430:
- #line 2771 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 440:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2846 "glslang.y"
++#line 2846 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
 -            parseContext.error((yyvsp[(1) - (2)].lex).loc, "break statement only allowed in switch and loops", "", "");
 -        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[(1) - (2)].lex).loc);
 -    ;}
 +            parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
 +        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
 +    }
- #line 7699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 431:
- #line 2776 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 441:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2851 "glslang.y"
++#line 2851 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).loc);
 +        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
          if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
 -            parseContext.error((yyvsp[(1) - (2)].lex).loc, "non-void function must return a value", "return", "");
 +            parseContext.error((yyvsp[-1].lex).loc, "non-void function must return a value", "return", "");
          if (parseContext.inMain)
              parseContext.postEntryPointReturn = true;
 -    ;}
 +    }
- #line 7711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 432:
- #line 2783 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 442:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2858 "glslang.y"
++#line 2858 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[(1) - (3)].lex).loc, (yyvsp[(2) - (3)].interm.intermTypedNode));
 -    ;}
 +        (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
 +    }
- #line 7719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 433:
- #line 2786 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 443:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2861 "glslang.y"
++#line 2861 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        parseContext.requireStage((yyvsp[(1) - (2)].lex).loc, EShLangFragment, "discard");
 -        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[(1) - (2)].lex).loc);
 -    ;}
 +        parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
 +        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
 +    }
- #line 7728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 434:
- #line 2795 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 444:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2870 "glslang.y"
++#line 2870 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
 +        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
          parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
 -    ;}
 +    }
- #line 7737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 435:
- #line 2799 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 445:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2874 "glslang.y"
++#line 2874 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode));
 +        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
          parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
 -    ;}
 +    }
- #line 7746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 436:
- #line 2806 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 446:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2881 "glslang.y"
++#line 2881 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
 -    ;}
 +        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
 +    }
- #line 7754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7943 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 437:
- #line 2809 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 447:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2884 "glslang.y"
++#line 2884 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
 -    ;}
 +        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
 +    }
- #line 7762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 438:
- #line 2815 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 448:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2890 "glslang.y"
++#line 2890 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
 -        (yyvsp[(1) - (1)].interm).function = parseContext.handleFunctionDeclarator((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function, false /* not prototype */);
 -        (yyvsp[(1) - (1)].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function);
 -    ;}
 +        (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
 +        (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
 +    }
- #line 7771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
-   case 439:
- #line 2819 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+   case 449:
 -
 -/* Line 1455 of yacc.c  */
 -#line 2894 "glslang.y"
++#line 2894 "MachineIndependent/glslang.y" /* yacc.c:1646  */
      {
          //   May be best done as post process phase on intermediate code
          if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
          (yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
          (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
          (yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable);
 -    ;}
 +    }
- #line 7791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
++#line 7980 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
      break;
  
  
- #line 7795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
 -
 -/* Line 1455 of yacc.c  */
 -#line 8703 "glslang_tab.cpp"
++#line 7984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
        default: break;
      }
 +  /* User semantic actions sometimes alter yychar, and that requires
 +     that yytoken be updated with the new translation.  We take the
 +     approach of translating immediately before every use of yytoken.
 +     One alternative is translating here after every semantic action,
 +     but that translation would be missed if the semantic action invokes
 +     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
 +     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
 +     incorrect destructor might then be invoked immediately.  In the
 +     case of YYERROR or YYBACKUP, subsequent parser actions might lead
 +     to an incorrect destructor call or verbose syntax error message
 +     before the lookahead is translated.  */
    YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
  
    YYPOPSTACK (yylen);
@@@ -8017,7 -8904,13 +8206,7 @@@ yyreturn
    if (yymsg != yymsgbuf)
      YYSTACK_FREE (yymsg);
  #endif
 -  /* Make sure YYID is used.  */
 -  return YYID (yyresult);
 +  return yyresult;
  }
- #line 2836 "MachineIndependent/glslang.y" /* yacc.c:1906  */
 -
 -
 -
 -/* Line 1675 of yacc.c  */
 -#line 2911 "glslang.y"
 -
++#line 2911 "MachineIndependent/glslang.y" /* yacc.c:1906  */
  
     This special exception was added by the Free Software Foundation in
     version 2.2 of Bison.  */
  
 +#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
 +# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
 +/* Debug traces.  */
 +#ifndef YYDEBUG
 +# define YYDEBUG 1
 +#endif
 +#if YYDEBUG
 +extern int yydebug;
 +#endif
  
 -/* Tokens.  */
 +/* Token type.  */
  #ifndef YYTOKENTYPE
  # define YYTOKENTYPE
 -   /* Put the tokens into the symbol table, so that GDB and other debuggers
 -      know about them.  */
 -   enum yytokentype {
 -     ATTRIBUTE = 258,
 -     VARYING = 259,
 -     CONST = 260,
 -     BOOL = 261,
 -     FLOAT = 262,
 -     DOUBLE = 263,
 -     INT = 264,
 -     UINT = 265,
 -     INT64_T = 266,
 -     UINT64_T = 267,
 -     INT16_T = 268,
 -     UINT16_T = 269,
 -     FLOAT16_T = 270,
 -     BREAK = 271,
 -     CONTINUE = 272,
 -     DO = 273,
 -     ELSE = 274,
 -     FOR = 275,
 -     IF = 276,
 -     DISCARD = 277,
 -     RETURN = 278,
 -     SWITCH = 279,
 -     CASE = 280,
 -     DEFAULT = 281,
 -     SUBROUTINE = 282,
 -     BVEC2 = 283,
 -     BVEC3 = 284,
 -     BVEC4 = 285,
 -     IVEC2 = 286,
 -     IVEC3 = 287,
 -     IVEC4 = 288,
 -     I64VEC2 = 289,
 -     I64VEC3 = 290,
 -     I64VEC4 = 291,
 -     UVEC2 = 292,
 -     UVEC3 = 293,
 -     UVEC4 = 294,
 -     U64VEC2 = 295,
 -     U64VEC3 = 296,
 -     U64VEC4 = 297,
 -     VEC2 = 298,
 -     VEC3 = 299,
 -     VEC4 = 300,
 -     MAT2 = 301,
 -     MAT3 = 302,
 -     MAT4 = 303,
 -     CENTROID = 304,
 -     IN = 305,
 -     OUT = 306,
 -     INOUT = 307,
 -     UNIFORM = 308,
 -     PATCH = 309,
 -     SAMPLE = 310,
 -     BUFFER = 311,
 -     SHARED = 312,
 -     COHERENT = 313,
 -     VOLATILE = 314,
 -     RESTRICT = 315,
 -     READONLY = 316,
 -     WRITEONLY = 317,
 -     DVEC2 = 318,
 -     DVEC3 = 319,
 -     DVEC4 = 320,
 -     DMAT2 = 321,
 -     DMAT3 = 322,
 -     DMAT4 = 323,
 -     F16VEC2 = 324,
 -     F16VEC3 = 325,
 -     F16VEC4 = 326,
 -     F16MAT2 = 327,
 -     F16MAT3 = 328,
 -     F16MAT4 = 329,
 -     I16VEC2 = 330,
 -     I16VEC3 = 331,
 -     I16VEC4 = 332,
 -     U16VEC2 = 333,
 -     U16VEC3 = 334,
 -     U16VEC4 = 335,
 -     NOPERSPECTIVE = 336,
 -     FLAT = 337,
 -     SMOOTH = 338,
 -     LAYOUT = 339,
 -     __EXPLICITINTERPAMD = 340,
 -     MAT2X2 = 341,
 -     MAT2X3 = 342,
 -     MAT2X4 = 343,
 -     MAT3X2 = 344,
 -     MAT3X3 = 345,
 -     MAT3X4 = 346,
 -     MAT4X2 = 347,
 -     MAT4X3 = 348,
 -     MAT4X4 = 349,
 -     DMAT2X2 = 350,
 -     DMAT2X3 = 351,
 -     DMAT2X4 = 352,
 -     DMAT3X2 = 353,
 -     DMAT3X3 = 354,
 -     DMAT3X4 = 355,
 -     DMAT4X2 = 356,
 -     DMAT4X3 = 357,
 -     DMAT4X4 = 358,
 -     F16MAT2X2 = 359,
 -     F16MAT2X3 = 360,
 -     F16MAT2X4 = 361,
 -     F16MAT3X2 = 362,
 -     F16MAT3X3 = 363,
 -     F16MAT3X4 = 364,
 -     F16MAT4X2 = 365,
 -     F16MAT4X3 = 366,
 -     F16MAT4X4 = 367,
 -     ATOMIC_UINT = 368,
 -     SAMPLER1D = 369,
 -     SAMPLER2D = 370,
 -     SAMPLER3D = 371,
 -     SAMPLERCUBE = 372,
 -     SAMPLER1DSHADOW = 373,
 -     SAMPLER2DSHADOW = 374,
 -     SAMPLERCUBESHADOW = 375,
 -     SAMPLER1DARRAY = 376,
 -     SAMPLER2DARRAY = 377,
 -     SAMPLER1DARRAYSHADOW = 378,
 -     SAMPLER2DARRAYSHADOW = 379,
 -     ISAMPLER1D = 380,
 -     ISAMPLER2D = 381,
 -     ISAMPLER3D = 382,
 -     ISAMPLERCUBE = 383,
 -     ISAMPLER1DARRAY = 384,
 -     ISAMPLER2DARRAY = 385,
 -     USAMPLER1D = 386,
 -     USAMPLER2D = 387,
 -     USAMPLER3D = 388,
 -     USAMPLERCUBE = 389,
 -     USAMPLER1DARRAY = 390,
 -     USAMPLER2DARRAY = 391,
 -     SAMPLER2DRECT = 392,
 -     SAMPLER2DRECTSHADOW = 393,
 -     ISAMPLER2DRECT = 394,
 -     USAMPLER2DRECT = 395,
 -     SAMPLERBUFFER = 396,
 -     ISAMPLERBUFFER = 397,
 -     USAMPLERBUFFER = 398,
 -     SAMPLERCUBEARRAY = 399,
 -     SAMPLERCUBEARRAYSHADOW = 400,
 -     ISAMPLERCUBEARRAY = 401,
 -     USAMPLERCUBEARRAY = 402,
 -     SAMPLER2DMS = 403,
 -     ISAMPLER2DMS = 404,
 -     USAMPLER2DMS = 405,
 -     SAMPLER2DMSARRAY = 406,
 -     ISAMPLER2DMSARRAY = 407,
 -     USAMPLER2DMSARRAY = 408,
 -     SAMPLEREXTERNALOES = 409,
 -     SAMPLER = 410,
 -     SAMPLERSHADOW = 411,
 -     TEXTURE1D = 412,
 -     TEXTURE2D = 413,
 -     TEXTURE3D = 414,
 -     TEXTURECUBE = 415,
 -     TEXTURE1DARRAY = 416,
 -     TEXTURE2DARRAY = 417,
 -     ITEXTURE1D = 418,
 -     ITEXTURE2D = 419,
 -     ITEXTURE3D = 420,
 -     ITEXTURECUBE = 421,
 -     ITEXTURE1DARRAY = 422,
 -     ITEXTURE2DARRAY = 423,
 -     UTEXTURE1D = 424,
 -     UTEXTURE2D = 425,
 -     UTEXTURE3D = 426,
 -     UTEXTURECUBE = 427,
 -     UTEXTURE1DARRAY = 428,
 -     UTEXTURE2DARRAY = 429,
 -     TEXTURE2DRECT = 430,
 -     ITEXTURE2DRECT = 431,
 -     UTEXTURE2DRECT = 432,
 -     TEXTUREBUFFER = 433,
 -     ITEXTUREBUFFER = 434,
 -     UTEXTUREBUFFER = 435,
 -     TEXTURECUBEARRAY = 436,
 -     ITEXTURECUBEARRAY = 437,
 -     UTEXTURECUBEARRAY = 438,
 -     TEXTURE2DMS = 439,
 -     ITEXTURE2DMS = 440,
 -     UTEXTURE2DMS = 441,
 -     TEXTURE2DMSARRAY = 442,
 -     ITEXTURE2DMSARRAY = 443,
 -     UTEXTURE2DMSARRAY = 444,
 -     SUBPASSINPUT = 445,
 -     SUBPASSINPUTMS = 446,
 -     ISUBPASSINPUT = 447,
 -     ISUBPASSINPUTMS = 448,
 -     USUBPASSINPUT = 449,
 -     USUBPASSINPUTMS = 450,
 -     IMAGE1D = 451,
 -     IIMAGE1D = 452,
 -     UIMAGE1D = 453,
 -     IMAGE2D = 454,
 -     IIMAGE2D = 455,
 -     UIMAGE2D = 456,
 -     IMAGE3D = 457,
 -     IIMAGE3D = 458,
 -     UIMAGE3D = 459,
 -     IMAGE2DRECT = 460,
 -     IIMAGE2DRECT = 461,
 -     UIMAGE2DRECT = 462,
 -     IMAGECUBE = 463,
 -     IIMAGECUBE = 464,
 -     UIMAGECUBE = 465,
 -     IMAGEBUFFER = 466,
 -     IIMAGEBUFFER = 467,
 -     UIMAGEBUFFER = 468,
 -     IMAGE1DARRAY = 469,
 -     IIMAGE1DARRAY = 470,
 -     UIMAGE1DARRAY = 471,
 -     IMAGE2DARRAY = 472,
 -     IIMAGE2DARRAY = 473,
 -     UIMAGE2DARRAY = 474,
 -     IMAGECUBEARRAY = 475,
 -     IIMAGECUBEARRAY = 476,
 -     UIMAGECUBEARRAY = 477,
 -     IMAGE2DMS = 478,
 -     IIMAGE2DMS = 479,
 -     UIMAGE2DMS = 480,
 -     IMAGE2DMSARRAY = 481,
 -     IIMAGE2DMSARRAY = 482,
 -     UIMAGE2DMSARRAY = 483,
 -     STRUCT = 484,
 -     VOID = 485,
 -     WHILE = 486,
 -     IDENTIFIER = 487,
 -     TYPE_NAME = 488,
 -     FLOATCONSTANT = 489,
 -     DOUBLECONSTANT = 490,
 -     INTCONSTANT = 491,
 -     UINTCONSTANT = 492,
 -     INT64CONSTANT = 493,
 -     UINT64CONSTANT = 494,
 -     INT16CONSTANT = 495,
 -     UINT16CONSTANT = 496,
 -     BOOLCONSTANT = 497,
 -     FLOAT16CONSTANT = 498,
 -     LEFT_OP = 499,
 -     RIGHT_OP = 500,
 -     INC_OP = 501,
 -     DEC_OP = 502,
 -     LE_OP = 503,
 -     GE_OP = 504,
 -     EQ_OP = 505,
 -     NE_OP = 506,
 -     AND_OP = 507,
 -     OR_OP = 508,
 -     XOR_OP = 509,
 -     MUL_ASSIGN = 510,
 -     DIV_ASSIGN = 511,
 -     ADD_ASSIGN = 512,
 -     MOD_ASSIGN = 513,
 -     LEFT_ASSIGN = 514,
 -     RIGHT_ASSIGN = 515,
 -     AND_ASSIGN = 516,
 -     XOR_ASSIGN = 517,
 -     OR_ASSIGN = 518,
 -     SUB_ASSIGN = 519,
 -     LEFT_PAREN = 520,
 -     RIGHT_PAREN = 521,
 -     LEFT_BRACKET = 522,
 -     RIGHT_BRACKET = 523,
 -     LEFT_BRACE = 524,
 -     RIGHT_BRACE = 525,
 -     DOT = 526,
 -     COMMA = 527,
 -     COLON = 528,
 -     EQUAL = 529,
 -     SEMICOLON = 530,
 -     BANG = 531,
 -     DASH = 532,
 -     TILDE = 533,
 -     PLUS = 534,
 -     STAR = 535,
 -     SLASH = 536,
 -     PERCENT = 537,
 -     LEFT_ANGLE = 538,
 -     RIGHT_ANGLE = 539,
 -     VERTICAL_BAR = 540,
 -     CARET = 541,
 -     AMPERSAND = 542,
 -     QUESTION = 543,
 -     INVARIANT = 544,
 -     PRECISE = 545,
 -     HIGH_PRECISION = 546,
 -     MEDIUM_PRECISION = 547,
 -     LOW_PRECISION = 548,
 -     PRECISION = 549,
 -     PACKED = 550,
 -     RESOURCE = 551,
 -     SUPERP = 552
 -   };
 +  enum yytokentype
 +  {
 +    ATTRIBUTE = 258,
 +    VARYING = 259,
 +    CONST = 260,
 +    BOOL = 261,
 +    FLOAT = 262,
 +    DOUBLE = 263,
 +    INT = 264,
 +    UINT = 265,
 +    INT64_T = 266,
 +    UINT64_T = 267,
-     FLOAT16_T = 268,
-     BREAK = 269,
-     CONTINUE = 270,
-     DO = 271,
-     ELSE = 272,
-     FOR = 273,
-     IF = 274,
-     DISCARD = 275,
-     RETURN = 276,
-     SWITCH = 277,
-     CASE = 278,
-     DEFAULT = 279,
-     SUBROUTINE = 280,
-     BVEC2 = 281,
-     BVEC3 = 282,
-     BVEC4 = 283,
-     IVEC2 = 284,
-     IVEC3 = 285,
-     IVEC4 = 286,
-     I64VEC2 = 287,
-     I64VEC3 = 288,
-     I64VEC4 = 289,
-     UVEC2 = 290,
-     UVEC3 = 291,
-     UVEC4 = 292,
-     U64VEC2 = 293,
-     U64VEC3 = 294,
-     U64VEC4 = 295,
-     VEC2 = 296,
-     VEC3 = 297,
-     VEC4 = 298,
-     MAT2 = 299,
-     MAT3 = 300,
-     MAT4 = 301,
-     CENTROID = 302,
-     IN = 303,
-     OUT = 304,
-     INOUT = 305,
-     UNIFORM = 306,
-     PATCH = 307,
-     SAMPLE = 308,
-     BUFFER = 309,
-     SHARED = 310,
-     COHERENT = 311,
-     VOLATILE = 312,
-     RESTRICT = 313,
-     READONLY = 314,
-     WRITEONLY = 315,
-     DVEC2 = 316,
-     DVEC3 = 317,
-     DVEC4 = 318,
-     DMAT2 = 319,
-     DMAT3 = 320,
-     DMAT4 = 321,
-     F16VEC2 = 322,
-     F16VEC3 = 323,
-     F16VEC4 = 324,
-     F16MAT2 = 325,
-     F16MAT3 = 326,
-     F16MAT4 = 327,
-     NOPERSPECTIVE = 328,
-     FLAT = 329,
-     SMOOTH = 330,
-     LAYOUT = 331,
-     __EXPLICITINTERPAMD = 332,
-     MAT2X2 = 333,
-     MAT2X3 = 334,
-     MAT2X4 = 335,
-     MAT3X2 = 336,
-     MAT3X3 = 337,
-     MAT3X4 = 338,
-     MAT4X2 = 339,
-     MAT4X3 = 340,
-     MAT4X4 = 341,
-     DMAT2X2 = 342,
-     DMAT2X3 = 343,
-     DMAT2X4 = 344,
-     DMAT3X2 = 345,
-     DMAT3X3 = 346,
-     DMAT3X4 = 347,
-     DMAT4X2 = 348,
-     DMAT4X3 = 349,
-     DMAT4X4 = 350,
-     F16MAT2X2 = 351,
-     F16MAT2X3 = 352,
-     F16MAT2X4 = 353,
-     F16MAT3X2 = 354,
-     F16MAT3X3 = 355,
-     F16MAT3X4 = 356,
-     F16MAT4X2 = 357,
-     F16MAT4X3 = 358,
-     F16MAT4X4 = 359,
-     ATOMIC_UINT = 360,
-     SAMPLER1D = 361,
-     SAMPLER2D = 362,
-     SAMPLER3D = 363,
-     SAMPLERCUBE = 364,
-     SAMPLER1DSHADOW = 365,
-     SAMPLER2DSHADOW = 366,
-     SAMPLERCUBESHADOW = 367,
-     SAMPLER1DARRAY = 368,
-     SAMPLER2DARRAY = 369,
-     SAMPLER1DARRAYSHADOW = 370,
-     SAMPLER2DARRAYSHADOW = 371,
-     ISAMPLER1D = 372,
-     ISAMPLER2D = 373,
-     ISAMPLER3D = 374,
-     ISAMPLERCUBE = 375,
-     ISAMPLER1DARRAY = 376,
-     ISAMPLER2DARRAY = 377,
-     USAMPLER1D = 378,
-     USAMPLER2D = 379,
-     USAMPLER3D = 380,
-     USAMPLERCUBE = 381,
-     USAMPLER1DARRAY = 382,
-     USAMPLER2DARRAY = 383,
-     SAMPLER2DRECT = 384,
-     SAMPLER2DRECTSHADOW = 385,
-     ISAMPLER2DRECT = 386,
-     USAMPLER2DRECT = 387,
-     SAMPLERBUFFER = 388,
-     ISAMPLERBUFFER = 389,
-     USAMPLERBUFFER = 390,
-     SAMPLERCUBEARRAY = 391,
-     SAMPLERCUBEARRAYSHADOW = 392,
-     ISAMPLERCUBEARRAY = 393,
-     USAMPLERCUBEARRAY = 394,
-     SAMPLER2DMS = 395,
-     ISAMPLER2DMS = 396,
-     USAMPLER2DMS = 397,
-     SAMPLER2DMSARRAY = 398,
-     ISAMPLER2DMSARRAY = 399,
-     USAMPLER2DMSARRAY = 400,
-     SAMPLEREXTERNALOES = 401,
-     SAMPLER = 402,
-     SAMPLERSHADOW = 403,
-     TEXTURE1D = 404,
-     TEXTURE2D = 405,
-     TEXTURE3D = 406,
-     TEXTURECUBE = 407,
-     TEXTURE1DARRAY = 408,
-     TEXTURE2DARRAY = 409,
-     ITEXTURE1D = 410,
-     ITEXTURE2D = 411,
-     ITEXTURE3D = 412,
-     ITEXTURECUBE = 413,
-     ITEXTURE1DARRAY = 414,
-     ITEXTURE2DARRAY = 415,
-     UTEXTURE1D = 416,
-     UTEXTURE2D = 417,
-     UTEXTURE3D = 418,
-     UTEXTURECUBE = 419,
-     UTEXTURE1DARRAY = 420,
-     UTEXTURE2DARRAY = 421,
-     TEXTURE2DRECT = 422,
-     ITEXTURE2DRECT = 423,
-     UTEXTURE2DRECT = 424,
-     TEXTUREBUFFER = 425,
-     ITEXTUREBUFFER = 426,
-     UTEXTUREBUFFER = 427,
-     TEXTURECUBEARRAY = 428,
-     ITEXTURECUBEARRAY = 429,
-     UTEXTURECUBEARRAY = 430,
-     TEXTURE2DMS = 431,
-     ITEXTURE2DMS = 432,
-     UTEXTURE2DMS = 433,
-     TEXTURE2DMSARRAY = 434,
-     ITEXTURE2DMSARRAY = 435,
-     UTEXTURE2DMSARRAY = 436,
-     SUBPASSINPUT = 437,
-     SUBPASSINPUTMS = 438,
-     ISUBPASSINPUT = 439,
-     ISUBPASSINPUTMS = 440,
-     USUBPASSINPUT = 441,
-     USUBPASSINPUTMS = 442,
-     IMAGE1D = 443,
-     IIMAGE1D = 444,
-     UIMAGE1D = 445,
-     IMAGE2D = 446,
-     IIMAGE2D = 447,
-     UIMAGE2D = 448,
-     IMAGE3D = 449,
-     IIMAGE3D = 450,
-     UIMAGE3D = 451,
-     IMAGE2DRECT = 452,
-     IIMAGE2DRECT = 453,
-     UIMAGE2DRECT = 454,
-     IMAGECUBE = 455,
-     IIMAGECUBE = 456,
-     UIMAGECUBE = 457,
-     IMAGEBUFFER = 458,
-     IIMAGEBUFFER = 459,
-     UIMAGEBUFFER = 460,
-     IMAGE1DARRAY = 461,
-     IIMAGE1DARRAY = 462,
-     UIMAGE1DARRAY = 463,
-     IMAGE2DARRAY = 464,
-     IIMAGE2DARRAY = 465,
-     UIMAGE2DARRAY = 466,
-     IMAGECUBEARRAY = 467,
-     IIMAGECUBEARRAY = 468,
-     UIMAGECUBEARRAY = 469,
-     IMAGE2DMS = 470,
-     IIMAGE2DMS = 471,
-     UIMAGE2DMS = 472,
-     IMAGE2DMSARRAY = 473,
-     IIMAGE2DMSARRAY = 474,
-     UIMAGE2DMSARRAY = 475,
-     STRUCT = 476,
-     VOID = 477,
-     WHILE = 478,
-     IDENTIFIER = 479,
-     TYPE_NAME = 480,
-     FLOATCONSTANT = 481,
-     DOUBLECONSTANT = 482,
-     INTCONSTANT = 483,
-     UINTCONSTANT = 484,
-     INT64CONSTANT = 485,
-     UINT64CONSTANT = 486,
-     BOOLCONSTANT = 487,
-     FLOAT16CONSTANT = 488,
-     LEFT_OP = 489,
-     RIGHT_OP = 490,
-     INC_OP = 491,
-     DEC_OP = 492,
-     LE_OP = 493,
-     GE_OP = 494,
-     EQ_OP = 495,
-     NE_OP = 496,
-     AND_OP = 497,
-     OR_OP = 498,
-     XOR_OP = 499,
-     MUL_ASSIGN = 500,
-     DIV_ASSIGN = 501,
-     ADD_ASSIGN = 502,
-     MOD_ASSIGN = 503,
-     LEFT_ASSIGN = 504,
-     RIGHT_ASSIGN = 505,
-     AND_ASSIGN = 506,
-     XOR_ASSIGN = 507,
-     OR_ASSIGN = 508,
-     SUB_ASSIGN = 509,
-     LEFT_PAREN = 510,
-     RIGHT_PAREN = 511,
-     LEFT_BRACKET = 512,
-     RIGHT_BRACKET = 513,
-     LEFT_BRACE = 514,
-     RIGHT_BRACE = 515,
-     DOT = 516,
-     COMMA = 517,
-     COLON = 518,
-     EQUAL = 519,
-     SEMICOLON = 520,
-     BANG = 521,
-     DASH = 522,
-     TILDE = 523,
-     PLUS = 524,
-     STAR = 525,
-     SLASH = 526,
-     PERCENT = 527,
-     LEFT_ANGLE = 528,
-     RIGHT_ANGLE = 529,
-     VERTICAL_BAR = 530,
-     CARET = 531,
-     AMPERSAND = 532,
-     QUESTION = 533,
-     INVARIANT = 534,
-     PRECISE = 535,
-     HIGH_PRECISION = 536,
-     MEDIUM_PRECISION = 537,
-     LOW_PRECISION = 538,
-     PRECISION = 539,
-     PACKED = 540,
-     RESOURCE = 541,
-     SUPERP = 542
++    INT16_T = 268,
++    UINT16_T = 269,
++    FLOAT16_T = 270,
++    BREAK = 271,
++    CONTINUE = 272,
++    DO = 273,
++    ELSE = 274,
++    FOR = 275,
++    IF = 276,
++    DISCARD = 277,
++    RETURN = 278,
++    SWITCH = 279,
++    CASE = 280,
++    DEFAULT = 281,
++    SUBROUTINE = 282,
++    BVEC2 = 283,
++    BVEC3 = 284,
++    BVEC4 = 285,
++    IVEC2 = 286,
++    IVEC3 = 287,
++    IVEC4 = 288,
++    I64VEC2 = 289,
++    I64VEC3 = 290,
++    I64VEC4 = 291,
++    UVEC2 = 292,
++    UVEC3 = 293,
++    UVEC4 = 294,
++    U64VEC2 = 295,
++    U64VEC3 = 296,
++    U64VEC4 = 297,
++    VEC2 = 298,
++    VEC3 = 299,
++    VEC4 = 300,
++    MAT2 = 301,
++    MAT3 = 302,
++    MAT4 = 303,
++    CENTROID = 304,
++    IN = 305,
++    OUT = 306,
++    INOUT = 307,
++    UNIFORM = 308,
++    PATCH = 309,
++    SAMPLE = 310,
++    BUFFER = 311,
++    SHARED = 312,
++    COHERENT = 313,
++    VOLATILE = 314,
++    RESTRICT = 315,
++    READONLY = 316,
++    WRITEONLY = 317,
++    DVEC2 = 318,
++    DVEC3 = 319,
++    DVEC4 = 320,
++    DMAT2 = 321,
++    DMAT3 = 322,
++    DMAT4 = 323,
++    F16VEC2 = 324,
++    F16VEC3 = 325,
++    F16VEC4 = 326,
++    F16MAT2 = 327,
++    F16MAT3 = 328,
++    F16MAT4 = 329,
++    I16VEC2 = 330,
++    I16VEC3 = 331,
++    I16VEC4 = 332,
++    U16VEC2 = 333,
++    U16VEC3 = 334,
++    U16VEC4 = 335,
++    NOPERSPECTIVE = 336,
++    FLAT = 337,
++    SMOOTH = 338,
++    LAYOUT = 339,
++    __EXPLICITINTERPAMD = 340,
++    MAT2X2 = 341,
++    MAT2X3 = 342,
++    MAT2X4 = 343,
++    MAT3X2 = 344,
++    MAT3X3 = 345,
++    MAT3X4 = 346,
++    MAT4X2 = 347,
++    MAT4X3 = 348,
++    MAT4X4 = 349,
++    DMAT2X2 = 350,
++    DMAT2X3 = 351,
++    DMAT2X4 = 352,
++    DMAT3X2 = 353,
++    DMAT3X3 = 354,
++    DMAT3X4 = 355,
++    DMAT4X2 = 356,
++    DMAT4X3 = 357,
++    DMAT4X4 = 358,
++    F16MAT2X2 = 359,
++    F16MAT2X3 = 360,
++    F16MAT2X4 = 361,
++    F16MAT3X2 = 362,
++    F16MAT3X3 = 363,
++    F16MAT3X4 = 364,
++    F16MAT4X2 = 365,
++    F16MAT4X3 = 366,
++    F16MAT4X4 = 367,
++    ATOMIC_UINT = 368,
++    SAMPLER1D = 369,
++    SAMPLER2D = 370,
++    SAMPLER3D = 371,
++    SAMPLERCUBE = 372,
++    SAMPLER1DSHADOW = 373,
++    SAMPLER2DSHADOW = 374,
++    SAMPLERCUBESHADOW = 375,
++    SAMPLER1DARRAY = 376,
++    SAMPLER2DARRAY = 377,
++    SAMPLER1DARRAYSHADOW = 378,
++    SAMPLER2DARRAYSHADOW = 379,
++    ISAMPLER1D = 380,
++    ISAMPLER2D = 381,
++    ISAMPLER3D = 382,
++    ISAMPLERCUBE = 383,
++    ISAMPLER1DARRAY = 384,
++    ISAMPLER2DARRAY = 385,
++    USAMPLER1D = 386,
++    USAMPLER2D = 387,
++    USAMPLER3D = 388,
++    USAMPLERCUBE = 389,
++    USAMPLER1DARRAY = 390,
++    USAMPLER2DARRAY = 391,
++    SAMPLER2DRECT = 392,
++    SAMPLER2DRECTSHADOW = 393,
++    ISAMPLER2DRECT = 394,
++    USAMPLER2DRECT = 395,
++    SAMPLERBUFFER = 396,
++    ISAMPLERBUFFER = 397,
++    USAMPLERBUFFER = 398,
++    SAMPLERCUBEARRAY = 399,
++    SAMPLERCUBEARRAYSHADOW = 400,
++    ISAMPLERCUBEARRAY = 401,
++    USAMPLERCUBEARRAY = 402,
++    SAMPLER2DMS = 403,
++    ISAMPLER2DMS = 404,
++    USAMPLER2DMS = 405,
++    SAMPLER2DMSARRAY = 406,
++    ISAMPLER2DMSARRAY = 407,
++    USAMPLER2DMSARRAY = 408,
++    SAMPLEREXTERNALOES = 409,
++    SAMPLER = 410,
++    SAMPLERSHADOW = 411,
++    TEXTURE1D = 412,
++    TEXTURE2D = 413,
++    TEXTURE3D = 414,
++    TEXTURECUBE = 415,
++    TEXTURE1DARRAY = 416,
++    TEXTURE2DARRAY = 417,
++    ITEXTURE1D = 418,
++    ITEXTURE2D = 419,
++    ITEXTURE3D = 420,
++    ITEXTURECUBE = 421,
++    ITEXTURE1DARRAY = 422,
++    ITEXTURE2DARRAY = 423,
++    UTEXTURE1D = 424,
++    UTEXTURE2D = 425,
++    UTEXTURE3D = 426,
++    UTEXTURECUBE = 427,
++    UTEXTURE1DARRAY = 428,
++    UTEXTURE2DARRAY = 429,
++    TEXTURE2DRECT = 430,
++    ITEXTURE2DRECT = 431,
++    UTEXTURE2DRECT = 432,
++    TEXTUREBUFFER = 433,
++    ITEXTUREBUFFER = 434,
++    UTEXTUREBUFFER = 435,
++    TEXTURECUBEARRAY = 436,
++    ITEXTURECUBEARRAY = 437,
++    UTEXTURECUBEARRAY = 438,
++    TEXTURE2DMS = 439,
++    ITEXTURE2DMS = 440,
++    UTEXTURE2DMS = 441,
++    TEXTURE2DMSARRAY = 442,
++    ITEXTURE2DMSARRAY = 443,
++    UTEXTURE2DMSARRAY = 444,
++    SUBPASSINPUT = 445,
++    SUBPASSINPUTMS = 446,
++    ISUBPASSINPUT = 447,
++    ISUBPASSINPUTMS = 448,
++    USUBPASSINPUT = 449,
++    USUBPASSINPUTMS = 450,
++    IMAGE1D = 451,
++    IIMAGE1D = 452,
++    UIMAGE1D = 453,
++    IMAGE2D = 454,
++    IIMAGE2D = 455,
++    UIMAGE2D = 456,
++    IMAGE3D = 457,
++    IIMAGE3D = 458,
++    UIMAGE3D = 459,
++    IMAGE2DRECT = 460,
++    IIMAGE2DRECT = 461,
++    UIMAGE2DRECT = 462,
++    IMAGECUBE = 463,
++    IIMAGECUBE = 464,
++    UIMAGECUBE = 465,
++    IMAGEBUFFER = 466,
++    IIMAGEBUFFER = 467,
++    UIMAGEBUFFER = 468,
++    IMAGE1DARRAY = 469,
++    IIMAGE1DARRAY = 470,
++    UIMAGE1DARRAY = 471,
++    IMAGE2DARRAY = 472,
++    IIMAGE2DARRAY = 473,
++    UIMAGE2DARRAY = 474,
++    IMAGECUBEARRAY = 475,
++    IIMAGECUBEARRAY = 476,
++    UIMAGECUBEARRAY = 477,
++    IMAGE2DMS = 478,
++    IIMAGE2DMS = 479,
++    UIMAGE2DMS = 480,
++    IMAGE2DMSARRAY = 481,
++    IIMAGE2DMSARRAY = 482,
++    UIMAGE2DMSARRAY = 483,
++    STRUCT = 484,
++    VOID = 485,
++    WHILE = 486,
++    IDENTIFIER = 487,
++    TYPE_NAME = 488,
++    FLOATCONSTANT = 489,
++    DOUBLECONSTANT = 490,
++    INTCONSTANT = 491,
++    UINTCONSTANT = 492,
++    INT64CONSTANT = 493,
++    UINT64CONSTANT = 494,
++    INT16CONSTANT = 495,
++    UINT16CONSTANT = 496,
++    BOOLCONSTANT = 497,
++    FLOAT16CONSTANT = 498,
++    LEFT_OP = 499,
++    RIGHT_OP = 500,
++    INC_OP = 501,
++    DEC_OP = 502,
++    LE_OP = 503,
++    GE_OP = 504,
++    EQ_OP = 505,
++    NE_OP = 506,
++    AND_OP = 507,
++    OR_OP = 508,
++    XOR_OP = 509,
++    MUL_ASSIGN = 510,
++    DIV_ASSIGN = 511,
++    ADD_ASSIGN = 512,
++    MOD_ASSIGN = 513,
++    LEFT_ASSIGN = 514,
++    RIGHT_ASSIGN = 515,
++    AND_ASSIGN = 516,
++    XOR_ASSIGN = 517,
++    OR_ASSIGN = 518,
++    SUB_ASSIGN = 519,
++    LEFT_PAREN = 520,
++    RIGHT_PAREN = 521,
++    LEFT_BRACKET = 522,
++    RIGHT_BRACKET = 523,
++    LEFT_BRACE = 524,
++    RIGHT_BRACE = 525,
++    DOT = 526,
++    COMMA = 527,
++    COLON = 528,
++    EQUAL = 529,
++    SEMICOLON = 530,
++    BANG = 531,
++    DASH = 532,
++    TILDE = 533,
++    PLUS = 534,
++    STAR = 535,
++    SLASH = 536,
++    PERCENT = 537,
++    LEFT_ANGLE = 538,
++    RIGHT_ANGLE = 539,
++    VERTICAL_BAR = 540,
++    CARET = 541,
++    AMPERSAND = 542,
++    QUESTION = 543,
++    INVARIANT = 544,
++    PRECISE = 545,
++    HIGH_PRECISION = 546,
++    MEDIUM_PRECISION = 547,
++    LOW_PRECISION = 548,
++    PRECISION = 549,
++    PACKED = 550,
++    RESOURCE = 551,
++    SUPERP = 552
 +  };
  #endif
  
 -
 -
 +/* Value type.  */
  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 -typedef union YYSTYPE
 -{
  
 -/* Line 1676 of yacc.c  */
 -#line 68 "glslang.y"
 +union YYSTYPE
 +{
 +#line 68 "MachineIndependent/glslang.y" /* yacc.c:1909  */
  
      struct {
          glslang::TSourceLoc loc;
          };
      } interm;
  
- #line 376 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909  */
++#line 386 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909  */
 +};
  
 -
 -/* Line 1676 of yacc.c  */
 -#line 385 "glslang_tab.cpp.h"
 -} YYSTYPE;
 +typedef union YYSTYPE YYSTYPE;
  # define YYSTYPE_IS_TRIVIAL 1
 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */
  # define YYSTYPE_IS_DECLARED 1
  #endif