Commit b14178b6 by Alexis Hetu Committed by Alexis Hétu

Completing GLES 3.0 language parser

Added new matrix and sampler types in glslang parsed files, along with related code and new types in the C++ code. Change-Id: Id70c73fac04d000d508236bc9bf1b39a46beda6f Reviewed-on: https://swiftshader-review.googlesource.com/2826Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent f9b7cb1b
......@@ -156,14 +156,14 @@ bool TCompiler::InitBuiltInSymbolTable(const ShBuiltInResources &resources)
TPublicType integer;
integer.type = EbtInt;
integer.size = 1;
integer.matrix = false;
integer.primarySize = 1;
integer.secondarySize = 1;
integer.array = false;
TPublicType floatingPoint;
floatingPoint.type = EbtFloat;
floatingPoint.size = 1;
floatingPoint.matrix = false;
floatingPoint.primarySize = 1;
floatingPoint.secondarySize = 1;
floatingPoint.array = false;
switch(shaderType)
......
......@@ -81,9 +81,9 @@ void InsertBuiltInFunctions(GLenum type, const ShBuiltInResources &resources, TS
symbolTable.insertBuiltIn(COMMON_BUILTINS, EOpReflect, genType, "reflect", genType, genType);
symbolTable.insertBuiltIn(COMMON_BUILTINS, EOpRefract, genType, "refract", genType, genType, float1);
TType *mat2 = new TType(EbtFloat, 2, true);
TType *mat3 = new TType(EbtFloat, 3, true);
TType *mat4 = new TType(EbtFloat, 4, true);
TType *mat2 = new TType(EbtFloat, 2, 2);
TType *mat3 = new TType(EbtFloat, 3, 3);
TType *mat4 = new TType(EbtFloat, 4, 4);
//
// Matrix Functions.
......@@ -260,7 +260,7 @@ void IdentifyBuiltIns(GLenum shaderType,
case GL_FRAGMENT_SHADER:
{
// Set up gl_FragData. The array size.
TType fragData(EbtFloat, EbpMedium, EvqFragData, 4, false, true);
TType fragData(EbtFloat, EbpMedium, EvqFragData, 4, 1, true);
fragData.setArraySize(resources.MaxDrawBuffers);
symbolTable.insert(ESSL1_BUILTINS, *new TVariable(NewPoolTString("gl_FragData"), fragData));
}
......
......@@ -697,6 +697,7 @@ bool TIntermBinary::promote(TInfoSink& infoSink)
}
int size = std::max(left->getNominalSize(), right->getNominalSize());
int matrixSize = std::max(left->getSecondarySize(), right->getSecondarySize()); // FIXME: This will have to change for NxM matrices
//
// All scalars. Code after this test assumes this case is removed!
......@@ -746,6 +747,12 @@ bool TIntermBinary::promote(TInfoSink& infoSink)
return false;
}
if (left->getSecondarySize() != right->getSecondarySize()) {
// Operator cannot be of type pure assignment.
if (op == EOpAssign || op == EOpInitialize)
return false;
}
//
// Can these two operands be combined?
//
......@@ -757,12 +764,12 @@ bool TIntermBinary::promote(TInfoSink& infoSink)
op = EOpVectorTimesMatrix;
else {
op = EOpMatrixTimesScalar;
setType(TType(basicType, higherPrecision, EvqTemporary, size, true));
setType(TType(basicType, higherPrecision, EvqTemporary, size, matrixSize));
}
} else if (left->isMatrix() && !right->isMatrix()) {
if (right->isVector()) {
op = EOpMatrixTimesVector;
setType(TType(basicType, higherPrecision, EvqTemporary, size, false));
setType(TType(basicType, higherPrecision, EvqTemporary, size, 1));
} else {
op = EOpMatrixTimesScalar;
}
......@@ -773,7 +780,7 @@ bool TIntermBinary::promote(TInfoSink& infoSink)
// leave as component product
} else if (left->isVector() || right->isVector()) {
op = EOpVectorTimesScalar;
setType(TType(basicType, higherPrecision, EvqTemporary, size, false));
setType(TType(basicType, higherPrecision, EvqTemporary, size, 1));
}
} else {
infoSink.info.message(EPrefixInternalError, "Missing elses", getLine());
......@@ -802,7 +809,7 @@ bool TIntermBinary::promote(TInfoSink& infoSink)
if (! left->isVector())
return false;
op = EOpVectorTimesScalarAssign;
setType(TType(basicType, higherPrecision, EvqTemporary, size, false));
setType(TType(basicType, higherPrecision, EvqTemporary, size, 1));
}
} else {
infoSink.info.message(EPrefixInternalError, "Missing elses", getLine());
......@@ -821,7 +828,7 @@ bool TIntermBinary::promote(TInfoSink& infoSink)
if ((left->isMatrix() && right->isVector()) ||
(left->isVector() && right->isMatrix()))
return false;
setType(TType(basicType, higherPrecision, EvqTemporary, size, left->isMatrix() || right->isMatrix()));
setType(TType(basicType, higherPrecision, EvqTemporary, size, matrixSize));
break;
case EOpEqual:
......@@ -1288,6 +1295,6 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
const TType& t = node->getType();
return addConstantUnion(leftUnionArray, TType(promoteTo, t.getPrecision(), t.getQualifier(), t.getNominalSize(), t.isMatrix(), t.isArray()), node->getLine());
return addConstantUnion(leftUnionArray, TType(promoteTo, t.getPrecision(), t.getQualifier(), t.getNominalSize(), t.getSecondarySize(), t.isArray()), node->getLine());
}
......@@ -19,6 +19,7 @@
#define GL_APICALL
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include <GLES3/gl3.h>
namespace glsl
{
......@@ -33,7 +34,7 @@ namespace glsl
class Temporary : public TIntermSymbol
{
public:
Temporary(OutputASM *assembler) : TIntermSymbol(0, "tmp", TType(EbtFloat, EbpHigh, EvqTemporary, 4, false, false)), assembler(assembler)
Temporary(OutputASM *assembler) : TIntermSymbol(0, "tmp", TType(EbtFloat, EbpHigh, EvqTemporary, 4, 1, false)), assembler(assembler)
{
}
......@@ -49,7 +50,7 @@ namespace glsl
class Constant : public TIntermConstantUnion
{
public:
Constant(float x, float y, float z, float w) : TIntermConstantUnion(constants, TType(EbtFloat, EbpHigh, EvqConstExpr, 4, false, false))
Constant(float x, float y, float z, float w) : TIntermConstantUnion(constants, TType(EbtFloat, EbpHigh, EvqConstExpr, 4, 1, false))
{
constants[0].setFConst(x);
constants[1].setFConst(y);
......@@ -57,12 +58,12 @@ namespace glsl
constants[3].setFConst(w);
}
Constant(bool b) : TIntermConstantUnion(constants, TType(EbtBool, EbpHigh, EvqConstExpr, 1, false, false))
Constant(bool b) : TIntermConstantUnion(constants, TType(EbtBool, EbpHigh, EvqConstExpr, 1, 1, false))
{
constants[0].setBConst(b);
}
Constant(int i) : TIntermConstantUnion(constants, TType(EbtInt, EbpHigh, EvqConstExpr, 1, false, false))
Constant(int i) : TIntermConstantUnion(constants, TType(EbtInt, EbpHigh, EvqConstExpr, 1, 1, false))
{
constants[0].setIConst(i);
}
......@@ -2357,9 +2358,30 @@ namespace glsl
{
switch(type.getNominalSize())
{
case 2: return GL_FLOAT_MAT2;
case 3: return GL_FLOAT_MAT3;
case 4: return GL_FLOAT_MAT4;
case 2:
switch(type.getSecondarySize())
{
case 2: return GL_FLOAT_MAT2;
case 3: return GL_FLOAT_MAT2x3;
case 4: return GL_FLOAT_MAT2x4;
default: UNREACHABLE();
}
case 3:
switch(type.getSecondarySize())
{
case 2: return GL_FLOAT_MAT3x2;
case 3: return GL_FLOAT_MAT3;
case 4: return GL_FLOAT_MAT4x2;
default: UNREACHABLE();
}
case 4:
switch(type.getSecondarySize())
{
case 2: return GL_FLOAT_MAT4x2;
case 3: return GL_FLOAT_MAT4x3;
case 4: return GL_FLOAT_MAT4;
default: UNREACHABLE();
}
default: UNREACHABLE();
}
}
......
......@@ -580,7 +580,7 @@ bool TParseContext::boolErrorCheck(int line, const TIntermTyped* type)
//
bool TParseContext::boolErrorCheck(int line, const TPublicType& pType)
{
if (pType.type != EbtBool || pType.array || pType.matrix || (pType.size > 1)) {
if (pType.type != EbtBool || pType.array || (pType.primarySize > 1) || (pType.secondarySize > 1)) {
error(line, "boolean expression expected", "");
return true;
}
......
......@@ -25,7 +25,7 @@
int TSymbolTableLevel::uniqueId = 0;
TType::TType(const TPublicType &p) :
type(p.type), precision(p.precision), qualifier(p.qualifier), size(p.size), matrix(p.matrix), array(p.array), arraySize(p.arraySize),
type(p.type), precision(p.precision), primarySize(p.primarySize), secondarySize(p.secondarySize), qualifier(p.qualifier), array(p.array), arraySize(p.arraySize),
maxArraySize(0), arrayInformationType(0), structure(0), structureSize(0), deepestStructNesting(0), fieldName(0), mangled(0), typeName(0)
{
if (p.userDef)
......
......@@ -439,7 +439,7 @@ public:
return true; // Skip sampler types for the time being
if (type.type != EbtFloat && type.type != EbtInt)
return false; // Only set default precision for int/float
if (type.size != 1 || type.matrix || type.array)
if (type.primarySize > 1 || type.secondarySize > 1 || type.array)
return false; // Not allowed to set for aggregate types
int indexOfLastElement = static_cast<int>(precisionStack.size()) - 1;
precisionStack[indexOfLastElement][type.type] = prec; // Uses map operator [], overwrites the current value
......
......@@ -39,19 +39,19 @@ class TType
public:
POOL_ALLOCATOR_NEW_DELETE();
TType() {}
TType(TBasicType t, int s = 1, bool m = false) :
type(t), precision(EbpUndefined), qualifier(EvqGlobal), size(s), matrix(m), array(false), arraySize(0),
TType(TBasicType t, int s0 = 1, int s1 = 1) :
type(t), precision(EbpUndefined), qualifier(EvqGlobal), primarySize(s0), secondarySize(s1), array(false), arraySize(0),
maxArraySize(0), arrayInformationType(0), structure(0), structureSize(0), deepestStructNesting(0), fieldName(0), mangled(0), typeName(0)
{
}
TType(TBasicType t, TPrecision p, TQualifier q = EvqTemporary, int s = 1, bool m = false, bool a = false) :
type(t), precision(p), qualifier(q), size(s), matrix(m), array(a), arraySize(0),
TType(TBasicType t, TPrecision p, TQualifier q = EvqTemporary, int s0 = 1, int s1 = 1, bool a = false) :
type(t), precision(p), qualifier(q), primarySize(s0), secondarySize(s1), array(a), arraySize(0),
maxArraySize(0), arrayInformationType(0), structure(0), structureSize(0), deepestStructNesting(0), fieldName(0), mangled(0), typeName(0)
{
}
explicit TType(const TPublicType &p);
TType(TTypeList* userDef, const TString& n, TPrecision p = EbpUndefined) :
type(EbtStruct), precision(p), qualifier(EvqTemporary), size(1), matrix(false), array(false), arraySize(0),
type(EbtStruct), precision(p), qualifier(EvqTemporary), primarySize(1), secondarySize(1), array(false), arraySize(0),
maxArraySize(0), arrayInformationType(0), structure(userDef), structureSize(0), deepestStructNesting(0), fieldName(0), mangled(0)
{
typeName = NewPoolTString(n.c_str());
......@@ -67,8 +67,8 @@ public:
void setQualifier(TQualifier q) { qualifier = q; }
// One-dimensional size of single instance type
int getNominalSize() const { return size; }
void setNominalSize(int s) { size = s; }
int getNominalSize() const { return primarySize; }
void setNominalSize(int s) { primarySize = s; }
// Full size of single instance of type
int getObjectSize() const
{
......@@ -88,13 +88,13 @@ public:
{
return getStructSize();
}
else if(matrix)
else if(isMatrix())
{
return size * size;
return primarySize * secondarySize;
}
else // Vector or scalar
{
return size;
return primarySize;
}
}
......@@ -135,8 +135,9 @@ public:
}
}
bool isMatrix() const { return matrix ? true : false; }
void setMatrix(bool m) { matrix = m; }
bool isMatrix() const { return secondarySize > 1; }
void setSecondarySize(int s1) { secondarySize = s1; }
int getSecondarySize() const { return secondarySize; }
bool isArray() const { return array ? true : false; }
int getArraySize() const { return arraySize; }
......@@ -147,9 +148,9 @@ public:
void setArrayInformationType(TType* t) { arrayInformationType = t; }
TType* getArrayInformationType() const { return arrayInformationType; }
bool isVector() const { return size > 1 && !matrix; }
bool isScalar() const { return size == 1 && !matrix && !structure; }
bool isRegister() const { return !matrix && !structure && !array; } // Fits in a 4-element register
bool isVector() const { return primarySize > 1 && !isMatrix(); }
bool isScalar() const { return primarySize == 1 && !isMatrix() && !structure; }
bool isRegister() const { return !isMatrix() && !structure && !array; } // Fits in a 4-element register
bool isStruct() const { return structure != 0; }
bool isScalarInt() const { return isScalar() && (type == EbtInt || type == EbtUInt); }
......@@ -189,15 +190,15 @@ public:
bool sameElementType(const TType& right) const {
return type == right.type &&
size == right.size &&
matrix == right.matrix &&
primarySize == right.primarySize &&
secondarySize == right.secondarySize &&
structure == right.structure;
}
bool operator==(const TType& right) const {
return type == right.type &&
size == right.size &&
matrix == right.matrix &&
array == right.array && (!array || arraySize == right.arraySize) &&
primarySize == right.primarySize &&
secondarySize == right.secondarySize &&
array == right.array && (!array || arraySize == right.arraySize) &&
structure == right.structure;
// don't check the qualifier, it's not ever what's being sought after
}
......@@ -206,8 +207,8 @@ public:
}
bool operator<(const TType& right) const {
if (type != right.type) return type < right.type;
if (size != right.size) return size < right.size;
if (matrix != right.matrix) return matrix < right.matrix;
if(primarySize != right.primarySize) return (primarySize * secondarySize) < (right.primarySize * right.secondarySize);
if(secondarySize != right.secondarySize) return secondarySize < right.secondarySize;
if (array != right.array) return array < right.array;
if (arraySize != right.arraySize) return arraySize < right.arraySize;
if (structure != right.structure) return structure < right.structure;
......@@ -244,8 +245,8 @@ protected:
TBasicType type;
TPrecision precision;
TQualifier qualifier;
unsigned char size; // size of vector or matrix, not size of array
bool matrix;
unsigned char primarySize; // size of vector or matrix, not size of array
unsigned char secondarySize; // secondarySize: 1 for vectors, >1 for matrices
bool array;
int arraySize;
int maxArraySize;
......@@ -275,8 +276,8 @@ struct TPublicType
TLayoutQualifier layoutQualifier;
TQualifier qualifier;
TPrecision precision;
int size; // size of vector or matrix, not size of array
bool matrix;
int primarySize; // size of vector or matrix, not size of array
int secondarySize; // 1 for scalars/vectors, >1 for matrices
bool array;
int arraySize;
TType* userDef;
......@@ -288,20 +289,26 @@ struct TPublicType
layoutQualifier = TLayoutQualifier::create();
qualifier = q;
precision = EbpUndefined;
size = 1;
matrix = false;
primarySize = 1;
secondarySize = 1;
array = false;
arraySize = 0;
userDef = 0;
line = ln;
}
void setAggregate(int s, bool m = false)
void setAggregate(int s)
{
size = s;
matrix = m;
primarySize = s;
secondarySize = 1;
}
void setMatrix(int s0, int s1)
{
primarySize = s0;
secondarySize = s1;
}
void setArray(bool a, int s = 0)
{
array = a;
......
/*
//
// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
// Copyright (c) 2002-2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
......@@ -133,6 +133,17 @@ O [0-7]
"mat3" { context->lexAfterType = true; return(MATRIX3); }
"mat4" { context->lexAfterType = true; return(MATRIX4); }
"mat2x2" { return ES2_identifier_ES3_keyword(context, MATRIX2); }
"mat3x3" { return ES2_identifier_ES3_keyword(context, MATRIX3); }
"mat4x4" { return ES2_identifier_ES3_keyword(context, MATRIX4); }
"mat2x3" { return ES2_identifier_ES3_keyword(context, MATRIX2x3); }
"mat3x2" { return ES2_identifier_ES3_keyword(context, MATRIX3x2); }
"mat2x4" { return ES2_identifier_ES3_keyword(context, MATRIX2x4); }
"mat4x2" { return ES2_identifier_ES3_keyword(context, MATRIX4x2); }
"mat3x4" { return ES2_identifier_ES3_keyword(context, MATRIX3x4); }
"mat4x3" { return ES2_identifier_ES3_keyword(context, MATRIX4x3); }
"vec2" { context->lexAfterType = true; return (VEC2); }
"vec3" { context->lexAfterType = true; return (VEC3); }
"vec4" { context->lexAfterType = true; return (VEC4); }
......@@ -151,7 +162,18 @@ O [0-7]
"samplerExternalOES" { context->lexAfterType = true; return SAMPLER_EXTERNAL_OES; }
"sampler3D" { context->lexAfterType = true; return SAMPLER3D; }
"sampler3DRect" { return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); }
"sampler2DArray" { return ES2_identifier_ES3_keyword(context, SAMPLER2DARRAY); }
"isampler2D" { return ES2_identifier_ES3_keyword(context, ISAMPLER2D); }
"isampler3D" { return ES2_identifier_ES3_keyword(context, ISAMPLER3D); }
"isamplerCube" { return ES2_identifier_ES3_keyword(context, ISAMPLERCUBE); }
"isampler2DArray" { return ES2_identifier_ES3_keyword(context, ISAMPLER2DARRAY); }
"usampler2D" { return ES2_identifier_ES3_keyword(context, USAMPLER2D); }
"usampler3D" { return ES2_identifier_ES3_keyword(context, USAMPLER3D); }
"usamplerCube" { return ES2_identifier_ES3_keyword(context, USAMPLERCUBE); }
"usampler2DArray" { return ES2_identifier_ES3_keyword(context, USAMPLER2DARRAY); }
"sampler2DShadow" { return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); }
"samplerCubeShadow" { return ES2_identifier_ES3_keyword(context, SAMPLERCUBESHADOW); }
"sampler2DArrayShadow" { return ES2_identifier_ES3_keyword(context, SAMPLER2DARRAYSHADOW); }
"struct" { context->lexAfterType = true; return(STRUCT); }
......
/*
//
// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
// Copyright (c) 2002-2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
......@@ -15,7 +15,7 @@ WHICH GENERATES THE GLSL ES PARSER (glslang_tab.cpp AND glslang_tab.h).
%{
//
// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
// Copyright (c) 2002-2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
......@@ -127,10 +127,13 @@ extern void yyerror(TParseContext* context, const char* reason);
%token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT
%token <lex> BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 VEC2 VEC3 VEC4 UVEC2 UVEC3 UVEC4
%token <lex> MATRIX2 MATRIX3 MATRIX4 IN_QUAL OUT_QUAL INOUT_QUAL UNIFORM VARYING
%token <lex> MATRIX2x3 MATRIX3x2 MATRIX2x4 MATRIX4x2 MATRIX3x4 MATRIX4x3
%token <lex> CENTROID FLAT SMOOTH
%token <lex> STRUCT VOID_TYPE WHILE
%token <lex> SAMPLER2D SAMPLERCUBE SAMPLER_EXTERNAL_OES SAMPLER2DRECT
%token <lex> SAMPLER3D SAMPLER3DRECT SAMPLER2DSHADOW
%token <lex> SAMPLER2D SAMPLERCUBE SAMPLER_EXTERNAL_OES SAMPLER2DRECT SAMPLER2DARRAY
%token <lex> ISAMPLER2D ISAMPLER3D ISAMPLERCUBE ISAMPLER2DARRAY
%token <lex> USAMPLER2D USAMPLER3D USAMPLERCUBE USAMPLER2DARRAY
%token <lex> SAMPLER3D SAMPLER3DRECT SAMPLER2DSHADOW SAMPLERCUBESHADOW SAMPLER2DARRAYSHADOW
%token <lex> LAYOUT
%token <lex> IDENTIFIER TYPE_NAME FLOATCONSTANT INTCONSTANT UINTCONSTANT BOOLCONSTANT
......@@ -315,7 +318,7 @@ postfix_expression
if ($1->getType().getStruct())
$$->setType(TType($1->getType().getStruct(), $1->getType().getTypeName()));
else
$$->setType(TType($1->getBasicType(), $1->getPrecision(), EvqTemporary, $1->getNominalSize(), $1->isMatrix()));
$$->setType(TType($1->getBasicType(), $1->getPrecision(), EvqTemporary, $1->getNominalSize(), $1->getSecondarySize()));
if ($1->getType().getQualifier() == EvqConstExpr)
$$->getTypePointer()->setQualifier(EvqConstExpr);
......@@ -631,23 +634,37 @@ function_identifier
} else {
switch ($1.type) {
case EbtFloat:
if ($1.matrix) {
switch($1.size) {
case 2: op = EOpConstructMat2; break;
case 3: op = EOpConstructMat3; break;
case 4: op = EOpConstructMat4; break;
switch($1.primarySize) {
case 1:
op = EOpConstructFloat; break;
case 2:
switch($1.secondarySize) {
case 1: op = EOpConstructVec2; break;
case 2: op = EOpConstructMat2; break;
case 3: op = EOpConstructMat2x3; break;
case 4: op = EOpConstructMat2x4; break;
}
} else {
switch($1.size) {
case 1: op = EOpConstructFloat; break;
case 2: op = EOpConstructVec2; break;
case 3: op = EOpConstructVec3; break;
case 4: op = EOpConstructVec4; break;
break;
case 3:
switch($1.secondarySize) {
case 1: op = EOpConstructVec3; break;
case 2: op = EOpConstructMat3x2; break;
case 3: op = EOpConstructMat3; break;
case 4: op = EOpConstructMat3x4; break;
}
break;
case 4:
switch($1.secondarySize) {
case 1: op = EOpConstructVec4; break;
case 2: op = EOpConstructMat4x2; break;
case 3: op = EOpConstructMat4x3; break;
case 4: op = EOpConstructMat4; break;
}
break;
}
break;
case EbtInt:
switch($1.size) {
switch($1.primarySize) {
case 1: op = EOpConstructInt; break;
case 2: FRAG_VERT_ONLY("ivec2", $1.line); op = EOpConstructIVec2; break;
case 3: FRAG_VERT_ONLY("ivec3", $1.line); op = EOpConstructIVec3; break;
......@@ -655,7 +672,7 @@ function_identifier
}
break;
case EbtBool:
switch($1.size) {
switch($1.primarySize) {
case 1: op = EOpConstructBool; break;
case 2: FRAG_VERT_ONLY("bvec2", $1.line); op = EOpConstructBVec2; break;
case 3: FRAG_VERT_ONLY("bvec3", $1.line); op = EOpConstructBVec3; break;
......@@ -1737,19 +1754,55 @@ type_specifier_nonarray
FRAG_VERT_ONLY("mat2", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtFloat, qual, $1.line);
$$.setAggregate(2, true);
$$.setMatrix(2, 2);
}
| MATRIX3 {
FRAG_VERT_ONLY("mat3", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtFloat, qual, $1.line);
$$.setAggregate(3, true);
$$.setMatrix(3, 3);
}
| MATRIX4 {
FRAG_VERT_ONLY("mat4", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtFloat, qual, $1.line);
$$.setAggregate(4, true);
$$.setMatrix(4, 4);
}
| MATRIX2x3 {
FRAG_VERT_ONLY("mat2x3", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtFloat, qual, $1.line);
$$.setMatrix(2, 3);
}
| MATRIX3x2 {
FRAG_VERT_ONLY("mat3x2", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtFloat, qual, $1.line);
$$.setMatrix(3, 2);
}
| MATRIX2x4 {
FRAG_VERT_ONLY("mat2x4", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtFloat, qual, $1.line);
$$.setMatrix(2, 4);
}
| MATRIX4x2 {
FRAG_VERT_ONLY("mat4x2", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtFloat, qual, $1.line);
$$.setMatrix(4, 2);
}
| MATRIX3x4 {
FRAG_VERT_ONLY("mat3x4", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtFloat, qual, $1.line);
$$.setMatrix(3, 4);
}
| MATRIX4x3 {
FRAG_VERT_ONLY("mat4x3", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtFloat, qual, $1.line);
$$.setMatrix(4, 3);
}
| SAMPLER2D {
FRAG_VERT_ONLY("sampler2D", $1.line);
......@@ -1775,6 +1828,66 @@ type_specifier_nonarray
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtSampler3D, qual, $1.line);
}
| SAMPLER2DARRAY {
FRAG_VERT_ONLY("sampler2DArray", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtSampler2DArray, qual, $1.line);
}
| ISAMPLER2D {
FRAG_VERT_ONLY("isampler2D", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtISampler2D, qual, $1.line);
}
| ISAMPLER3D {
FRAG_VERT_ONLY("isampler3D", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtISampler3D, qual, $1.line);
}
| ISAMPLERCUBE {
FRAG_VERT_ONLY("isamplerCube", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtISamplerCube, qual, $1.line);
}
| ISAMPLER2DARRAY {
FRAG_VERT_ONLY("isampler2DArray", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtISampler2DArray, qual, $1.line);
}
| USAMPLER2D {
FRAG_VERT_ONLY("usampler2D", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtUSampler2D, qual, $1.line);
}
| USAMPLER3D {
FRAG_VERT_ONLY("usampler3D", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtUSampler3D, qual, $1.line);
}
| USAMPLERCUBE {
FRAG_VERT_ONLY("usamplerCube", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtUSamplerCube, qual, $1.line);
}
| USAMPLER2DARRAY {
FRAG_VERT_ONLY("usampler2DArray", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtUSampler2DArray, qual, $1.line);
}
| SAMPLER2DSHADOW {
FRAG_VERT_ONLY("sampler2DShadow", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtSampler2DShadow, qual, $1.line);
}
| SAMPLERCUBESHADOW {
FRAG_VERT_ONLY("samplerCubeShadow", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtSamplerCubeShadow, qual, $1.line);
}
| SAMPLER2DARRAYSHADOW {
FRAG_VERT_ONLY("sampler2DArrayShadow", $1.line);
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtSampler2DArrayShadow, qual, $1.line);
}
| struct_specifier {
FRAG_VERT_ONLY("struct", $1.line);
$$ = $1;
......@@ -1846,8 +1959,8 @@ struct_declaration
//
TType* type = (*$$)[i].type;
type->setBasicType($1.type);
type->setNominalSize($1.size);
type->setMatrix($1.matrix);
type->setNominalSize($1.primarySize);
type->setSecondarySize($1.secondarySize);
type->setPrecision($1.precision);
// don't allow arrays of arrays
......
......@@ -392,8 +392,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
#define YY_NUM_RULES 222
#define YY_END_OF_BUFFER 223
#define YY_NUM_RULES 242
#define YY_END_OF_BUFFER 243
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
......@@ -401,93 +401,99 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
static yyconst flex_int16_t yy_accept[775] =
static yyconst flex_int16_t yy_accept[826] =
{ 0,
0, 0, 0, 0, 0, 0, 223, 221, 220, 220,
205, 211, 216, 200, 201, 209, 208, 197, 206, 204,
210, 166, 166, 198, 194, 212, 199, 213, 217, 162,
202, 203, 215, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 195, 214, 196, 207, 3, 4, 3,
219, 222, 218, 191, 177, 196, 185, 180, 175, 183,
173, 184, 174, 172, 2, 1, 176, 171, 164, 165,
0, 169, 0, 166, 203, 195, 202, 192, 188, 190,
189, 193, 162, 181, 187, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 17, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 20, 162, 162, 28, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 182, 186,
5, 218, 0, 1, 171, 0, 168, 0, 170, 163,
178, 179, 162, 120, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 18, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 32, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
29, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 0, 172, 0, 171, 167,
162, 162, 162, 35, 162, 162, 23, 159, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 21, 123,
162, 162, 162, 162, 26, 162, 162, 127, 139, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 136, 9, 40, 41, 42, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
126, 36, 162, 162, 33, 162, 162, 162, 162, 162,
162, 162, 43, 44, 45, 34, 162, 162, 162, 162,
162, 162, 15, 52, 53, 54, 162, 121, 162, 162,
12, 162, 162, 162, 162, 148, 149, 150, 162, 37,
162, 140, 31, 151, 152, 153, 7, 145, 146, 147,
162, 162, 162, 30, 143, 162, 162, 162, 46, 47,
48, 162, 162, 162, 162, 162, 162, 162, 162, 70,
162, 162, 162, 162, 162, 162, 162, 137, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 122,
162, 162, 161, 49, 50, 51, 162, 162, 19, 162,
75, 162, 162, 162, 162, 73, 162, 162, 162, 138,
133, 76, 162, 162, 162, 162, 162, 162, 128, 162,
162, 162, 62, 162, 162, 162, 162, 144, 119, 162,
162, 131, 162, 162, 162, 39, 71, 158, 27, 132,
61, 162, 142, 22, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 24, 38,
162, 162, 162, 162, 162, 162, 77, 78, 79, 162,
162, 162, 162, 162, 8, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 124, 162, 162, 162,
162, 162, 13, 162, 162, 14, 162, 162, 162, 162,
25, 63, 16, 134, 81, 82, 83, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 129,
162, 162, 162, 65, 67, 64, 162, 162, 162, 162,
162, 162, 162, 125, 85, 86, 87, 162, 162, 141,
162, 130, 162, 162, 11, 162, 162, 162, 162, 162,
162, 162, 162, 162, 80, 135, 6, 162, 162, 162,
160, 162, 74, 10, 154, 55, 58, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 66, 162,
162, 162, 162, 84, 162, 162, 162, 162, 162, 104,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 72, 162, 162, 162, 88, 106, 162, 162,
68, 162, 162, 162, 162, 162, 162, 162, 99, 162,
162, 162, 162, 162, 162, 162, 113, 162, 162, 162,
162, 56, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 100, 89, 162, 90, 162, 162, 114, 162,
162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 101, 162, 115, 162, 162, 91, 92, 162,
95, 162, 96, 162, 162, 162, 162, 69, 162, 162,
162, 156, 162, 59, 110, 162, 93, 94, 162, 162,
162, 162, 162, 162, 162, 162, 108, 111, 102, 162,
162, 162, 162, 162, 162, 162, 109, 112, 162, 162,
105, 162, 162, 155, 162, 162, 60, 162, 107, 162,
162, 162, 162, 162, 116, 162, 162, 162, 162, 162,
117, 162, 162, 162, 118, 97, 98, 162, 162, 57,
162, 157, 103, 0
0, 0, 0, 0, 0, 0, 243, 241, 240, 240,
225, 231, 236, 220, 221, 229, 228, 217, 226, 224,
230, 186, 186, 218, 214, 232, 219, 233, 237, 182,
222, 223, 235, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 215, 234, 216, 227, 3, 4, 3,
239, 242, 238, 211, 197, 216, 205, 200, 195, 203,
193, 204, 194, 192, 2, 1, 196, 191, 184, 185,
0, 189, 0, 186, 223, 215, 222, 212, 208, 210,
209, 213, 182, 201, 207, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 17, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 20, 182, 182, 28, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 202, 206,
5, 238, 0, 1, 191, 0, 188, 0, 190, 183,
198, 199, 182, 140, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 18, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 32, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
29, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 0, 192, 0, 191, 187,
182, 182, 182, 35, 182, 182, 23, 179, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 21, 143,
182, 182, 182, 182, 26, 182, 182, 147, 159, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 156, 9, 40, 41, 42, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
146, 36, 182, 182, 33, 182, 182, 182, 182, 182,
182, 182, 52, 53, 54, 34, 182, 182, 182, 182,
182, 182, 15, 61, 62, 63, 182, 141, 182, 182,
12, 182, 182, 182, 182, 168, 169, 170, 182, 37,
182, 160, 31, 171, 172, 173, 7, 165, 166, 167,
182, 182, 182, 30, 163, 182, 182, 182, 55, 56,
57, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 90, 182, 182, 182, 182, 182, 182, 182,
157, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 142, 182, 182, 181, 58, 59, 60, 182,
182, 19, 182, 95, 182, 182, 182, 182, 93, 182,
182, 182, 158, 153, 96, 182, 182, 182, 182, 182,
182, 148, 182, 182, 182, 82, 43, 46, 48, 47,
44, 50, 49, 51, 45, 182, 182, 182, 182, 164,
139, 182, 182, 151, 182, 182, 182, 39, 91, 178,
27, 152, 81, 182, 162, 22, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
24, 38, 182, 182, 182, 182, 182, 182, 97, 98,
99, 182, 182, 182, 182, 182, 8, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 144, 182,
182, 182, 182, 182, 13, 182, 182, 14, 182, 182,
182, 182, 25, 83, 16, 154, 101, 102, 103, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 149, 182, 182, 182, 85, 87, 84, 182, 182,
182, 182, 182, 182, 182, 145, 105, 106, 107, 182,
182, 161, 182, 150, 182, 182, 11, 182, 182, 182,
182, 182, 182, 182, 182, 182, 100, 155, 6, 182,
182, 182, 182, 182, 180, 182, 94, 10, 174, 64,
67, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 86, 182, 182, 182, 182, 104,
182, 182, 182, 182, 182, 124, 70, 71, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 92, 182, 182, 182, 108, 126, 74, 75, 182,
182, 88, 182, 182, 182, 182, 182, 182, 182, 119,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
133, 182, 182, 182, 182, 65, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 120, 109,
182, 110, 182, 182, 182, 134, 182, 182, 72, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 121, 182, 182, 135, 182, 182, 76, 111,
112, 182, 115, 182, 116, 182, 182, 182, 182, 182,
89, 182, 182, 182, 182, 176, 182, 68, 130, 182,
182, 113, 114, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 128, 131, 122, 182, 69, 182, 182,
182, 182, 182, 182, 182, 182, 129, 132, 182, 182,
125, 73, 182, 182, 175, 182, 182, 182, 78, 182,
182, 127, 77, 182, 182, 182, 182, 182, 182, 136,
182, 182, 182, 182, 182, 182, 137, 182, 182, 182,
79, 182, 138, 117, 118, 182, 182, 182, 66, 182,
182, 177, 123, 80, 0
} ;
static yyconst flex_int32_t yy_ec[256] =
......@@ -534,185 +540,197 @@ static yyconst flex_int32_t yy_meta[73] =
1, 1
} ;
static yyconst flex_int16_t yy_base[780] =
static yyconst flex_int16_t yy_base[831] =
{ 0,
0, 0, 70, 71, 80, 0, 995, 996, 996, 996,
969, 50, 147, 996, 996, 968, 144, 996, 143, 141,
156, 169, 223, 966, 996, 169, 966, 52, 996, 0,
996, 996, 152, 117, 138, 118, 157, 148, 167, 932,
147, 173, 159, 126, 188, 926, 200, 939, 205, 199,
212, 226, 147, 996, 158, 996, 996, 996, 996, 973,
996, 996, 0, 996, 996, 996, 996, 996, 996, 996,
996, 996, 996, 262, 996, 0, 996, 272, 256, 310,
297, 996, 0, 0, 996, 996, 996, 961, 996, 996,
996, 960, 0, 996, 996, 922, 927, 191, 924, 932,
931, 918, 921, 932, 245, 926, 914, 911, 924, 911,
908, 908, 914, 158, 240, 908, 918, 904, 910, 913,
914, 0, 906, 916, 277, 915, 910, 891, 162, 895,
908, 899, 246, 892, 286, 904, 906, 289, 895, 892,
881, 890, 292, 294, 894, 890, 892, 881, 884, 287,
203, 255, 893, 881, 893, 199, 886, 885, 996, 996,
996, 0, 345, 0, 359, 377, 996, 384, 394, 306,
996, 996, 884, 0, 880, 875, 879, 888, 885, 305,
869, 869, 880, 872, 309, 882, 879, 879, 877, 874,
866, 872, 859, 857, 869, 855, 871, 0, 868, 856,
863, 860, 864, 865, 858, 855, 844, 843, 856, 859,
847, 855, 843, 849, 840, 364, 845, 848, 839, 846,
835, 839, 830, 844, 843, 834, 840, 248, 824, 827,
825, 835, 825, 820, 818, 820, 830, 816, 818, 815,
826, 825, 828, 810, 366, 818, 814, 812, 821, 800,
367, 818, 820, 809, 801, 402, 410, 417, 424, 996,
798, 808, 807, 0, 805, 429, 0, 0, 798, 796,
796, 797, 792, 800, 789, 806, 795, 432, 0, 0,
789, 799, 798, 798, 0, 783, 435, 0, 0, 785,
438, 792, 793, 784, 778, 777, 778, 777, 777, 441,
772, 0, 0, 0, 0, 0, 771, 772, 777, 771,
767, 780, 775, 775, 773, 772, 766, 760, 762, 761,
765, 757, 760, 755, 763, 768, 756, 753, 765, 756,
0, 0, 762, 758, 0, 750, 750, 755, 746, 753,
444, 750, 0, 0, 0, 0, 740, 752, 751, 750,
751, 751, 0, 0, 0, 0, 738, 0, 746, 737,
0, 736, 737, 731, 741, 0, 0, 0, 732, 0,
728, 0, 0, 0, 0, 0, 0, 0, 0, 0,
738, 448, 737, 0, 0, 735, 731, 728, 0, 0,
0, 720, 725, 721, 726, 717, 715, 728, 713, 0,
713, 726, 715, 711, 717, 712, 719, 0, 717, 714,
718, 702, 700, 703, 709, 715, 710, 709, 697, 0,
699, 700, 0, 0, 0, 0, 697, 700, 0, 694,
0, 707, 687, 696, 691, 0, 684, 684, 697, 0,
699, 0, 451, 712, 711, 710, 677, 676, 0, 693,
692, 687, 0, 676, 689, 676, 673, 0, 0, 678,
677, 0, 674, 681, 680, 0, 666, 0, 0, 0,
0, 663, 0, 0, 662, 673, 454, 666, 672, 671,
668, 663, 660, 653, 653, 666, 651, 663, 0, 0,
656, 679, 678, 677, 644, 643, 330, 447, 0, 655,
658, 656, 645, 641, 0, 653, 650, 649, 639, 638,
628, 645, 631, 470, 639, 642, 0, 659, 658, 657,
624, 623, 0, 637, 624, 0, 634, 627, 628, 631,
0, 0, 0, 0, 651, 650, 0, 627, 630, 615,
622, 613, 620, 621, 621, 620, 606, 474, 618, 0,
619, 608, 607, 0, 0, 0, 632, 631, 630, 597,
596, 592, 600, 0, 628, 627, 0, 604, 607, 0,
476, 0, 585, 594, 0, 590, 589, 598, 598, 586,
600, 584, 598, 593, 0, 0, 0, 610, 609, 576,
0, 576, 0, 0, 451, 459, 600, 586, 589, 572,
584, 572, 571, 580, 580, 597, 596, 563, 0, 563,
564, 563, 573, 0, 576, 572, 574, 570, 557, 588,
353, 565, 561, 553, 560, 573, 561, 557, 559, 557,
557, 556, 0, 544, 543, 553, 0, 573, 439, 550,
0, 554, 553, 537, 529, 537, 527, 535, 0, 532,
553, 541, 539, 524, 527, 541, 557, 537, 538, 535,
532, 0, 520, 534, 533, 517, 516, 537, 525, 523,
505, 504, 0, 532, 504, 530, 502, 506, 537, 517,
514, 513, 516, 512, 499, 496, 509, 494, 495, 497,
486, 485, 0, 491, 522, 502, 499, 0, 0, 495,
0, 494, 0, 500, 484, 481, 482, 0, 474, 482,
479, 500, 479, 0, 0, 491, 0, 0, 490, 474,
471, 472, 486, 485, 462, 468, 0, 0, 489, 461,
480, 472, 458, 467, 454, 460, 0, 0, 471, 470,
0, 470, 452, 0, 434, 453, 0, 459, 0, 437,
415, 349, 339, 327, 0, 308, 315, 271, 259, 255,
0, 255, 216, 209, 0, 0, 0, 158, 132, 0,
115, 0, 0, 996, 505, 507, 509, 513, 163
0, 0, 70, 71, 80, 0, 1046, 1047, 1047, 1047,
1020, 50, 147, 1047, 1047, 1019, 144, 1047, 143, 141,
156, 169, 223, 1017, 1047, 169, 1017, 52, 1047, 0,
1047, 1047, 152, 117, 138, 118, 157, 148, 167, 983,
147, 173, 159, 126, 188, 977, 200, 990, 205, 199,
212, 226, 147, 1047, 158, 1047, 1047, 1047, 1047, 1024,
1047, 1047, 0, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
1047, 1047, 1047, 262, 1047, 0, 1047, 272, 256, 310,
297, 1047, 0, 0, 1047, 1047, 1047, 1012, 1047, 1047,
1047, 1011, 0, 1047, 1047, 973, 978, 191, 975, 983,
982, 969, 972, 983, 245, 977, 965, 962, 975, 962,
959, 959, 965, 158, 240, 959, 969, 955, 961, 964,
965, 0, 957, 967, 277, 966, 961, 942, 162, 946,
959, 950, 246, 943, 286, 955, 957, 289, 946, 943,
932, 941, 292, 294, 945, 941, 943, 932, 935, 287,
203, 255, 944, 932, 944, 199, 937, 936, 1047, 1047,
1047, 0, 345, 0, 359, 377, 1047, 384, 394, 306,
1047, 1047, 935, 0, 931, 926, 930, 939, 936, 305,
920, 920, 931, 923, 309, 933, 930, 930, 928, 925,
917, 923, 910, 908, 920, 906, 922, 0, 919, 907,
914, 911, 915, 916, 909, 906, 895, 894, 907, 910,
898, 906, 894, 900, 891, 364, 896, 899, 890, 897,
886, 890, 881, 895, 894, 885, 891, 248, 875, 878,
876, 886, 876, 871, 869, 871, 881, 867, 869, 866,
877, 876, 879, 861, 366, 869, 865, 863, 872, 851,
367, 869, 871, 860, 852, 402, 410, 417, 424, 1047,
849, 859, 858, 0, 856, 429, 0, 0, 849, 847,
847, 848, 843, 851, 840, 857, 846, 432, 0, 0,
840, 850, 849, 849, 0, 834, 435, 0, 0, 836,
438, 843, 844, 835, 829, 828, 829, 828, 828, 441,
823, 0, 0, 819, 818, 817, 819, 820, 825, 819,
815, 828, 823, 823, 821, 820, 814, 808, 810, 809,
813, 805, 808, 803, 811, 816, 804, 801, 813, 804,
0, 0, 810, 806, 0, 798, 798, 803, 794, 801,
444, 798, 0, 0, 0, 0, 788, 800, 799, 798,
799, 799, 0, 0, 0, 0, 786, 0, 794, 785,
0, 784, 785, 779, 789, 0, 0, 0, 780, 0,
776, 0, 0, 0, 0, 0, 0, 0, 0, 0,
786, 448, 785, 0, 0, 783, 779, 776, 0, 0,
0, 768, 450, 453, 456, 773, 769, 774, 765, 763,
776, 761, 0, 761, 774, 763, 759, 765, 760, 767,
0, 765, 762, 766, 750, 748, 751, 757, 763, 758,
757, 745, 0, 747, 748, 0, 0, 0, 0, 745,
748, 0, 742, 0, 755, 735, 744, 739, 0, 732,
732, 745, 0, 747, 0, 463, 760, 759, 758, 725,
724, 0, 741, 740, 735, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 724, 737, 724, 721, 0,
0, 726, 725, 0, 722, 729, 728, 0, 714, 0,
0, 0, 0, 711, 0, 0, 710, 721, 466, 714,
720, 719, 716, 711, 708, 701, 701, 714, 699, 711,
0, 0, 704, 727, 726, 725, 692, 691, 330, 448,
0, 703, 706, 704, 693, 689, 0, 701, 698, 697,
687, 686, 676, 693, 679, 471, 687, 690, 0, 707,
706, 705, 672, 671, 0, 685, 672, 0, 682, 675,
676, 679, 0, 0, 0, 0, 699, 698, 0, 675,
678, 663, 670, 661, 668, 669, 669, 668, 654, 481,
666, 0, 667, 656, 655, 0, 0, 0, 680, 679,
678, 645, 644, 640, 648, 0, 676, 675, 0, 652,
655, 0, 488, 0, 633, 642, 0, 638, 637, 646,
646, 634, 648, 632, 646, 641, 0, 0, 0, 658,
657, 656, 623, 622, 0, 622, 0, 0, 474, 485,
646, 632, 635, 618, 630, 618, 617, 626, 626, 643,
642, 641, 608, 607, 0, 607, 608, 607, 617, 0,
620, 616, 618, 614, 601, 632, 479, 0, 609, 612,
604, 596, 603, 594, 615, 603, 599, 601, 599, 599,
598, 0, 586, 585, 595, 0, 615, 491, 0, 592,
595, 0, 595, 594, 578, 570, 578, 568, 576, 0,
573, 572, 593, 581, 579, 579, 563, 566, 580, 564,
595, 575, 576, 573, 570, 580, 557, 571, 570, 554,
553, 552, 573, 561, 559, 559, 540, 539, 0, 567,
539, 565, 537, 541, 540, 571, 551, 548, 0, 547,
550, 546, 548, 532, 529, 542, 527, 528, 535, 529,
518, 517, 0, 523, 522, 553, 533, 530, 0, 0,
0, 526, 0, 525, 0, 531, 530, 514, 511, 512,
0, 504, 512, 502, 508, 529, 508, 0, 0, 520,
519, 0, 0, 518, 517, 501, 498, 499, 513, 512,
489, 488, 494, 0, 0, 515, 487, 513, 505, 497,
483, 118, 125, 130, 149, 187, 0, 0, 226, 255,
0, 0, 275, 272, 0, 286, 280, 311, 0, 314,
352, 0, 0, 345, 348, 349, 418, 445, 446, 0,
446, 443, 477, 448, 456, 459, 0, 477, 479, 471,
0, 492, 0, 0, 0, 473, 474, 468, 0, 469,
470, 0, 0, 0, 1047, 535, 537, 539, 543, 542
} ;
static yyconst flex_int16_t yy_def[780] =
static yyconst flex_int16_t yy_def[831] =
{ 0,
774, 1, 775, 775, 774, 5, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 776,
774, 774, 774, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 774, 774, 774, 774, 774, 774, 774,
774, 774, 777, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 778, 774, 774, 22, 774,
774, 774, 779, 23, 774, 774, 774, 774, 774, 774,
774, 774, 776, 774, 774, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 774, 774,
774, 777, 774, 778, 774, 774, 774, 774, 774, 779,
774, 774, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 774, 774, 774, 774, 774,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 0, 774, 774, 774, 774, 774
825, 1, 826, 826, 825, 5, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 827,
825, 825, 825, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 825, 825, 825, 825, 825, 825, 825,
825, 825, 828, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 829, 825, 825, 22, 825,
825, 825, 830, 23, 825, 825, 825, 825, 825, 825,
825, 825, 827, 825, 825, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 825, 825,
825, 828, 825, 829, 825, 825, 825, 825, 825, 830,
825, 825, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 825, 825, 825, 825, 825,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 0, 825, 825, 825, 825, 825
} ;
static yyconst flex_int16_t yy_nxt[1069] =
static yyconst flex_int16_t yy_nxt[1120] =
{ 0,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 23, 23, 23, 23,
......@@ -731,109 +749,115 @@ static yyconst flex_int16_t yy_nxt[1069] =
63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
63, 63, 63, 63, 63, 63, 63, 63, 8, 8,
8, 8, 67, 70, 72, 74, 74, 74, 74, 74,
74, 74, 102, 96, 75, 170, 103, 73, 71, 76,
130, 68, 104, 86, 131, 105, 94, 97, 98, 773,
74, 74, 102, 96, 75, 790, 103, 73, 71, 76,
130, 68, 104, 86, 131, 105, 94, 97, 98, 791,
77, 78, 159, 79, 79, 79, 79, 79, 79, 80,
87, 119, 88, 89, 95, 99, 772, 100, 157, 120,
87, 119, 88, 89, 95, 99, 792, 100, 157, 120,
81, 101, 110, 128, 111, 106, 158, 82, 83, 107,
121, 113, 194, 112, 108, 771, 129, 81, 214, 114,
121, 113, 194, 112, 108, 793, 129, 81, 214, 114,
109, 115, 122, 195, 116, 123, 215, 160, 124, 125,
117, 82, 132, 126, 83, 78, 127, 84, 84, 84,
84, 84, 84, 84, 135, 133, 770, 146, 175, 139,
84, 84, 84, 84, 135, 133, 794, 146, 175, 139,
147, 252, 176, 253, 81, 245, 140, 141, 148, 136,
142, 82, 137, 246, 150, 149, 143, 144, 151, 145,
154, 81, 152, 769, 155, 153, 74, 74, 74, 74,
154, 81, 152, 795, 155, 153, 74, 74, 74, 74,
74, 74, 74, 156, 196, 82, 165, 165, 165, 165,
165, 165, 165, 163, 167, 774, 183, 197, 219, 247,
184, 185, 768, 166, 220, 318, 168, 248, 168, 319,
163, 169, 169, 169, 169, 169, 169, 169, 167, 767,
166, 774, 78, 766, 80, 80, 80, 80, 80, 80,
80, 206, 222, 227, 207, 208, 234, 765, 209, 236,
210, 81, 243, 244, 260, 223, 764, 224, 82, 228,
229, 235, 237, 267, 256, 763, 256, 540, 81, 257,
257, 257, 257, 257, 257, 257, 268, 541, 260, 273,
274, 762, 82, 165, 165, 165, 165, 165, 165, 165,
304, 305, 306, 343, 344, 345, 258, 651, 258, 652,
165, 165, 165, 163, 167, 825, 183, 197, 219, 247,
184, 185, 796, 166, 220, 318, 168, 248, 168, 319,
163, 169, 169, 169, 169, 169, 169, 169, 167, 797,
166, 825, 78, 798, 80, 80, 80, 80, 80, 80,
80, 206, 222, 227, 207, 208, 234, 799, 209, 236,
210, 81, 243, 244, 260, 223, 800, 224, 82, 228,
229, 235, 237, 267, 256, 801, 256, 552, 81, 257,
257, 257, 257, 257, 257, 257, 268, 553, 260, 273,
274, 802, 82, 165, 165, 165, 165, 165, 165, 165,
304, 305, 306, 343, 344, 345, 258, 803, 258, 804,
166, 259, 259, 259, 259, 259, 259, 259, 169, 169,
169, 169, 169, 169, 169, 761, 760, 166, 169, 169,
169, 169, 169, 169, 169, 805, 806, 166, 169, 169,
169, 169, 169, 169, 169, 336, 257, 257, 257, 257,
257, 257, 257, 337, 257, 257, 257, 257, 257, 257,
257, 259, 259, 259, 259, 259, 259, 259, 259, 259,
259, 259, 259, 259, 259, 354, 355, 356, 366, 367,
368, 374, 375, 376, 378, 379, 380, 389, 390, 391,
424, 425, 426, 444, 445, 446, 492, 493, 494, 518,
519, 520, 759, 668, 542, 669, 447, 448, 624, 495,
496, 758, 521, 522, 543, 557, 558, 559, 625, 588,
589, 606, 607, 626, 757, 627, 628, 756, 560, 561,
755, 562, 590, 754, 608, 58, 58, 58, 58, 93,
93, 162, 162, 164, 753, 164, 164, 752, 751, 750,
749, 748, 747, 746, 745, 744, 743, 742, 741, 740,
739, 738, 737, 736, 735, 734, 733, 732, 731, 730,
729, 728, 727, 726, 725, 724, 723, 722, 721, 720,
719, 718, 717, 716, 715, 714, 713, 712, 711, 710,
709, 708, 707, 706, 705, 704, 703, 702, 701, 700,
699, 698, 697, 696, 695, 694, 693, 692, 691, 690,
689, 688, 687, 686, 685, 684, 683, 682, 681, 680,
679, 678, 677, 676, 675, 674, 673, 672, 671, 670,
667, 666, 665, 664, 663, 662, 661, 660, 659, 658,
657, 656, 655, 654, 653, 650, 649, 648, 647, 646,
645, 644, 643, 642, 641, 640, 639, 638, 637, 636,
635, 634, 633, 632, 631, 630, 629, 623, 622, 621,
620, 619, 618, 617, 616, 615, 614, 613, 612, 611,
610, 609, 605, 604, 603, 602, 601, 600, 599, 598,
597, 596, 595, 594, 593, 592, 591, 587, 586, 585,
427, 428, 429, 447, 448, 449, 457, 458, 459, 460,
461, 462, 463, 464, 465, 554, 450, 451, 504, 505,
506, 530, 531, 532, 807, 555, 569, 570, 571, 808,
809, 507, 508, 810, 533, 534, 600, 601, 602, 572,
573, 642, 574, 620, 621, 622, 672, 811, 812, 603,
604, 643, 644, 673, 813, 674, 623, 624, 692, 645,
814, 646, 647, 815, 816, 693, 817, 694, 818, 819,
820, 821, 822, 823, 824, 58, 58, 58, 58, 93,
93, 162, 162, 164, 170, 164, 164, 789, 788, 787,
786, 785, 784, 783, 782, 781, 780, 779, 778, 777,
776, 775, 774, 773, 772, 771, 770, 769, 768, 767,
766, 765, 764, 763, 762, 761, 760, 759, 758, 757,
756, 755, 754, 753, 752, 751, 750, 749, 748, 747,
746, 745, 744, 743, 742, 741, 740, 739, 738, 737,
736, 735, 734, 733, 732, 731, 730, 729, 728, 727,
726, 725, 724, 723, 722, 721, 720, 719, 718, 717,
716, 715, 714, 713, 712, 711, 710, 709, 708, 707,
706, 705, 704, 703, 702, 701, 700, 699, 698, 697,
696, 695, 691, 690, 689, 688, 687, 686, 685, 684,
683, 682, 681, 680, 679, 678, 677, 676, 675, 671,
670, 669, 668, 667, 666, 665, 664, 663, 662, 661,
660, 659, 658, 657, 656, 655, 654, 653, 652, 651,
650, 649, 648, 641, 640, 639, 638, 637, 636, 635,
634, 633, 632, 631, 630, 629, 628, 627, 626, 625,
619, 618, 617, 616, 615, 614, 613, 612, 611, 610,
609, 608, 607, 606, 605, 599, 598, 597, 596, 595,
594, 593, 592, 591, 590, 589, 588, 587, 586, 585,
584, 583, 582, 581, 580, 579, 578, 577, 576, 575,
574, 573, 572, 571, 570, 569, 568, 567, 566, 565,
564, 563, 556, 555, 554, 553, 552, 551, 550, 549,
548, 547, 546, 545, 544, 539, 538, 537, 536, 535,
534, 533, 532, 531, 530, 529, 528, 527, 526, 525,
524, 523, 517, 516, 515, 514, 513, 512, 511, 510,
509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
499, 498, 497, 491, 490, 489, 488, 487, 486, 485,
568, 567, 566, 565, 564, 563, 562, 561, 560, 559,
558, 557, 556, 551, 550, 549, 548, 547, 546, 545,
544, 543, 542, 541, 540, 539, 538, 537, 536, 535,
529, 528, 527, 526, 525, 524, 523, 522, 521, 520,
519, 518, 517, 516, 515, 514, 513, 512, 511, 510,
509, 503, 502, 501, 500, 499, 498, 497, 496, 495,
494, 493, 492, 491, 490, 489, 488, 487, 486, 485,
484, 483, 482, 481, 480, 479, 478, 477, 476, 475,
474, 473, 472, 471, 470, 469, 468, 467, 466, 465,
464, 463, 462, 461, 460, 459, 458, 457, 456, 455,
454, 453, 452, 451, 450, 449, 443, 442, 441, 440,
439, 438, 437, 436, 435, 434, 433, 432, 431, 430,
429, 428, 427, 423, 422, 421, 420, 419, 418, 417,
416, 415, 414, 413, 412, 411, 410, 409, 408, 407,
406, 405, 404, 403, 402, 401, 400, 399, 398, 397,
396, 395, 394, 393, 392, 388, 387, 386, 385, 384,
383, 382, 381, 377, 373, 372, 371, 370, 369, 365,
364, 363, 362, 361, 360, 359, 358, 357, 353, 352,
351, 350, 349, 348, 347, 346, 342, 341, 340, 339,
338, 335, 334, 333, 332, 331, 330, 329, 328, 327,
326, 325, 324, 323, 322, 321, 320, 317, 316, 315,
314, 313, 312, 311, 310, 309, 308, 307, 303, 302,
301, 300, 299, 298, 297, 296, 295, 294, 293, 292,
291, 290, 289, 288, 287, 286, 285, 284, 283, 282,
281, 280, 279, 278, 277, 276, 275, 272, 271, 270,
269, 266, 265, 264, 263, 262, 261, 255, 254, 251,
250, 249, 242, 241, 240, 239, 238, 233, 232, 231,
230, 226, 225, 221, 218, 217, 216, 213, 212, 211,
205, 204, 203, 202, 201, 200, 199, 198, 193, 192,
191, 190, 189, 188, 187, 186, 182, 181, 180, 179,
178, 177, 174, 173, 172, 171, 161, 138, 134, 118,
90, 85, 69, 64, 774, 7, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774
474, 473, 472, 471, 470, 469, 468, 467, 466, 456,
455, 454, 453, 452, 446, 445, 444, 443, 442, 441,
440, 439, 438, 437, 436, 435, 434, 433, 432, 431,
430, 426, 425, 424, 423, 422, 421, 420, 419, 418,
417, 416, 415, 414, 413, 412, 411, 410, 409, 408,
407, 406, 405, 404, 403, 402, 401, 400, 399, 398,
397, 396, 395, 394, 393, 392, 388, 387, 386, 385,
384, 383, 382, 381, 377, 373, 372, 371, 370, 369,
365, 364, 363, 362, 361, 360, 359, 358, 357, 353,
352, 351, 350, 349, 348, 347, 346, 342, 341, 340,
339, 338, 335, 334, 333, 332, 331, 330, 329, 328,
327, 326, 325, 324, 323, 322, 321, 320, 317, 316,
315, 314, 313, 312, 311, 310, 309, 308, 307, 303,
302, 301, 300, 299, 298, 297, 296, 295, 294, 293,
292, 291, 290, 289, 288, 287, 286, 285, 284, 283,
282, 281, 280, 279, 278, 277, 276, 275, 272, 271,
270, 269, 266, 265, 264, 263, 262, 261, 255, 254,
251, 250, 249, 242, 241, 240, 239, 238, 233, 232,
231, 230, 226, 225, 221, 218, 217, 216, 213, 212,
211, 205, 204, 203, 202, 201, 200, 199, 198, 193,
192, 191, 190, 189, 188, 187, 186, 182, 181, 180,
179, 178, 177, 174, 173, 172, 171, 161, 138, 134,
118, 90, 85, 69, 64, 825, 7, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825
} ;
static yyconst flex_int16_t yy_chk[1069] =
static yyconst flex_int16_t yy_chk[1120] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
......@@ -852,110 +876,116 @@ static yyconst flex_int16_t yy_chk[1069] =
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 13, 17, 19, 20, 20, 20, 20, 20,
20, 20, 36, 34, 21, 779, 36, 19, 17, 21,
44, 13, 36, 26, 44, 36, 33, 34, 34, 771,
20, 20, 36, 34, 21, 772, 36, 19, 17, 21,
44, 13, 36, 26, 44, 36, 33, 34, 34, 773,
21, 22, 55, 22, 22, 22, 22, 22, 22, 22,
26, 41, 26, 26, 33, 35, 769, 35, 53, 41,
26, 41, 26, 26, 33, 35, 774, 35, 53, 41,
22, 35, 38, 43, 38, 37, 53, 22, 22, 37,
41, 39, 114, 38, 37, 768, 43, 22, 129, 39,
41, 39, 114, 38, 37, 775, 43, 22, 129, 39,
37, 39, 42, 114, 39, 42, 129, 55, 42, 42,
39, 22, 45, 42, 22, 23, 42, 23, 23, 23,
23, 23, 23, 23, 47, 45, 764, 50, 98, 49,
23, 23, 23, 23, 47, 45, 776, 50, 98, 49,
50, 156, 98, 156, 23, 151, 49, 49, 50, 47,
49, 23, 47, 151, 51, 50, 49, 49, 51, 49,
52, 23, 51, 763, 52, 51, 74, 74, 74, 74,
52, 23, 51, 779, 52, 51, 74, 74, 74, 74,
74, 74, 74, 52, 115, 23, 78, 78, 78, 78,
78, 78, 78, 74, 79, 79, 105, 115, 133, 152,
105, 105, 762, 78, 133, 228, 81, 152, 81, 228,
74, 81, 81, 81, 81, 81, 81, 81, 79, 760,
78, 79, 80, 759, 80, 80, 80, 80, 80, 80,
80, 125, 135, 138, 125, 125, 143, 758, 125, 144,
125, 80, 150, 150, 170, 135, 757, 135, 80, 138,
138, 143, 144, 180, 163, 756, 163, 497, 80, 163,
163, 163, 163, 163, 163, 163, 180, 497, 170, 185,
185, 754, 80, 165, 165, 165, 165, 165, 165, 165,
216, 216, 216, 251, 251, 251, 166, 621, 166, 621,
105, 105, 780, 78, 133, 228, 81, 152, 81, 228,
74, 81, 81, 81, 81, 81, 81, 81, 79, 783,
78, 79, 80, 784, 80, 80, 80, 80, 80, 80,
80, 125, 135, 138, 125, 125, 143, 786, 125, 144,
125, 80, 150, 150, 170, 135, 787, 135, 80, 138,
138, 143, 144, 180, 163, 788, 163, 509, 80, 163,
163, 163, 163, 163, 163, 163, 180, 509, 170, 185,
185, 790, 80, 165, 165, 165, 165, 165, 165, 165,
216, 216, 216, 251, 251, 251, 166, 791, 166, 794,
165, 166, 166, 166, 166, 166, 166, 166, 168, 168,
168, 168, 168, 168, 168, 753, 752, 165, 169, 169,
168, 168, 168, 168, 168, 795, 796, 165, 169, 169,
169, 169, 169, 169, 169, 245, 256, 256, 256, 256,
256, 256, 256, 245, 257, 257, 257, 257, 257, 257,
257, 258, 258, 258, 258, 258, 258, 258, 259, 259,
259, 259, 259, 259, 259, 266, 266, 266, 278, 278,
278, 287, 287, 287, 291, 291, 291, 300, 300, 300,
341, 341, 341, 382, 382, 382, 443, 443, 443, 477,
477, 477, 751, 639, 498, 639, 382, 382, 595, 443,
443, 750, 477, 477, 498, 514, 514, 514, 595, 548,
548, 571, 571, 596, 748, 596, 596, 746, 514, 514,
745, 514, 548, 743, 571, 775, 775, 775, 775, 776,
776, 777, 777, 778, 742, 778, 778, 740, 739, 736,
735, 734, 733, 732, 731, 730, 729, 726, 725, 724,
723, 722, 721, 720, 719, 716, 713, 712, 711, 710,
709, 707, 706, 705, 704, 702, 700, 697, 696, 695,
694, 692, 691, 690, 689, 688, 687, 686, 685, 684,
341, 341, 341, 382, 382, 382, 393, 393, 393, 394,
394, 394, 395, 395, 395, 510, 382, 382, 446, 446,
446, 489, 489, 489, 797, 510, 526, 526, 526, 798,
799, 446, 446, 801, 489, 489, 560, 560, 560, 526,
526, 609, 526, 583, 583, 583, 637, 802, 803, 560,
560, 609, 610, 637, 804, 637, 583, 583, 658, 610,
805, 610, 610, 806, 808, 658, 809, 658, 810, 812,
816, 817, 818, 820, 821, 826, 826, 826, 826, 827,
827, 828, 828, 829, 830, 829, 829, 771, 770, 769,
768, 767, 766, 763, 762, 761, 760, 759, 758, 757,
756, 755, 754, 751, 750, 747, 746, 745, 744, 743,
742, 740, 739, 738, 737, 736, 734, 732, 728, 727,
726, 725, 724, 722, 721, 720, 719, 718, 717, 716,
715, 714, 713, 712, 711, 710, 708, 707, 706, 705,
704, 703, 702, 701, 700, 698, 697, 696, 695, 694,
693, 692, 691, 690, 689, 688, 687, 686, 685, 684,
683, 682, 681, 680, 679, 678, 677, 676, 675, 674,
672, 671, 670, 669, 668, 667, 666, 665, 664, 663,
661, 660, 659, 658, 657, 656, 655, 654, 653, 652,
651, 650, 648, 647, 646, 645, 644, 643, 642, 640,
638, 636, 635, 634, 632, 631, 630, 629, 628, 627,
626, 625, 624, 623, 622, 620, 619, 618, 617, 616,
615, 613, 612, 611, 610, 608, 607, 606, 605, 604,
603, 602, 601, 600, 599, 598, 597, 592, 590, 589,
588, 584, 583, 582, 581, 580, 579, 578, 577, 576,
574, 573, 569, 568, 566, 565, 563, 562, 561, 560,
559, 558, 557, 553, 552, 551, 549, 547, 546, 545,
544, 543, 542, 541, 540, 539, 538, 536, 535, 530,
529, 528, 527, 525, 524, 522, 521, 520, 519, 518,
516, 515, 513, 512, 511, 510, 509, 508, 507, 506,
504, 503, 502, 501, 500, 496, 495, 494, 493, 492,
491, 488, 487, 486, 485, 484, 483, 482, 481, 480,
479, 478, 476, 475, 472, 467, 465, 464, 463, 461,
460, 457, 456, 455, 454, 452, 451, 450, 448, 447,
446, 445, 444, 441, 439, 438, 437, 435, 434, 433,
432, 430, 428, 427, 422, 421, 419, 418, 417, 416,
415, 414, 413, 412, 411, 410, 409, 407, 406, 405,
404, 403, 402, 401, 399, 398, 397, 396, 395, 394,
393, 392, 388, 387, 386, 383, 381, 371, 369, 365,
364, 363, 362, 360, 359, 357, 352, 351, 350, 349,
348, 347, 342, 340, 339, 338, 337, 336, 334, 333,
330, 329, 328, 327, 326, 325, 324, 323, 322, 321,
320, 319, 318, 317, 316, 315, 314, 313, 312, 311,
310, 309, 308, 307, 301, 299, 298, 297, 296, 295,
294, 293, 292, 290, 286, 284, 283, 282, 281, 277,
276, 275, 274, 273, 272, 271, 270, 269, 265, 263,
262, 261, 255, 254, 253, 252, 250, 249, 248, 247,
246, 244, 243, 242, 241, 240, 239, 238, 237, 236,
235, 234, 233, 232, 231, 230, 229, 227, 226, 225,
224, 223, 222, 221, 220, 219, 218, 217, 215, 214,
213, 212, 211, 210, 209, 208, 207, 206, 205, 204,
203, 202, 201, 200, 199, 197, 196, 195, 194, 193,
192, 191, 190, 189, 188, 187, 186, 184, 183, 182,
181, 179, 178, 177, 176, 175, 173, 158, 157, 155,
154, 153, 149, 148, 147, 146, 145, 142, 141, 140,
139, 137, 136, 134, 132, 131, 130, 128, 127, 126,
124, 123, 121, 120, 119, 118, 117, 116, 113, 112,
111, 110, 109, 108, 107, 106, 104, 103, 102, 101,
100, 99, 97, 96, 92, 88, 60, 48, 46, 40,
27, 24, 16, 11, 7, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774
673, 672, 671, 669, 668, 667, 666, 665, 664, 663,
661, 660, 657, 655, 654, 653, 651, 650, 649, 648,
647, 646, 645, 644, 643, 642, 641, 640, 639, 636,
635, 634, 633, 632, 631, 629, 628, 627, 626, 624,
623, 622, 621, 620, 619, 618, 617, 616, 615, 614,
613, 612, 611, 606, 604, 603, 602, 601, 600, 596,
595, 594, 593, 592, 591, 590, 589, 588, 586, 585,
581, 580, 578, 577, 575, 574, 573, 572, 571, 570,
569, 565, 564, 563, 561, 559, 558, 557, 556, 555,
554, 553, 552, 551, 550, 548, 547, 542, 541, 540,
539, 537, 536, 534, 533, 532, 531, 530, 528, 527,
525, 524, 523, 522, 521, 520, 519, 518, 516, 515,
514, 513, 512, 508, 507, 506, 505, 504, 503, 500,
499, 498, 497, 496, 495, 494, 493, 492, 491, 490,
488, 487, 484, 479, 477, 476, 475, 473, 472, 469,
468, 467, 466, 455, 454, 453, 451, 450, 449, 448,
447, 444, 442, 441, 440, 438, 437, 436, 435, 433,
431, 430, 425, 424, 422, 421, 420, 419, 418, 417,
416, 415, 414, 413, 412, 410, 409, 408, 407, 406,
405, 404, 402, 401, 400, 399, 398, 397, 396, 392,
388, 387, 386, 383, 381, 371, 369, 365, 364, 363,
362, 360, 359, 357, 352, 351, 350, 349, 348, 347,
342, 340, 339, 338, 337, 336, 334, 333, 330, 329,
328, 327, 326, 325, 324, 323, 322, 321, 320, 319,
318, 317, 316, 315, 314, 313, 312, 311, 310, 309,
308, 307, 306, 305, 304, 301, 299, 298, 297, 296,
295, 294, 293, 292, 290, 286, 284, 283, 282, 281,
277, 276, 275, 274, 273, 272, 271, 270, 269, 265,
263, 262, 261, 255, 254, 253, 252, 250, 249, 248,
247, 246, 244, 243, 242, 241, 240, 239, 238, 237,
236, 235, 234, 233, 232, 231, 230, 229, 227, 226,
225, 224, 223, 222, 221, 220, 219, 218, 217, 215,
214, 213, 212, 211, 210, 209, 208, 207, 206, 205,
204, 203, 202, 201, 200, 199, 197, 196, 195, 194,
193, 192, 191, 190, 189, 188, 187, 186, 184, 183,
182, 181, 179, 178, 177, 176, 175, 173, 158, 157,
155, 154, 153, 149, 148, 147, 146, 145, 142, 141,
140, 139, 137, 136, 134, 132, 131, 130, 128, 127,
126, 124, 123, 121, 120, 119, 118, 117, 116, 113,
112, 111, 110, 109, 108, 107, 106, 104, 103, 102,
101, 100, 99, 97, 96, 92, 88, 60, 48, 46,
40, 27, 24, 16, 11, 7, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
825, 825, 825, 825, 825, 825, 825, 825, 825
} ;
/* Table of booleans, true if rule could match eol. */
static yyconst flex_int32_t yy_rule_can_match_eol[223] =
static yyconst flex_int32_t yy_rule_can_match_eol[243] =
{ 0,
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
......@@ -968,6 +998,7 @@ static yyconst flex_int32_t yy_rule_can_match_eol[223] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, };
/* The intent behind this definition is that it'll catch
......@@ -979,7 +1010,7 @@ static yyconst flex_int32_t yy_rule_can_match_eol[223] =
#define YY_RESTORE_YY_MORE_OFFSET
/*
//
// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
// Copyright (c) 2002-2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
......@@ -1304,13 +1335,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 775 )
if ( yy_current_state >= 826 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
while ( yy_current_state != 774 );
while ( yy_current_state != 825 );
yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state;
......@@ -1511,105 +1542,165 @@ YY_RULE_SETUP
YY_BREAK
case 43:
YY_RULE_SETUP
{ context->lexAfterType = true; return (VEC2); }
{ return ES2_identifier_ES3_keyword(context, MATRIX2); }
YY_BREAK
case 44:
YY_RULE_SETUP
{ context->lexAfterType = true; return (VEC3); }
{ return ES2_identifier_ES3_keyword(context, MATRIX3); }
YY_BREAK
case 45:
YY_RULE_SETUP
{ context->lexAfterType = true; return (VEC4); }
{ return ES2_identifier_ES3_keyword(context, MATRIX4); }
YY_BREAK
case 46:
YY_RULE_SETUP
{ context->lexAfterType = true; return (IVEC2); }
{ return ES2_identifier_ES3_keyword(context, MATRIX2x3); }
YY_BREAK
case 47:
YY_RULE_SETUP
{ context->lexAfterType = true; return (IVEC3); }
{ return ES2_identifier_ES3_keyword(context, MATRIX3x2); }
YY_BREAK
case 48:
YY_RULE_SETUP
{ context->lexAfterType = true; return (IVEC4); }
{ return ES2_identifier_ES3_keyword(context, MATRIX2x4); }
YY_BREAK
case 49:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, UVEC2); }
{ return ES2_identifier_ES3_keyword(context, MATRIX4x2); }
YY_BREAK
case 50:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, UVEC3); }
{ return ES2_identifier_ES3_keyword(context, MATRIX3x4); }
YY_BREAK
case 51:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, UVEC4); }
{ return ES2_identifier_ES3_keyword(context, MATRIX4x3); }
YY_BREAK
case 52:
YY_RULE_SETUP
{ context->lexAfterType = true; return (BVEC2); }
{ context->lexAfterType = true; return (VEC2); }
YY_BREAK
case 53:
YY_RULE_SETUP
{ context->lexAfterType = true; return (BVEC3); }
{ context->lexAfterType = true; return (VEC3); }
YY_BREAK
case 54:
YY_RULE_SETUP
{ context->lexAfterType = true; return (BVEC4); }
{ context->lexAfterType = true; return (VEC4); }
YY_BREAK
case 55:
YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLER2D; }
{ context->lexAfterType = true; return (IVEC2); }
YY_BREAK
case 56:
YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLERCUBE; }
{ context->lexAfterType = true; return (IVEC3); }
YY_BREAK
case 57:
YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLER_EXTERNAL_OES; }
{ context->lexAfterType = true; return (IVEC4); }
YY_BREAK
case 58:
YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLER3D; }
{ return ES2_identifier_ES3_keyword(context, UVEC2); }
YY_BREAK
case 59:
YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); }
{ return ES2_identifier_ES3_keyword(context, UVEC3); }
YY_BREAK
case 60:
YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); }
{ return ES2_identifier_ES3_keyword(context, UVEC4); }
YY_BREAK
case 61:
YY_RULE_SETUP
{ context->lexAfterType = true; return(STRUCT); }
{ context->lexAfterType = true; return (BVEC2); }
YY_BREAK
case 62:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, LAYOUT); }
{ context->lexAfterType = true; return (BVEC3); }
YY_BREAK
/* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */
case 63:
YY_RULE_SETUP
{ context->lexAfterType = true; return (BVEC4); }
YY_BREAK
case 64:
YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLER2D; }
YY_BREAK
case 65:
YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLERCUBE; }
YY_BREAK
case 66:
YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLER_EXTERNAL_OES; }
YY_BREAK
case 67:
YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLER3D; }
YY_BREAK
case 68:
YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); }
YY_BREAK
case 69:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, SAMPLER2DARRAY); }
YY_BREAK
case 70:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, ISAMPLER2D); }
YY_BREAK
case 71:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, ISAMPLER3D); }
YY_BREAK
case 72:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, ISAMPLERCUBE); }
YY_BREAK
case 73:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, ISAMPLER2DARRAY); }
YY_BREAK
case 74:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, USAMPLER2D); }
YY_BREAK
case 75:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, USAMPLER3D); }
YY_BREAK
case 76:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, USAMPLERCUBE); }
YY_BREAK
case 77:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, USAMPLER2DARRAY); }
YY_BREAK
case 78:
YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); }
YY_BREAK
case 79:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, SAMPLERCUBESHADOW); }
YY_BREAK
case 80:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, SAMPLER2DARRAYSHADOW); }
YY_BREAK
case 81:
YY_RULE_SETUP
{ context->lexAfterType = true; return(STRUCT); }
YY_BREAK
case 82:
YY_RULE_SETUP
{ return ES2_identifier_ES3_keyword(context, LAYOUT); }
YY_BREAK
/* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */
case 83:
case 84:
case 85:
......@@ -1646,6 +1737,26 @@ case 115:
case 116:
case 117:
case 118:
case 119:
case 120:
case 121:
case 122:
case 123:
case 124:
case 125:
case 126:
case 127:
case 128:
case 129:
case 130:
case 131:
case 132:
case 133:
case 134:
case 135:
case 136:
case 137:
case 138:
YY_RULE_SETUP
{
if (context->shaderVersion < 300) {
......@@ -1656,7 +1767,7 @@ YY_RULE_SETUP
}
YY_BREAK
/* Reserved keywords in GLSL ES 1.00 that are not reserved in GLSL ES 3.00 */
case 119:
case 139:
YY_RULE_SETUP
{
if (context->shaderVersion >= 300)
......@@ -1669,26 +1780,6 @@ YY_RULE_SETUP
}
YY_BREAK
/* Reserved keywords */
case 120:
case 121:
case 122:
case 123:
case 124:
case 125:
case 126:
case 127:
case 128:
case 129:
case 130:
case 131:
case 132:
case 133:
case 134:
case 135:
case 136:
case 137:
case 138:
case 139:
case 140:
case 141:
case 142:
......@@ -1711,237 +1802,257 @@ case 158:
case 159:
case 160:
case 161:
case 162:
case 163:
case 164:
case 165:
case 166:
case 167:
case 168:
case 169:
case 170:
case 171:
case 172:
case 173:
case 174:
case 175:
case 176:
case 177:
case 178:
case 179:
case 180:
case 181:
YY_RULE_SETUP
{ return reserved_word(yyscanner); }
YY_BREAK
case 162:
case 182:
YY_RULE_SETUP
{
yylval->lex.string = NewPoolTString(yytext);
return check_type(yyscanner);
}
YY_BREAK
case 163:
case 183:
YY_RULE_SETUP
{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
YY_BREAK
case 164:
case 184:
YY_RULE_SETUP
{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
YY_BREAK
case 165:
case 185:
YY_RULE_SETUP
{ context->error(yylineno, "Invalid Octal number.", yytext); context->recover(); return 0;}
YY_BREAK
case 166:
case 186:
YY_RULE_SETUP
{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
YY_BREAK
case 167:
case 187:
YY_RULE_SETUP
{ return uint_constant(context); }
YY_BREAK
case 168:
case 188:
YY_RULE_SETUP
{ return uint_constant(context); }
YY_BREAK
case 169:
case 189:
YY_RULE_SETUP
{ return uint_constant(context); }
YY_BREAK
case 170:
case 190:
YY_RULE_SETUP
{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
YY_BREAK
case 171:
case 191:
YY_RULE_SETUP
{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
YY_BREAK
case 172:
case 192:
YY_RULE_SETUP
{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
YY_BREAK
case 173:
case 193:
YY_RULE_SETUP
{ return(ADD_ASSIGN); }
YY_BREAK
case 174:
case 194:
YY_RULE_SETUP
{ return(SUB_ASSIGN); }
YY_BREAK
case 175:
case 195:
YY_RULE_SETUP
{ return(MUL_ASSIGN); }
YY_BREAK
case 176:
case 196:
YY_RULE_SETUP
{ return(DIV_ASSIGN); }
YY_BREAK
case 177:
case 197:
YY_RULE_SETUP
{ return(MOD_ASSIGN); }
YY_BREAK
case 178:
case 198:
YY_RULE_SETUP
{ return(LEFT_ASSIGN); }
YY_BREAK
case 179:
case 199:
YY_RULE_SETUP
{ return(RIGHT_ASSIGN); }
YY_BREAK
case 180:
case 200:
YY_RULE_SETUP
{ return(AND_ASSIGN); }
YY_BREAK
case 181:
case 201:
YY_RULE_SETUP
{ return(XOR_ASSIGN); }
YY_BREAK
case 182:
case 202:
YY_RULE_SETUP
{ return(OR_ASSIGN); }
YY_BREAK
case 183:
case 203:
YY_RULE_SETUP
{ return(INC_OP); }
YY_BREAK
case 184:
case 204:
YY_RULE_SETUP
{ return(DEC_OP); }
YY_BREAK
case 185:
case 205:
YY_RULE_SETUP
{ return(AND_OP); }
YY_BREAK
case 186:
case 206:
YY_RULE_SETUP
{ return(OR_OP); }
YY_BREAK
case 187:
case 207:
YY_RULE_SETUP
{ return(XOR_OP); }
YY_BREAK
case 188:
case 208:
YY_RULE_SETUP
{ return(LE_OP); }
YY_BREAK
case 189:
case 209:
YY_RULE_SETUP
{ return(GE_OP); }
YY_BREAK
case 190:
case 210:
YY_RULE_SETUP
{ return(EQ_OP); }
YY_BREAK
case 191:
case 211:
YY_RULE_SETUP
{ return(NE_OP); }
YY_BREAK
case 192:
case 212:
YY_RULE_SETUP
{ return(LEFT_OP); }
YY_BREAK
case 193:
case 213:
YY_RULE_SETUP
{ return(RIGHT_OP); }
YY_BREAK
case 194:
case 214:
YY_RULE_SETUP
{ context->lexAfterType = false; return(SEMICOLON); }
YY_BREAK
case 195:
case 215:
YY_RULE_SETUP
{ context->lexAfterType = false; return(LEFT_BRACE); }
YY_BREAK
case 196:
case 216:
YY_RULE_SETUP
{ return(RIGHT_BRACE); }
YY_BREAK
case 197:
case 217:
YY_RULE_SETUP
{ if (context->inTypeParen) context->lexAfterType = false; return(COMMA); }
YY_BREAK
case 198:
case 218:
YY_RULE_SETUP
{ return(COLON); }
YY_BREAK
case 199:
case 219:
YY_RULE_SETUP
{ context->lexAfterType = false; return(EQUAL); }
YY_BREAK
case 200:
case 220:
YY_RULE_SETUP
{ context->lexAfterType = false; context->inTypeParen = true; return(LEFT_PAREN); }
YY_BREAK
case 201:
case 221:
YY_RULE_SETUP
{ context->inTypeParen = false; return(RIGHT_PAREN); }
YY_BREAK
case 202:
case 222:
YY_RULE_SETUP
{ return(LEFT_BRACKET); }
YY_BREAK
case 203:
case 223:
YY_RULE_SETUP
{ return(RIGHT_BRACKET); }
YY_BREAK
case 204:
case 224:
YY_RULE_SETUP
{ BEGIN(FIELDS); return(DOT); }
YY_BREAK
case 205:
case 225:
YY_RULE_SETUP
{ return(BANG); }
YY_BREAK
case 206:
case 226:
YY_RULE_SETUP
{ return(DASH); }
YY_BREAK
case 207:
case 227:
YY_RULE_SETUP
{ return(TILDE); }
YY_BREAK
case 208:
case 228:
YY_RULE_SETUP
{ return(PLUS); }
YY_BREAK
case 209:
case 229:
YY_RULE_SETUP
{ return(STAR); }
YY_BREAK
case 210:
case 230:
YY_RULE_SETUP
{ return(SLASH); }
YY_BREAK
case 211:
case 231:
YY_RULE_SETUP
{ return(PERCENT); }
YY_BREAK
case 212:
case 232:
YY_RULE_SETUP
{ return(LEFT_ANGLE); }
YY_BREAK
case 213:
case 233:
YY_RULE_SETUP
{ return(RIGHT_ANGLE); }
YY_BREAK
case 214:
case 234:
YY_RULE_SETUP
{ return(VERTICAL_BAR); }
YY_BREAK
case 215:
case 235:
YY_RULE_SETUP
{ return(CARET); }
YY_BREAK
case 216:
case 236:
YY_RULE_SETUP
{ return(AMPERSAND); }
YY_BREAK
case 217:
case 237:
YY_RULE_SETUP
{ return(QUESTION); }
YY_BREAK
case 218:
case 238:
YY_RULE_SETUP
{
BEGIN(INITIAL);
......@@ -1949,12 +2060,12 @@ YY_RULE_SETUP
return FIELD_SELECTION;
}
YY_BREAK
case 219:
case 239:
YY_RULE_SETUP
{}
YY_BREAK
case 220:
/* rule 220 can match eol */
case 240:
/* rule 240 can match eol */
YY_RULE_SETUP
{ }
YY_BREAK
......@@ -1963,11 +2074,11 @@ case YY_STATE_EOF(COMMENT):
case YY_STATE_EOF(FIELDS):
{ context->AfterEOF = true; yyterminate(); }
YY_BREAK
case 221:
case 241:
YY_RULE_SETUP
{ context->warning(yylineno, "Unknown char", yytext, ""); return 0; }
YY_BREAK
case 222:
case 242:
YY_RULE_SETUP
ECHO;
YY_BREAK
......@@ -2263,7 +2374,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 775 )
if ( yy_current_state >= 826 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
......@@ -2292,11 +2403,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 775 )
if ( yy_current_state >= 826 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 774);
yy_is_jam = (yy_current_state == 825);
return yy_is_jam ? 0 : yy_current_state;
}
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -81,72 +81,89 @@
INOUT_QUAL = 297,
UNIFORM = 298,
VARYING = 299,
CENTROID = 300,
FLAT = 301,
SMOOTH = 302,
STRUCT = 303,
VOID_TYPE = 304,
WHILE = 305,
SAMPLER2D = 306,
SAMPLERCUBE = 307,
SAMPLER_EXTERNAL_OES = 308,
SAMPLER2DRECT = 309,
SAMPLER3D = 310,
SAMPLER3DRECT = 311,
SAMPLER2DSHADOW = 312,
LAYOUT = 313,
IDENTIFIER = 314,
TYPE_NAME = 315,
FLOATCONSTANT = 316,
INTCONSTANT = 317,
UINTCONSTANT = 318,
BOOLCONSTANT = 319,
FIELD_SELECTION = 320,
LEFT_OP = 321,
RIGHT_OP = 322,
INC_OP = 323,
DEC_OP = 324,
LE_OP = 325,
GE_OP = 326,
EQ_OP = 327,
NE_OP = 328,
AND_OP = 329,
OR_OP = 330,
XOR_OP = 331,
MUL_ASSIGN = 332,
DIV_ASSIGN = 333,
ADD_ASSIGN = 334,
MOD_ASSIGN = 335,
LEFT_ASSIGN = 336,
RIGHT_ASSIGN = 337,
AND_ASSIGN = 338,
XOR_ASSIGN = 339,
OR_ASSIGN = 340,
SUB_ASSIGN = 341,
LEFT_PAREN = 342,
RIGHT_PAREN = 343,
LEFT_BRACKET = 344,
RIGHT_BRACKET = 345,
LEFT_BRACE = 346,
RIGHT_BRACE = 347,
DOT = 348,
COMMA = 349,
COLON = 350,
EQUAL = 351,
SEMICOLON = 352,
BANG = 353,
DASH = 354,
TILDE = 355,
PLUS = 356,
STAR = 357,
SLASH = 358,
PERCENT = 359,
LEFT_ANGLE = 360,
RIGHT_ANGLE = 361,
VERTICAL_BAR = 362,
CARET = 363,
AMPERSAND = 364,
QUESTION = 365
MATRIX2x3 = 300,
MATRIX3x2 = 301,
MATRIX2x4 = 302,
MATRIX4x2 = 303,
MATRIX3x4 = 304,
MATRIX4x3 = 305,
CENTROID = 306,
FLAT = 307,
SMOOTH = 308,
STRUCT = 309,
VOID_TYPE = 310,
WHILE = 311,
SAMPLER2D = 312,
SAMPLERCUBE = 313,
SAMPLER_EXTERNAL_OES = 314,
SAMPLER2DRECT = 315,
SAMPLER2DARRAY = 316,
ISAMPLER2D = 317,
ISAMPLER3D = 318,
ISAMPLERCUBE = 319,
ISAMPLER2DARRAY = 320,
USAMPLER2D = 321,
USAMPLER3D = 322,
USAMPLERCUBE = 323,
USAMPLER2DARRAY = 324,
SAMPLER3D = 325,
SAMPLER3DRECT = 326,
SAMPLER2DSHADOW = 327,
SAMPLERCUBESHADOW = 328,
SAMPLER2DARRAYSHADOW = 329,
LAYOUT = 330,
IDENTIFIER = 331,
TYPE_NAME = 332,
FLOATCONSTANT = 333,
INTCONSTANT = 334,
UINTCONSTANT = 335,
BOOLCONSTANT = 336,
FIELD_SELECTION = 337,
LEFT_OP = 338,
RIGHT_OP = 339,
INC_OP = 340,
DEC_OP = 341,
LE_OP = 342,
GE_OP = 343,
EQ_OP = 344,
NE_OP = 345,
AND_OP = 346,
OR_OP = 347,
XOR_OP = 348,
MUL_ASSIGN = 349,
DIV_ASSIGN = 350,
ADD_ASSIGN = 351,
MOD_ASSIGN = 352,
LEFT_ASSIGN = 353,
RIGHT_ASSIGN = 354,
AND_ASSIGN = 355,
XOR_ASSIGN = 356,
OR_ASSIGN = 357,
SUB_ASSIGN = 358,
LEFT_PAREN = 359,
RIGHT_PAREN = 360,
LEFT_BRACKET = 361,
RIGHT_BRACKET = 362,
LEFT_BRACE = 363,
RIGHT_BRACE = 364,
DOT = 365,
COMMA = 366,
COLON = 367,
EQUAL = 368,
SEMICOLON = 369,
BANG = 370,
DASH = 371,
TILDE = 372,
PLUS = 373,
STAR = 374,
SLASH = 375,
PERCENT = 376,
LEFT_ANGLE = 377,
RIGHT_ANGLE = 378,
VERTICAL_BAR = 379,
CARET = 380,
AMPERSAND = 381,
QUESTION = 382
};
#endif
......
......@@ -44,10 +44,10 @@ TString TType::getCompleteString() const
stream << getQualifierString() << " " << getPrecisionString() << " ";
if (array)
stream << "array of ";
if (matrix)
stream << size << "X" << size << " matrix of ";
else if (size > 1)
stream << size << "-component vector of ";
if (isMatrix())
stream << primarySize << "X" << secondarySize << " matrix of ";
else if(primarySize > 1)
stream << primarySize << "-component vector of ";
stream << getBasicString();
return stream.str();
......
......@@ -161,7 +161,13 @@ enum TOperator {
EOpConstructUVec3,
EOpConstructUVec4,
EOpConstructMat2,
EOpConstructMat2x3,
EOpConstructMat2x4,
EOpConstructMat3x2,
EOpConstructMat3,
EOpConstructMat3x4,
EOpConstructMat4x2,
EOpConstructMat4x3,
EOpConstructMat4,
EOpConstructStruct,
......@@ -247,6 +253,7 @@ public:
TQualifier getQualifier() const { return type.getQualifier(); }
TPrecision getPrecision() const { return type.getPrecision(); }
int getNominalSize() const { return type.getNominalSize(); }
int getSecondarySize() const { return type.getSecondarySize(); }
bool isMatrix() const { return type.isMatrix(); }
bool isArray() const { return type.isArray(); }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment