Add support for images in the compiler
The patch adds support for GLSL ES 3.1 image types.
Internal format layout qualifiers for images are added.
Support for the readonly and writeonly qualifiers are added. The other
memory qualifiers are omitted as to make the patch simpler.
Tests are added which check for correct and incorrect usage of images,
internal format layout and memory qualifiers.
BUG=angleproject:1442
TEST=angle_unittests
TEST=angle_end2end_tests
Change-Id: Ie4d3acb2a195de11b405ad54110a04c4c1de0b7e
Reviewed-on: https://chromium-review.googlesource.com/378855
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/compiler/translator/BaseTypes.h b/src/compiler/translator/BaseTypes.h
index a3d9a60..9afb7d1 100644
--- a/src/compiler/translator/BaseTypes.h
+++ b/src/compiler/translator/BaseTypes.h
@@ -76,19 +76,98 @@
EbtSampler2DShadow,
EbtSamplerCubeShadow,
EbtSampler2DArrayShadow,
- EbtGuardSamplerEnd, // non type: see implementation of IsSampler()
- EbtGSampler2D, // non type: represents sampler2D, isampler2D, and usampler2D
- EbtGSampler3D, // non type: represents sampler3D, isampler3D, and usampler3D
- EbtGSamplerCube, // non type: represents samplerCube, isamplerCube, and usamplerCube
- EbtGSampler2DArray, // non type: represents sampler2DArray, isampler2DArray, and usampler2DArray
+ EbtGuardSamplerEnd, // non type: see implementation of IsSampler()
+ EbtGSampler2D, // non type: represents sampler2D, isampler2D, and usampler2D
+ EbtGSampler3D, // non type: represents sampler3D, isampler3D, and usampler3D
+ EbtGSamplerCube, // non type: represents samplerCube, isamplerCube, and usamplerCube
+ EbtGSampler2DArray, // non type: represents sampler2DArray, isampler2DArray, and
+ // usampler2DArray
+
+ // images
+ EbtGuardImageBegin,
+ EbtImage2D,
+ EbtIImage2D,
+ EbtUImage2D,
+ EbtImage3D,
+ EbtIImage3D,
+ EbtUImage3D,
+ EbtImage2DArray,
+ EbtIImage2DArray,
+ EbtUImage2DArray,
+ EbtImageCube,
+ EbtIImageCube,
+ EbtUImageCube,
+ EbtGuardImageEnd,
+
+ EbtGuardGImageBegin,
+ EbtGImage2D, // non type: represents image2D, uimage2D, iimage2D
+ EbtGImage3D, // non type: represents image3D, uimage3D, iimage3D
+ EbtGImage2DArray, // non type: represents image2DArray, uimage2DArray, iimage2DArray
+ EbtGImageCube, // non type: represents imageCube, uimageCube, iimageCube
+ EbtGuardGImageEnd,
+
EbtStruct,
EbtInterfaceBlock,
- EbtAddress, // should be deprecated??
+ EbtAddress, // should be deprecated??
// end of list
EbtLast
};
+inline TBasicType convertGImageToFloatImage(TBasicType type)
+{
+ switch (type)
+ {
+ case EbtGImage2D:
+ return EbtImage2D;
+ case EbtGImage3D:
+ return EbtImage3D;
+ case EbtGImage2DArray:
+ return EbtImage2DArray;
+ case EbtGImageCube:
+ return EbtImageCube;
+ default:
+ UNREACHABLE();
+ }
+ return EbtLast;
+}
+
+inline TBasicType convertGImageToIntImage(TBasicType type)
+{
+ switch (type)
+ {
+ case EbtGImage2D:
+ return EbtIImage2D;
+ case EbtGImage3D:
+ return EbtIImage3D;
+ case EbtGImage2DArray:
+ return EbtIImage2DArray;
+ case EbtGImageCube:
+ return EbtIImageCube;
+ default:
+ UNREACHABLE();
+ }
+ return EbtLast;
+}
+
+inline TBasicType convertGImageToUnsignedImage(TBasicType type)
+{
+ switch (type)
+ {
+ case EbtGImage2D:
+ return EbtUImage2D;
+ case EbtGImage3D:
+ return EbtUImage3D;
+ case EbtGImage2DArray:
+ return EbtUImage2DArray;
+ case EbtGImageCube:
+ return EbtUImageCube;
+ default:
+ UNREACHABLE();
+ }
+ return EbtLast;
+}
+
const char* getBasicString(TBasicType t);
inline bool IsSampler(TBasicType type)
@@ -96,6 +175,22 @@
return type > EbtGuardSamplerBegin && type < EbtGuardSamplerEnd;
}
+inline bool IsImage(TBasicType type)
+{
+ return type > EbtGuardImageBegin && type < EbtGuardImageEnd;
+}
+
+inline bool IsGImage(TBasicType type)
+{
+ return type > EbtGuardGImageBegin && type < EbtGuardGImageEnd;
+}
+
+inline bool IsOpaqueType(TBasicType type)
+{
+ // TODO (mradev): add atomic types as opaque.
+ return IsSampler(type) || IsImage(type);
+}
+
inline bool IsIntegerSampler(TBasicType type)
{
switch (type)
@@ -126,6 +221,56 @@
return false;
}
+inline bool IsFloatImage(TBasicType type)
+{
+ switch (type)
+ {
+ case EbtImage2D:
+ case EbtImage3D:
+ case EbtImage2DArray:
+ case EbtImageCube:
+ return true;
+ default:
+ break;
+ }
+
+ return false;
+}
+
+inline bool IsIntegerImage(TBasicType type)
+{
+
+ switch (type)
+ {
+ case EbtIImage2D:
+ case EbtIImage3D:
+ case EbtIImage2DArray:
+ case EbtIImageCube:
+ return true;
+ default:
+ break;
+ }
+
+ return false;
+}
+
+inline bool IsUnsignedImage(TBasicType type)
+{
+
+ switch (type)
+ {
+ case EbtUImage2D:
+ case EbtUImage3D:
+ case EbtUImage2DArray:
+ case EbtUImageCube:
+ return true;
+ default:
+ break;
+ }
+
+ return false;
+}
+
inline bool IsSampler2D(TBasicType type)
{
switch (type)
@@ -283,7 +428,7 @@
inline bool SupportsPrecision(TBasicType type)
{
- return type == EbtFloat || type == EbtInt || type == EbtUInt || IsSampler(type);
+ return type == EbtFloat || type == EbtInt || type == EbtUInt || IsOpaqueType(type);
}
//
@@ -360,6 +505,10 @@
EvqGlobalInvocationID,
EvqLocalInvocationIndex,
+ // GLSL ES 3.1 memory qualifiers
+ EvqReadOnly,
+ EvqWriteOnly,
+
// end of list
EvqLast
};
@@ -369,6 +518,24 @@
return (qualifier == EvqTemporary || qualifier == EvqGlobal);
}
+enum TLayoutImageInternalFormat
+{
+ EiifUnspecified,
+ EiifRGBA32F,
+ EiifRGBA16F,
+ EiifR32F,
+ EiifRGBA32UI,
+ EiifRGBA16UI,
+ EiifRGBA8UI,
+ EiifR32UI,
+ EiifRGBA32I,
+ EiifRGBA16I,
+ EiifRGBA8I,
+ EiifR32I,
+ EiifRGBA8,
+ EiifRGBA8_SNORM
+};
+
enum TLayoutMatrixPacking
{
EmpUnspecified,
@@ -394,6 +561,9 @@
// Compute shader layout qualifiers.
sh::WorkGroupSize localSize;
+ // Image format layout qualifier
+ TLayoutImageInternalFormat imageInternalFormat;
+
static TLayoutQualifier create()
{
TLayoutQualifier layoutQualifier;
@@ -405,20 +575,23 @@
layoutQualifier.localSize.fill(-1);
+ layoutQualifier.imageInternalFormat = EiifUnspecified;
return layoutQualifier;
}
bool isEmpty() const
{
return location == -1 && matrixPacking == EmpUnspecified &&
- blockStorage == EbsUnspecified && !localSize.isAnyValueSet();
+ blockStorage == EbsUnspecified && !localSize.isAnyValueSet() &&
+ imageInternalFormat == EiifUnspecified;
}
bool isCombinationValid() const
{
bool workSizeSpecified = localSize.isAnyValueSet();
bool otherLayoutQualifiersSpecified =
- (location != -1 || matrixPacking != EmpUnspecified || blockStorage != EbsUnspecified);
+ (location != -1 || matrixPacking != EmpUnspecified || blockStorage != EbsUnspecified ||
+ imageInternalFormat != EiifUnspecified);
// we can have either the work group size specified, or the other layout qualifiers
return !(workSizeSpecified && otherLayoutQualifiersSpecified);
@@ -430,6 +603,26 @@
}
};
+struct TMemoryQualifier
+{
+ // GLSL ES 3.10 Revision 4, 4.9 Memory Access Qualifiers
+ // An image can be qualified as both readonly and writeonly. It still can be can be used with
+ // imageSize().
+ bool readonly;
+ bool writeonly;
+ static TMemoryQualifier create()
+ {
+ TMemoryQualifier memoryQualifier;
+
+ memoryQualifier.readonly = false;
+ memoryQualifier.writeonly = false;
+
+ return memoryQualifier;
+ }
+
+ bool isEmpty() { return !readonly && !writeonly; }
+};
+
inline const char *getWorkGroupSizeString(size_t dimension)
{
switch (dimension)
@@ -500,6 +693,8 @@
case EvqLocalInvocationID: return "LocalInvocationID";
case EvqGlobalInvocationID: return "GlobalInvocationID";
case EvqLocalInvocationIndex: return "LocalInvocationIndex";
+ case EvqReadOnly: return "readonly";
+ case EvqWriteOnly: return "writeonly";
default: UNREACHABLE(); return "unknown qualifier";
}
// clang-format on
@@ -528,4 +723,40 @@
}
}
+inline const char *getImageInternalFormatString(TLayoutImageInternalFormat iifq)
+{
+ switch (iifq)
+ {
+ case EiifRGBA32F:
+ return "rgba32f";
+ case EiifRGBA16F:
+ return "rgba16f";
+ case EiifR32F:
+ return "r32f";
+ case EiifRGBA32UI:
+ return "rgba32ui";
+ case EiifRGBA16UI:
+ return "rgba16ui";
+ case EiifRGBA8UI:
+ return "rgba8ui";
+ case EiifR32UI:
+ return "r32ui";
+ case EiifRGBA32I:
+ return "rgba32i";
+ case EiifRGBA16I:
+ return "rgba16i";
+ case EiifRGBA8I:
+ return "rgba8i";
+ case EiifR32I:
+ return "r32i";
+ case EiifRGBA8:
+ return "rgba8";
+ case EiifRGBA8_SNORM:
+ return "rgba8_snorm";
+ default:
+ UNREACHABLE();
+ return "unknown internal image format";
+ }
+}
+
#endif // COMPILER_TRANSLATOR_BASETYPES_H_
diff --git a/src/compiler/translator/Compiler.cpp b/src/compiler/translator/Compiler.cpp
index eb5dd58..8e1fc19 100644
--- a/src/compiler/translator/Compiler.cpp
+++ b/src/compiler/translator/Compiler.cpp
@@ -517,14 +517,10 @@
symbolTable.push(); // ESSL3_1_BUILTINS
TPublicType integer;
- integer.setBasicType(EbtInt);
- integer.initializeSizeForScalarTypes();
- integer.array = false;
+ integer.initializeBasicType(EbtInt);
TPublicType floatingPoint;
- floatingPoint.setBasicType(EbtFloat);
- floatingPoint.initializeSizeForScalarTypes();
- floatingPoint.array = false;
+ floatingPoint.initializeBasicType(EbtFloat);
switch(shaderType)
{
@@ -563,9 +559,7 @@
{
ASSERT(samplerType > EbtGuardSamplerBegin && samplerType < EbtGuardSamplerEnd);
TPublicType sampler;
- sampler.initializeSizeForScalarTypes();
- sampler.setBasicType(samplerType);
- sampler.array = false;
+ sampler.initializeBasicType(samplerType);
symbolTable.setDefaultPrecision(sampler, EbpLow);
}
diff --git a/src/compiler/translator/Initialize.cpp b/src/compiler/translator/Initialize.cpp
index 759834f..db4ca8e 100644
--- a/src/compiler/translator/Initialize.cpp
+++ b/src/compiler/translator/Initialize.cpp
@@ -18,6 +18,7 @@
void InsertBuiltInFunctions(sh::GLenum type, ShShaderSpec spec, const ShBuiltInResources &resources, TSymbolTable &symbolTable)
{
+ const TType *voidType = TCache::getType(EbtVoid);
const TType *float1 = TCache::getType(EbtFloat);
const TType *float2 = TCache::getType(EbtFloat, 2);
const TType *float3 = TCache::getType(EbtFloat, 3);
@@ -469,6 +470,26 @@
symbolTable.insertBuiltIn(ESSL3_BUILTINS, gvec4, "textureProjGradOffset", gsampler3D, float4, float3, float3, int3);
symbolTable.insertBuiltIn(ESSL3_BUILTINS, float1, "textureProjGradOffset", sampler2DShadow, float4, float2, float2, int2);
+ const TType *gimage2D = TCache::getType(EbtGImage2D);
+ const TType *gimage3D = TCache::getType(EbtGImage3D);
+ const TType *gimage2DArray = TCache::getType(EbtGImage2DArray);
+ const TType *gimageCube = TCache::getType(EbtGImageCube);
+
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, voidType, "imageStore", gimage2D, int2, gvec4);
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, voidType, "imageStore", gimage3D, int3, gvec4);
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, voidType, "imageStore", gimage2DArray, int3, gvec4);
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, voidType, "imageStore", gimageCube, int3, gvec4);
+
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, gvec4, "imageLoad", gimage2D, int2);
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, gvec4, "imageLoad", gimage3D, int3);
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, gvec4, "imageLoad", gimage2DArray, int3);
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, gvec4, "imageLoad", gimageCube, int3);
+
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, int2, "imageSize", gimage2D);
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, int3, "imageSize", gimage3D);
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, int3, "imageSize", gimage2DArray);
+ symbolTable.insertBuiltIn(ESSL3_1_BUILTINS, int3, "imageSize", gimageCube);
+
//
// Depth range in window coordinates
//
diff --git a/src/compiler/translator/IntermNode.h b/src/compiler/translator/IntermNode.h
index 4c37034..f465a5d 100644
--- a/src/compiler/translator/IntermNode.h
+++ b/src/compiler/translator/IntermNode.h
@@ -150,6 +150,7 @@
TBasicType getBasicType() const { return mType.getBasicType(); }
TQualifier getQualifier() const { return mType.getQualifier(); }
TPrecision getPrecision() const { return mType.getPrecision(); }
+ TMemoryQualifier getMemoryQualifier() const { return mType.getMemoryQualifier(); }
int getCols() const { return mType.getCols(); }
int getRows() const { return mType.getRows(); }
int getNominalSize() const { return mType.getNominalSize(); }
diff --git a/src/compiler/translator/OutputGLSLBase.cpp b/src/compiler/translator/OutputGLSLBase.cpp
index 4301559..2be8e7e 100644
--- a/src/compiler/translator/OutputGLSLBase.cpp
+++ b/src/compiler/translator/OutputGLSLBase.cpp
@@ -49,6 +49,32 @@
return true;
}
+// If SH_SCALARIZE_VEC_AND_MAT_CONSTRUCTOR_ARGS is enabled, layout qualifiers are spilled whenever
+// variables with specified layout qualifiers are copied. Additional checks are needed against the
+// type and storage qualifier of the variable to verify that layout qualifiers have to be outputted.
+// TODO (mradev): Fix layout qualifier spilling in ScalarizeVecAndMatConstructorArgs and remove
+// NeedsToWriteLayoutQualifier.
+bool NeedsToWriteLayoutQualifier(const TType &type)
+{
+ if (type.getBasicType() == EbtInterfaceBlock)
+ {
+ return false;
+ }
+
+ const TLayoutQualifier &layoutQualifier = type.getLayoutQualifier();
+
+ if ((type.getQualifier() == EvqFragmentOut || type.getQualifier() == EvqVertexIn) &&
+ layoutQualifier.location >= 0)
+ {
+ return true;
+ }
+ if (IsImage(type.getBasicType()) && layoutQualifier.imageInternalFormat != EiifUnspecified)
+ {
+ return true;
+ }
+ return false;
+}
+
} // namespace
TOutputGLSLBase::TOutputGLSLBase(TInfoSinkBase &objSink,
@@ -92,15 +118,30 @@
void TOutputGLSLBase::writeLayoutQualifier(const TType &type)
{
+ if (!NeedsToWriteLayoutQualifier(type))
+ {
+ return;
+ }
+
+ TInfoSinkBase &out = objSink();
+ const TLayoutQualifier &layoutQualifier = type.getLayoutQualifier();
+ out << "layout(";
+
if (type.getQualifier() == EvqFragmentOut || type.getQualifier() == EvqVertexIn)
{
- const TLayoutQualifier &layoutQualifier = type.getLayoutQualifier();
if (layoutQualifier.location >= 0)
{
- TInfoSinkBase &out = objSink();
- out << "layout(location = " << layoutQualifier.location << ") ";
+ out << "location = " << layoutQualifier.location;
}
}
+
+ if (IsImage(type.getBasicType()) && layoutQualifier.imageInternalFormat != EiifUnspecified)
+ {
+ ASSERT(type.getQualifier() == EvqTemporary || type.getQualifier() == EvqUniform);
+ out << getImageInternalFormatString(layoutQualifier.imageInternalFormat);
+ }
+
+ out << ") ";
}
void TOutputGLSLBase::writeVariableType(const TType &type)
@@ -141,6 +182,20 @@
out << type.getQualifierString() << " ";
}
}
+
+ const TMemoryQualifier &memoryQualifier = type.getMemoryQualifier();
+ if (memoryQualifier.readonly)
+ {
+ ASSERT(IsImage(type.getBasicType()));
+ out << "readonly ";
+ }
+
+ if (memoryQualifier.writeonly)
+ {
+ ASSERT(IsImage(type.getBasicType()));
+ out << "writeonly ";
+ }
+
// Declare the struct if we have not done so already.
if (type.getBasicType() == EbtStruct && !structDeclared(type.getStruct()))
{
diff --git a/src/compiler/translator/ParseContext.cpp b/src/compiler/translator/ParseContext.cpp
index 70c0c27..96785cf 100644
--- a/src/compiler/translator/ParseContext.cpp
+++ b/src/compiler/translator/ParseContext.cpp
@@ -22,6 +22,49 @@
//
////////////////////////////////////////////////////////////////////////
+namespace
+{
+
+const int kWebGLMaxStructNesting = 4;
+
+bool ContainsSampler(const TType &type)
+{
+ if (IsSampler(type.getBasicType()))
+ return true;
+
+ if (type.getBasicType() == EbtStruct || type.isInterfaceBlock())
+ {
+ const TFieldList &fields = type.getStruct()->fields();
+ for (unsigned int i = 0; i < fields.size(); ++i)
+ {
+ if (ContainsSampler(*fields[i]->type()))
+ return true;
+ }
+ }
+
+ return false;
+}
+
+bool ContainsImage(const TType &type)
+{
+ if (IsImage(type.getBasicType()))
+ return true;
+
+ if (type.getBasicType() == EbtStruct || type.isInterfaceBlock())
+ {
+ const TFieldList &fields = type.getStruct()->fields();
+ for (unsigned int i = 0; i < fields.size(); ++i)
+ {
+ if (ContainsImage(*fields[i]->type()))
+ return true;
+ }
+ }
+
+ return false;
+}
+
+} // namespace
+
//
// Look at a '.' field selector string and change it into offsets
// for a vector.
@@ -237,6 +280,11 @@
error(line, "No precision specified (sampler)", "");
return;
}
+ if (IsImage(type))
+ {
+ error(line, "No precision specified (image)", "");
+ return;
+ }
}
}
}
@@ -346,6 +394,10 @@
{
message = "can't modify a sampler";
}
+ if (IsImage(node->getBasicType()))
+ {
+ message = "can't modify an image";
+ }
}
if (message == 0 && binaryNode == 0 && symNode == 0)
@@ -576,6 +628,11 @@
error(line, "cannot convert a sampler", "constructor");
return false;
}
+ if (op != EOpConstructStruct && IsImage(argTyped->getBasicType()))
+ {
+ error(line, "cannot convert an image", "constructor");
+ return false;
+ }
if (argTyped->getBasicType() == EbtVoid)
{
error(line, "cannot convert a void", "constructor");
@@ -662,7 +719,7 @@
{
if (pType.type == EbtStruct)
{
- if (containsSampler(*pType.userDef))
+ if (ContainsSampler(*pType.userDef))
{
error(line, reason, getBasicString(pType.type), "(structure contains a sampler)");
return false;
@@ -679,6 +736,31 @@
return true;
}
+bool TParseContext::checkIsNotImage(const TSourceLoc &line,
+ const TTypeSpecifierNonArray &pType,
+ const char *reason)
+{
+ if (pType.type == EbtStruct)
+ {
+ if (ContainsImage(*pType.userDef))
+ {
+ error(line, reason, getBasicString(pType.type), "(structure contains an image)");
+
+ return false;
+ }
+
+ return true;
+ }
+ else if (IsImage(pType.type))
+ {
+ error(line, reason, getBasicString(pType.type));
+
+ return false;
+ }
+
+ return true;
+}
+
void TParseContext::checkDeclaratorLocationIsNotSpecified(const TSourceLoc &line,
const TPublicType &pType)
{
@@ -699,33 +781,34 @@
}
}
+void TParseContext::checkOutParameterIsNotOpaqueType(const TSourceLoc &line,
+ TQualifier qualifier,
+ const TType &type)
+{
+ checkOutParameterIsNotSampler(line, qualifier, type);
+ checkOutParameterIsNotImage(line, qualifier, type);
+}
+
void TParseContext::checkOutParameterIsNotSampler(const TSourceLoc &line,
TQualifier qualifier,
const TType &type)
{
- if ((qualifier == EvqOut || qualifier == EvqInOut) && type.getBasicType() != EbtStruct &&
- IsSampler(type.getBasicType()))
+ ASSERT(qualifier == EvqOut || qualifier == EvqInOut);
+ if (IsSampler(type.getBasicType()))
{
error(line, "samplers cannot be output parameters", type.getBasicString());
}
}
-bool TParseContext::containsSampler(const TType &type)
+void TParseContext::checkOutParameterIsNotImage(const TSourceLoc &line,
+ TQualifier qualifier,
+ const TType &type)
{
- if (IsSampler(type.getBasicType()))
- return true;
-
- if (type.getBasicType() == EbtStruct || type.isInterfaceBlock())
+ ASSERT(qualifier == EvqOut || qualifier == EvqInOut);
+ if (IsImage(type.getBasicType()))
{
- const TFieldList &fields = type.getStruct()->fields();
- for (unsigned int i = 0; i < fields.size(); ++i)
- {
- if (containsSampler(*fields[i]->type()))
- return true;
- }
+ error(line, "images cannot be output parameters", type.getBasicString());
}
-
- return false;
}
// Do size checking for an array type's size.
@@ -926,7 +1009,16 @@
if (typeQualifier.qualifier == EvqOut || typeQualifier.qualifier == EvqInOut)
{
- checkOutParameterIsNotSampler(line, typeQualifier.qualifier, *type);
+ checkOutParameterIsNotOpaqueType(line, typeQualifier.qualifier, *type);
+ }
+
+ if (!IsImage(type->getBasicType()))
+ {
+ checkIsMemoryQualifierNotSpecified(typeQualifier.memoryQualifier, line);
+ }
+ else
+ {
+ type->setMemoryQualifier(typeQualifier.memoryQualifier);
}
type->setQualifier(typeQualifier.qualifier);
@@ -991,6 +1083,12 @@
{
return;
}
+ if (publicType.qualifier != EvqUniform &&
+ !checkIsNotImage(identifierLocation, publicType.typeSpecifierNonArray,
+ "images must be uniform"))
+ {
+ return;
+ }
// check for layout qualifier issues
const TLayoutQualifier layoutQualifier = publicType.layoutQualifier;
@@ -1015,6 +1113,89 @@
{
checkLocationIsNotSpecified(identifierLocation, publicType.layoutQualifier);
}
+
+ if (IsImage(publicType.getBasicType()))
+ {
+
+ switch (layoutQualifier.imageInternalFormat)
+ {
+ case EiifRGBA32F:
+ case EiifRGBA16F:
+ case EiifR32F:
+ case EiifRGBA8:
+ case EiifRGBA8_SNORM:
+ if (!IsFloatImage(publicType.getBasicType()))
+ {
+ error(identifierLocation,
+ "internal image format requires a floating image type",
+ getBasicString(publicType.getBasicType()));
+ return;
+ }
+ break;
+ case EiifRGBA32I:
+ case EiifRGBA16I:
+ case EiifRGBA8I:
+ case EiifR32I:
+ if (!IsIntegerImage(publicType.getBasicType()))
+ {
+ error(identifierLocation,
+ "internal image format requires an integer image type",
+ getBasicString(publicType.getBasicType()));
+ return;
+ }
+ break;
+ case EiifRGBA32UI:
+ case EiifRGBA16UI:
+ case EiifRGBA8UI:
+ case EiifR32UI:
+ if (!IsUnsignedImage(publicType.getBasicType()))
+ {
+ error(identifierLocation,
+ "internal image format requires an unsigned image type",
+ getBasicString(publicType.getBasicType()));
+ return;
+ }
+ break;
+ case EiifUnspecified:
+ error(identifierLocation, "layout qualifier", "No image internal format specified");
+ return;
+ default:
+ error(identifierLocation, "layout qualifier", "unrecognized token");
+ return;
+ }
+
+ // GLSL ES 3.10 Revision 4, 4.9 Memory Access Qualifiers
+ switch (layoutQualifier.imageInternalFormat)
+ {
+ case EiifR32F:
+ case EiifR32I:
+ case EiifR32UI:
+ break;
+ default:
+ if (!publicType.memoryQualifier.readonly && !publicType.memoryQualifier.writeonly)
+ {
+ error(identifierLocation, "layout qualifier",
+ "Except for images with the r32f, r32i and r32ui format qualifiers, "
+ "image variables must be qualified readonly and/or writeonly");
+ return;
+ }
+ break;
+ }
+ }
+ else
+ {
+
+ if (!checkInternalFormatIsNotSpecified(identifierLocation,
+ layoutQualifier.imageInternalFormat))
+ {
+ return;
+ }
+
+ if (!checkIsMemoryQualifierNotSpecified(publicType.memoryQualifier, identifierLocation))
+ {
+ return;
+ }
+ }
}
void TParseContext::checkLayoutQualifierSupported(const TSourceLoc &location,
@@ -1045,6 +1226,18 @@
return true;
}
+bool TParseContext::checkInternalFormatIsNotSpecified(const TSourceLoc &location,
+ TLayoutImageInternalFormat internalFormat)
+{
+ if (internalFormat != EiifUnspecified)
+ {
+ error(location, "invalid layout qualifier:", getImageInternalFormatString(internalFormat),
+ "only valid when used with images");
+ return false;
+ }
+ return true;
+}
+
void TParseContext::functionCallLValueErrorCheck(const TFunction *fnCandidate,
TIntermAggregate *fnCall)
{
@@ -1396,6 +1589,7 @@
returnType.qualifier = typeQualifier.qualifier;
returnType.invariant = typeQualifier.invariant;
returnType.layoutQualifier = typeQualifier.layoutQualifier;
+ returnType.memoryQualifier = typeQualifier.memoryQualifier;
returnType.precision = typeSpecifier.precision;
if (typeQualifier.precision != EbpUndefined)
@@ -1527,6 +1721,38 @@
}
}
+void TParseContext::checkLocalVariableConstStorageQualifier(const TQualifierWrapperBase &qualifier)
+{
+ if (qualifier.getType() == QtStorage)
+ {
+ const TStorageQualifierWrapper &storageQualifier =
+ static_cast<const TStorageQualifierWrapper &>(qualifier);
+ if (!declaringFunction() && storageQualifier.getQualifier() != EvqConst &&
+ !symbolTable.atGlobalLevel())
+ {
+ error(storageQualifier.getLine(),
+ "Local variables can only use the const storage qualifier.",
+ storageQualifier.getQualifierString().c_str());
+ }
+ }
+}
+
+bool TParseContext::checkIsMemoryQualifierNotSpecified(const TMemoryQualifier &memoryQualifier,
+ const TSourceLoc &location)
+{
+ if (memoryQualifier.readonly)
+ {
+ error(location, "Only allowed with images.", "readonly");
+ return false;
+ }
+ if (memoryQualifier.writeonly)
+ {
+ error(location, "Only allowed with images.", "writeonly");
+ return false;
+ }
+ return true;
+}
+
TIntermAggregate *TParseContext::parseSingleDeclaration(TPublicType &publicType,
const TSourceLoc &identifierOrTypeLocation,
const TString &identifier)
@@ -1729,6 +1955,7 @@
checkInvariantVariableQualifier(typeQualifier.invariant, type.getQualifier(),
typeQualifier.line);
+ checkIsMemoryQualifierNotSpecified(typeQualifier.memoryQualifier, typeQualifier.line);
symbolTable.addInvariantVarying(std::string(identifier->c_str()));
@@ -1919,6 +2146,10 @@
return;
}
+ checkIsMemoryQualifierNotSpecified(typeQualifier.memoryQualifier, typeQualifier.line);
+
+ checkInternalFormatIsNotSpecified(typeQualifier.line, layoutQualifier.imageInternalFormat);
+
if (typeQualifier.qualifier == EvqComputeIn)
{
if (mComputeShaderLocalSizeDeclared &&
@@ -2272,9 +2503,10 @@
{
error(location, "no qualifiers allowed for function return", "layout");
}
- // make sure a sampler is not involved as well...
+ // make sure a sampler or an image is not involved as well...
checkIsNotSampler(location, type.typeSpecifierNonArray,
"samplers can't be function return values");
+ checkIsNotImage(location, type.typeSpecifierNonArray, "images can't be function return values");
if (mShaderVersion < 300)
{
// Array return values are forbidden, but there's also no valid syntax for declaring array
@@ -2413,6 +2645,8 @@
error(typeQualifier.line, "invalid qualifier on interface block member", "invariant");
}
+ checkIsMemoryQualifierNotSpecified(typeQualifier.memoryQualifier, typeQualifier.line);
+
TLayoutQualifier blockLayoutQualifier = typeQualifier.layoutQualifier;
checkLocationIsNotSpecified(typeQualifier.line, blockLayoutQualifier);
@@ -2428,6 +2662,8 @@
checkWorkGroupSizeIsNotSpecified(nameLine, blockLayoutQualifier);
+ checkInternalFormatIsNotSpecified(nameLine, blockLayoutQualifier.imageInternalFormat);
+
TSymbol *blockNameSymbol = new TInterfaceBlockName(&blockName);
if (!symbolTable.declare(blockNameSymbol))
{
@@ -2445,6 +2681,12 @@
"sampler types are not allowed in interface blocks");
}
+ if (IsImage(fieldType->getBasicType()))
+ {
+ error(field->line(), "unsupported type", fieldType->getBasicString(),
+ "image types are not allowed in interface blocks");
+ }
+
const TQualifier qualifier = fieldType->getQualifier();
switch (qualifier)
{
@@ -2567,12 +2809,6 @@
--mStructNestingLevel;
}
-namespace
-{
-const int kWebGLMaxStructNesting = 4;
-
-} // namespace
-
void TParseContext::checkIsBelowStructNestingLimit(const TSourceLoc &line, const TField &field)
{
if (!IsWebGLBasedSpec(mShaderSpec))
@@ -2896,6 +3132,72 @@
error(qualifierTypeLine, "invalid layout qualifier", qualifierType.c_str(),
"location requires an argument");
}
+ else if (qualifierType == "rgba32f")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifRGBA32F;
+ }
+ else if (qualifierType == "rgba16f")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifRGBA16F;
+ }
+ else if (qualifierType == "r32f")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifR32F;
+ }
+ else if (qualifierType == "rgba8")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifRGBA8;
+ }
+ else if (qualifierType == "rgba8_snorm")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifRGBA8_SNORM;
+ }
+ else if (qualifierType == "rgba32i")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifRGBA32I;
+ }
+ else if (qualifierType == "rgba16i")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifRGBA16I;
+ }
+ else if (qualifierType == "rgba8i")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifRGBA8I;
+ }
+ else if (qualifierType == "r32i")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifR32I;
+ }
+ else if (qualifierType == "rgba32ui")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifRGBA32UI;
+ }
+ else if (qualifierType == "rgba16ui")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifRGBA16UI;
+ }
+ else if (qualifierType == "rgba8ui")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifRGBA8UI;
+ }
+ else if (qualifierType == "r32ui")
+ {
+ checkLayoutQualifierSupported(qualifierTypeLine, qualifierType, 310);
+ qualifier.imageInternalFormat = EiifR32UI;
+ }
+
else
{
error(qualifierTypeLine, "invalid layout qualifier", qualifierType.c_str());
@@ -2991,6 +3293,7 @@
typeSpecifier->qualifier = typeQualifier.qualifier;
typeSpecifier->layoutQualifier = typeQualifier.layoutQualifier;
+ typeSpecifier->memoryQualifier = typeQualifier.memoryQualifier;
typeSpecifier->invariant = typeQualifier.invariant;
if (typeQualifier.precision != EbpUndefined)
{
@@ -3021,6 +3324,7 @@
type->setPrecision(typeSpecifier.precision);
type->setQualifier(typeSpecifier.qualifier);
type->setLayoutQualifier(typeSpecifier.layoutQualifier);
+ type->setMemoryQualifier(typeSpecifier.memoryQualifier);
type->setInvariant(typeSpecifier.invariant);
// don't allow arrays of arrays
@@ -3082,6 +3386,12 @@
{
error(field.line(), "invalid qualifier on struct member", "invariant");
}
+ if (IsImage(field.type()->getBasicType()))
+ {
+ error(field.line(), "disallowed type in struct", field.type()->getBasicString());
+ }
+
+ checkIsMemoryQualifierNotSpecified(field.type()->getMemoryQualifier(), field.line());
checkLocationIsNotSpecified(field.line(), field.type()->getLayoutQualifier());
}
@@ -3208,7 +3518,7 @@
case EOpNegative:
case EOpPositive:
if (child->getBasicType() == EbtStruct || child->getBasicType() == EbtBool ||
- child->isArray() || IsSampler(child->getBasicType()))
+ child->isArray() || IsOpaqueType(child->getBasicType()))
{
return nullptr;
}
@@ -3373,6 +3683,14 @@
GetOperatorString(op));
return false;
}
+
+ if ((op == EOpAssign || op == EOpInitialize) &&
+ left->getType().isStructureContainingImages())
+ {
+ error(loc, "undefined operation for structs containing images",
+ GetOperatorString(op));
+ return false;
+ }
case EOpLessThan:
case EOpGreaterThan:
case EOpLessThanEqual:
@@ -3738,6 +4056,83 @@
}
}
+// GLSL ES 3.10 Revision 4, 4.9 Memory Access Qualifiers
+void TParseContext::checkImageMemoryAccessForBuiltinFunctions(TIntermAggregate *functionCall)
+{
+ ASSERT(!functionCall->isUserDefined());
+ const TString &name = functionCall->getFunctionSymbolInfo()->getName();
+
+ if (name.compare(0, 5, "image") == 0)
+ {
+ TIntermSequence *arguments = functionCall->getSequence();
+ TIntermNode *imageNode = (*arguments)[0];
+ TIntermSymbol *imageSymbol = imageNode->getAsSymbolNode();
+
+ const TMemoryQualifier &memoryQualifier = imageSymbol->getMemoryQualifier();
+
+ if (name.compare(5, 5, "Store") == 0)
+ {
+ if (memoryQualifier.readonly)
+ {
+ error(imageNode->getLine(),
+ "'imageStore' cannot be used with images qualified as 'readonly'",
+ imageSymbol->getSymbol().c_str());
+ }
+ }
+ else if (name.compare(5, 4, "Load") == 0)
+ {
+ if (memoryQualifier.writeonly)
+ {
+ error(imageNode->getLine(),
+ "'imageLoad' cannot be used with images qualified as 'writeonly'",
+ imageSymbol->getSymbol().c_str());
+ }
+ }
+ }
+}
+
+// GLSL ES 3.10 Revision 4, 13.51 Matching of Memory Qualifiers in Function Parameters
+void TParseContext::checkImageMemoryAccessForUserDefinedFunctions(
+ const TFunction *functionDefinition,
+ const TIntermAggregate *functionCall)
+{
+ ASSERT(functionCall->isUserDefined());
+
+ const TIntermSequence &arguments = *functionCall->getSequence();
+
+ ASSERT(functionDefinition->getParamCount() == arguments.size());
+
+ for (size_t i = 0; i < arguments.size(); ++i)
+ {
+ const TType &functionArgumentType = arguments[i]->getAsTyped()->getType();
+ const TType &functionParameterType = *functionDefinition->getParam(i).type;
+ ASSERT(functionArgumentType.getBasicType() == functionParameterType.getBasicType());
+
+ if (IsImage(functionArgumentType.getBasicType()))
+ {
+ const TMemoryQualifier &functionArgumentMemoryQualifier =
+ functionArgumentType.getMemoryQualifier();
+ const TMemoryQualifier &functionParameterMemoryQualifier =
+ functionParameterType.getMemoryQualifier();
+ if (functionArgumentMemoryQualifier.readonly &&
+ !functionParameterMemoryQualifier.readonly)
+ {
+ error(functionCall->getLine(),
+ "Function call discards the 'readonly' qualifier from image",
+ arguments[i]->getAsSymbolNode()->getSymbol().c_str());
+ }
+
+ if (functionArgumentMemoryQualifier.writeonly &&
+ !functionParameterMemoryQualifier.writeonly)
+ {
+ error(functionCall->getLine(),
+ "Function call discards the 'writeonly' qualifier from image",
+ arguments[i]->getAsSymbolNode()->getSymbol().c_str());
+ }
+ }
+ }
+}
+
TIntermTyped *TParseContext::addFunctionCallOrMethod(TFunction *fnCall,
TIntermNode *paramNode,
TIntermNode *thisNode,
@@ -3887,6 +4282,12 @@
aggregate->setBuiltInFunctionPrecision();
checkTextureOffsetConst(aggregate);
+
+ checkImageMemoryAccessForBuiltinFunctions(aggregate);
+ }
+ else
+ {
+ checkImageMemoryAccessForUserDefinedFunctions(fnCandidate, aggregate);
}
callNode = aggregate;
diff --git a/src/compiler/translator/ParseContext.h b/src/compiler/translator/ParseContext.h
index 6ca3a3c..df34dd3 100644
--- a/src/compiler/translator/ParseContext.h
+++ b/src/compiler/translator/ParseContext.h
@@ -162,12 +162,12 @@
bool checkIsNotSampler(const TSourceLoc &line,
const TTypeSpecifierNonArray &pType,
const char *reason);
+ bool checkIsNotImage(const TSourceLoc &line,
+ const TTypeSpecifierNonArray &pType,
+ const char *reason);
void checkDeclaratorLocationIsNotSpecified(const TSourceLoc &line, const TPublicType &pType);
void checkLocationIsNotSpecified(const TSourceLoc &location,
const TLayoutQualifier &layoutQualifier);
- void checkOutParameterIsNotSampler(const TSourceLoc &line,
- TQualifier qualifier,
- const TType &type);
void checkIsParameterQualifierValid(const TSourceLoc &line,
const TTypeQualifierBuilder &typeQualifierBuilder,
TType *type);
@@ -179,7 +179,8 @@
int versionRequired);
bool checkWorkGroupSizeIsNotSpecified(const TSourceLoc &location,
const TLayoutQualifier &layoutQualifier);
-
+ bool checkInternalFormatIsNotSpecified(const TSourceLoc &location,
+ TLayoutImageInternalFormat internalFormat);
void functionCallLValueErrorCheck(const TFunction *fnCandidate, TIntermAggregate *fnCall);
void checkInvariantVariableQualifier(bool invariant,
const TQualifier qualifier,
@@ -187,7 +188,7 @@
void checkInputOutputTypeIsValidES3(const TQualifier qualifier,
const TPublicType &type,
const TSourceLoc &qualifierLocation);
-
+ void checkLocalVariableConstStorageQualifier(const TQualifierWrapperBase &qualifier);
const TPragma &pragma() const { return mDirectiveHandler.pragma(); }
const TExtensionBehavior &extensionBehavior() const { return mDirectiveHandler.extensionBehavior(); }
bool supportsExtension(const char *extension);
@@ -195,7 +196,6 @@
void handleExtensionDirective(const TSourceLoc &loc, const char *extName, const char *behavior);
void handlePragmaDirective(const TSourceLoc &loc, const char *name, const char *value, bool stdgl);
- bool containsSampler(const TType &type);
const TFunction* findFunction(
const TSourceLoc &line, TFunction *pfnCall, int inputShaderVersion, bool *builtIn = 0);
bool executeInitializer(const TSourceLoc &line,
@@ -356,6 +356,9 @@
TIntermBranch *addBranch(TOperator op, TIntermTyped *returnValue, const TSourceLoc &loc);
void checkTextureOffsetConst(TIntermAggregate *functionCall);
+ void checkImageMemoryAccessForBuiltinFunctions(TIntermAggregate *functionCall);
+ void checkImageMemoryAccessForUserDefinedFunctions(const TFunction *functionDefinition,
+ const TIntermAggregate *functionCall);
TIntermTyped *addFunctionCallOrMethod(TFunction *fnCall,
TIntermNode *paramNode,
TIntermNode *thisNode,
@@ -392,6 +395,18 @@
// Assumes that multiplication op has already been set based on the types.
bool isMultiplicationTypeCombinationValid(TOperator op, const TType &left, const TType &right);
+ bool checkIsMemoryQualifierNotSpecified(const TMemoryQualifier &memoryQualifier,
+ const TSourceLoc &location);
+ void checkOutParameterIsNotImage(const TSourceLoc &line,
+ TQualifier qualifier,
+ const TType &type);
+ void checkOutParameterIsNotOpaqueType(const TSourceLoc &line,
+ TQualifier qualifier,
+ const TType &type);
+ void checkOutParameterIsNotSampler(const TSourceLoc &line,
+ TQualifier qualifier,
+ const TType &type);
+
TIntermTyped *addBinaryMathInternal(
TOperator op, TIntermTyped *left, TIntermTyped *right, const TSourceLoc &loc);
TIntermTyped *createAssign(
diff --git a/src/compiler/translator/QualifierTypes.cpp b/src/compiler/translator/QualifierTypes.cpp
index 30d8c4e..a9bee15 100644
--- a/src/compiler/translator/QualifierTypes.cpp
+++ b/src/compiler/translator/QualifierTypes.cpp
@@ -48,6 +48,11 @@
}
}
+ if (rightQualifier.imageInternalFormat != EiifUnspecified)
+ {
+ joinedQualifier.imageInternalFormat = rightQualifier.imageInternalFormat;
+ }
+
return joinedQualifier;
}
} // namespace sh
@@ -191,6 +196,31 @@
}
break;
}
+ case QtMemory:
+ {
+ // Go over all of the memory qualifiers up until the current one and check for
+ // repetitions.
+ // Having both readonly and writeonly in a sequence is valid.
+ // GLSL ES 3.10 Revision 4, 4.9 Memory Access Qualifiers
+ TQualifier currentQualifier =
+ static_cast<const TMemoryQualifierWrapper *>(qualifiers[i])->getQualifier();
+ for (size_t j = 1; j < i; ++j)
+ {
+ if (qualifiers[j]->getType() == QtMemory)
+ {
+ const TMemoryQualifierWrapper *previousQualifierWrapper =
+ static_cast<const TMemoryQualifierWrapper *>(qualifiers[j]);
+ TQualifier previousQualifier = previousQualifierWrapper->getQualifier();
+ if (currentQualifier == previousQualifier)
+ {
+ *errorMessage = previousQualifierWrapper->getQualifierString().c_str();
+ *errorMessage += " specified multiple times";
+ return true;
+ }
+ }
+ }
+ break;
+ }
default:
UNREACHABLE();
}
@@ -263,6 +293,13 @@
}
foundStorage = true;
break;
+ case QtMemory:
+ if (foundPrecision)
+ {
+ *errorMessage = "Precision qualifiers have to be after memory qualifiers.";
+ return false;
+ }
+ break;
case QtPrecision:
foundPrecision = true;
break;
@@ -392,6 +429,22 @@
return true;
}
+bool JoinMemoryQualifier(TMemoryQualifier *joinedMemoryQualifier, TQualifier memoryQualifier)
+{
+ switch (memoryQualifier)
+ {
+ case EvqReadOnly:
+ joinedMemoryQualifier->readonly = true;
+ break;
+ case EvqWriteOnly:
+ joinedMemoryQualifier->writeonly = true;
+ break;
+ default:
+ UNREACHABLE();
+ }
+ return true;
+}
+
TTypeQualifier GetVariableTypeQualifierFromSortedSequence(
const TTypeQualifierBuilder::QualifierSequence &sortedSequence,
TDiagnostics *diagnostics)
@@ -445,6 +498,11 @@
static_cast<const TPrecisionQualifierWrapper *>(qualifier)->getQualifier();
ASSERT(typeQualifier.precision != EbpUndefined);
break;
+ case QtMemory:
+ isQualifierValid = JoinMemoryQualifier(
+ &typeQualifier.memoryQualifier,
+ static_cast<const TMemoryQualifierWrapper *>(qualifier)->getQualifier());
+ break;
default:
UNREACHABLE();
}
@@ -474,6 +532,11 @@
case QtInterpolation:
case QtLayout:
break;
+ case QtMemory:
+ isQualifierValid = JoinMemoryQualifier(
+ &typeQualifier.memoryQualifier,
+ static_cast<const TMemoryQualifierWrapper *>(qualifier)->getQualifier());
+ break;
case QtStorage:
isQualifierValid = JoinParameterStorageQualifier(
&typeQualifier.qualifier,
@@ -548,6 +611,11 @@
}
}
+unsigned int TMemoryQualifierWrapper::getRank() const
+{
+ return 4u;
+}
+
unsigned int TPrecisionQualifierWrapper::getRank() const
{
return 5u;
@@ -555,6 +623,7 @@
TTypeQualifier::TTypeQualifier(TQualifier scope, const TSourceLoc &loc)
: layoutQualifier(TLayoutQualifier::create()),
+ memoryQualifier(TMemoryQualifier::create()),
precision(EbpUndefined),
qualifier(scope),
invariant(false),
diff --git a/src/compiler/translator/QualifierTypes.h b/src/compiler/translator/QualifierTypes.h
index 0bcc39a..a65b119 100644
--- a/src/compiler/translator/QualifierTypes.h
+++ b/src/compiler/translator/QualifierTypes.h
@@ -27,7 +27,8 @@
QtInterpolation,
QtLayout,
QtStorage,
- QtPrecision
+ QtPrecision,
+ QtMemory
};
class TQualifierWrapperBase : angle::NonCopyable
@@ -127,6 +128,24 @@
TPrecision mPrecisionQualifier;
};
+class TMemoryQualifierWrapper final : public TQualifierWrapperBase
+{
+ public:
+ TMemoryQualifierWrapper(TQualifier memoryQualifier, const TSourceLoc &line)
+ : TQualifierWrapperBase(line), mMemoryQualifier(memoryQualifier)
+ {
+ }
+ ~TMemoryQualifierWrapper() {}
+
+ TQualifierType getType() const { return QtMemory; }
+ TString getQualifierString() const { return ::getQualifierString(mMemoryQualifier); }
+ TQualifier getQualifier() const { return mMemoryQualifier; }
+ unsigned int getRank() const;
+
+ private:
+ TQualifier mMemoryQualifier;
+};
+
// TTypeQualifier tightly covers type_qualifier from the grammar
struct TTypeQualifier
{
@@ -134,6 +153,7 @@
TTypeQualifier(TQualifier scope, const TSourceLoc &loc);
TLayoutQualifier layoutQualifier;
+ TMemoryQualifier memoryQualifier;
TPrecision precision;
TQualifier qualifier;
bool invariant;
diff --git a/src/compiler/translator/SymbolTable.cpp b/src/compiler/translator/SymbolTable.cpp
index aa23776..92121e8 100644
--- a/src/compiler/translator/SymbolTable.cpp
+++ b/src/compiler/translator/SymbolTable.cpp
@@ -249,6 +249,43 @@
insertBuiltIn(level, gvec4 ? TCache::getType(EbtInt, 4) : rvalue, name, TCache::getType(EbtISampler2DArray), ptype2, ptype3, ptype4, ptype5);
insertBuiltIn(level, gvec4 ? TCache::getType(EbtUInt, 4) : rvalue, name, TCache::getType(EbtUSampler2DArray), ptype2, ptype3, ptype4, ptype5);
}
+ else if (IsGImage(ptype1->getBasicType()))
+ {
+ insertUnmangledBuiltIn(name);
+
+ const TType *floatType = TCache::getType(EbtFloat, 4);
+ const TType *intType = TCache::getType(EbtInt, 4);
+ const TType *unsignedType = TCache::getType(EbtUInt, 4);
+
+ const TType *floatImage =
+ TCache::getType(convertGImageToFloatImage(ptype1->getBasicType()));
+ const TType *intImage = TCache::getType(convertGImageToIntImage(ptype1->getBasicType()));
+ const TType *unsignedImage =
+ TCache::getType(convertGImageToUnsignedImage(ptype1->getBasicType()));
+
+ // GLSL ES 3.10, Revision 4, 8.12 Image Functions
+ if (rvalue->getBasicType() == EbtGVec4)
+ {
+ // imageLoad
+ insertBuiltIn(level, floatType, name, floatImage, ptype2, ptype3, ptype4, ptype5);
+ insertBuiltIn(level, intType, name, intImage, ptype2, ptype3, ptype4, ptype5);
+ insertBuiltIn(level, unsignedType, name, unsignedImage, ptype2, ptype3, ptype4, ptype5);
+ }
+ else if (rvalue->getBasicType() == EbtVoid)
+ {
+ // imageStore
+ insertBuiltIn(level, rvalue, name, floatImage, ptype2, floatType, ptype4, ptype5);
+ insertBuiltIn(level, rvalue, name, intImage, ptype2, intType, ptype4, ptype5);
+ insertBuiltIn(level, rvalue, name, unsignedImage, ptype2, unsignedType, ptype4, ptype5);
+ }
+ else
+ {
+ // imageSize
+ insertBuiltIn(level, rvalue, name, floatImage, ptype2, ptype3, ptype4, ptype5);
+ insertBuiltIn(level, rvalue, name, intImage, ptype2, ptype3, ptype4, ptype5);
+ insertBuiltIn(level, rvalue, name, unsignedImage, ptype2, ptype3, ptype4, ptype5);
+ }
+ }
else if (IsGenType(rvalue) || IsGenType(ptype1) || IsGenType(ptype2) || IsGenType(ptype3))
{
ASSERT(!ptype4 && !ptype5);
diff --git a/src/compiler/translator/Types.cpp b/src/compiler/translator/Types.cpp
index 598be28..7ae004e 100644
--- a/src/compiler/translator/Types.cpp
+++ b/src/compiler/translator/Types.cpp
@@ -44,6 +44,30 @@
case EbtSampler2DArrayShadow: return "sampler2DArrayShadow";
case EbtStruct: return "structure";
case EbtInterfaceBlock: return "interface block";
+ case EbtImage2D:
+ return "image2D";
+ case EbtIImage2D:
+ return "iimage2D";
+ case EbtUImage2D:
+ return "uimage2D";
+ case EbtImage3D:
+ return "image3D";
+ case EbtIImage3D:
+ return "iimage3D";
+ case EbtUImage3D:
+ return "uimage3D";
+ case EbtImage2DArray:
+ return "image2DArray";
+ case EbtIImage2DArray:
+ return "iimage2DArray";
+ case EbtUImage2DArray:
+ return "uimage2DArray";
+ case EbtImageCube:
+ return "imageCube";
+ case EbtIImageCube:
+ return "iimageCube";
+ case EbtUImageCube:
+ return "uimageCube";
default: UNREACHABLE(); return "unknown type";
}
}
@@ -53,6 +77,7 @@
precision(p.precision),
qualifier(p.qualifier),
invariant(p.invariant),
+ memoryQualifier(p.memoryQualifier),
layoutQualifier(p.layoutQualifier),
primarySize(p.getPrimarySize()),
secondarySize(p.getSecondarySize()),
@@ -283,6 +308,42 @@
case EbtSampler2DArrayShadow:
mangledName += "s2as";
break;
+ case EbtImage2D:
+ mangledName += "im2";
+ break;
+ case EbtIImage2D:
+ mangledName += "iim2";
+ break;
+ case EbtUImage2D:
+ mangledName += "uim2";
+ break;
+ case EbtImage3D:
+ mangledName += "im3";
+ break;
+ case EbtIImage3D:
+ mangledName += "iim3";
+ break;
+ case EbtUImage3D:
+ mangledName += "uim3";
+ break;
+ case EbtImage2DArray:
+ mangledName += "im2a";
+ break;
+ case EbtIImage2DArray:
+ mangledName += "iim2a";
+ break;
+ case EbtUImage2DArray:
+ mangledName += "uim2a";
+ break;
+ case EbtImageCube:
+ mangledName += "imc";
+ break;
+ case EbtIImageCube:
+ mangledName += "iimc";
+ break;
+ case EbtUImageCube:
+ mangledName += "uimc";
+ break;
case EbtStruct:
mangledName += structure->mangledName();
break;
@@ -381,6 +442,17 @@
return false;
}
+bool TStructure::containsImages() const
+{
+ for (size_t i = 0; i < mFields->size(); ++i)
+ {
+ const TType *fieldType = (*mFields)[i]->type();
+ if (IsImage(fieldType->getBasicType()) || fieldType->isStructureContainingImages())
+ return true;
+ }
+ return false;
+}
+
void TStructure::createSamplerSymbols(const TString &structName,
const TString &structAPIName,
const unsigned int arrayOfStructsSize,
diff --git a/src/compiler/translator/Types.h b/src/compiler/translator/Types.h
index ab1b6c3..22751f7 100644
--- a/src/compiler/translator/Types.h
+++ b/src/compiler/translator/Types.h
@@ -114,6 +114,7 @@
bool containsArrays() const;
bool containsType(TBasicType t) const;
bool containsSamplers() const;
+ bool containsImages() const;
void createSamplerSymbols(const TString &structName,
const TString &structAPIName,
@@ -229,10 +230,18 @@
public:
POOL_ALLOCATOR_NEW_DELETE();
TType()
- : type(EbtVoid), precision(EbpUndefined), qualifier(EvqGlobal), invariant(false),
+ : type(EbtVoid),
+ precision(EbpUndefined),
+ qualifier(EvqGlobal),
+ invariant(false),
+ memoryQualifier(TMemoryQualifier::create()),
layoutQualifier(TLayoutQualifier::create()),
- primarySize(0), secondarySize(0), array(false), arraySize(0),
- interfaceBlock(nullptr), structure(nullptr)
+ primarySize(0),
+ secondarySize(0),
+ array(false),
+ arraySize(0),
+ interfaceBlock(nullptr),
+ structure(nullptr)
{
}
explicit TType(TBasicType t, unsigned char ps = 1, unsigned char ss = 1)
@@ -240,6 +249,7 @@
precision(EbpUndefined),
qualifier(EvqGlobal),
invariant(false),
+ memoryQualifier(TMemoryQualifier::create()),
layoutQualifier(TLayoutQualifier::create()),
primarySize(ps),
secondarySize(ss),
@@ -249,12 +259,24 @@
structure(0)
{
}
- TType(TBasicType t, TPrecision p, TQualifier q = EvqTemporary,
- unsigned char ps = 1, unsigned char ss = 1, bool a = false)
- : type(t), precision(p), qualifier(q), invariant(false),
+ TType(TBasicType t,
+ TPrecision p,
+ TQualifier q = EvqTemporary,
+ unsigned char ps = 1,
+ unsigned char ss = 1,
+ bool a = false)
+ : type(t),
+ precision(p),
+ qualifier(q),
+ invariant(false),
+ memoryQualifier(TMemoryQualifier::create()),
layoutQualifier(TLayoutQualifier::create()),
- primarySize(ps), secondarySize(ss), array(a), arraySize(0),
- interfaceBlock(0), structure(0)
+ primarySize(ps),
+ secondarySize(ss),
+ array(a),
+ arraySize(0),
+ interfaceBlock(0),
+ structure(0)
{
}
explicit TType(const TPublicType &p);
@@ -263,6 +285,7 @@
precision(p),
qualifier(EvqTemporary),
invariant(false),
+ memoryQualifier(TMemoryQualifier::create()),
layoutQualifier(TLayoutQualifier::create()),
primarySize(1),
secondarySize(1),
@@ -272,12 +295,22 @@
structure(userDef)
{
}
- TType(TInterfaceBlock *interfaceBlockIn, TQualifier qualifierIn,
- TLayoutQualifier layoutQualifierIn, int arraySizeIn)
- : type(EbtInterfaceBlock), precision(EbpUndefined), qualifier(qualifierIn),
- invariant(false), layoutQualifier(layoutQualifierIn),
- primarySize(1), secondarySize(1), array(arraySizeIn > 0), arraySize(arraySizeIn),
- interfaceBlock(interfaceBlockIn), structure(0)
+ TType(TInterfaceBlock *interfaceBlockIn,
+ TQualifier qualifierIn,
+ TLayoutQualifier layoutQualifierIn,
+ int arraySizeIn)
+ : type(EbtInterfaceBlock),
+ precision(EbpUndefined),
+ qualifier(qualifierIn),
+ invariant(false),
+ memoryQualifier(TMemoryQualifier::create()),
+ layoutQualifier(layoutQualifierIn),
+ primarySize(1),
+ secondarySize(1),
+ array(arraySizeIn > 0),
+ arraySize(arraySizeIn),
+ interfaceBlock(interfaceBlockIn),
+ structure(0)
{
}
@@ -322,6 +355,9 @@
void setInvariant(bool i) { invariant = i; }
+ TMemoryQualifier getMemoryQualifier() const { return memoryQualifier; }
+ void setMemoryQualifier(const TMemoryQualifier &mq) { memoryQualifier = mq; }
+
TLayoutQualifier getLayoutQualifier() const
{
return layoutQualifier;
@@ -547,6 +583,11 @@
return structure ? structure->containsSamplers() : false;
}
+ bool isStructureContainingImages() const
+ {
+ return structure ? structure->containsImages() : false;
+ }
+
void createSamplerSymbols(const TString &structName,
const TString &structAPIName,
const unsigned int arrayOfStructsSize,
@@ -573,6 +614,7 @@
TPrecision precision;
TQualifier qualifier;
bool invariant;
+ TMemoryQualifier memoryQualifier;
TLayoutQualifier layoutQualifier;
unsigned char primarySize; // size of vector or cols matrix
unsigned char secondarySize; // rows of a matrix
@@ -641,6 +683,7 @@
{
TTypeSpecifierNonArray typeSpecifierNonArray;
TLayoutQualifier layoutQualifier;
+ TMemoryQualifier memoryQualifier;
TQualifier qualifier;
bool invariant;
TPrecision precision;
@@ -651,6 +694,7 @@
{
typeSpecifierNonArray = typeSpecifier;
layoutQualifier = TLayoutQualifier::create();
+ memoryQualifier = TMemoryQualifier::create();
qualifier = q;
invariant = false;
precision = EbpUndefined;
@@ -658,16 +702,25 @@
arraySize = 0;
}
+ void initializeBasicType(TBasicType basicType)
+ {
+ typeSpecifierNonArray.type = basicType;
+ typeSpecifierNonArray.primarySize = 1;
+ typeSpecifierNonArray.secondarySize = 1;
+ layoutQualifier = TLayoutQualifier::create();
+ memoryQualifier = TMemoryQualifier::create();
+ qualifier = EvqTemporary;
+ invariant = false;
+ precision = EbpUndefined;
+ array = false;
+ arraySize = 0;
+ }
+
TBasicType getBasicType() const { return typeSpecifierNonArray.type; }
void setBasicType(TBasicType basicType) { typeSpecifierNonArray.type = basicType; }
unsigned char getPrimarySize() const { return typeSpecifierNonArray.primarySize; }
unsigned char getSecondarySize() const { return typeSpecifierNonArray.secondarySize; }
- void initializeSizeForScalarTypes()
- {
- typeSpecifierNonArray.primarySize = 1;
- typeSpecifierNonArray.secondarySize = 1;
- }
const TType *getUserDef() const { return typeSpecifierNonArray.userDef; }
const TSourceLoc &getLine() const { return typeSpecifierNonArray.line; }
diff --git a/src/compiler/translator/glslang.l b/src/compiler/translator/glslang.l
index 7fe2893..ed82498 100644
--- a/src/compiler/translator/glslang.l
+++ b/src/compiler/translator/glslang.l
@@ -71,6 +71,7 @@
static int ES2_reserved_ES3_keyword(TParseContext *context, int token);
static int ES2_keyword_ES3_reserved(TParseContext *context, int token);
static int ES2_ident_ES3_keyword(TParseContext *context, int token);
+static int ES2_ident_ES3_reserved_ES3_1_keyword(TParseContext *context, int token);
static int uint_constant(TParseContext *context);
static int int_constant(TParseContext *context);
static int float_constant(yyscan_t yyscanner);
@@ -187,11 +188,24 @@
"layout" { return ES2_ident_ES3_keyword(context, LAYOUT); }
+"image2D" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE2D); }
+"iimage2D" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE2D); }
+"uimage2D" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE2D); }
+"image2DArray" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE2DARRAY); }
+"iimage2DArray" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE2DARRAY); }
+"uimage2DArray" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE2DARRAY); }
+"image3D" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE3D); }
+"uimage3D" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE3D); }
+"iimage3D" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE3D); }
+"iimageCube" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGECUBE); }
+"uimageCube" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGECUBE); }
+"imageCube" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGECUBE); }
+"readonly" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, READONLY); }
+"writeonly" { return ES2_ident_ES3_reserved_ES3_1_keyword(context, WRITEONLY); }
+
/* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */
"coherent" |
"restrict" |
-"readonly" |
-"writeonly" |
"resource" |
"atomic_uint" |
"noperspective" |
@@ -204,23 +218,11 @@
"filter" |
"image1D" |
-"image2D" |
-"image3D" |
-"imageCube" |
"iimage1D" |
-"iimage2D" |
-"iimage3D" |
-"iimageCube" |
"uimage1D" |
-"uimage2D" |
-"uimage3D" |
-"uimageCube" |
"image1DArray" |
-"image2DArray" |
"iimage1DArray" |
-"iimage2DArray" |
"uimage1DArray" |
-"uimage2DArray" |
"image1DShadow" |
"image2DShadow" |
"image1DArrayShadow" |
@@ -463,6 +465,24 @@
return token;
}
+int ES2_ident_ES3_reserved_ES3_1_keyword(TParseContext *context, int token)
+{
+ struct yyguts_t* yyg = (struct yyguts_t*) context->getScanner();
+ yyscan_t yyscanner = (yyscan_t) context->getScanner();
+
+ if (context->getShaderVersion() < 300)
+ {
+ yylval->lex.string = NewPoolTString(yytext);
+ return check_type(yyscanner);
+ }
+ else if (context->getShaderVersion() == 300)
+ {
+ return reserved_word(yyscanner);
+ }
+
+ return token;
+}
+
int ES2_ident_ES3_keyword(TParseContext *context, int token)
{
struct yyguts_t* yyg = (struct yyguts_t*) context->getScanner();
diff --git a/src/compiler/translator/glslang.y b/src/compiler/translator/glslang.y
index 7476f62..d1132c6 100644
--- a/src/compiler/translator/glslang.y
+++ b/src/compiler/translator/glslang.y
@@ -166,11 +166,14 @@
%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> READONLY WRITEONLY
%token <lex> STRUCT VOID_TYPE WHILE
%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> IMAGE2D IIMAGE2D UIMAGE2D IMAGE3D IIMAGE3D UIMAGE3D IMAGE2DARRAY IIMAGE2DARRAY UIMAGE2DARRAY
+%token <lex> IMAGECUBE IIMAGECUBE UIMAGECUBE
%token <lex> LAYOUT
%token <lex> IDENTIFIER TYPE_NAME FLOATCONSTANT INTCONSTANT UINTCONSTANT BOOLCONSTANT
@@ -215,8 +218,8 @@
%type <interm.precision> precision_qualifier
%type <interm.layoutQualifier> layout_qualifier
-%type <interm.qualifier> storage_qualifier interpolation_qualifier
-%type <interm.qualifierWrapper> single_type_qualifier invariant_qualifier
+%type <interm.qualifier> interpolation_qualifier
+%type <interm.qualifierWrapper> storage_qualifier single_type_qualifier invariant_qualifier
%type <interm.typeQualifierBuilder> type_qualifier
%type <interm.typeSpecifierNonArray> type_specifier_nonarray struct_specifier
@@ -854,11 +857,8 @@
single_type_qualifier
: storage_qualifier {
- if (!context->declaringFunction() && $1 != EvqConst && !context->symbolTable.atGlobalLevel())
- {
- context->error(@1, "Local variables can only use the const storage qualifier.", getQualifierString($1));
- }
- $$ = new TStorageQualifierWrapper($1, @1);
+ context->checkLocalVariableConstStorageQualifier(*$1);
+ $$ = $1;
}
| layout_qualifier {
context->checkIsAtGlobalLevel(@1, "layout");
@@ -883,43 +883,43 @@
VERTEX_ONLY("attribute", @1);
ES2_ONLY("attribute", @1);
context->checkIsAtGlobalLevel(@1, "attribute");
- $$ = EvqAttribute;
+ $$ = new TStorageQualifierWrapper(EvqAttribute, @1);
}
| VARYING {
ES2_ONLY("varying", @1);
context->checkIsAtGlobalLevel(@1, "varying");
if (context->getShaderType() == GL_VERTEX_SHADER)
- $$ = EvqVaryingOut;
+ $$ = new TStorageQualifierWrapper(EvqVaryingOut, @1);
else
- $$ = EvqVaryingIn;
+ $$ = new TStorageQualifierWrapper(EvqVaryingIn, @1);
}
| CONST_QUAL {
- $$ = EvqConst;
+ $$ = new TStorageQualifierWrapper(EvqConst, @1);
}
| IN_QUAL {
if (context->declaringFunction())
{
- $$ = EvqIn;
+ $$ = new TStorageQualifierWrapper(EvqIn, @1);
}
else if (context->getShaderType() == GL_FRAGMENT_SHADER)
{
ES3_OR_NEWER("in", @1, "storage qualifier");
- $$ = EvqFragmentIn;
+ $$ = new TStorageQualifierWrapper(EvqFragmentIn, @1);
}
else if (context->getShaderType() == GL_VERTEX_SHADER)
{
ES3_OR_NEWER("in", @1, "storage qualifier");
- $$ = EvqVertexIn;
+ $$ = new TStorageQualifierWrapper(EvqVertexIn, @1);
}
else
{
- $$ = EvqComputeIn;
+ $$ = new TStorageQualifierWrapper(EvqComputeIn, @1);
}
}
| OUT_QUAL {
if (context->declaringFunction())
{
- $$ = EvqOut;
+ $$ = new TStorageQualifierWrapper(EvqOut, @1);
}
else
{
@@ -927,11 +927,11 @@
NON_COMPUTE_ONLY("out", @1);
if (context->getShaderType() == GL_FRAGMENT_SHADER)
{
- $$ = EvqFragmentOut;
+ $$ = new TStorageQualifierWrapper(EvqFragmentOut, @1);
}
else
{
- $$ = EvqVertexOut;
+ $$ = new TStorageQualifierWrapper(EvqVertexOut, @1);
}
}
}
@@ -940,15 +940,21 @@
{
context->error(@1, "invalid inout qualifier", "'inout' can be only used with function parameters");
}
- $$ = EvqInOut;
+ $$ = new TStorageQualifierWrapper(EvqInOut, @1);
}
| CENTROID {
ES3_OR_NEWER("centroid", @1, "storage qualifier");
- $$ = EvqCentroid;
+ $$ = new TStorageQualifierWrapper(EvqCentroid, @1);
}
| UNIFORM {
context->checkIsAtGlobalLevel(@1, "uniform");
- $$ = EvqUniform;
+ $$ = new TStorageQualifierWrapper(EvqUniform, @1);
+ }
+ | READONLY {
+ $$ = new TMemoryQualifierWrapper(EvqReadOnly, @1);
+ }
+ | WRITEONLY {
+ $$ = new TMemoryQualifierWrapper(EvqWriteOnly, @1);
}
;
@@ -1182,6 +1188,42 @@
| struct_specifier {
$$ = $1;
}
+ | IMAGE2D {
+ $$.initialize(EbtImage2D, @1);
+ }
+ | IIMAGE2D {
+ $$.initialize(EbtIImage2D, @1);
+ }
+ | UIMAGE2D {
+ $$.initialize(EbtUImage2D, @1);
+ }
+ | IMAGE3D {
+ $$.initialize(EbtImage3D, @1);
+ }
+ | IIMAGE3D {
+ $$.initialize(EbtIImage3D, @1);
+ }
+ | UIMAGE3D {
+ $$.initialize(EbtUImage3D, @1);
+ }
+ | IMAGE2DARRAY {
+ $$.initialize(EbtImage2DArray, @1);
+ }
+ | IIMAGE2DARRAY {
+ $$.initialize(EbtIImage2DArray, @1);
+ }
+ | UIMAGE2DARRAY {
+ $$.initialize(EbtUImage2DArray, @1);
+ }
+ | IMAGECUBE {
+ $$.initialize(EbtImageCube, @1);
+ }
+ | IIMAGECUBE {
+ $$.initialize(EbtIImageCube, @1);
+ }
+ | UIMAGECUBE {
+ $$.initialize(EbtUImageCube, @1);
+ }
| TYPE_NAME {
//
// This is for user defined type names. The lexical phase looked up the
diff --git a/src/compiler/translator/glslang_lex.cpp b/src/compiler/translator/glslang_lex.cpp
index 8ad7b14..0e23a0f 100644
--- a/src/compiler/translator/glslang_lex.cpp
+++ b/src/compiler/translator/glslang_lex.cpp
@@ -409,618 +409,414 @@
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[820] =
- { 0,
- 0, 0, 0, 0, 241, 239, 238, 238, 222, 228,
- 233, 217, 218, 226, 225, 214, 223, 221, 227, 180,
- 180, 215, 211, 229, 216, 230, 234, 177, 219, 220,
- 232, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 212, 231, 213, 224, 237, 236, 240, 235, 208,
- 194, 213, 202, 197, 192, 200, 190, 201, 191, 186,
- 193, 185, 179, 180, 0, 183, 0, 220, 212, 219,
- 209, 205, 207, 206, 210, 177, 198, 204, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
+ static yyconst flex_int16_t yy_accept[820] = {
+ 0, 0, 0, 0, 0, 241, 239, 238, 238, 222, 228, 233, 217, 218, 226, 225, 214,
+ 223, 221, 227, 180, 180, 215, 211, 229, 216, 230, 234, 177, 219, 220, 232, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
+ 177, 212, 231, 213, 224, 237, 236, 240, 235, 208, 194, 213, 202, 197, 192, 200, 190,
+ 201, 191, 186, 193, 185, 179, 180, 0, 183, 0, 220, 212, 219, 209, 205, 207, 206,
+ 210, 177, 198, 204, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 12, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 15, 177, 177, 23, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 199, 203, 235, 0, 189, 185, 0, 188, 182,
- 0, 184, 178, 195, 196, 177, 136, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 13, 177, 177, 177, 177, 177, 177, 177, 177, 177,
+ 12, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 15, 177, 177,
+ 23, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
+ 199, 203, 235, 0, 189, 185, 0, 188, 182, 0, 184, 178, 195, 196, 177, 136, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 13, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 27, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 24, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 0, 186,
- 0, 185, 187, 181, 177, 177, 177, 30, 177, 177,
- 18, 174, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 16, 139, 177, 177, 177, 177, 21, 177,
- 177, 143, 155, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 152, 4, 35, 36, 37,
+ 177, 27, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 24, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 0, 186, 0,
+ 185, 187, 181, 177, 177, 177, 30, 177, 177, 18, 174, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 16, 139, 177, 177, 177, 177, 21, 177, 177, 143, 155, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 152, 4, 35, 36, 37,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 142, 31, 177, 177, 28, 177,
- 177, 177, 177, 177, 177, 177, 47, 48, 49, 29,
- 177, 177, 177, 177, 177, 177, 10, 53, 54, 55,
- 177, 137, 177, 177, 7, 177, 177, 177, 177, 164,
- 165, 166, 177, 32, 177, 156, 26, 167, 168, 169,
- 2, 161, 162, 163, 177, 177, 177, 25, 159, 177,
- 177, 177, 50, 51, 52, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 86, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 142, 31, 177, 177, 28, 177, 177, 177, 177, 177,
+ 177, 177, 47, 48, 49, 29, 177, 177, 177, 177, 177, 177, 10, 53, 54, 55, 177,
+ 137, 177, 177, 7, 177, 177, 177, 177, 164, 165, 166, 177, 32, 177, 156, 26, 167,
+ 168, 169, 2, 161, 162, 163, 177, 177, 177, 25, 159, 177, 177, 177, 50, 51, 52,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 98, 177, 177, 177,
- 177, 177, 177, 177, 153, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 138, 177, 177, 176,
- 56, 57, 58, 177, 177, 14, 177, 91, 177, 177,
- 177, 177, 89, 177, 177, 177, 154, 149, 92, 177,
- 177, 177, 177, 177, 177, 144, 177, 177, 177, 78,
- 38, 41, 43, 42, 39, 45, 44, 46, 40, 177,
- 177, 177, 177, 160, 135, 177, 177, 147, 177, 177,
- 177, 34, 87, 173, 22, 148, 77, 177, 158, 17,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 19, 33, 177, 177, 177, 177,
+ 177, 177, 177, 177, 153, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 138,
+ 177, 177, 176, 56, 57, 58, 177, 177, 14, 177, 103, 177, 177, 177, 177, 101, 177,
+ 177, 177, 154, 149, 104, 177, 177, 177, 177, 177, 177, 144, 177, 177, 177, 78, 38,
+ 41, 43, 42, 39, 45, 44, 46, 40, 177, 177, 177, 177, 160, 135, 177, 177, 147,
+ 177, 177, 177, 34, 99, 173, 22, 148, 77, 177, 158, 17, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 19, 33, 177, 177, 177, 177,
- 177, 177, 93, 94, 95, 177, 177, 177, 177, 177,
- 3, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 140, 177, 177, 177, 177, 177, 8, 177,
- 177, 9, 177, 177, 177, 177, 20, 79, 11, 150,
- 97, 98, 99, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 145, 177, 177, 177, 81,
- 83, 80, 177, 177, 177, 177, 177, 177, 177, 141,
- 101, 102, 103, 177, 177, 157, 177, 146, 177, 177,
- 6, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 96, 151, 1, 177, 177, 177, 177, 177, 175, 177,
+ 177, 177, 105, 79, 85, 177, 177, 177, 177, 177, 3, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 140, 177, 177, 177, 177, 177, 8, 177, 177, 9, 177, 177,
+ 177, 177, 20, 93, 11, 150, 106, 80, 87, 177, 177, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 145, 177, 177, 177, 91, 95, 94, 177, 177, 177, 177, 177, 177,
+ 177, 141, 107, 81, 86, 177, 177, 157, 177, 146, 177, 177, 6, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 90, 151, 1, 177, 177, 177, 177, 177, 175, 177,
- 90, 5, 170, 59, 62, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 177, 82, 177,
- 177, 177, 177, 100, 177, 177, 177, 177, 177, 120,
- 66, 67, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 88, 177, 177, 177, 104,
- 122, 70, 71, 177, 177, 84, 177, 177, 177, 177,
- 177, 177, 177, 115, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 129, 177, 177, 177, 177, 60,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 116, 105, 177, 106, 177, 177, 177, 130,
+ 102, 5, 170, 59, 62, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
+ 177, 92, 177, 177, 177, 177, 88, 177, 177, 177, 177, 177, 120, 66, 67, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 100, 177, 177, 177, 89, 122,
+ 70, 71, 177, 177, 96, 177, 177, 177, 177, 177, 177, 177, 115, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 129, 177, 177, 177, 177, 60, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 116, 108, 177, 82, 177, 177, 177, 130,
- 177, 177, 68, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 117, 177, 177, 131,
- 177, 177, 72, 107, 108, 177, 111, 177, 112, 177,
- 177, 177, 177, 177, 85, 177, 177, 177, 177, 64,
- 177, 63, 126, 177, 177, 109, 110, 177, 177, 177,
- 177, 177, 177, 177, 177, 177, 177, 124, 127, 118,
- 177, 65, 177, 177, 177, 177, 177, 177, 177, 177,
- 125, 128, 177, 177, 121, 69, 177, 177, 171, 177,
- 177, 177, 74, 177, 177, 123, 73, 177, 177, 177,
- 177, 177, 177, 132, 177, 177, 177, 177, 177, 177,
+ 177, 177, 68, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 117,
+ 177, 177, 131, 177, 177, 72, 109, 83, 177, 111, 177, 112, 177, 177, 177, 177, 177,
+ 97, 177, 177, 177, 177, 64, 177, 63, 126, 177, 177, 110, 84, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 124, 127, 118, 177, 65, 177, 177, 177, 177, 177, 177,
+ 177, 177, 125, 128, 177, 177, 121, 69, 177, 177, 171, 177, 177, 177, 74, 177, 177,
+ 123, 73, 177, 177, 177, 177, 177, 177, 132, 177, 177, 177, 177, 177, 177,
- 133, 177, 177, 177, 75, 177, 134, 113, 114, 177,
- 177, 177, 61, 177, 177, 172, 119, 76, 0
- } ;
+ 133, 177, 177, 177, 75, 177, 134, 113, 114, 177, 177, 177, 61, 177, 177, 172, 119,
+ 76, 0};
-static yyconst flex_int32_t yy_ec[256] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 4, 1, 1, 1, 5, 6, 1, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 20, 20, 21, 21, 22, 23, 24,
- 25, 26, 27, 1, 28, 29, 30, 31, 32, 33,
- 34, 34, 34, 34, 34, 34, 35, 34, 36, 34,
- 34, 37, 38, 34, 39, 34, 34, 40, 34, 34,
- 41, 1, 42, 43, 44, 1, 45, 46, 47, 48,
+ static yyconst flex_int32_t yy_ec[256] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 1, 1, 1, 5, 6, 1, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 20, 20, 21, 21, 22, 23, 24, 25, 26,
+ 27, 1, 28, 29, 30, 31, 32, 33, 34, 34, 34, 34, 34, 34, 35, 34, 36, 34, 34, 37, 38,
+ 34, 39, 34, 34, 40, 34, 34, 41, 1, 42, 43, 44, 1, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 34, 54, 55, 56, 57,
- 58, 59, 34, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 49, 50, 51, 52, 53, 34, 54, 55, 56, 57, 58, 59, 34, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1
- } ;
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
-static yyconst flex_int32_t yy_meta[73] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 3, 3, 3,
- 3, 2, 2, 4, 4, 4, 4, 4, 4, 4,
- 1, 1, 1, 4, 3, 3, 3, 3, 2, 2,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1
- } ;
+ static yyconst flex_int32_t yy_meta[73] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
+ 1, 1, 1, 3, 3, 3, 3, 2, 2, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 3, 3, 3, 3, 2,
+ 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1};
-static yyconst flex_int16_t yy_base[825] =
- { 0,
- 0, 0, 72, 0, 1016, 1017, 1017, 1017, 990, 120,
- 141, 1017, 1017, 989, 138, 1017, 137, 135, 988, 154,
- 208, 986, 1017, 154, 986, 132, 1017, 0, 1017, 1017,
- 139, 130, 123, 140, 147, 133, 177, 952, 186, 151,
- 139, 116, 161, 946, 173, 959, 193, 199, 208, 215,
- 108, 1017, 184, 1017, 1017, 1017, 1017, 1017, 0, 1017,
- 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 230,
- 1017, 235, 235, 0, 271, 1017, 0, 1017, 1017, 1017,
- 982, 1017, 1017, 1017, 981, 0, 1017, 1017, 943, 948,
- 152, 945, 953, 952, 939, 942, 953, 243, 947, 935,
+ static yyconst flex_int16_t yy_base[825] = {
+ 0, 0, 0, 72, 0, 1016, 1017, 1017, 1017, 990, 120, 141, 1017,
+ 1017, 989, 138, 1017, 137, 135, 988, 154, 208, 986, 1017, 154, 986,
+ 132, 1017, 0, 1017, 1017, 139, 130, 123, 140, 147, 133, 177, 952,
+ 186, 151, 139, 116, 161, 946, 173, 959, 193, 199, 208, 215, 108,
+ 1017, 184, 1017, 1017, 1017, 1017, 1017, 0, 1017, 1017, 1017, 1017, 1017,
+ 1017, 1017, 1017, 1017, 1017, 230, 1017, 235, 235, 0, 271, 1017, 0,
+ 1017, 1017, 1017, 982, 1017, 1017, 1017, 981, 0, 1017, 1017, 943, 948,
+ 152, 945, 953, 952, 939, 942, 953, 243, 947, 935,
- 932, 945, 932, 929, 929, 935, 147, 248, 929, 939,
- 925, 931, 934, 935, 0, 927, 937, 249, 936, 931,
- 912, 177, 916, 929, 920, 184, 913, 250, 925, 927,
- 257, 916, 913, 902, 911, 249, 257, 915, 911, 913,
- 902, 905, 196, 217, 269, 914, 902, 914, 262, 907,
- 906, 1017, 1017, 0, 311, 1017, 292, 328, 1017, 1017,
- 335, 342, 257, 1017, 1017, 905, 0, 901, 896, 900,
- 909, 906, 315, 890, 890, 901, 893, 215, 903, 900,
- 900, 898, 895, 887, 893, 880, 878, 890, 876, 892,
- 0, 889, 877, 884, 881, 885, 886, 879, 876, 865,
+ 932, 945, 932, 929, 929, 935, 147, 248, 929, 939, 925, 931, 934,
+ 935, 0, 927, 937, 249, 936, 931, 912, 177, 916, 929, 920, 184,
+ 913, 250, 925, 927, 257, 916, 913, 902, 911, 249, 257, 915, 911,
+ 913, 902, 905, 196, 217, 269, 914, 902, 914, 262, 907, 906, 1017,
+ 1017, 0, 311, 1017, 292, 328, 1017, 1017, 335, 342, 257, 1017, 1017,
+ 905, 0, 901, 896, 900, 909, 906, 315, 890, 890, 901, 893, 215,
+ 903, 900, 900, 898, 895, 887, 893, 880, 878, 890, 876, 892, 0,
+ 889, 877, 884, 881, 885, 886, 879, 876, 865,
- 864, 877, 880, 868, 876, 864, 870, 861, 316, 866,
- 869, 860, 867, 856, 860, 851, 865, 864, 855, 861,
- 307, 845, 848, 846, 856, 846, 841, 839, 841, 851,
- 837, 839, 836, 847, 846, 849, 831, 316, 839, 835,
- 833, 842, 821, 353, 839, 841, 830, 822, 363, 370,
- 378, 389, 1017, 1017, 819, 829, 828, 0, 826, 383,
- 0, 0, 819, 817, 817, 818, 813, 821, 810, 827,
- 816, 394, 0, 0, 810, 820, 819, 819, 0, 804,
- 397, 0, 0, 806, 400, 813, 814, 805, 799, 798,
- 799, 798, 798, 406, 793, 0, 0, 789, 788, 787,
+ 864, 877, 880, 868, 876, 864, 870, 861, 316, 866, 869, 860, 867,
+ 856, 860, 851, 865, 864, 855, 861, 307, 845, 848, 846, 856, 846,
+ 841, 839, 841, 851, 837, 839, 836, 847, 846, 849, 831, 316, 839,
+ 835, 833, 842, 821, 353, 839, 841, 830, 822, 363, 370, 378, 389,
+ 1017, 1017, 819, 829, 828, 0, 826, 383, 0, 0, 819, 817, 817,
+ 818, 813, 821, 810, 827, 816, 394, 0, 0, 810, 820, 819, 819,
+ 0, 804, 397, 0, 0, 806, 400, 813, 814, 805, 799, 798, 799,
+ 798, 798, 406, 793, 0, 0, 789, 788, 787,
- 789, 790, 795, 789, 785, 798, 793, 793, 791, 790,
- 784, 778, 780, 779, 783, 775, 778, 773, 781, 786,
- 774, 771, 783, 774, 0, 0, 780, 776, 0, 768,
- 768, 773, 764, 771, 409, 768, 0, 0, 0, 0,
- 758, 770, 769, 768, 769, 769, 0, 0, 0, 0,
- 756, 0, 764, 755, 0, 754, 755, 749, 759, 0,
- 0, 0, 750, 0, 746, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 756, 413, 755, 0, 0, 753,
- 749, 746, 0, 0, 0, 738, 415, 418, 427, 743,
- 739, 744, 735, 733, 746, 731, 0, 731, 744, 733,
+ 789, 790, 795, 789, 785, 798, 793, 793, 791, 790, 784, 778, 780,
+ 779, 783, 775, 778, 773, 781, 786, 774, 771, 783, 774, 0, 0,
+ 780, 776, 0, 768, 768, 773, 764, 771, 409, 768, 0, 0, 0,
+ 0, 758, 770, 769, 768, 769, 769, 0, 0, 0, 0, 756, 0,
+ 764, 755, 0, 754, 755, 749, 759, 0, 0, 0, 750, 0, 746,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 756, 413, 755, 0,
+ 0, 753, 749, 746, 0, 0, 0, 738, 415, 418, 427, 743, 739,
+ 744, 735, 733, 746, 731, 0, 731, 744, 733,
- 729, 735, 730, 737, 0, 735, 732, 736, 720, 718,
- 721, 727, 733, 728, 727, 715, 0, 717, 718, 0,
- 0, 0, 0, 715, 718, 0, 712, 0, 725, 705,
- 714, 709, 0, 702, 702, 715, 0, 717, 0, 431,
- 730, 729, 728, 695, 694, 0, 711, 710, 705, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 694,
- 707, 694, 691, 0, 0, 696, 695, 0, 692, 699,
- 698, 0, 684, 0, 0, 0, 0, 681, 0, 0,
- 680, 691, 434, 684, 690, 689, 686, 681, 678, 671,
- 671, 684, 669, 681, 0, 0, 674, 697, 696, 695,
+ 729, 735, 730, 737, 0, 735, 732, 736, 720, 718, 721, 727, 733,
+ 728, 727, 715, 0, 717, 718, 0, 0, 0, 0, 715, 718, 0,
+ 712, 0, 725, 705, 714, 709, 0, 702, 702, 715, 0, 717, 0,
+ 431, 730, 729, 728, 695, 694, 0, 711, 710, 705, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 694, 707, 694, 691, 0, 0,
+ 696, 695, 0, 692, 699, 698, 0, 684, 0, 0, 0, 0, 681,
+ 0, 0, 680, 691, 434, 684, 690, 689, 686, 681, 678, 671, 671,
+ 684, 669, 681, 0, 0, 674, 697, 696, 695,
- 662, 661, 427, 428, 0, 673, 676, 674, 663, 659,
- 0, 671, 668, 667, 657, 656, 646, 663, 649, 441,
- 657, 660, 0, 677, 676, 675, 642, 641, 0, 655,
- 642, 0, 652, 645, 646, 649, 0, 0, 0, 0,
- 669, 668, 0, 645, 648, 633, 640, 631, 638, 639,
- 639, 638, 624, 451, 636, 0, 637, 626, 625, 0,
- 0, 0, 650, 649, 648, 615, 614, 610, 618, 0,
- 646, 645, 0, 622, 625, 0, 458, 0, 603, 612,
- 0, 608, 607, 616, 616, 604, 618, 602, 616, 611,
- 0, 0, 0, 628, 627, 626, 593, 592, 0, 592,
+ 662, 661, 427, 428, 0, 673, 676, 674, 663, 659, 0, 671, 668,
+ 667, 657, 656, 646, 663, 649, 441, 657, 660, 0, 677, 676, 675,
+ 642, 641, 0, 655, 642, 0, 652, 645, 646, 649, 0, 0, 0,
+ 0, 669, 668, 0, 645, 648, 633, 640, 631, 638, 639, 639, 638,
+ 624, 451, 636, 0, 637, 626, 625, 0, 0, 0, 650, 649, 648,
+ 615, 614, 610, 618, 0, 646, 645, 0, 622, 625, 0, 458, 0,
+ 603, 612, 0, 608, 607, 616, 616, 604, 618, 602, 616, 611, 0,
+ 0, 0, 628, 627, 626, 593, 592, 0, 592,
- 0, 0, 434, 454, 616, 602, 605, 588, 600, 588,
- 587, 596, 596, 613, 612, 611, 578, 577, 0, 577,
- 578, 577, 587, 0, 590, 586, 588, 584, 571, 602,
- 449, 0, 579, 582, 574, 566, 573, 564, 585, 573,
- 569, 571, 569, 569, 568, 0, 556, 555, 565, 0,
- 585, 462, 0, 562, 565, 0, 565, 564, 548, 540,
- 548, 538, 546, 0, 543, 542, 563, 551, 549, 549,
- 533, 536, 550, 534, 565, 545, 546, 543, 540, 550,
- 527, 541, 540, 524, 523, 522, 543, 531, 529, 529,
- 510, 509, 0, 537, 509, 535, 507, 511, 510, 541,
+ 0, 0, 434, 454, 616, 602, 605, 588, 600, 588, 587, 596, 596,
+ 613, 612, 611, 578, 577, 0, 577, 578, 577, 587, 0, 590, 586,
+ 588, 584, 571, 602, 449, 0, 579, 582, 574, 566, 573, 564, 585,
+ 573, 569, 571, 569, 569, 568, 0, 556, 555, 565, 0, 585, 462,
+ 0, 562, 565, 0, 565, 564, 548, 540, 548, 538, 546, 0, 543,
+ 542, 563, 551, 549, 549, 533, 536, 550, 534, 565, 545, 546, 543,
+ 540, 550, 527, 541, 540, 524, 523, 522, 543, 531, 529, 529, 510,
+ 509, 0, 537, 509, 535, 507, 511, 510, 541,
- 521, 518, 0, 517, 520, 516, 518, 502, 499, 512,
- 497, 498, 505, 499, 488, 487, 0, 493, 492, 523,
- 503, 500, 0, 0, 0, 496, 0, 495, 0, 501,
- 500, 484, 481, 482, 0, 474, 482, 472, 478, 499,
- 478, 0, 0, 490, 489, 0, 0, 488, 487, 471,
- 468, 469, 483, 482, 459, 458, 464, 0, 0, 485,
- 457, 483, 475, 467, 453, 132, 161, 177, 215, 245,
- 0, 0, 288, 289, 0, 0, 294, 315, 0, 316,
- 306, 331, 0, 363, 402, 0, 0, 395, 383, 395,
- 387, 433, 434, 0, 435, 420, 461, 427, 430, 431,
+ 521, 518, 0, 517, 520, 516, 518, 502, 499, 512, 497, 498, 505,
+ 499, 488, 487, 0, 493, 492, 523, 503, 500, 0, 0, 0, 496,
+ 0, 495, 0, 501, 500, 484, 481, 482, 0, 474, 482, 472, 478,
+ 499, 478, 0, 0, 490, 489, 0, 0, 488, 487, 471, 468, 469,
+ 483, 482, 459, 458, 464, 0, 0, 485, 457, 483, 475, 467, 453,
+ 132, 161, 177, 215, 245, 0, 0, 288, 289, 0, 0, 294, 315,
+ 0, 316, 306, 331, 0, 363, 402, 0, 0, 395, 383, 395, 387,
+ 433, 434, 0, 435, 420, 461, 427, 430, 431,
- 0, 450, 452, 443, 0, 464, 0, 0, 0, 445,
- 446, 440, 0, 441, 442, 0, 0, 0, 1017, 506,
- 509, 512, 513, 514
- } ;
+ 0, 450, 452, 443, 0, 464, 0, 0, 0, 445, 446, 440, 0,
+ 441, 442, 0, 0, 0, 1017, 506, 509, 512, 513, 514};
-static yyconst flex_int16_t yy_def[825] =
- { 0,
- 819, 1, 819, 3, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 820, 819, 819,
- 819, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 819, 819, 819, 819, 819, 819, 819, 821, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 822,
- 819, 823, 20, 21, 819, 819, 824, 819, 819, 819,
- 819, 819, 819, 819, 819, 820, 819, 819, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ static yyconst flex_int16_t yy_def[825] = {
+ 0, 819, 1, 819, 3, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
+ 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 820, 819, 819, 819, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 819, 819, 819, 819, 819, 819, 819, 821, 819, 819, 819, 819, 819, 819, 819, 819,
+ 819, 819, 822, 819, 823, 20, 21, 819, 819, 824, 819, 819, 819, 819, 819, 819, 819,
+ 819, 820, 819, 819, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 819, 819, 821, 819, 819, 823, 819, 819, 819,
- 819, 819, 824, 819, 819, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 819, 819, 821, 819, 819, 823, 819, 819, 819, 819, 819, 824, 819, 819, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 819, 819,
- 819, 819, 819, 819, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 819, 819, 819,
+ 819, 819, 819, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
- 820, 820, 820, 820, 820, 820, 820, 820, 0, 819,
- 819, 819, 819, 819
- } ;
+ 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
+ 820, 0, 819, 819, 819, 819, 819};
-static yyconst flex_int16_t yy_nxt[1090] =
- { 0,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 21, 21, 21, 21,
- 21, 22, 23, 24, 25, 26, 27, 28, 28, 28,
- 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
- 29, 30, 31, 28, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 28, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 28, 28, 28, 52, 53,
- 54, 55, 56, 57, 58, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 59,
+ static yyconst flex_int16_t yy_nxt[1090] = {
+ 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 21, 21, 21, 21, 21, 22, 23, 24, 25, 26, 27, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 29, 30, 31, 28, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 28, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 28, 28,
+ 28, 52, 53, 54, 55, 56, 57, 58, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 59,
- 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
- 59, 59, 56, 56, 56, 59, 59, 59, 59, 59,
- 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
- 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
- 56, 56, 56, 56, 61, 62, 63, 66, 68, 70,
- 70, 70, 70, 70, 70, 70, 84, 85, 79, 150,
- 123, 69, 67, 87, 124, 64, 72, 151, 73, 73,
- 73, 73, 73, 73, 74, 80, 89, 81, 82, 784,
- 92, 88, 93, 121, 95, 75, 94, 103, 96, 104,
- 90, 91, 76, 77, 97, 99, 122, 98, 105, 100,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 56, 56, 56, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 56, 56, 56, 56, 61, 62, 63, 66, 68, 70, 70,
+ 70, 70, 70, 70, 70, 84, 85, 79, 150, 123, 69, 67, 87, 124, 64, 72, 151,
+ 73, 73, 73, 73, 73, 73, 74, 80, 89, 81, 82, 784, 92, 88, 93, 121, 95,
+ 75, 94, 103, 96, 104, 90, 91, 76, 77, 97, 99, 122, 98, 105, 100,
- 115, 187, 75, 116, 101, 125, 117, 118, 152, 168,
- 102, 119, 188, 169, 120, 785, 76, 128, 126, 77,
- 72, 106, 74, 74, 74, 74, 74, 74, 74, 107,
- 112, 108, 129, 207, 109, 130, 212, 132, 113, 75,
- 110, 208, 213, 786, 133, 134, 76, 139, 135, 114,
- 140, 236, 237, 153, 136, 137, 75, 138, 141, 147,
- 143, 155, 156, 148, 144, 142, 158, 159, 145, 238,
- 76, 146, 149, 160, 819, 267, 268, 239, 155, 156,
- 161, 787, 161, 158, 159, 162, 162, 162, 162, 162,
- 162, 162, 189, 227, 176, 254, 215, 160, 177, 178,
+ 115, 187, 75, 116, 101, 125, 117, 118, 152, 168, 102, 119, 188, 169, 120, 785, 76,
+ 128, 126, 77, 72, 106, 74, 74, 74, 74, 74, 74, 74, 107, 112, 108, 129, 207,
+ 109, 130, 212, 132, 113, 75, 110, 208, 213, 786, 133, 134, 76, 139, 135, 114, 140,
+ 236, 237, 153, 136, 137, 75, 138, 141, 147, 143, 155, 156, 148, 144, 142, 158, 159,
+ 145, 238, 76, 146, 149, 160, 819, 267, 268, 239, 155, 156, 161, 787, 161, 158, 159,
+ 162, 162, 162, 162, 162, 162, 162, 189, 227, 176, 254, 215, 160, 177, 178,
- 819, 220, 229, 199, 788, 190, 200, 201, 228, 216,
- 202, 217, 203, 240, 245, 230, 246, 221, 222, 254,
- 249, 241, 249, 158, 159, 250, 250, 250, 250, 250,
- 250, 250, 298, 299, 300, 789, 790, 251, 791, 251,
- 158, 159, 252, 252, 252, 252, 252, 252, 252, 162,
- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 162, 162, 261, 312, 330, 792, 793, 313, 337,
- 338, 339, 794, 331, 253, 795, 262, 250, 250, 250,
- 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
- 250, 253, 252, 252, 252, 252, 252, 252, 252, 348,
+ 819, 220, 229, 199, 788, 190, 200, 201, 228, 216, 202, 217, 203, 240, 245, 230, 246,
+ 221, 222, 254, 249, 241, 249, 158, 159, 250, 250, 250, 250, 250, 250, 250, 298, 299,
+ 300, 789, 790, 251, 791, 251, 158, 159, 252, 252, 252, 252, 252, 252, 252, 162, 162,
+ 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 261, 312, 330, 792, 793,
+ 313, 337, 338, 339, 794, 331, 253, 795, 262, 250, 250, 250, 250, 250, 250, 250, 250,
+ 250, 250, 250, 250, 250, 250, 253, 252, 252, 252, 252, 252, 252, 252, 348,
- 349, 350, 156, 252, 252, 252, 252, 252, 252, 252,
- 360, 361, 362, 368, 369, 370, 372, 373, 374, 156,
- 796, 159, 383, 384, 385, 421, 422, 423, 441, 442,
- 443, 451, 452, 453, 454, 455, 456, 797, 159, 798,
- 799, 444, 445, 457, 458, 459, 498, 499, 500, 524,
- 525, 526, 800, 801, 546, 548, 563, 564, 565, 501,
- 502, 636, 527, 528, 547, 549, 594, 595, 596, 566,
- 567, 637, 568, 614, 615, 616, 666, 802, 803, 597,
- 598, 638, 804, 667, 805, 668, 617, 618, 639, 686,
- 640, 641, 806, 807, 808, 809, 687, 810, 688, 811,
+ 349, 350, 156, 252, 252, 252, 252, 252, 252, 252, 360, 361, 362, 368, 369, 370, 372,
+ 373, 374, 156, 796, 159, 383, 384, 385, 421, 422, 423, 441, 442, 443, 451, 452, 453,
+ 454, 455, 456, 797, 159, 798, 799, 444, 445, 457, 458, 459, 498, 499, 500, 524, 525,
+ 526, 800, 801, 546, 548, 563, 564, 565, 501, 502, 636, 527, 528, 547, 549, 594, 595,
+ 596, 566, 567, 637, 568, 614, 615, 616, 666, 802, 803, 597, 598, 638, 804, 667, 805,
+ 668, 617, 618, 639, 686, 640, 641, 806, 807, 808, 809, 687, 810, 688, 811,
- 812, 813, 814, 815, 816, 817, 818, 86, 86, 86,
- 154, 154, 154, 70, 157, 163, 163, 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,
+ 812, 813, 814, 815, 816, 817, 818, 86, 86, 86, 154, 154, 154, 70, 157, 163, 163,
+ 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, 694, 693, 692, 691,
- 690, 689, 685, 684, 683, 682, 681, 680, 679, 678,
- 677, 676, 675, 674, 673, 672, 671, 670, 669, 665,
- 664, 663, 662, 661, 660, 659, 658, 657, 656, 655,
- 654, 653, 652, 651, 650, 649, 648, 647, 646, 645,
- 644, 643, 642, 635, 634, 633, 632, 631, 630, 629,
- 628, 627, 626, 625, 624, 623, 622, 621, 620, 619,
- 613, 612, 611, 610, 609, 608, 607, 606, 605, 604,
- 603, 602, 601, 600, 599, 593, 592, 591, 590, 589,
- 588, 587, 586, 585, 584, 583, 582, 581, 580, 579,
+ 700, 699, 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, 685, 684, 683, 682, 681,
+ 680, 679, 678, 677, 676, 675, 674, 673, 672, 671, 670, 669, 665, 664, 663, 662, 661,
+ 660, 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, 644,
+ 643, 642, 635, 634, 633, 632, 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, 621,
+ 620, 619, 613, 612, 611, 610, 609, 608, 607, 606, 605, 604, 603, 602, 601, 600, 599,
+ 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,
- 562, 561, 560, 559, 558, 557, 556, 555, 554, 553,
- 552, 551, 550, 545, 544, 543, 542, 541, 540, 539,
- 538, 537, 536, 535, 534, 533, 532, 531, 530, 529,
- 523, 522, 521, 520, 519, 518, 517, 516, 515, 514,
- 513, 512, 511, 510, 509, 508, 507, 506, 505, 504,
- 503, 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, 450,
+ 578, 577, 576, 575, 574, 573, 572, 571, 570, 569, 562, 561, 560, 559, 558, 557, 556,
+ 555, 554, 553, 552, 551, 550, 545, 544, 543, 542, 541, 540, 539, 538, 537, 536, 535,
+ 534, 533, 532, 531, 530, 529, 523, 522, 521, 520, 519, 518, 517, 516, 515, 514, 513,
+ 512, 511, 510, 509, 508, 507, 506, 505, 504, 503, 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, 450,
- 449, 448, 447, 446, 440, 439, 438, 437, 436, 435,
- 434, 433, 432, 431, 430, 429, 428, 427, 426, 425,
- 424, 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,
- 391, 390, 389, 388, 387, 386, 382, 381, 380, 379,
- 378, 377, 376, 375, 371, 367, 366, 365, 364, 363,
- 359, 358, 357, 356, 355, 354, 353, 352, 351, 347,
- 346, 345, 344, 343, 342, 341, 340, 336, 335, 334,
- 333, 332, 329, 328, 327, 326, 325, 324, 323, 322,
+ 449, 448, 447, 446, 440, 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, 429, 428,
+ 427, 426, 425, 424, 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, 391,
+ 390, 389, 388, 387, 386, 382, 381, 380, 379, 378, 377, 376, 375, 371, 367, 366, 365,
+ 364, 363, 359, 358, 357, 356, 355, 354, 353, 352, 351, 347, 346, 345, 344, 343, 342,
+ 341, 340, 336, 335, 334, 333, 332, 329, 328, 327, 326, 325, 324, 323, 322,
- 321, 320, 319, 318, 317, 316, 315, 314, 311, 310,
- 309, 308, 307, 306, 305, 304, 303, 302, 301, 297,
- 296, 295, 294, 293, 292, 291, 290, 289, 288, 287,
- 286, 285, 284, 283, 282, 281, 280, 279, 278, 277,
- 276, 275, 274, 273, 272, 271, 270, 269, 266, 265,
- 264, 263, 260, 259, 258, 257, 256, 255, 248, 247,
- 244, 243, 242, 235, 234, 233, 232, 231, 226, 225,
- 224, 223, 219, 218, 214, 211, 210, 209, 206, 205,
- 204, 198, 197, 196, 195, 194, 193, 192, 191, 186,
- 185, 184, 183, 182, 181, 180, 179, 175, 174, 173,
+ 321, 320, 319, 318, 317, 316, 315, 314, 311, 310, 309, 308, 307, 306, 305, 304, 303,
+ 302, 301, 297, 296, 295, 294, 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, 283,
+ 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, 270, 269, 266, 265, 264,
+ 263, 260, 259, 258, 257, 256, 255, 248, 247, 244, 243, 242, 235, 234, 233, 232, 231,
+ 226, 225, 224, 223, 219, 218, 214, 211, 210, 209, 206, 205, 204, 198, 197, 196, 195,
+ 194, 193, 192, 191, 186, 185, 184, 183, 182, 181, 180, 179, 175, 174, 173,
- 172, 171, 170, 167, 166, 165, 164, 131, 127, 111,
- 83, 78, 71, 65, 60, 819, 5, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819
- } ;
+ 172, 171, 170, 167, 166, 165, 164, 131, 127, 111, 83, 78, 71, 65, 60, 819, 5,
+ 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
+ 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
+ 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
+ 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
+ 819, 819, 819, 819};
-static yyconst flex_int16_t yy_chk[1090] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ static yyconst flex_int16_t yy_chk[1090] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 10, 10, 11, 15, 17, 18,
- 18, 18, 18, 18, 18, 18, 26, 26, 24, 51,
- 42, 17, 15, 31, 42, 11, 20, 51, 20, 20,
- 20, 20, 20, 20, 20, 24, 32, 24, 24, 766,
- 33, 31, 33, 41, 34, 20, 33, 36, 34, 36,
- 32, 32, 20, 20, 34, 35, 41, 34, 36, 35,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 10, 10, 11, 15, 17, 18, 18,
+ 18, 18, 18, 18, 18, 26, 26, 24, 51, 42, 17, 15, 31, 42, 11, 20, 51,
+ 20, 20, 20, 20, 20, 20, 20, 24, 32, 24, 24, 766, 33, 31, 33, 41, 34,
+ 20, 33, 36, 34, 36, 32, 32, 20, 20, 34, 35, 41, 34, 36, 35,
- 40, 107, 20, 40, 35, 43, 40, 40, 53, 91,
- 35, 40, 107, 91, 40, 767, 20, 45, 43, 20,
- 21, 37, 21, 21, 21, 21, 21, 21, 21, 37,
- 39, 37, 45, 122, 37, 45, 126, 47, 39, 21,
- 37, 122, 126, 768, 47, 47, 21, 48, 47, 39,
- 48, 143, 143, 53, 47, 47, 21, 47, 48, 50,
- 49, 70, 70, 50, 49, 48, 72, 72, 49, 144,
- 21, 49, 50, 73, 73, 178, 178, 144, 70, 70,
- 75, 769, 75, 72, 72, 75, 75, 75, 75, 75,
- 75, 75, 108, 136, 98, 163, 128, 73, 98, 98,
+ 40, 107, 20, 40, 35, 43, 40, 40, 53, 91, 35, 40, 107, 91, 40, 767, 20,
+ 45, 43, 20, 21, 37, 21, 21, 21, 21, 21, 21, 21, 37, 39, 37, 45, 122,
+ 37, 45, 126, 47, 39, 21, 37, 122, 126, 768, 47, 47, 21, 48, 47, 39, 48,
+ 143, 143, 53, 47, 47, 21, 47, 48, 50, 49, 70, 70, 50, 49, 48, 72, 72,
+ 49, 144, 21, 49, 50, 73, 73, 178, 178, 144, 70, 70, 75, 769, 75, 72, 72,
+ 75, 75, 75, 75, 75, 75, 75, 108, 136, 98, 163, 128, 73, 98, 98,
- 73, 131, 137, 118, 770, 108, 118, 118, 136, 128,
- 118, 128, 118, 145, 149, 137, 149, 131, 131, 163,
- 155, 145, 155, 157, 157, 155, 155, 155, 155, 155,
- 155, 155, 209, 209, 209, 773, 774, 158, 777, 158,
- 157, 157, 158, 158, 158, 158, 158, 158, 158, 161,
- 161, 161, 161, 161, 161, 161, 162, 162, 162, 162,
- 162, 162, 162, 173, 221, 238, 778, 780, 221, 244,
- 244, 244, 781, 238, 162, 782, 173, 249, 249, 249,
- 249, 249, 249, 249, 250, 250, 250, 250, 250, 250,
- 250, 162, 251, 251, 251, 251, 251, 251, 251, 260,
+ 73, 131, 137, 118, 770, 108, 118, 118, 136, 128, 118, 128, 118, 145, 149, 137, 149,
+ 131, 131, 163, 155, 145, 155, 157, 157, 155, 155, 155, 155, 155, 155, 155, 209, 209,
+ 209, 773, 774, 158, 777, 158, 157, 157, 158, 158, 158, 158, 158, 158, 158, 161, 161,
+ 161, 161, 161, 161, 161, 162, 162, 162, 162, 162, 162, 162, 173, 221, 238, 778, 780,
+ 221, 244, 244, 244, 781, 238, 162, 782, 173, 249, 249, 249, 249, 249, 249, 249, 250,
+ 250, 250, 250, 250, 250, 250, 162, 251, 251, 251, 251, 251, 251, 251, 260,
- 260, 260, 250, 252, 252, 252, 252, 252, 252, 252,
- 272, 272, 272, 281, 281, 281, 285, 285, 285, 250,
- 784, 252, 294, 294, 294, 335, 335, 335, 376, 376,
- 376, 387, 387, 387, 388, 388, 388, 785, 252, 788,
- 789, 376, 376, 389, 389, 389, 440, 440, 440, 483,
- 483, 483, 790, 791, 503, 504, 520, 520, 520, 440,
- 440, 603, 483, 483, 503, 504, 554, 554, 554, 520,
- 520, 603, 520, 577, 577, 577, 631, 792, 793, 554,
- 554, 604, 795, 631, 796, 631, 577, 577, 604, 652,
- 604, 604, 797, 798, 799, 800, 652, 802, 652, 803,
+ 260, 260, 250, 252, 252, 252, 252, 252, 252, 252, 272, 272, 272, 281, 281, 281, 285,
+ 285, 285, 250, 784, 252, 294, 294, 294, 335, 335, 335, 376, 376, 376, 387, 387, 387,
+ 388, 388, 388, 785, 252, 788, 789, 376, 376, 389, 389, 389, 440, 440, 440, 483, 483,
+ 483, 790, 791, 503, 504, 520, 520, 520, 440, 440, 603, 483, 483, 503, 504, 554, 554,
+ 554, 520, 520, 603, 520, 577, 577, 577, 631, 792, 793, 554, 554, 604, 795, 631, 796,
+ 631, 577, 577, 604, 652, 604, 604, 797, 798, 799, 800, 652, 802, 652, 803,
- 804, 806, 810, 811, 812, 814, 815, 820, 820, 820,
- 821, 821, 821, 822, 823, 824, 824, 765, 764, 763,
- 762, 761, 760, 757, 756, 755, 754, 753, 752, 751,
- 750, 749, 748, 745, 744, 741, 740, 739, 738, 737,
- 736, 734, 733, 732, 731, 730, 728, 726, 722, 721,
- 720, 719, 718, 716, 715, 714, 713, 712, 711, 710,
- 709, 708, 707, 706, 705, 704, 702, 701, 700, 699,
- 698, 697, 696, 695, 694, 692, 691, 690, 689, 688,
- 687, 686, 685, 684, 683, 682, 681, 680, 679, 678,
- 677, 676, 675, 674, 673, 672, 671, 670, 669, 668,
+ 804, 806, 810, 811, 812, 814, 815, 820, 820, 820, 821, 821, 821, 822, 823, 824, 824,
+ 765, 764, 763, 762, 761, 760, 757, 756, 755, 754, 753, 752, 751, 750, 749, 748, 745,
+ 744, 741, 740, 739, 738, 737, 736, 734, 733, 732, 731, 730, 728, 726, 722, 721, 720,
+ 719, 718, 716, 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, 704, 702, 701,
+ 700, 699, 698, 697, 696, 695, 694, 692, 691, 690, 689, 688, 687, 686, 685, 684, 683,
+ 682, 681, 680, 679, 678, 677, 676, 675, 674, 673, 672, 671, 670, 669, 668,
- 667, 666, 665, 663, 662, 661, 660, 659, 658, 657,
- 655, 654, 651, 649, 648, 647, 645, 644, 643, 642,
- 641, 640, 639, 638, 637, 636, 635, 634, 633, 630,
- 629, 628, 627, 626, 625, 623, 622, 621, 620, 618,
- 617, 616, 615, 614, 613, 612, 611, 610, 609, 608,
- 607, 606, 605, 600, 598, 597, 596, 595, 594, 590,
- 589, 588, 587, 586, 585, 584, 583, 582, 580, 579,
- 575, 574, 572, 571, 569, 568, 567, 566, 565, 564,
- 563, 559, 558, 557, 555, 553, 552, 551, 550, 549,
- 548, 547, 546, 545, 544, 542, 541, 536, 535, 534,
+ 667, 666, 665, 663, 662, 661, 660, 659, 658, 657, 655, 654, 651, 649, 648, 647, 645,
+ 644, 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, 633, 630, 629, 628, 627, 626,
+ 625, 623, 622, 621, 620, 618, 617, 616, 615, 614, 613, 612, 611, 610, 609, 608, 607,
+ 606, 605, 600, 598, 597, 596, 595, 594, 590, 589, 588, 587, 586, 585, 584, 583, 582,
+ 580, 579, 575, 574, 572, 571, 569, 568, 567, 566, 565, 564, 563, 559, 558, 557, 555,
+ 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, 542, 541, 536, 535, 534,
- 533, 531, 530, 528, 527, 526, 525, 524, 522, 521,
- 519, 518, 517, 516, 515, 514, 513, 512, 510, 509,
- 508, 507, 506, 502, 501, 500, 499, 498, 497, 494,
- 493, 492, 491, 490, 489, 488, 487, 486, 485, 484,
- 482, 481, 478, 473, 471, 470, 469, 467, 466, 463,
- 462, 461, 460, 449, 448, 447, 445, 444, 443, 442,
- 441, 438, 436, 435, 434, 432, 431, 430, 429, 427,
- 425, 424, 419, 418, 416, 415, 414, 413, 412, 411,
- 410, 409, 408, 407, 406, 404, 403, 402, 401, 400,
- 399, 398, 396, 395, 394, 393, 392, 391, 390, 386,
+ 533, 531, 530, 528, 527, 526, 525, 524, 522, 521, 519, 518, 517, 516, 515, 514, 513,
+ 512, 510, 509, 508, 507, 506, 502, 501, 500, 499, 498, 497, 494, 493, 492, 491, 490,
+ 489, 488, 487, 486, 485, 484, 482, 481, 478, 473, 471, 470, 469, 467, 466, 463, 462,
+ 461, 460, 449, 448, 447, 445, 444, 443, 442, 441, 438, 436, 435, 434, 432, 431, 430,
+ 429, 427, 425, 424, 419, 418, 416, 415, 414, 413, 412, 411, 410, 409, 408, 407, 406,
+ 404, 403, 402, 401, 400, 399, 398, 396, 395, 394, 393, 392, 391, 390, 386,
- 382, 381, 380, 377, 375, 365, 363, 359, 358, 357,
- 356, 354, 353, 351, 346, 345, 344, 343, 342, 341,
- 336, 334, 333, 332, 331, 330, 328, 327, 324, 323,
- 322, 321, 320, 319, 318, 317, 316, 315, 314, 313,
- 312, 311, 310, 309, 308, 307, 306, 305, 304, 303,
- 302, 301, 300, 299, 298, 295, 293, 292, 291, 290,
- 289, 288, 287, 286, 284, 280, 278, 277, 276, 275,
- 271, 270, 269, 268, 267, 266, 265, 264, 263, 259,
- 257, 256, 255, 248, 247, 246, 245, 243, 242, 241,
- 240, 239, 237, 236, 235, 234, 233, 232, 231, 230,
+ 382, 381, 380, 377, 375, 365, 363, 359, 358, 357, 356, 354, 353, 351, 346, 345, 344,
+ 343, 342, 341, 336, 334, 333, 332, 331, 330, 328, 327, 324, 323, 322, 321, 320, 319,
+ 318, 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, 306, 305, 304, 303, 302,
+ 301, 300, 299, 298, 295, 293, 292, 291, 290, 289, 288, 287, 286, 284, 280, 278, 277,
+ 276, 275, 271, 270, 269, 268, 267, 266, 265, 264, 263, 259, 257, 256, 255, 248, 247,
+ 246, 245, 243, 242, 241, 240, 239, 237, 236, 235, 234, 233, 232, 231, 230,
- 229, 228, 227, 226, 225, 224, 223, 222, 220, 219,
- 218, 217, 216, 215, 214, 213, 212, 211, 210, 208,
- 207, 206, 205, 204, 203, 202, 201, 200, 199, 198,
- 197, 196, 195, 194, 193, 192, 190, 189, 188, 187,
- 186, 185, 184, 183, 182, 181, 180, 179, 177, 176,
- 175, 174, 172, 171, 170, 169, 168, 166, 151, 150,
- 148, 147, 146, 142, 141, 140, 139, 138, 135, 134,
- 133, 132, 130, 129, 127, 125, 124, 123, 121, 120,
- 119, 117, 116, 114, 113, 112, 111, 110, 109, 106,
- 105, 104, 103, 102, 101, 100, 99, 97, 96, 95,
+ 229, 228, 227, 226, 225, 224, 223, 222, 220, 219, 218, 217, 216, 215, 214, 213, 212,
+ 211, 210, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194,
+ 193, 192, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 177, 176, 175,
+ 174, 172, 171, 170, 169, 168, 166, 151, 150, 148, 147, 146, 142, 141, 140, 139, 138,
+ 135, 134, 133, 132, 130, 129, 127, 125, 124, 123, 121, 120, 119, 117, 116, 114, 113,
+ 112, 111, 110, 109, 106, 105, 104, 103, 102, 101, 100, 99, 97, 96, 95,
- 94, 93, 92, 90, 89, 85, 81, 46, 44, 38,
- 25, 22, 19, 14, 9, 5, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
- 819, 819, 819, 819, 819, 819, 819, 819, 819
- } ;
+ 94, 93, 92, 90, 89, 85, 81, 46, 44, 38, 25, 22, 19, 14, 9, 5, 819,
+ 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
+ 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
+ 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
+ 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
+ 819, 819, 819, 819};
-/* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[241] =
- { 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, };
+ /* Table of booleans, true if rule could match eol. */
+ static yyconst flex_int32_t yy_rule_can_match_eol[241] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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
- * any uses of REJECT which flex missed.
- */
+ /* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
#define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
-/*
-//
-// Copyright (c) 2002-2013 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.
-//
+ /*
+ //
+ // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+ //
-This file contains the Lex specification for GLSL ES.
-Based on ANSI C grammar, Lex specification:
-http://www.lysator.liu.se/c/ANSI-C-grammar-l.html
+ This file contains the Lex specification for GLSL ES.
+ Based on ANSI C grammar, Lex specification:
+ http://www.lysator.liu.se/c/ANSI-C-grammar-l.html
-IF YOU MODIFY THIS FILE YOU ALSO NEED TO RUN generate_parser.sh,
-WHICH GENERATES THE GLSL ES LEXER (glslang_lex.cpp).
-*/
+ IF YOU MODIFY THIS FILE YOU ALSO NEED TO RUN generate_parser.sh,
+ WHICH GENERATES THE GLSL ES LEXER (glslang_lex.cpp).
+ */
#include "compiler/translator/glslang.h"
#include "compiler/translator/ParseContext.h"
@@ -1054,6 +850,7 @@
static int ES2_reserved_ES3_keyword(TParseContext *context, int token);
static int ES2_keyword_ES3_reserved(TParseContext *context, int token);
static int ES2_ident_ES3_keyword(TParseContext *context, int token);
+static int ES2_ident_ES3_reserved_ES3_1_keyword(TParseContext *context, int token);
static int uint_constant(TParseContext *context);
static int int_constant(TParseContext *context);
static int float_constant(yyscan_t yyscanner);
@@ -1700,21 +1497,49 @@
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, LAYOUT); }
YY_BREAK
-/* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */
case 79:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE2D); }
+ YY_BREAK
case 80:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE2D); }
+ YY_BREAK
case 81:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE2D); }
+ YY_BREAK
case 82:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE2DARRAY); }
+ YY_BREAK
case 83:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE2DARRAY); }
+ YY_BREAK
case 84:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE2DARRAY); }
+ YY_BREAK
case 85:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE3D); }
+ YY_BREAK
case 86:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE3D); }
+ YY_BREAK
case 87:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE3D); }
+ YY_BREAK
case 88:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGECUBE); }
+ YY_BREAK
case 89:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGECUBE); }
+ YY_BREAK
case 90:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGECUBE); }
+ YY_BREAK
case 91:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, READONLY); }
+ YY_BREAK
case 92:
+ YY_RULE_SETUP { return ES2_ident_ES3_reserved_ES3_1_keyword(context, WRITEONLY); }
+ YY_BREAK
+/* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */
case 93:
case 94:
case 95:
@@ -3301,6 +3126,24 @@
return token;
}
+int ES2_ident_ES3_reserved_ES3_1_keyword(TParseContext *context, int token)
+{
+ struct yyguts_t *yyg = (struct yyguts_t *)context->getScanner();
+ yyscan_t yyscanner = (yyscan_t)context->getScanner();
+
+ if (context->getShaderVersion() < 300)
+ {
+ yylval->lex.string = NewPoolTString(yytext);
+ return check_type(yyscanner);
+ }
+ else if (context->getShaderVersion() == 300)
+ {
+ return reserved_word(yyscanner);
+ }
+
+ return token;
+}
+
int ES2_ident_ES3_keyword(TParseContext *context, int token)
{
struct yyguts_t* yyg = (struct yyguts_t*) context->getScanner();
diff --git a/src/compiler/translator/glslang_tab.cpp b/src/compiler/translator/glslang_tab.cpp
index d9b8ada..4f7007d 100644
--- a/src/compiler/translator/glslang_tab.cpp
+++ b/src/compiler/translator/glslang_tab.cpp
@@ -190,80 +190,94 @@
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
+ READONLY = 309,
+ WRITEONLY = 310,
+ STRUCT = 311,
+ VOID_TYPE = 312,
+ WHILE = 313,
+ SAMPLER2D = 314,
+ SAMPLERCUBE = 315,
+ SAMPLER_EXTERNAL_OES = 316,
+ SAMPLER2DRECT = 317,
+ SAMPLER2DARRAY = 318,
+ ISAMPLER2D = 319,
+ ISAMPLER3D = 320,
+ ISAMPLERCUBE = 321,
+ ISAMPLER2DARRAY = 322,
+ USAMPLER2D = 323,
+ USAMPLER3D = 324,
+ USAMPLERCUBE = 325,
+ USAMPLER2DARRAY = 326,
+ SAMPLER3D = 327,
+ SAMPLER3DRECT = 328,
+ SAMPLER2DSHADOW = 329,
+ SAMPLERCUBESHADOW = 330,
+ SAMPLER2DARRAYSHADOW = 331,
+ IMAGE2D = 332,
+ IIMAGE2D = 333,
+ UIMAGE2D = 334,
+ IMAGE3D = 335,
+ IIMAGE3D = 336,
+ UIMAGE3D = 337,
+ IMAGE2DARRAY = 338,
+ IIMAGE2DARRAY = 339,
+ UIMAGE2DARRAY = 340,
+ IMAGECUBE = 341,
+ IIMAGECUBE = 342,
+ UIMAGECUBE = 343,
+ LAYOUT = 344,
+ IDENTIFIER = 345,
+ TYPE_NAME = 346,
+ FLOATCONSTANT = 347,
+ INTCONSTANT = 348,
+ UINTCONSTANT = 349,
+ BOOLCONSTANT = 350,
+ FIELD_SELECTION = 351,
+ LEFT_OP = 352,
+ RIGHT_OP = 353,
+ INC_OP = 354,
+ DEC_OP = 355,
+ LE_OP = 356,
+ GE_OP = 357,
+ EQ_OP = 358,
+ NE_OP = 359,
+ AND_OP = 360,
+ OR_OP = 361,
+ XOR_OP = 362,
+ MUL_ASSIGN = 363,
+ DIV_ASSIGN = 364,
+ ADD_ASSIGN = 365,
+ MOD_ASSIGN = 366,
+ LEFT_ASSIGN = 367,
+ RIGHT_ASSIGN = 368,
+ AND_ASSIGN = 369,
+ XOR_ASSIGN = 370,
+ OR_ASSIGN = 371,
+ SUB_ASSIGN = 372,
+ LEFT_PAREN = 373,
+ RIGHT_PAREN = 374,
+ LEFT_BRACKET = 375,
+ RIGHT_BRACKET = 376,
+ LEFT_BRACE = 377,
+ RIGHT_BRACE = 378,
+ DOT = 379,
+ COMMA = 380,
+ COLON = 381,
+ EQUAL = 382,
+ SEMICOLON = 383,
+ BANG = 384,
+ DASH = 385,
+ TILDE = 386,
+ PLUS = 387,
+ STAR = 388,
+ SLASH = 389,
+ PERCENT = 390,
+ LEFT_ANGLE = 391,
+ RIGHT_ANGLE = 392,
+ VERTICAL_BAR = 393,
+ CARET = 394,
+ AMPERSAND = 395,
+ QUESTION = 396
};
#endif
@@ -644,23 +658,23 @@
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 109
+#define YYFINAL 123
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2432
+#define YYLAST 2762
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 128
+#define YYNTOKENS 142
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 94
/* YYNRULES -- Number of rules. */
-#define YYNRULES 269
+#define YYNRULES 283
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 405
+#define YYNSTATES 419
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 382
+#define YYMAXUTOK 396
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -707,40 +721,43 @@
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
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 237, 237, 238, 241, 251, 254, 259, 264, 269,
- 274, 280, 283, 286, 289, 292, 295, 301, 308, 319,
- 323, 331, 334, 340, 344, 351, 357, 366, 374, 380,
- 386, 395, 398, 401, 404, 414, 415, 416, 417, 425,
- 426, 429, 432, 439, 440, 443, 449, 450, 454, 461,
- 462, 465, 468, 471, 477, 478, 481, 487, 488, 495,
- 496, 503, 504, 511, 512, 518, 519, 525, 526, 532,
- 533, 539, 540, 547, 548, 549, 550, 554, 555, 556,
- 560, 564, 568, 572, 579, 582, 588, 595, 602, 605,
- 611, 620, 624, 628, 632, 636, 643, 650, 653, 660,
- 668, 688, 698, 706, 731, 735, 739, 743, 750, 757,
- 760, 764, 768, 773, 778, 785, 789, 793, 797, 802,
- 807, 814, 824, 830, 833, 839, 843, 850, 856, 863,
+ 0, 240, 240, 241, 244, 254, 257, 262, 267, 272,
+ 277, 283, 286, 289, 292, 295, 298, 304, 311, 322,
+ 326, 334, 337, 343, 347, 354, 360, 369, 377, 383,
+ 389, 398, 401, 404, 407, 417, 418, 419, 420, 428,
+ 429, 432, 435, 442, 443, 446, 452, 453, 457, 464,
+ 465, 468, 471, 474, 480, 481, 484, 490, 491, 498,
+ 499, 506, 507, 514, 515, 521, 522, 528, 529, 535,
+ 536, 542, 543, 550, 551, 552, 553, 557, 558, 559,
+ 563, 567, 571, 575, 582, 585, 591, 598, 605, 608,
+ 614, 623, 627, 631, 635, 639, 646, 653, 656, 663,
+ 671, 691, 701, 709, 734, 738, 742, 746, 753, 760,
+ 763, 767, 771, 776, 781, 788, 792, 796, 800, 805,
+ 810, 817, 827, 833, 836, 842, 846, 853, 859, 863,
867, 870, 873, 882, 888, 896, 899, 919, 938, 945,
- 949, 956, 966, 969, 972, 978, 985, 988, 994, 997,
- 1000, 1006, 1009, 1014, 1025, 1028, 1031, 1034, 1037, 1040,
- 1044, 1048, 1052, 1056, 1060, 1064, 1068, 1072, 1076, 1080,
- 1084, 1088, 1092, 1096, 1100, 1104, 1108, 1112, 1116, 1120,
- 1124, 1127, 1130, 1133, 1136, 1139, 1142, 1145, 1148, 1151,
- 1154, 1157, 1160, 1163, 1166, 1169, 1176, 1182, 1185, 1197,
- 1197, 1200, 1200, 1206, 1209, 1224, 1227, 1234, 1238, 1244,
- 1250, 1262, 1266, 1270, 1271, 1277, 1278, 1279, 1280, 1281,
- 1282, 1283, 1287, 1288, 1288, 1288, 1297, 1298, 1302, 1302,
- 1303, 1303, 1308, 1311, 1320, 1325, 1332, 1333, 1337, 1344,
- 1348, 1355, 1355, 1362, 1365, 1372, 1376, 1389, 1389, 1394,
- 1394, 1400, 1400, 1408, 1411, 1417, 1420, 1426, 1430, 1437,
- 1440, 1443, 1446, 1449, 1458, 1464, 1470, 1473, 1479, 1479
+ 949, 953, 956, 962, 972, 975, 978, 984, 991, 994,
+ 1000, 1003, 1006, 1012, 1015, 1020, 1031, 1034, 1037, 1040,
+ 1043, 1046, 1050, 1054, 1058, 1062, 1066, 1070, 1074, 1078,
+ 1082, 1086, 1090, 1094, 1098, 1102, 1106, 1110, 1114, 1118,
+ 1122, 1126, 1130, 1133, 1136, 1139, 1142, 1145, 1148, 1151,
+ 1154, 1157, 1160, 1163, 1166, 1169, 1172, 1175, 1182, 1188,
+ 1191, 1194, 1197, 1200, 1203, 1206, 1209, 1212, 1215, 1218,
+ 1221, 1224, 1227, 1239, 1239, 1242, 1242, 1248, 1251, 1266,
+ 1269, 1276, 1280, 1286, 1292, 1304, 1308, 1312, 1313, 1319,
+ 1320, 1321, 1322, 1323, 1324, 1325, 1329, 1330, 1330, 1330,
+ 1339, 1340, 1344, 1344, 1345, 1345, 1350, 1353, 1362, 1367,
+ 1374, 1375, 1379, 1386, 1390, 1397, 1397, 1404, 1407, 1414,
+ 1418, 1431, 1431, 1436, 1436, 1442, 1442, 1450, 1453, 1459,
+ 1462, 1468, 1472, 1479, 1482, 1485, 1488, 1491, 1500, 1506,
+ 1512, 1515, 1521, 1521
};
#endif
@@ -757,18 +774,21 @@
"IVEC4", "VEC2", "VEC3", "VEC4", "UVEC2", "UVEC3", "UVEC4", "MATRIX2",
"MATRIX3", "MATRIX4", "IN_QUAL", "OUT_QUAL", "INOUT_QUAL", "UNIFORM",
"VARYING", "MATRIX2x3", "MATRIX3x2", "MATRIX2x4", "MATRIX4x2",
- "MATRIX3x4", "MATRIX4x3", "CENTROID", "FLAT", "SMOOTH", "STRUCT",
- "VOID_TYPE", "WHILE", "SAMPLER2D", "SAMPLERCUBE", "SAMPLER_EXTERNAL_OES",
- "SAMPLER2DRECT", "SAMPLER2DARRAY", "ISAMPLER2D", "ISAMPLER3D",
- "ISAMPLERCUBE", "ISAMPLER2DARRAY", "USAMPLER2D", "USAMPLER3D",
- "USAMPLERCUBE", "USAMPLER2DARRAY", "SAMPLER3D", "SAMPLER3DRECT",
- "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER2DARRAYSHADOW", "LAYOUT",
- "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT", "INTCONSTANT",
- "UINTCONSTANT", "BOOLCONSTANT", "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP",
- "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP",
- "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN",
- "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN",
- "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET",
+ "MATRIX3x4", "MATRIX4x3", "CENTROID", "FLAT", "SMOOTH", "READONLY",
+ "WRITEONLY", "STRUCT", "VOID_TYPE", "WHILE", "SAMPLER2D", "SAMPLERCUBE",
+ "SAMPLER_EXTERNAL_OES", "SAMPLER2DRECT", "SAMPLER2DARRAY", "ISAMPLER2D",
+ "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER2DARRAY", "USAMPLER2D",
+ "USAMPLER3D", "USAMPLERCUBE", "USAMPLER2DARRAY", "SAMPLER3D",
+ "SAMPLER3DRECT", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW",
+ "SAMPLER2DARRAYSHADOW", "IMAGE2D", "IIMAGE2D", "UIMAGE2D", "IMAGE3D",
+ "IIMAGE3D", "UIMAGE3D", "IMAGE2DARRAY", "IIMAGE2DARRAY", "UIMAGE2DARRAY",
+ "IMAGECUBE", "IIMAGECUBE", "UIMAGECUBE", "LAYOUT", "IDENTIFIER",
+ "TYPE_NAME", "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT",
+ "BOOLCONSTANT", "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP", "INC_OP",
+ "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP",
+ "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN",
+ "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN",
+ "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET",
"RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON",
"EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH",
"PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET",
@@ -825,16 +845,18 @@
345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396
};
# endif
-#define YYPACT_NINF -348
+#define YYPACT_NINF -362
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-348)))
+ (!!((Yystate) == (-362)))
-#define YYTABLE_NINF -229
+#define YYTABLE_NINF -243
#define yytable_value_is_error(Yytable_value) \
0
@@ -843,47 +865,48 @@
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 2144, -348, -348, -348, -348, 144, -348, -348, -348, -348,
- -348, -348, -348, -348, -348, -348, -348, -348, -348, -348,
- -348, -348, -348, -348, -348, -348, -348, -348, -348, -348,
- -348, -348, -348, -348, -348, -348, -348, -348, -348, -348,
- -348, -53, -348, -348, -348, -348, -348, -348, -348, -348,
- -348, -348, -348, -348, -348, -348, -348, -348, -348, -348,
- -83, -348, -348, -89, -70, -81, 2219, -26, -348, 60,
- -348, 1163, -348, -348, -348, -348, -348, -348, -348, -66,
- -348, 2069, -348, -348, 2355, -348, -348, -348, -41, -2,
- -348, -30, -348, 2219, -348, -348, -348, 2219, 80, 80,
- -348, -17, -75, -65, -348, 2219, -348, -348, 1233, -348,
- -348, -15, 2219, -348, -10, -85, -348, 389, -348, -348,
- -348, -348, 1, -49, -348, 1331, 1622, -348, -348, 2219,
- 80, 1814, -348, 19, -348, -348, -348, -348, -348, 1622,
- 1622, 1622, -348, -348, -348, -348, -348, -348, -348, -24,
- -348, -348, -348, 37, -22, 1717, 67, -348, 1622, 34,
- 14, 76, -46, 72, 51, 75, 78, 112, 113, -77,
- -348, 98, -348, -348, 1899, 2219, 84, -348, -2, 94,
- 97, -348, 108, 109, 100, 1429, 114, 1622, 104, 115,
- 111, -348, -348, 190, -348, -348, -19, -348, -89, 117,
- -348, -348, -348, -348, 505, -348, -348, -348, -348, -348,
- -348, 1622, 1524, 1622, 116, 110, -348, -348, 80, 118,
- 27, -348, -58, -348, -348, -348, -5, -348, -348, 1622,
- 2287, -348, -348, 1622, 121, -348, -348, -348, 1622, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, -348, -348,
- 1984, -348, -348, -348, -348, -348, 119, -348, 1622, -348,
- -348, 32, 1622, 122, -348, -348, -348, 621, -348, -348,
- -348, -348, -348, -348, -348, -348, -348, -348, -348, 1622,
- 1622, -348, -348, -348, 124, 120, 129, -348, 1622, 125,
- 33, 1622, 80, -348, -87, -348, -348, 130, 128, -348,
- 136, -348, -348, -348, -348, -348, 34, 34, 14, 14,
- 76, 76, 76, 76, -46, -46, 72, 51, 75, 78,
- 112, 113, 54, -348, 166, -30, 853, 969, -3, -348,
- -1, -348, 1066, 621, -348, -348, -348, 1622, 132, -348,
- 1622, -348, 135, -348, 1622, -348, -348, 1622, 139, -348,
- -348, -348, -348, 1066, 119, -348, 128, 80, 2219, 141,
- 140, -348, 1622, -348, -348, 145, -348, 1622, -348, 134,
- 146, 236, -348, 147, 143, 737, -348, -348, 148, 17,
- 1622, 737, 119, -348, 1622, -348, -348, -348, -348, 149,
- 128, -348, -348, -348, -348
+ 2418, -362, -362, -362, -362, 117, -362, -362, -362, -362,
+ -362, -362, -362, -362, -362, -362, -362, -362, -362, -362,
+ -362, -362, -362, -362, -362, -362, -362, -362, -362, -362,
+ -362, -362, -362, -362, -362, -362, -362, -362, -362, -362,
+ -362, -362, -362, -29, -362, -362, -362, -362, -362, -362,
+ -362, -362, -362, -362, -362, -362, -362, -362, -362, -362,
+ -362, -362, -362, -362, -362, -362, -362, -362, -362, -362,
+ -362, -362, -362, -362, -74, -362, -362, -80, -15, -48,
+ 2507, -88, -362, 27, -362, 1283, -362, -362, -362, -362,
+ -362, -362, -362, 5, -362, 2329, -362, -362, 2671, -362,
+ -362, -362, 16, 78, -362, 48, -362, 2507, -362, -362,
+ -362, 2507, 46, 46, -362, 14, -100, -49, -362, 2507,
+ -362, -362, 1367, -362, -362, 50, 2507, -362, 45, -70,
+ -362, 411, -362, -362, -362, -362, 59, -91, -362, 1479,
+ 1812, -362, -362, 2507, 46, 2032, -362, 62, -362, -362,
+ -362, -362, -362, 1812, 1812, 1812, -362, -362, -362, -362,
+ -362, -362, -362, -61, -362, -362, -362, 64, -44, 1921,
+ 63, -362, 1812, -69, -106, 44, -79, 57, 47, 52,
+ 56, 79, 85, -90, -362, 65, -362, -362, 2131, 2507,
+ 54, -362, 78, 67, 68, -362, 82, 84, 69, 1591,
+ 86, 1812, 77, 87, 83, -362, -362, 42, -362, -362,
+ -41, -362, -80, 89, -362, -362, -362, -362, 541, -362,
+ -362, -362, -362, -362, -362, 1812, 1700, 1812, 58, 90,
+ -362, -362, 46, 88, -34, -362, -72, -362, -362, -362,
+ -37, -362, -362, 1812, 2589, -362, -362, 1812, 91, -362,
+ -362, -362, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, -362, -362, 2230, -362, -362, -362, -362, -362,
+ 93, -362, 1812, -362, -362, -26, 1812, 94, -362, -362,
+ -362, 671, -362, -362, -362, -362, -362, -362, -362, -362,
+ -362, -362, -362, 1812, 1812, -362, -362, -362, 95, 92,
+ 96, -362, 1812, 98, -22, 1812, 46, -362, -95, -362,
+ -362, 100, 97, -362, 108, -362, -362, -362, -362, -362,
+ -69, -69, -106, -106, 44, 44, 44, 44, -79, -79,
+ 57, 47, 52, 56, 79, 85, 37, -362, 154, 48,
+ 931, 1061, -36, -362, -33, -362, 1172, 671, -362, -362,
+ -362, 1812, 101, -362, 1812, -362, 110, -362, 1812, -362,
+ -362, 1812, 111, -362, -362, -362, -362, 1172, 93, -362,
+ 97, 46, 2507, 114, 112, -362, 1812, -362, -362, 115,
+ -362, 1812, -362, 109, 119, 222, -362, 118, 120, 801,
+ -362, -362, 113, -5, 1812, 801, 93, -362, 1812, -362,
+ -362, -362, -362, 123, 97, -362, -362, -362, -362
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -891,77 +914,78 @@
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 0, 127, 142, 143, 144, 0, 133, 135, 158, 155,
- 156, 157, 162, 163, 164, 165, 166, 167, 159, 160,
- 161, 168, 169, 170, 171, 172, 173, 136, 137, 138,
- 140, 134, 174, 175, 176, 177, 178, 179, 139, 124,
- 123, 0, 154, 180, 182, 195, 196, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 181, 192, 193, 194,
- 0, 198, 267, 268, 0, 98, 97, 0, 109, 115,
- 131, 0, 132, 125, 128, 121, 130, 129, 141, 151,
- 197, 0, 264, 266, 0, 2, 3, 201, 0, 0,
- 88, 0, 96, 0, 105, 99, 107, 0, 108, 0,
- 89, 2, 116, 0, 94, 0, 126, 122, 0, 1,
- 265, 0, 0, 199, 148, 0, 146, 0, 269, 100,
- 104, 106, 102, 110, 101, 0, 0, 87, 95, 0,
- 0, 0, 203, 4, 8, 6, 7, 9, 30, 0,
- 0, 0, 152, 37, 36, 38, 35, 5, 11, 31,
- 13, 18, 19, 0, 0, 24, 0, 39, 0, 43,
- 46, 49, 54, 57, 59, 61, 63, 65, 67, 69,
- 86, 0, 28, 90, 0, 0, 0, 145, 0, 0,
- 0, 249, 0, 0, 0, 0, 0, 0, 0, 0,
- 223, 232, 236, 39, 71, 84, 0, 212, 0, 141,
- 215, 234, 214, 213, 0, 216, 217, 218, 219, 220,
- 221, 0, 0, 0, 0, 0, 211, 120, 0, 209,
- 0, 207, 0, 204, 32, 33, 0, 15, 16, 0,
- 0, 22, 21, 0, 154, 25, 27, 34, 0, 0,
+ 0, 127, 144, 145, 146, 0, 133, 135, 160, 157,
+ 158, 159, 164, 165, 166, 167, 168, 169, 161, 162,
+ 163, 170, 171, 172, 173, 174, 175, 136, 137, 138,
+ 140, 134, 176, 177, 178, 179, 180, 181, 139, 124,
+ 123, 141, 142, 0, 156, 182, 184, 197, 198, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 183, 194,
+ 195, 196, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 0, 212, 281, 282, 0, 98,
+ 97, 0, 109, 115, 131, 0, 132, 125, 128, 121,
+ 130, 129, 143, 153, 199, 0, 278, 280, 0, 2,
+ 3, 215, 0, 0, 88, 0, 96, 0, 105, 99,
+ 107, 0, 108, 0, 89, 2, 116, 0, 94, 0,
+ 126, 122, 0, 1, 279, 0, 0, 213, 150, 0,
+ 148, 0, 283, 100, 104, 106, 102, 110, 101, 0,
+ 0, 87, 95, 0, 0, 0, 217, 4, 8, 6,
+ 7, 9, 30, 0, 0, 0, 154, 37, 36, 38,
+ 35, 5, 11, 31, 13, 18, 19, 0, 0, 24,
+ 0, 39, 0, 43, 46, 49, 54, 57, 59, 61,
+ 63, 65, 67, 69, 86, 0, 28, 90, 0, 0,
+ 0, 147, 0, 0, 0, 263, 0, 0, 0, 0,
+ 0, 0, 0, 0, 237, 246, 250, 39, 71, 84,
+ 0, 226, 0, 143, 229, 248, 228, 227, 0, 230,
+ 231, 232, 233, 234, 235, 0, 0, 0, 0, 0,
+ 225, 120, 0, 223, 0, 221, 0, 218, 32, 33,
+ 0, 15, 16, 0, 0, 22, 21, 0, 156, 25,
+ 27, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 153, 202,
- 0, 149, 150, 147, 260, 259, 230, 251, 0, 263,
- 261, 0, 0, 0, 244, 247, 222, 0, 74, 75,
- 77, 76, 79, 80, 81, 82, 83, 78, 73, 0,
- 0, 237, 233, 235, 0, 0, 0, 114, 0, 117,
- 0, 0, 0, 205, 0, 91, 10, 0, 17, 29,
- 14, 20, 26, 40, 41, 42, 45, 44, 47, 48,
- 52, 53, 50, 51, 55, 56, 58, 60, 62, 64,
- 66, 68, 0, 200, 0, 0, 0, 0, 0, 262,
- 0, 243, 0, 224, 72, 85, 103, 0, 111, 118,
- 0, 206, 0, 208, 0, 92, 12, 0, 0, 229,
- 231, 254, 253, 256, 230, 241, 245, 0, 0, 0,
- 0, 112, 0, 119, 210, 0, 70, 0, 255, 0,
- 0, 240, 238, 0, 0, 0, 225, 113, 0, 0,
- 257, 0, 230, 242, 0, 227, 248, 226, 93, 0,
- 258, 252, 239, 246, 250
+ 0, 0, 155, 216, 0, 151, 152, 149, 274, 273,
+ 244, 265, 0, 277, 275, 0, 0, 0, 258, 261,
+ 236, 0, 74, 75, 77, 76, 79, 80, 81, 82,
+ 83, 78, 73, 0, 0, 251, 247, 249, 0, 0,
+ 0, 114, 0, 117, 0, 0, 0, 219, 0, 91,
+ 10, 0, 17, 29, 14, 20, 26, 40, 41, 42,
+ 45, 44, 47, 48, 52, 53, 50, 51, 55, 56,
+ 58, 60, 62, 64, 66, 68, 0, 214, 0, 0,
+ 0, 0, 0, 276, 0, 257, 0, 238, 72, 85,
+ 103, 0, 111, 118, 0, 220, 0, 222, 0, 92,
+ 12, 0, 0, 243, 245, 268, 267, 270, 244, 255,
+ 259, 0, 0, 0, 0, 112, 0, 119, 224, 0,
+ 70, 0, 269, 0, 0, 254, 252, 0, 0, 0,
+ 239, 113, 0, 0, 271, 0, 244, 256, 0, 241,
+ 262, 240, 93, 0, 272, 266, 253, 260, 264
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -348, -40, -348, -348, -348, -348, -348, -348, 28, -348,
- -348, -348, -348, -60, -348, -72, -71, -127, -52, 8,
- 12, 16, 7, 10, 11, -348, -86, -122, -348, -133,
- -78, -348, 9, 13, -348, -348, -348, 169, 177, 174,
- -348, -348, -326, -348, -59, -348, -69, -348, -61, 268,
- -348, -348, 96, 0, -348, -348, -348, -348, -100, -120,
- 57, -23, -140, -57, -198, -322, -105, -348, -348, -110,
- -347, -348, -348, -88, 5, -42, -348, -348, -348, -348,
- -348, -67, -348, -348, -348, -348, -348, -348, -348, -348,
- -348, 216, -348, -348
+ -362, -42, -362, -362, -362, -362, -362, -362, -2, -362,
+ -362, -362, -362, 60, -362, -82, -93, -132, -87, -20,
+ -18, -21, -16, -14, -17, -362, -92, -137, -362, -147,
+ -125, -362, 10, 13, -362, -362, -362, 143, 149, 147,
+ -362, -362, -335, -362, -73, -362, -83, -362, -76, 254,
+ -362, -362, 70, 0, -362, -362, -362, -362, -111, -134,
+ 28, -53, -215, -86, -213, -331, -133, -362, -362, -139,
+ -361, -362, -362, -99, -24, -81, -362, -362, -362, -362,
+ -362, -109, -362, -362, -362, -362, -362, -362, -362, -362,
+ -362, 174, -362, -362
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 219, 147, 148, 149, 307, 150, 151, 152, 153,
- 154, 155, 156, 193, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 194, 195, 289, 196,
- 171, 105, 197, 198, 64, 65, 66, 94, 95, 96,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 115, 116, 172, 79, 80, 175, 112, 131, 132,
- 220, 221, 217, 200, 201, 202, 203, 277, 370, 396,
- 334, 335, 336, 397, 204, 205, 206, 382, 207, 383,
- 208, 369, 209, 342, 266, 337, 363, 379, 380, 210,
- 81, 82, 83, 91
+ -1, 233, 161, 162, 163, 321, 164, 165, 166, 167,
+ 168, 169, 170, 207, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 208, 209, 303, 210,
+ 185, 119, 211, 212, 78, 79, 80, 108, 109, 110,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 129, 130, 186, 93, 94, 189, 126, 145, 146,
+ 234, 235, 231, 214, 215, 216, 217, 291, 384, 410,
+ 348, 349, 350, 411, 218, 219, 220, 396, 221, 397,
+ 222, 383, 223, 356, 280, 351, 377, 393, 394, 224,
+ 95, 96, 97, 105
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -969,498 +993,564 @@
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 78, 88, 106, 118, 216, 98, 293, 97, 226, 62,
- 107, 223, 174, 63, 360, 256, 367, 381, 304, 354,
- 177, 89, 170, 85, 86, 90, 178, 355, 106, 102,
- 93, 125, 98, 235, 97, 92, 98, 367, 126, 170,
- 108, 245, 246, 127, 130, 402, 129, 215, 157, 128,
- 257, 130, 271, 129, 223, 87, 305, 212, 122, 123,
- 106, 227, 228, 395, 213, 157, 78, 113, 218, 395,
- 130, 78, 129, 297, 114, 260, 247, 248, 117, 224,
- 225, 78, 229, 232, 111, 99, 230, 124, 100, 233,
- 62, 216, 290, 78, 63, 291, 308, 78, 237, 173,
- 306, 170, 364, 176, 365, 78, 290, 211, 290, 273,
- 290, 312, 78, 130, 130, 129, 129, 199, 320, 321,
- 322, 323, 399, -29, 332, 170, 170, 157, 290, 78,
- 241, 78, 242, 294, 296, 338, 101, 86, 302, 340,
- 223, 303, 231, 290, 302, 293, 339, 351, 2, 3,
- 4, 157, 157, 238, 239, 240, 85, 86, 349, 243,
- 244, 249, 250, 261, 262, 290, 357, 344, 345, 316,
- 317, 236, 318, 319, 78, 78, 216, 251, 313, 314,
- 315, 157, 157, 157, 157, 157, 157, 157, 157, 157,
- 157, 157, 157, 157, 157, 157, 157, 324, 325, 130,
- 252, 129, 253, 254, 199, 258, 255, 371, 264, 366,
- 373, 265, 267, 268, 269, 170, 274, 299, 272, 275,
- 276, -28, 358, 352, 301, 216, -23, -228, 216, 298,
- 366, 346, 387, 347, 341, 376, 348, 356, 350, 290,
- -30, 157, 374, 377, 389, 372, 385, 359, 390, 386,
- 216, 391, 388, 392, 403, 190, 394, 400, 311, 326,
- 78, 329, 398, 404, 327, 330, 120, 331, 170, 328,
- 119, 121, 216, 84, 263, 300, 375, 199, 393, 353,
- 361, 401, 343, 368, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 157, 362, 378, 110, 0, 106,
- 0, 0, 0, 288, 368, 0, 0, 107, 0, 0,
+ 92, 102, 120, 230, 112, 307, 132, 111, 240, 121,
+ 76, 237, 311, 77, 229, 188, 270, 395, 318, 374,
+ 139, 381, 259, 260, 255, 368, 256, 140, 120, 226,
+ 184, 112, 249, 369, 111, 112, 227, 113, 241, 242,
+ 114, 116, 381, 144, 103, 416, 143, 184, 104, 191,
+ 144, 271, 285, 143, 237, 192, 319, 261, 262, 243,
+ 120, 99, 100, 244, 252, 253, 254, 232, 409, 144,
+ 136, 137, 143, 141, 409, 246, 287, 107, 274, 142,
+ 92, 247, 320, 378, 304, 92, 379, 305, 304, 304,
+ 230, 316, 304, 101, 317, 92, 322, 363, 125, 304,
+ 308, 310, 353, 316, 106, 76, 365, 92, 77, 184,
+ 326, 92, 144, 144, 413, 143, 143, 115, 100, 92,
+ 304, 2, 3, 4, 346, 122, 92, 334, 335, 336,
+ 337, 213, 138, 184, 184, 352, 99, 100, 127, 354,
+ 237, 257, 258, 92, 307, 92, 385, 275, 276, 387,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 263, 264, 304, 371, 332, 333, 358, 359, 128, 302,
+ 131, 401, 190, 330, 331, 230, 338, 339, 187, 225,
+ -29, 250, 171, 245, 268, 312, 272, 265, 92, 92,
+ 366, 266, 269, 417, 267, 278, 279, 283, 144, 171,
+ 281, 143, 282, 288, 286, 289, 290, -28, 315, 380,
+ -23, 313, 372, 238, 239, -242, 360, 362, 213, 361,
+ 355, 370, 304, 184, 230, 364, -30, 230, 386, 391,
+ 380, 388, 251, 399, 390, 400, 402, 404, 405, 406,
+ 204, 412, 325, 389, 403, 340, 342, 408, 341, 230,
+ 373, 418, 343, 345, 134, 344, 133, 414, 135, 98,
+ 314, 171, 277, 367, 407, 375, 415, 357, 392, 124,
+ 376, 230, 0, 0, 92, 0, 184, 0, 0, 0,
+ 0, 0, 0, 382, 0, 171, 171, 0, 0, 0,
+ 0, 213, 0, 0, 0, 0, 0, 0, 0, 120,
+ 0, 0, 0, 0, 382, 0, 121, 0, 0, 0,
+ 0, 0, 327, 328, 329, 171, 171, 171, 171, 171,
+ 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
+ 171, 0, 0, 0, 0, 0, 0, 0, 0, 398,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 384, 0, 0,
- 0, 0, 0, 0, 0, 0, 199, 199, 0, 0,
- 0, 0, 199, 199, 0, 0, 0, 0, 0, 0,
+ 213, 213, 0, 0, 0, 0, 213, 213, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 199, 0, 0, 0, 0, 78, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 199, 0, 0, 0, 0,
- 0, 199, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 179, 180, 181, 0, 182, 183, 184,
- 185, 186, 187, 188, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 189, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 0, 57, 58, 59, 60, 133, 61, 134, 135, 136,
- 137, 138, 0, 0, 139, 140, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 141, 0, 0, 0, 190, 191, 0,
- 0, 0, 0, 192, 143, 144, 145, 146, 1, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 179,
- 180, 181, 0, 182, 183, 184, 185, 186, 187, 188,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 189, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 0, 57, 58, 59,
- 60, 133, 61, 134, 135, 136, 137, 138, 0, 0,
- 139, 140, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 141,
- 0, 0, 0, 190, 292, 0, 0, 0, 0, 192,
- 143, 144, 145, 146, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 179, 180, 181, 0, 182,
- 183, 184, 185, 186, 187, 188, 12, 13, 14, 15,
+ 0, 0, 0, 0, 0, 171, 0, 213, 0, 0,
+ 0, 0, 92, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 213,
+ 0, 0, 0, 0, 0, 213, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 193, 194, 195, 171, 196,
+ 197, 198, 199, 200, 201, 202, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 189, 43, 44,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 203,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 0, 57, 58, 59, 60, 133, 61, 134,
- 135, 136, 137, 138, 0, 0, 139, 140, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 141, 0, 0, 0, 190,
- 0, 0, 0, 0, 0, 192, 143, 144, 145, 146,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 179, 180, 181, 0, 182, 183, 184, 185, 186,
- 187, 188, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 189, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 0, 57,
- 58, 59, 60, 133, 61, 134, 135, 136, 137, 138,
- 0, 0, 139, 140, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 141, 0, 0, 0, 117, 0, 0, 0, 0,
- 0, 192, 143, 144, 145, 146, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 179, 180, 181,
- 0, 182, 183, 184, 185, 186, 187, 188, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 189,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 0, 57, 58, 59, 60, 133,
- 61, 134, 135, 136, 137, 138, 0, 0, 139, 140,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 141, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 192, 143, 144,
- 145, 146, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 0, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 0, 57, 58, 59, 60, 133, 61, 134, 135, 136,
- 137, 138, 0, 0, 139, 140, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 2, 3, 4, 141, 6, 7, 8, 9, 10, 11,
- 0, 0, 0, 192, 143, 144, 145, 146, 0, 0,
- 0, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 0, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 0, 57, 58,
- 59, 60, 133, 61, 134, 135, 136, 137, 138, 0,
- 0, 139, 140, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 2, 3, 4,
- 141, 6, 7, 8, 9, 10, 11, 0, 0, 0,
- 0, 143, 144, 145, 146, 0, 0, 0, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 0,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 0, 57, 58, 59, 60, 103,
- 61, 0, 0, 8, 9, 10, 11, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 0, 0, 0, 0, 104, 32, 33,
- 34, 35, 36, 37, 0, 0, 0, 41, 42, 0,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 0, 57, 58, 59, 0, 133,
- 61, 134, 135, 136, 137, 138, 0, 0, 139, 140,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 141, 0, 0,
- 142, 8, 9, 10, 11, 0, 0, 0, 143, 144,
- 145, 146, 0, 0, 0, 0, 12, 13, 14, 15,
+ 55, 56, 57, 58, 0, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 147, 75, 148, 149, 150, 151, 152, 0, 0,
+ 153, 154, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 155,
+ 0, 0, 0, 204, 205, 0, 0, 0, 0, 206,
+ 157, 158, 159, 160, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 193, 194, 195, 0, 196,
+ 197, 198, 199, 200, 201, 202, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 0, 0, 0, 0, 0, 32, 33, 34, 35,
- 36, 37, 0, 0, 0, 41, 42, 0, 43, 44,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 203,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 0, 57, 58, 59, 0, 133, 61, 134,
- 135, 136, 137, 138, 0, 0, 139, 140, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 141, 0, 0, 214, 8,
- 9, 10, 11, 0, 0, 0, 143, 144, 145, 146,
- 0, 0, 0, 0, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
- 0, 0, 0, 0, 32, 33, 34, 35, 36, 37,
- 0, 0, 0, 41, 42, 0, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 0, 57, 58, 59, 0, 133, 61, 134, 135, 136,
- 137, 138, 0, 0, 139, 140, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 141, 8, 9, 10, 11, 0, 0,
- 0, 0, 0, 270, 143, 144, 145, 146, 0, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 0, 0, 0, 0, 0, 32,
- 33, 34, 35, 36, 37, 0, 0, 0, 41, 42,
- 0, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 0, 57, 58, 59, 0,
- 133, 61, 134, 135, 136, 137, 138, 0, 0, 139,
- 140, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 141, 0,
- 0, 295, 8, 9, 10, 11, 0, 0, 0, 143,
- 144, 145, 146, 0, 0, 0, 0, 12, 13, 14,
+ 55, 56, 57, 58, 0, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 147, 75, 148, 149, 150, 151, 152, 0, 0,
+ 153, 154, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 155,
+ 0, 0, 0, 204, 306, 0, 0, 0, 0, 206,
+ 157, 158, 159, 160, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 193, 194, 195, 0, 196,
+ 197, 198, 199, 200, 201, 202, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 203,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 147, 75, 148, 149, 150, 151, 152, 0, 0,
+ 153, 154, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 155,
+ 0, 0, 0, 204, 0, 0, 0, 0, 0, 206,
+ 157, 158, 159, 160, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 193, 194, 195, 0, 196,
+ 197, 198, 199, 200, 201, 202, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 203,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 147, 75, 148, 149, 150, 151, 152, 0, 0,
+ 153, 154, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 155,
+ 0, 0, 0, 131, 0, 0, 0, 0, 0, 206,
+ 157, 158, 159, 160, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 193, 194, 195, 0, 196,
+ 197, 198, 199, 200, 201, 202, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 203,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 147, 75, 148, 149, 150, 151, 152, 0, 0,
+ 153, 154, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 155,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 206,
+ 157, 158, 159, 160, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 0,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 147, 75, 148, 149, 150, 151, 152, 0, 0,
+ 153, 154, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 4, 155,
+ 6, 7, 8, 9, 10, 11, 0, 0, 0, 206,
+ 157, 158, 159, 160, 0, 0, 0, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 0, 0, 0, 0, 0, 32, 33, 34,
- 35, 36, 37, 0, 0, 0, 41, 42, 0, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 0, 57, 58, 59, 0, 133, 61,
- 134, 135, 136, 137, 138, 0, 0, 139, 140, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 141, 8, 9, 10,
- 11, 0, 0, 0, 0, 0, 0, 143, 144, 145,
- 146, 0, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 0, 0, 0,
- 0, 0, 32, 33, 34, 35, 36, 37, 0, 0,
- 0, 41, 234, 0, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 0, 57,
- 58, 59, 0, 133, 61, 134, 135, 136, 137, 138,
- 0, 0, 139, 140, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1, 2, 3,
- 4, 141, 6, 7, 8, 9, 10, 11, 0, 0,
- 0, 0, 143, 144, 145, 146, 0, 0, 0, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 0, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 0, 57, 58, 59, 60,
- 0, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 2, 3, 4, 0, 6, 7, 8,
- 9, 10, 11, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 222, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 0, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 0, 57, 58, 59, 60, 0, 61, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1, 2, 3,
- 4, 0, 6, 7, 8, 9, 10, 11, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 259, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 0, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 0, 57, 58, 59, 60,
- 0, 61, 0, 0, 0, 0, 0, 0, 0, 109,
- 0, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 333, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 0, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 0, 57, 58, 59, 60, 0, 61, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 0, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 0, 57, 58, 59, 60,
- 0, 61, 1, 2, 3, 4, 0, 6, 7, 8,
- 9, 10, 11, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 0, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 0, 57, 58, 59, 60, 0, 61, 8, 9, 10,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 0, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 0, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 147, 75, 148, 149, 150, 151, 152, 0,
+ 0, 153, 154, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 3, 4,
+ 155, 6, 7, 8, 9, 10, 11, 0, 0, 0,
+ 0, 157, 158, 159, 160, 0, 0, 0, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 0, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 0, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 117, 75, 0, 0, 8, 9, 10,
11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 0, 0, 0,
- 0, 0, 32, 33, 34, 35, 36, 37, 0, 0,
- 0, 41, 42, 0, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 0, 57,
- 58, 59, 0, 309, 61, 8, 9, 10, 11, 310,
+ 0, 118, 32, 33, 34, 35, 36, 37, 0, 0,
+ 0, 0, 0, 43, 44, 0, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 0, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 0, 147, 75, 148,
+ 149, 150, 151, 152, 0, 0, 153, 154, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 0, 0, 0, 0, 0,
- 32, 33, 34, 35, 36, 37, 0, 0, 0, 41,
- 42, 0, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 0, 57, 58, 59,
- 0, 0, 61
+ 0, 0, 0, 0, 0, 155, 0, 0, 156, 8,
+ 9, 10, 11, 0, 0, 0, 157, 158, 159, 160,
+ 0, 0, 0, 0, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
+ 0, 0, 0, 0, 32, 33, 34, 35, 36, 37,
+ 0, 0, 0, 0, 0, 43, 44, 0, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 0, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 0, 147,
+ 75, 148, 149, 150, 151, 152, 0, 0, 153, 154,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 155, 0, 0,
+ 228, 8, 9, 10, 11, 0, 0, 0, 157, 158,
+ 159, 160, 0, 0, 0, 0, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 0, 0, 0, 0, 0, 32, 33, 34, 35,
+ 36, 37, 0, 0, 0, 0, 0, 43, 44, 0,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 0, 147, 75, 148, 149, 150, 151, 152, 0, 0,
+ 153, 154, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 155,
+ 8, 9, 10, 11, 0, 0, 0, 0, 0, 284,
+ 157, 158, 159, 160, 0, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 0, 0, 0, 0, 0, 32, 33, 34, 35, 36,
+ 37, 0, 0, 0, 0, 0, 43, 44, 0, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 0, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 0,
+ 147, 75, 148, 149, 150, 151, 152, 0, 0, 153,
+ 154, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 155, 0,
+ 0, 309, 8, 9, 10, 11, 0, 0, 0, 157,
+ 158, 159, 160, 0, 0, 0, 0, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 0, 0, 0, 0, 0, 32, 33, 34,
+ 35, 36, 37, 0, 0, 0, 0, 0, 43, 44,
+ 0, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 0, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 0, 147, 75, 148, 149, 150, 151, 152, 0,
+ 0, 153, 154, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 155, 8, 9, 10, 11, 0, 0, 0, 0, 0,
+ 0, 157, 158, 159, 160, 0, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 0, 0, 0, 0, 0, 32, 33, 34, 35,
+ 36, 37, 0, 0, 0, 0, 0, 43, 248, 0,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 0, 147, 75, 148, 149, 150, 151, 152, 0, 0,
+ 153, 154, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 4, 155,
+ 6, 7, 8, 9, 10, 11, 0, 0, 0, 0,
+ 157, 158, 159, 160, 0, 0, 0, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 0, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 0, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 0, 75, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 2, 3, 4, 0, 6,
+ 7, 8, 9, 10, 11, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 236, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 0,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 0, 75, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 2, 3, 4, 0, 6, 7,
+ 8, 9, 10, 11, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 273, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 0, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 0, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 0, 75, 0, 0, 0, 0, 0, 0, 0, 123,
+ 0, 0, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 347, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 0, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 0, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 0,
+ 75, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 0, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 0, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 0, 75,
+ 1, 2, 3, 4, 0, 6, 7, 8, 9, 10,
+ 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 0, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 0, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 0, 75, 8,
+ 9, 10, 11, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
+ 0, 0, 0, 0, 32, 33, 34, 35, 36, 37,
+ 0, 0, 0, 0, 0, 43, 44, 0, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 0, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 0, 323,
+ 75, 8, 9, 10, 11, 324, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 0, 0, 0, 0, 0, 32, 33, 34, 35,
+ 36, 37, 0, 0, 0, 0, 0, 43, 44, 0,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 0, 0, 75
};
static const yytype_int16 yycheck[] =
{
- 0, 41, 71, 91, 126, 66, 204, 66, 141, 0,
- 71, 131, 112, 0, 336, 92, 342, 364, 76, 106,
- 105, 104, 108, 76, 77, 114, 111, 114, 97, 69,
- 111, 106, 93, 155, 93, 105, 97, 363, 113, 125,
- 106, 87, 88, 108, 105, 392, 105, 125, 108, 114,
- 127, 112, 185, 112, 174, 108, 114, 106, 98, 99,
- 129, 85, 86, 385, 113, 125, 66, 108, 129, 391,
- 131, 71, 131, 213, 76, 175, 122, 123, 108, 139,
- 140, 81, 106, 105, 84, 111, 110, 104, 114, 111,
- 81, 213, 111, 93, 81, 114, 229, 97, 158, 114,
- 105, 187, 105, 113, 105, 105, 111, 106, 111, 187,
- 111, 233, 112, 174, 175, 174, 175, 117, 245, 246,
- 247, 248, 105, 104, 257, 211, 212, 187, 111, 129,
- 116, 131, 118, 211, 212, 268, 76, 77, 111, 272,
- 260, 114, 105, 111, 111, 343, 114, 114, 4, 5,
- 6, 211, 212, 119, 120, 121, 76, 77, 298, 83,
- 84, 89, 90, 79, 80, 111, 112, 289, 290, 241,
- 242, 104, 243, 244, 174, 175, 298, 126, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 249, 250, 260,
- 125, 260, 124, 91, 204, 107, 93, 347, 114, 342,
- 350, 114, 104, 104, 114, 301, 112, 107, 104, 104,
- 109, 104, 56, 301, 106, 347, 105, 108, 350, 113,
- 363, 107, 372, 113, 112, 357, 107, 107, 113, 111,
- 104, 301, 107, 104, 377, 113, 105, 335, 114, 109,
- 372, 105, 107, 17, 394, 108, 113, 390, 230, 251,
- 260, 254, 114, 114, 252, 255, 97, 256, 354, 253,
- 93, 97, 394, 5, 178, 218, 354, 277, 383, 302,
- 337, 391, 277, 342, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 354, 337, 363, 81, -1, 368,
- -1, -1, -1, 113, 363, -1, -1, 368, -1, -1,
+ 0, 43, 85, 140, 80, 218, 105, 80, 155, 85,
+ 0, 145, 227, 0, 139, 126, 106, 378, 90, 350,
+ 120, 356, 101, 102, 130, 120, 132, 127, 111, 120,
+ 122, 107, 169, 128, 107, 111, 127, 125, 99, 100,
+ 128, 83, 377, 119, 118, 406, 119, 139, 128, 119,
+ 126, 141, 199, 126, 188, 125, 128, 136, 137, 120,
+ 143, 90, 91, 124, 133, 134, 135, 143, 399, 145,
+ 112, 113, 145, 122, 405, 119, 201, 125, 189, 128,
+ 80, 125, 119, 119, 125, 85, 119, 128, 125, 125,
+ 227, 125, 125, 122, 128, 95, 243, 312, 98, 125,
+ 225, 226, 128, 125, 119, 95, 128, 107, 95, 201,
+ 247, 111, 188, 189, 119, 188, 189, 90, 91, 119,
+ 125, 4, 5, 6, 271, 120, 126, 259, 260, 261,
+ 262, 131, 118, 225, 226, 282, 90, 91, 122, 286,
+ 274, 97, 98, 143, 357, 145, 361, 93, 94, 364,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 103, 104, 125, 126, 257, 258, 303, 304, 90, 127,
+ 122, 386, 127, 255, 256, 312, 263, 264, 128, 120,
+ 118, 118, 122, 119, 105, 127, 121, 140, 188, 189,
+ 315, 139, 107, 408, 138, 128, 128, 128, 274, 139,
+ 118, 274, 118, 126, 118, 118, 123, 118, 120, 356,
+ 119, 121, 58, 153, 154, 122, 121, 121, 218, 127,
+ 126, 121, 125, 315, 361, 127, 118, 364, 127, 118,
+ 377, 121, 172, 119, 371, 123, 121, 128, 119, 17,
+ 122, 128, 244, 368, 391, 265, 267, 127, 266, 386,
+ 349, 128, 268, 270, 111, 269, 107, 404, 111, 5,
+ 232, 201, 192, 316, 397, 351, 405, 291, 377, 95,
+ 351, 408, -1, -1, 274, -1, 368, -1, -1, -1,
+ -1, -1, -1, 356, -1, 225, 226, -1, -1, -1,
+ -1, 291, -1, -1, -1, -1, -1, -1, -1, 382,
+ -1, -1, -1, -1, 377, -1, 382, -1, -1, -1,
+ -1, -1, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, -1, -1, -1, -1, -1, -1, -1, -1, 381,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 367, -1, -1,
- -1, -1, -1, -1, -1, -1, 336, 337, -1, -1,
- -1, -1, 342, 343, -1, -1, -1, -1, -1, -1,
+ 350, 351, -1, -1, -1, -1, 356, 357, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 363, -1, -1, -1, -1, 368, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 385, -1, -1, -1, -1,
- -1, 391, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, -1, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- -1, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, -1, -1, 85, 86, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 104, -1, -1, -1, 108, 109, -1,
- -1, -1, -1, 114, 115, 116, 117, 118, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, -1, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, -1, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, -1, -1,
- 85, 86, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 104,
- -1, -1, -1, 108, 109, -1, -1, -1, -1, 114,
- 115, 116, 117, 118, 3, 4, 5, 6, 7, 8,
+ -1, -1, -1, -1, -1, 315, -1, 377, -1, -1,
+ -1, -1, 382, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 399,
+ -1, -1, -1, -1, -1, 405, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 368, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, -1, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 118,
+ -1, -1, -1, 122, 123, -1, -1, -1, -1, 128,
+ 129, 130, 131, 132, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, -1, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, -1, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, -1, -1, 85, 86, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 104, -1, -1, -1, 108,
- -1, -1, -1, -1, -1, 114, 115, 116, 117, 118,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, -1, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, -1, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- -1, -1, 85, 86, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 104, -1, -1, -1, 108, -1, -1, -1, -1,
- -1, 114, 115, 116, 117, 118, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- -1, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 69, 70, 71, 72, -1, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 118,
+ -1, -1, -1, 122, 123, -1, -1, -1, -1, 128,
+ 129, 130, 131, 132, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, -1, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 118,
+ -1, -1, -1, 122, -1, -1, -1, -1, -1, 128,
+ 129, 130, 131, 132, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, -1, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 118,
+ -1, -1, -1, 122, -1, -1, -1, -1, -1, 128,
+ 129, 130, 131, 132, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, -1, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 118,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 128,
+ 129, 130, 131, 132, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, -1, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, 4, 5, 6, 118,
+ 8, 9, 10, 11, 12, 13, -1, -1, -1, 128,
+ 129, 130, 131, 132, -1, -1, -1, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, -1, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, -1,
+ -1, 99, 100, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3, 4, 5, 6,
+ 118, 8, 9, 10, 11, 12, 13, -1, -1, -1,
+ -1, 129, 130, 131, 132, -1, -1, -1, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, -1, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, -1, -1, 85, 86,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 104, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 114, 115, 116,
- 117, 118, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, -1, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- -1, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, -1, -1, 85, 86, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
- 4, 5, 6, 104, 8, 9, 10, 11, 12, 13,
- -1, -1, -1, 114, 115, 116, 117, 118, -1, -1,
- -1, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, -1, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, -1, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, -1,
- -1, 85, 86, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3, 4, 5, 6,
- 104, 8, 9, 10, 11, 12, 13, -1, -1, -1,
- -1, 115, 116, 117, 118, -1, -1, -1, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, -1,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, -1, 72, 73, 74, 75, 76,
- 77, -1, -1, 10, 11, 12, 13, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, -1, -1, -1, -1, 114, 45, 46,
- 47, 48, 49, 50, -1, -1, -1, 54, 55, -1,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, -1, 72, 73, 74, -1, 76,
- 77, 78, 79, 80, 81, 82, -1, -1, 85, 86,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 104, -1, -1,
- 107, 10, 11, 12, 13, -1, -1, -1, 115, 116,
- 117, 118, -1, -1, -1, -1, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
- 49, 50, -1, -1, -1, 54, 55, -1, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, -1, 72, 73, 74, -1, 76, 77, 78,
- 79, 80, 81, 82, -1, -1, 85, 86, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 104, -1, -1, 107, 10,
- 11, 12, 13, -1, -1, -1, 115, 116, 117, 118,
- -1, -1, -1, -1, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
- -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
- -1, -1, -1, 54, 55, -1, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- -1, 72, 73, 74, -1, 76, 77, 78, 79, 80,
- 81, 82, -1, -1, 85, 86, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 104, 10, 11, 12, 13, -1, -1,
- -1, -1, -1, 114, 115, 116, 117, 118, -1, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
- 46, 47, 48, 49, 50, -1, -1, -1, 54, 55,
- -1, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, -1, 72, 73, 74, -1,
- 76, 77, 78, 79, 80, 81, 82, -1, -1, 85,
- 86, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 104, -1,
- -1, 107, 10, 11, 12, 13, -1, -1, -1, 115,
- 116, 117, 118, -1, -1, -1, -1, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
- 48, 49, 50, -1, -1, -1, 54, 55, -1, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, -1, 72, 73, 74, -1, 76, 77,
- 78, 79, 80, 81, 82, -1, -1, 85, 86, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 104, 10, 11, 12,
- 13, -1, -1, -1, -1, -1, -1, 115, 116, 117,
- 118, -1, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
- -1, -1, 45, 46, 47, 48, 49, 50, -1, -1,
- -1, 54, 55, -1, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, -1, 72,
- 73, 74, -1, 76, 77, 78, 79, 80, 81, 82,
- -1, -1, 85, 86, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
- 6, 104, 8, 9, 10, 11, 12, 13, -1, -1,
- -1, -1, 115, 116, 117, 118, -1, -1, -1, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- -1, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, -1, 72, 73, 74, 75,
- -1, 77, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 3, 4, 5, 6, -1, 8, 9, 10,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 109, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, -1, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- -1, 72, 73, 74, 75, -1, 77, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
- 6, -1, 8, 9, 10, 11, 12, 13, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 109, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- -1, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, -1, 72, 73, 74, 75,
- -1, 77, -1, -1, -1, -1, -1, -1, -1, 0,
- -1, -1, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 109, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, -1, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- -1, 72, 73, 74, 75, -1, 77, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- -1, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, -1, 72, 73, 74, 75,
- -1, 77, 3, 4, 5, 6, -1, 8, 9, 10,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, -1, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- -1, 72, 73, 74, 75, -1, 77, 10, 11, 12,
+ 57, -1, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, -1, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, -1, -1, 10, 11, 12,
13, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
- -1, -1, 45, 46, 47, 48, 49, 50, -1, -1,
- -1, 54, 55, -1, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, -1, 72,
- 73, 74, -1, 76, 77, 10, 11, 12, 13, 82,
+ -1, 128, 45, 46, 47, 48, 49, 50, -1, -1,
+ -1, -1, -1, 56, 57, -1, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ -1, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, -1, 90, 91, 92,
+ 93, 94, 95, 96, -1, -1, 99, 100, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
- 45, 46, 47, 48, 49, 50, -1, -1, -1, 54,
- 55, -1, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, -1, 72, 73, 74,
- -1, -1, 77
+ -1, -1, -1, -1, -1, 118, -1, -1, 121, 10,
+ 11, 12, 13, -1, -1, -1, 129, 130, 131, 132,
+ -1, -1, -1, -1, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ -1, -1, -1, -1, -1, 56, 57, -1, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, -1, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, -1, 90,
+ 91, 92, 93, 94, 95, 96, -1, -1, 99, 100,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 118, -1, -1,
+ 121, 10, 11, 12, 13, -1, -1, -1, 129, 130,
+ 131, 132, -1, -1, -1, -1, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, -1, -1, -1, -1, -1, 56, 57, -1,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, -1, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ -1, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 118,
+ 10, 11, 12, 13, -1, -1, -1, -1, -1, 128,
+ 129, 130, 131, 132, -1, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
+ 50, -1, -1, -1, -1, -1, 56, 57, -1, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, -1, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, -1,
+ 90, 91, 92, 93, 94, 95, 96, -1, -1, 99,
+ 100, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 118, -1,
+ -1, 121, 10, 11, 12, 13, -1, -1, -1, 129,
+ 130, 131, 132, -1, -1, -1, -1, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, -1, -1, -1, -1, -1, 56, 57,
+ -1, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, -1, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, -1, 90, 91, 92, 93, 94, 95, 96, -1,
+ -1, 99, 100, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 118, 10, 11, 12, 13, -1, -1, -1, -1, -1,
+ -1, 129, 130, 131, 132, -1, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, -1, -1, -1, -1, -1, 56, 57, -1,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, -1, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ -1, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, 4, 5, 6, 118,
+ 8, 9, 10, 11, 12, 13, -1, -1, -1, -1,
+ 129, 130, 131, 132, -1, -1, -1, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, -1, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, -1, 91, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3, 4, 5, 6, -1, 8,
+ 9, 10, 11, 12, 13, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 123, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, -1, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, -1, 91, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, 4, 5, 6, -1, 8, 9,
+ 10, 11, 12, 13, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 123, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, -1, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ -1, 91, -1, -1, -1, -1, -1, -1, -1, 0,
+ -1, -1, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 123, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, -1, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
+ 91, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, -1, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, -1, 91,
+ 3, 4, 5, 6, -1, 8, 9, 10, 11, 12,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ -1, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, -1, 91, 10,
+ 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ -1, -1, -1, -1, -1, 56, 57, -1, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, -1, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, -1, 90,
+ 91, 10, 11, 12, 13, 96, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, -1, -1, -1, -1, -1, 56, 57, -1,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, -1, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ -1, -1, 91
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1471,75 +1561,78 @@
12, 13, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 72, 73, 74,
- 75, 77, 160, 161, 162, 163, 164, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 181, 182,
- 183, 218, 219, 220, 177, 76, 77, 108, 129, 104,
- 114, 221, 105, 111, 165, 166, 167, 172, 176, 111,
- 114, 76, 129, 76, 114, 159, 174, 176, 106, 0,
- 219, 181, 185, 108, 76, 179, 180, 108, 201, 166,
- 165, 167, 129, 129, 104, 106, 113, 108, 114, 172,
- 176, 186, 187, 76, 78, 79, 80, 81, 82, 85,
- 86, 104, 107, 115, 116, 117, 118, 130, 131, 132,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 158, 181, 114, 186, 184, 113, 105, 111, 14,
- 15, 16, 18, 19, 20, 21, 22, 23, 24, 56,
- 108, 109, 114, 141, 154, 155, 157, 160, 161, 181,
- 191, 192, 193, 194, 202, 203, 204, 206, 208, 210,
- 217, 106, 106, 113, 107, 158, 155, 190, 176, 129,
- 188, 189, 109, 187, 141, 141, 157, 85, 86, 106,
- 110, 105, 105, 111, 55, 155, 104, 141, 119, 120,
- 121, 116, 118, 83, 84, 87, 88, 122, 123, 89,
- 90, 126, 125, 124, 91, 93, 92, 127, 107, 109,
- 186, 79, 80, 180, 114, 114, 212, 104, 104, 114,
- 114, 157, 104, 158, 112, 104, 109, 195, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 113, 156,
- 111, 114, 109, 192, 158, 107, 158, 190, 113, 107,
- 188, 106, 111, 114, 76, 114, 105, 133, 157, 76,
- 82, 136, 155, 141, 141, 141, 143, 143, 144, 144,
- 145, 145, 145, 145, 146, 146, 147, 148, 149, 150,
- 151, 152, 157, 109, 198, 199, 200, 213, 157, 114,
- 157, 112, 211, 202, 155, 155, 107, 113, 107, 190,
- 113, 114, 158, 189, 106, 114, 107, 112, 56, 201,
- 193, 191, 203, 214, 105, 105, 157, 170, 172, 209,
- 196, 190, 113, 190, 107, 158, 155, 104, 209, 215,
- 216, 198, 205, 207, 129, 105, 109, 190, 107, 157,
- 114, 105, 17, 194, 113, 193, 197, 201, 114, 105,
- 157, 197, 198, 190, 114
+ 53, 54, 55, 56, 57, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 91, 174, 175, 176, 177,
+ 178, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 195, 196, 197, 232, 233, 234, 191, 90,
+ 91, 122, 143, 118, 128, 235, 119, 125, 179, 180,
+ 181, 186, 190, 125, 128, 90, 143, 90, 128, 173,
+ 188, 190, 120, 0, 233, 195, 199, 122, 90, 193,
+ 194, 122, 215, 180, 179, 181, 143, 143, 118, 120,
+ 127, 122, 128, 186, 190, 200, 201, 90, 92, 93,
+ 94, 95, 96, 99, 100, 118, 121, 129, 130, 131,
+ 132, 144, 145, 146, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 172, 195, 128, 200, 198,
+ 127, 119, 125, 14, 15, 16, 18, 19, 20, 21,
+ 22, 23, 24, 58, 122, 123, 128, 155, 168, 169,
+ 171, 174, 175, 195, 205, 206, 207, 208, 216, 217,
+ 218, 220, 222, 224, 231, 120, 120, 127, 121, 172,
+ 169, 204, 190, 143, 202, 203, 123, 201, 155, 155,
+ 171, 99, 100, 120, 124, 119, 119, 125, 57, 169,
+ 118, 155, 133, 134, 135, 130, 132, 97, 98, 101,
+ 102, 136, 137, 103, 104, 140, 139, 138, 105, 107,
+ 106, 141, 121, 123, 200, 93, 94, 194, 128, 128,
+ 226, 118, 118, 128, 128, 171, 118, 172, 126, 118,
+ 123, 209, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 127, 170, 125, 128, 123, 206, 172, 121,
+ 172, 204, 127, 121, 202, 120, 125, 128, 90, 128,
+ 119, 147, 171, 90, 96, 150, 169, 155, 155, 155,
+ 157, 157, 158, 158, 159, 159, 159, 159, 160, 160,
+ 161, 162, 163, 164, 165, 166, 171, 123, 212, 213,
+ 214, 227, 171, 128, 171, 126, 225, 216, 169, 169,
+ 121, 127, 121, 204, 127, 128, 172, 203, 120, 128,
+ 121, 126, 58, 215, 207, 205, 217, 228, 119, 119,
+ 171, 184, 186, 223, 210, 204, 127, 204, 121, 172,
+ 169, 118, 223, 229, 230, 212, 219, 221, 143, 119,
+ 123, 204, 121, 171, 128, 119, 17, 208, 127, 207,
+ 211, 215, 128, 119, 171, 211, 212, 204, 128
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 128, 129, 129, 130, 131, 131, 131, 131, 131,
- 131, 132, 132, 132, 132, 132, 132, 133, 134, 135,
- 135, 136, 136, 137, 137, 138, 138, 139, 140, 140,
- 140, 141, 141, 141, 141, 142, 142, 142, 142, 143,
- 143, 143, 143, 144, 144, 144, 145, 145, 145, 146,
- 146, 146, 146, 146, 147, 147, 147, 148, 148, 149,
- 149, 150, 150, 151, 151, 152, 152, 153, 153, 154,
- 154, 155, 155, 156, 156, 156, 156, 156, 156, 156,
- 156, 156, 156, 156, 157, 157, 158, 159, 160, 160,
- 160, 160, 160, 160, 160, 160, 161, 162, 162, 163,
- 163, 164, 165, 165, 166, 166, 166, 166, 167, 168,
- 168, 168, 168, 168, 168, 169, 169, 169, 169, 169,
- 169, 170, 170, 171, 171, 172, 172, 173, 174, 174,
- 174, 174, 174, 175, 175, 175, 175, 175, 175, 175,
- 175, 176, 177, 177, 177, 178, 179, 179, 180, 180,
- 180, 181, 181, 181, 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, 182, 182,
- 182, 182, 182, 182, 182, 182, 182, 182, 182, 184,
- 183, 185, 183, 186, 186, 187, 187, 188, 188, 189,
- 189, 190, 191, 192, 192, 193, 193, 193, 193, 193,
- 193, 193, 194, 195, 196, 194, 197, 197, 199, 198,
- 200, 198, 201, 201, 202, 202, 203, 203, 204, 205,
- 205, 207, 206, 208, 208, 209, 209, 211, 210, 212,
- 210, 213, 210, 214, 214, 215, 215, 216, 216, 217,
- 217, 217, 217, 217, 218, 218, 219, 219, 221, 220
+ 0, 142, 143, 143, 144, 145, 145, 145, 145, 145,
+ 145, 146, 146, 146, 146, 146, 146, 147, 148, 149,
+ 149, 150, 150, 151, 151, 152, 152, 153, 154, 154,
+ 154, 155, 155, 155, 155, 156, 156, 156, 156, 157,
+ 157, 157, 157, 158, 158, 158, 159, 159, 159, 160,
+ 160, 160, 160, 160, 161, 161, 161, 162, 162, 163,
+ 163, 164, 164, 165, 165, 166, 166, 167, 167, 168,
+ 168, 169, 169, 170, 170, 170, 170, 170, 170, 170,
+ 170, 170, 170, 170, 171, 171, 172, 173, 174, 174,
+ 174, 174, 174, 174, 174, 174, 175, 176, 176, 177,
+ 177, 178, 179, 179, 180, 180, 180, 180, 181, 182,
+ 182, 182, 182, 182, 182, 183, 183, 183, 183, 183,
+ 183, 184, 184, 185, 185, 186, 186, 187, 188, 188,
+ 188, 188, 188, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 190, 191, 191, 191, 192, 193, 193,
+ 194, 194, 194, 195, 195, 195, 196, 196, 196, 196,
+ 196, 196, 196, 196, 196, 196, 196, 196, 196, 196,
+ 196, 196, 196, 196, 196, 196, 196, 196, 196, 196,
+ 196, 196, 196, 196, 196, 196, 196, 196, 196, 196,
+ 196, 196, 196, 196, 196, 196, 196, 196, 196, 196,
+ 196, 196, 196, 196, 196, 196, 196, 196, 196, 196,
+ 196, 196, 196, 198, 197, 199, 197, 200, 200, 201,
+ 201, 202, 202, 203, 203, 204, 205, 206, 206, 207,
+ 207, 207, 207, 207, 207, 207, 208, 209, 210, 208,
+ 211, 211, 213, 212, 214, 212, 215, 215, 216, 216,
+ 217, 217, 218, 219, 219, 221, 220, 222, 222, 223,
+ 223, 225, 224, 226, 224, 227, 224, 228, 228, 229,
+ 229, 230, 230, 231, 231, 231, 231, 231, 232, 232,
+ 233, 233, 235, 234
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
@@ -1559,19 +1652,21 @@
3, 6, 7, 8, 5, 1, 2, 5, 6, 7,
4, 1, 2, 1, 1, 1, 2, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 4, 1, 3, 1, 3,
- 3, 1, 3, 4, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 4, 1, 3,
+ 1, 3, 3, 1, 3, 4, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
- 6, 0, 5, 1, 2, 3, 4, 1, 3, 1,
- 4, 1, 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, 0, 6, 3, 2, 1, 4, 0, 6, 0,
- 8, 0, 7, 1, 1, 1, 0, 2, 3, 2,
- 2, 2, 3, 2, 1, 2, 1, 1, 0, 3
+ 1, 1, 1, 1, 1, 1, 1, 1, 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, 4, 1, 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, 0, 6, 3, 2, 1,
+ 4, 0, 6, 0, 8, 0, 7, 1, 1, 1,
+ 0, 2, 3, 2, 2, 2, 3, 2, 1, 2,
+ 1, 1, 0, 3
};
@@ -3441,11 +3536,8 @@
case 128:
{
- if (!context->declaringFunction() && (yyvsp[0].interm.qualifier) != EvqConst && !context->symbolTable.atGlobalLevel())
- {
- context->error((yylsp[0]), "Local variables can only use the const storage qualifier.", getQualifierString((yyvsp[0].interm.qualifier)));
- }
- (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper((yyvsp[0].interm.qualifier), (yylsp[0]));
+ context->checkLocalVariableConstStorageQualifier(*(yyvsp[0].interm.qualifierWrapper));
+ (yyval.interm.qualifierWrapper) = (yyvsp[0].interm.qualifierWrapper);
}
break;
@@ -3490,7 +3582,7 @@
VERTEX_ONLY("attribute", (yylsp[0]));
ES2_ONLY("attribute", (yylsp[0]));
context->checkIsAtGlobalLevel((yylsp[0]), "attribute");
- (yyval.interm.qualifier) = EvqAttribute;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqAttribute, (yylsp[0]));
}
break;
@@ -3501,9 +3593,9 @@
ES2_ONLY("varying", (yylsp[0]));
context->checkIsAtGlobalLevel((yylsp[0]), "varying");
if (context->getShaderType() == GL_VERTEX_SHADER)
- (yyval.interm.qualifier) = EvqVaryingOut;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqVaryingOut, (yylsp[0]));
else
- (yyval.interm.qualifier) = EvqVaryingIn;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqVaryingIn, (yylsp[0]));
}
break;
@@ -3511,7 +3603,7 @@
case 135:
{
- (yyval.interm.qualifier) = EvqConst;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqConst, (yylsp[0]));
}
break;
@@ -3521,21 +3613,21 @@
{
if (context->declaringFunction())
{
- (yyval.interm.qualifier) = EvqIn;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqIn, (yylsp[0]));
}
else if (context->getShaderType() == GL_FRAGMENT_SHADER)
{
ES3_OR_NEWER("in", (yylsp[0]), "storage qualifier");
- (yyval.interm.qualifier) = EvqFragmentIn;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqFragmentIn, (yylsp[0]));
}
else if (context->getShaderType() == GL_VERTEX_SHADER)
{
ES3_OR_NEWER("in", (yylsp[0]), "storage qualifier");
- (yyval.interm.qualifier) = EvqVertexIn;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqVertexIn, (yylsp[0]));
}
else
{
- (yyval.interm.qualifier) = EvqComputeIn;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqComputeIn, (yylsp[0]));
}
}
@@ -3546,7 +3638,7 @@
{
if (context->declaringFunction())
{
- (yyval.interm.qualifier) = EvqOut;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqOut, (yylsp[0]));
}
else
{
@@ -3554,11 +3646,11 @@
NON_COMPUTE_ONLY("out", (yylsp[0]));
if (context->getShaderType() == GL_FRAGMENT_SHADER)
{
- (yyval.interm.qualifier) = EvqFragmentOut;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqFragmentOut, (yylsp[0]));
}
else
{
- (yyval.interm.qualifier) = EvqVertexOut;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqVertexOut, (yylsp[0]));
}
}
}
@@ -3572,7 +3664,7 @@
{
context->error((yylsp[0]), "invalid inout qualifier", "'inout' can be only used with function parameters");
}
- (yyval.interm.qualifier) = EvqInOut;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqInOut, (yylsp[0]));
}
break;
@@ -3581,7 +3673,7 @@
{
ES3_OR_NEWER("centroid", (yylsp[0]), "storage qualifier");
- (yyval.interm.qualifier) = EvqCentroid;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqCentroid, (yylsp[0]));
}
break;
@@ -3590,7 +3682,7 @@
{
context->checkIsAtGlobalLevel((yylsp[0]), "uniform");
- (yyval.interm.qualifier) = EvqUniform;
+ (yyval.interm.qualifierWrapper) = new TStorageQualifierWrapper(EvqUniform, (yylsp[0]));
}
break;
@@ -3598,6 +3690,22 @@
case 141:
{
+ (yyval.interm.qualifierWrapper) = new TMemoryQualifierWrapper(EvqReadOnly, (yylsp[0]));
+ }
+
+ break;
+
+ case 142:
+
+ {
+ (yyval.interm.qualifierWrapper) = new TMemoryQualifierWrapper(EvqWriteOnly, (yylsp[0]));
+ }
+
+ break;
+
+ case 143:
+
+ {
(yyval.interm.type) = (yyvsp[0].interm.type);
if ((yyval.interm.type).precision == EbpUndefined) {
@@ -3607,7 +3715,7 @@
break;
- case 142:
+ case 144:
{
(yyval.interm.precision) = EbpHigh;
@@ -3615,7 +3723,7 @@
break;
- case 143:
+ case 145:
{
(yyval.interm.precision) = EbpMedium;
@@ -3623,7 +3731,7 @@
break;
- case 144:
+ case 146:
{
(yyval.interm.precision) = EbpLow;
@@ -3631,7 +3739,7 @@
break;
- case 145:
+ case 147:
{
ES3_OR_NEWER("layout", (yylsp[-3]), "qualifier");
@@ -3640,7 +3748,7 @@
break;
- case 146:
+ case 148:
{
(yyval.interm.layoutQualifier) = (yyvsp[0].interm.layoutQualifier);
@@ -3648,7 +3756,7 @@
break;
- case 147:
+ case 149:
{
(yyval.interm.layoutQualifier) = context->joinLayoutQualifiers((yyvsp[-2].interm.layoutQualifier), (yyvsp[0].interm.layoutQualifier), (yylsp[0]));
@@ -3656,7 +3764,7 @@
break;
- case 148:
+ case 150:
{
(yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[0].lex).string, (yylsp[0]));
@@ -3664,31 +3772,31 @@
break;
- case 149:
-
- {
- (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), (yyvsp[0].lex).i, (yylsp[0]));
- }
-
- break;
-
- case 150:
-
- {
- (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), (yyvsp[0].lex).i, (yylsp[0]));
- }
-
- break;
-
case 151:
{
+ (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), (yyvsp[0].lex).i, (yylsp[0]));
+ }
+
+ break;
+
+ case 152:
+
+ {
+ (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), (yyvsp[0].lex).i, (yylsp[0]));
+ }
+
+ break;
+
+ case 153:
+
+ {
(yyval.interm.type).initialize((yyvsp[0].interm.typeSpecifierNonArray), (context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary));
}
break;
- case 152:
+ case 154:
{
ES3_OR_NEWER("[]", (yylsp[-1]), "implicitly sized array");
@@ -3698,7 +3806,7 @@
break;
- case 153:
+ case 155:
{
(yyval.interm.type).initialize((yyvsp[-3].interm.typeSpecifierNonArray), (context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary));
@@ -3711,7 +3819,7 @@
break;
- case 154:
+ case 156:
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtVoid, (yylsp[0]));
@@ -3719,26 +3827,10 @@
break;
- case 155:
-
- {
- (yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- }
-
- break;
-
- case 156:
-
- {
- (yyval.interm.typeSpecifierNonArray).initialize(EbtInt, (yylsp[0]));
- }
-
- break;
-
case 157:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtUInt, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
}
break;
@@ -3746,7 +3838,7 @@
case 158:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtBool, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtInt, (yylsp[0]));
}
break;
@@ -3754,8 +3846,7 @@
case 159:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(2);
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtUInt, (yylsp[0]));
}
break;
@@ -3763,8 +3854,7 @@
case 160:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(3);
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtBool, (yylsp[0]));
}
break;
@@ -3773,7 +3863,7 @@
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(4);
+ (yyval.interm.typeSpecifierNonArray).setAggregate(2);
}
break;
@@ -3781,8 +3871,8 @@
case 162:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtBool, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(2);
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).setAggregate(3);
}
break;
@@ -3790,8 +3880,8 @@
case 163:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtBool, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(3);
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).setAggregate(4);
}
break;
@@ -3800,7 +3890,7 @@
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtBool, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(4);
+ (yyval.interm.typeSpecifierNonArray).setAggregate(2);
}
break;
@@ -3808,8 +3898,8 @@
case 165:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtInt, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(2);
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtBool, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).setAggregate(3);
}
break;
@@ -3817,8 +3907,8 @@
case 166:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtInt, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(3);
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtBool, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).setAggregate(4);
}
break;
@@ -3827,7 +3917,7 @@
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtInt, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(4);
+ (yyval.interm.typeSpecifierNonArray).setAggregate(2);
}
break;
@@ -3835,8 +3925,8 @@
case 168:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtUInt, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(2);
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtInt, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).setAggregate(3);
}
break;
@@ -3844,8 +3934,8 @@
case 169:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtUInt, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(3);
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtInt, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).setAggregate(4);
}
break;
@@ -3854,7 +3944,7 @@
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtUInt, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setAggregate(4);
+ (yyval.interm.typeSpecifierNonArray).setAggregate(2);
}
break;
@@ -3862,8 +3952,8 @@
case 171:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setMatrix(2, 2);
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtUInt, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).setAggregate(3);
}
break;
@@ -3871,8 +3961,8 @@
case 172:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setMatrix(3, 3);
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtUInt, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).setAggregate(4);
}
break;
@@ -3881,7 +3971,7 @@
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setMatrix(4, 4);
+ (yyval.interm.typeSpecifierNonArray).setMatrix(2, 2);
}
break;
@@ -3890,7 +3980,7 @@
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setMatrix(2, 3);
+ (yyval.interm.typeSpecifierNonArray).setMatrix(3, 3);
}
break;
@@ -3899,7 +3989,7 @@
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setMatrix(3, 2);
+ (yyval.interm.typeSpecifierNonArray).setMatrix(4, 4);
}
break;
@@ -3908,7 +3998,7 @@
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setMatrix(2, 4);
+ (yyval.interm.typeSpecifierNonArray).setMatrix(2, 3);
}
break;
@@ -3917,7 +4007,7 @@
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setMatrix(4, 2);
+ (yyval.interm.typeSpecifierNonArray).setMatrix(3, 2);
}
break;
@@ -3926,7 +4016,7 @@
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setMatrix(3, 4);
+ (yyval.interm.typeSpecifierNonArray).setMatrix(2, 4);
}
break;
@@ -3935,7 +4025,7 @@
{
(yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
- (yyval.interm.typeSpecifierNonArray).setMatrix(4, 3);
+ (yyval.interm.typeSpecifierNonArray).setMatrix(4, 2);
}
break;
@@ -3943,7 +4033,8 @@
case 180:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtSampler2D, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).setMatrix(3, 4);
}
break;
@@ -3951,7 +4042,8 @@
case 181:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtSampler3D, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtFloat, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).setMatrix(4, 3);
}
break;
@@ -3959,7 +4051,7 @@
case 182:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtSamplerCube, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtSampler2D, (yylsp[0]));
}
break;
@@ -3967,7 +4059,7 @@
case 183:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtSampler2DArray, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtSampler3D, (yylsp[0]));
}
break;
@@ -3975,7 +4067,7 @@
case 184:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtISampler2D, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtSamplerCube, (yylsp[0]));
}
break;
@@ -3983,7 +4075,7 @@
case 185:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtISampler3D, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtSampler2DArray, (yylsp[0]));
}
break;
@@ -3991,7 +4083,7 @@
case 186:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtISamplerCube, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtISampler2D, (yylsp[0]));
}
break;
@@ -3999,7 +4091,7 @@
case 187:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtISampler2DArray, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtISampler3D, (yylsp[0]));
}
break;
@@ -4007,7 +4099,7 @@
case 188:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtUSampler2D, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtISamplerCube, (yylsp[0]));
}
break;
@@ -4015,7 +4107,7 @@
case 189:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtUSampler3D, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtISampler2DArray, (yylsp[0]));
}
break;
@@ -4023,7 +4115,7 @@
case 190:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtUSamplerCube, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtUSampler2D, (yylsp[0]));
}
break;
@@ -4031,7 +4123,7 @@
case 191:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtUSampler2DArray, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtUSampler3D, (yylsp[0]));
}
break;
@@ -4039,7 +4131,7 @@
case 192:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtSampler2DShadow, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtUSamplerCube, (yylsp[0]));
}
break;
@@ -4047,7 +4139,7 @@
case 193:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtSamplerCubeShadow, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtUSampler2DArray, (yylsp[0]));
}
break;
@@ -4055,7 +4147,7 @@
case 194:
{
- (yyval.interm.typeSpecifierNonArray).initialize(EbtSampler2DArrayShadow, (yylsp[0]));
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtSampler2DShadow, (yylsp[0]));
}
break;
@@ -4063,6 +4155,22 @@
case 195:
{
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtSamplerCubeShadow, (yylsp[0]));
+ }
+
+ break;
+
+ case 196:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtSampler2DArrayShadow, (yylsp[0]));
+ }
+
+ break;
+
+ case 197:
+
+ {
if (!context->supportsExtension("GL_OES_EGL_image_external") &&
!context->supportsExtension("GL_NV_EGL_stream_consumer_external")) {
context->error((yylsp[0]), "unsupported type", "samplerExternalOES");
@@ -4072,7 +4180,7 @@
break;
- case 196:
+ case 198:
{
if (!context->supportsExtension("GL_ARB_texture_rectangle")) {
@@ -4083,7 +4191,7 @@
break;
- case 197:
+ case 199:
{
(yyval.interm.typeSpecifierNonArray) = (yyvsp[0].interm.typeSpecifierNonArray);
@@ -4091,7 +4199,103 @@
break;
- case 198:
+ case 200:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtImage2D, (yylsp[0]));
+ }
+
+ break;
+
+ case 201:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtIImage2D, (yylsp[0]));
+ }
+
+ break;
+
+ case 202:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtUImage2D, (yylsp[0]));
+ }
+
+ break;
+
+ case 203:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtImage3D, (yylsp[0]));
+ }
+
+ break;
+
+ case 204:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtIImage3D, (yylsp[0]));
+ }
+
+ break;
+
+ case 205:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtUImage3D, (yylsp[0]));
+ }
+
+ break;
+
+ case 206:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtImage2DArray, (yylsp[0]));
+ }
+
+ break;
+
+ case 207:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtIImage2DArray, (yylsp[0]));
+ }
+
+ break;
+
+ case 208:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtUImage2DArray, (yylsp[0]));
+ }
+
+ break;
+
+ case 209:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtImageCube, (yylsp[0]));
+ }
+
+ break;
+
+ case 210:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtIImageCube, (yylsp[0]));
+ }
+
+ break;
+
+ case 211:
+
+ {
+ (yyval.interm.typeSpecifierNonArray).initialize(EbtUImageCube, (yylsp[0]));
+ }
+
+ break;
+
+ case 212:
{
//
@@ -4105,13 +4309,13 @@
break;
- case 199:
+ case 213:
{ context->enterStructDeclaration((yylsp[-1]), *(yyvsp[-1].lex).string); }
break;
- case 200:
+ case 214:
{
(yyval.interm.typeSpecifierNonArray) = context->addStructure((yylsp[-5]), (yylsp[-4]), (yyvsp[-4].lex).string, (yyvsp[-1].interm.fieldList));
@@ -4119,13 +4323,13 @@
break;
- case 201:
+ case 215:
{ context->enterStructDeclaration((yylsp[0]), *(yyvsp[0].lex).string); }
break;
- case 202:
+ case 216:
{
(yyval.interm.typeSpecifierNonArray) = context->addStructure((yylsp[-4]), (yyloc), NewPoolTString(""), (yyvsp[-1].interm.fieldList));
@@ -4133,7 +4337,7 @@
break;
- case 203:
+ case 217:
{
(yyval.interm.fieldList) = (yyvsp[0].interm.fieldList);
@@ -4141,7 +4345,7 @@
break;
- case 204:
+ case 218:
{
(yyval.interm.fieldList) = (yyvsp[-1].interm.fieldList);
@@ -4158,7 +4362,7 @@
break;
- case 205:
+ case 219:
{
(yyval.interm.fieldList) = context->addStructDeclaratorList((yyvsp[-2].interm.type), (yyvsp[-1].interm.fieldList));
@@ -4166,7 +4370,7 @@
break;
- case 206:
+ case 220:
{
// ES3 Only, but errors should be handled elsewhere
@@ -4175,7 +4379,7 @@
break;
- case 207:
+ case 221:
{
(yyval.interm.fieldList) = NewPoolTFieldList();
@@ -4184,7 +4388,7 @@
break;
- case 208:
+ case 222:
{
(yyval.interm.fieldList)->push_back((yyvsp[0].interm.field));
@@ -4192,7 +4396,7 @@
break;
- case 209:
+ case 223:
{
context->checkIsNotReserved((yylsp[0]), *(yyvsp[0].lex).string);
@@ -4203,7 +4407,7 @@
break;
- case 210:
+ case 224:
{
context->checkIsNotReserved((yylsp[-3]), *(yyvsp[-3].lex).string);
@@ -4217,91 +4421,91 @@
break;
- case 211:
+ case 225:
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
break;
- case 212:
+ case 226:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
- case 213:
+ case 227:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermBlock); }
break;
- case 214:
+ case 228:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
- case 215:
+ case 229:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
- case 216:
+ case 230:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
- case 217:
+ case 231:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
- case 218:
+ case 232:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermSwitch); }
break;
- case 219:
+ case 233:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermCase); }
break;
- case 220:
+ case 234:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
- case 221:
+ case 235:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
- case 222:
+ case 236:
{ (yyval.interm.intermBlock) = 0; }
break;
- case 223:
+ case 237:
{ context->symbolTable.push(); }
break;
- case 224:
+ case 238:
{ context->symbolTable.pop(); }
break;
- case 225:
+ case 239:
{
if ((yyvsp[-2].interm.intermBlock) != 0) {
@@ -4312,43 +4516,43 @@
break;
- case 226:
+ case 240:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermBlock); }
break;
- case 227:
+ case 241:
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
- case 228:
+ case 242:
{ context->symbolTable.push(); }
break;
- case 229:
+ case 243:
{ context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[0].interm.intermBlock); }
break;
- case 230:
+ case 244:
{ context->symbolTable.push(); }
break;
- case 231:
+ case 245:
{ context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
break;
- case 232:
+ case 246:
{
(yyval.interm.intermBlock) = 0;
@@ -4356,7 +4560,7 @@
break;
- case 233:
+ case 247:
{
if ((yyvsp[-1].interm.intermBlock)) {
@@ -4367,7 +4571,7 @@
break;
- case 234:
+ case 248:
{
(yyval.interm.intermBlock) = new TIntermBlock();
@@ -4377,7 +4581,7 @@
break;
- case 235:
+ case 249:
{
(yyval.interm.intermBlock) = (yyvsp[-1].interm.intermBlock);
@@ -4386,19 +4590,19 @@
break;
- case 236:
+ case 250:
{ (yyval.interm.intermNode) = 0; }
break;
- case 237:
+ case 251:
{ (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
break;
- case 238:
+ case 252:
{
context->checkIsScalarBool((yylsp[-4]), (yyvsp[-2].interm.intermTypedNode));
@@ -4407,7 +4611,7 @@
break;
- case 239:
+ case 253:
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
@@ -4416,7 +4620,7 @@
break;
- case 240:
+ case 254:
{
(yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
@@ -4425,13 +4629,13 @@
break;
- case 241:
+ case 255:
{ context->incrSwitchNestingLevel(); }
break;
- case 242:
+ case 256:
{
(yyval.interm.intermSwitch) = context->addSwitch((yyvsp[-3].interm.intermTypedNode), (yyvsp[0].interm.intermBlock), (yylsp[-5]));
@@ -4440,7 +4644,7 @@
break;
- case 243:
+ case 257:
{
(yyval.interm.intermCase) = context->addCase((yyvsp[-1].interm.intermTypedNode), (yylsp[-2]));
@@ -4448,7 +4652,7 @@
break;
- case 244:
+ case 258:
{
(yyval.interm.intermCase) = context->addDefault((yylsp[-1]));
@@ -4456,7 +4660,7 @@
break;
- case 245:
+ case 259:
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
@@ -4465,7 +4669,7 @@
break;
- case 246:
+ case 260:
{
TIntermNode *intermNode;
@@ -4480,13 +4684,13 @@
break;
- case 247:
+ case 261:
{ context->symbolTable.push(); context->incrLoopNestingLevel(); }
break;
- case 248:
+ case 262:
{
context->symbolTable.pop();
@@ -4496,13 +4700,13 @@
break;
- case 249:
+ case 263:
{ context->incrLoopNestingLevel(); }
break;
- case 250:
+ case 264:
{
context->checkIsScalarBool((yylsp[0]), (yyvsp[-2].interm.intermTypedNode));
@@ -4513,136 +4717,18 @@
break;
- case 251:
-
- { context->symbolTable.push(); context->incrLoopNestingLevel(); }
-
- break;
-
- case 252:
-
- {
- context->symbolTable.pop();
- (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopFor, (yyvsp[-3].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node2), (yyvsp[0].interm.intermNode), (yylsp[-6]));
- context->decrLoopNestingLevel();
- }
-
- break;
-
- case 253:
-
- {
- (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
- }
-
- break;
-
- case 254:
-
- {
- (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
- }
-
- break;
-
- case 255:
-
- {
- (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
- }
-
- break;
-
- case 256:
-
- {
- (yyval.interm.intermTypedNode) = 0;
- }
-
- break;
-
- case 257:
-
- {
- (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
- (yyval.interm.nodePair).node2 = 0;
- }
-
- break;
-
- case 258:
-
- {
- (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
- (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
- }
-
- break;
-
- case 259:
-
- {
- (yyval.interm.intermNode) = context->addBranch(EOpContinue, (yylsp[-1]));
- }
-
- break;
-
- case 260:
-
- {
- (yyval.interm.intermNode) = context->addBranch(EOpBreak, (yylsp[-1]));
- }
-
- break;
-
- case 261:
-
- {
- (yyval.interm.intermNode) = context->addBranch(EOpReturn, (yylsp[-1]));
- }
-
- break;
-
- case 262:
-
- {
- (yyval.interm.intermNode) = context->addBranch(EOpReturn, (yyvsp[-1].interm.intermTypedNode), (yylsp[-2]));
- }
-
- break;
-
- case 263:
-
- {
- FRAG_ONLY("discard", (yylsp[-1]));
- (yyval.interm.intermNode) = context->addBranch(EOpKill, (yylsp[-1]));
- }
-
- break;
-
- case 264:
-
- {
- (yyval.interm.intermBlock) = new TIntermBlock();
- (yyval.interm.intermBlock)->setLine((yyloc));
- (yyval.interm.intermBlock)->appendStatement((yyvsp[0].interm.intermNode));
- context->setTreeRoot((yyval.interm.intermBlock));
- }
-
- break;
-
case 265:
- {
- (yyval.interm.intermBlock)->appendStatement((yyvsp[0].interm.intermNode));
- }
+ { context->symbolTable.push(); context->incrLoopNestingLevel(); }
break;
case 266:
{
- (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+ context->symbolTable.pop();
+ (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopFor, (yyvsp[-3].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node2), (yyvsp[0].interm.intermNode), (yylsp[-6]));
+ context->decrLoopNestingLevel();
}
break;
@@ -4658,7 +4744,7 @@
case 268:
{
- context->parseFunctionDefinitionHeader((yylsp[0]), &((yyvsp[0].interm).function), &(yyvsp[0].interm).intermAggregate);
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
break;
@@ -4666,6 +4752,124 @@
case 269:
{
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+ }
+
+ break;
+
+ case 270:
+
+ {
+ (yyval.interm.intermTypedNode) = 0;
+ }
+
+ break;
+
+ case 271:
+
+ {
+ (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
+ (yyval.interm.nodePair).node2 = 0;
+ }
+
+ break;
+
+ case 272:
+
+ {
+ (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
+ (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
+ }
+
+ break;
+
+ case 273:
+
+ {
+ (yyval.interm.intermNode) = context->addBranch(EOpContinue, (yylsp[-1]));
+ }
+
+ break;
+
+ case 274:
+
+ {
+ (yyval.interm.intermNode) = context->addBranch(EOpBreak, (yylsp[-1]));
+ }
+
+ break;
+
+ case 275:
+
+ {
+ (yyval.interm.intermNode) = context->addBranch(EOpReturn, (yylsp[-1]));
+ }
+
+ break;
+
+ case 276:
+
+ {
+ (yyval.interm.intermNode) = context->addBranch(EOpReturn, (yyvsp[-1].interm.intermTypedNode), (yylsp[-2]));
+ }
+
+ break;
+
+ case 277:
+
+ {
+ FRAG_ONLY("discard", (yylsp[-1]));
+ (yyval.interm.intermNode) = context->addBranch(EOpKill, (yylsp[-1]));
+ }
+
+ break;
+
+ case 278:
+
+ {
+ (yyval.interm.intermBlock) = new TIntermBlock();
+ (yyval.interm.intermBlock)->setLine((yyloc));
+ (yyval.interm.intermBlock)->appendStatement((yyvsp[0].interm.intermNode));
+ context->setTreeRoot((yyval.interm.intermBlock));
+ }
+
+ break;
+
+ case 279:
+
+ {
+ (yyval.interm.intermBlock)->appendStatement((yyvsp[0].interm.intermNode));
+ }
+
+ break;
+
+ case 280:
+
+ {
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+ }
+
+ break;
+
+ case 281:
+
+ {
+ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+ }
+
+ break;
+
+ case 282:
+
+ {
+ context->parseFunctionDefinitionHeader((yylsp[0]), &((yyvsp[0].interm).function), &(yyvsp[0].interm).intermAggregate);
+ }
+
+ break;
+
+ case 283:
+
+ {
(yyval.interm.intermNode) = context->addFunctionDefinition(*((yyvsp[-2].interm).function), (yyvsp[-2].interm).intermAggregate, (yyvsp[0].interm.intermBlock), (yylsp[-2]));
}
diff --git a/src/compiler/translator/glslang_tab.h b/src/compiler/translator/glslang_tab.h
index d0e691d..09025b0 100644
--- a/src/compiler/translator/glslang_tab.h
+++ b/src/compiler/translator/glslang_tab.h
@@ -50,134 +50,148 @@
/* Token type. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
- enum yytokentype
- {
- INVARIANT = 258,
- HIGH_PRECISION = 259,
- MEDIUM_PRECISION = 260,
- LOW_PRECISION = 261,
- PRECISION = 262,
- ATTRIBUTE = 263,
- CONST_QUAL = 264,
- BOOL_TYPE = 265,
- FLOAT_TYPE = 266,
- INT_TYPE = 267,
- UINT_TYPE = 268,
- BREAK = 269,
- CONTINUE = 270,
- DO = 271,
- ELSE = 272,
- FOR = 273,
- IF = 274,
- DISCARD = 275,
- RETURN = 276,
- SWITCH = 277,
- CASE = 278,
- DEFAULT = 279,
- BVEC2 = 280,
- BVEC3 = 281,
- BVEC4 = 282,
- IVEC2 = 283,
- IVEC3 = 284,
- IVEC4 = 285,
- VEC2 = 286,
- VEC3 = 287,
- VEC4 = 288,
- UVEC2 = 289,
- UVEC3 = 290,
- UVEC4 = 291,
- MATRIX2 = 292,
- MATRIX3 = 293,
- MATRIX4 = 294,
- IN_QUAL = 295,
- OUT_QUAL = 296,
- INOUT_QUAL = 297,
- UNIFORM = 298,
- VARYING = 299,
- 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
- };
+enum yytokentype
+{
+ INVARIANT = 258,
+ HIGH_PRECISION = 259,
+ MEDIUM_PRECISION = 260,
+ LOW_PRECISION = 261,
+ PRECISION = 262,
+ ATTRIBUTE = 263,
+ CONST_QUAL = 264,
+ BOOL_TYPE = 265,
+ FLOAT_TYPE = 266,
+ INT_TYPE = 267,
+ UINT_TYPE = 268,
+ BREAK = 269,
+ CONTINUE = 270,
+ DO = 271,
+ ELSE = 272,
+ FOR = 273,
+ IF = 274,
+ DISCARD = 275,
+ RETURN = 276,
+ SWITCH = 277,
+ CASE = 278,
+ DEFAULT = 279,
+ BVEC2 = 280,
+ BVEC3 = 281,
+ BVEC4 = 282,
+ IVEC2 = 283,
+ IVEC3 = 284,
+ IVEC4 = 285,
+ VEC2 = 286,
+ VEC3 = 287,
+ VEC4 = 288,
+ UVEC2 = 289,
+ UVEC3 = 290,
+ UVEC4 = 291,
+ MATRIX2 = 292,
+ MATRIX3 = 293,
+ MATRIX4 = 294,
+ IN_QUAL = 295,
+ OUT_QUAL = 296,
+ INOUT_QUAL = 297,
+ UNIFORM = 298,
+ VARYING = 299,
+ MATRIX2x3 = 300,
+ MATRIX3x2 = 301,
+ MATRIX2x4 = 302,
+ MATRIX4x2 = 303,
+ MATRIX3x4 = 304,
+ MATRIX4x3 = 305,
+ CENTROID = 306,
+ FLAT = 307,
+ SMOOTH = 308,
+ READONLY = 309,
+ WRITEONLY = 310,
+ STRUCT = 311,
+ VOID_TYPE = 312,
+ WHILE = 313,
+ SAMPLER2D = 314,
+ SAMPLERCUBE = 315,
+ SAMPLER_EXTERNAL_OES = 316,
+ SAMPLER2DRECT = 317,
+ SAMPLER2DARRAY = 318,
+ ISAMPLER2D = 319,
+ ISAMPLER3D = 320,
+ ISAMPLERCUBE = 321,
+ ISAMPLER2DARRAY = 322,
+ USAMPLER2D = 323,
+ USAMPLER3D = 324,
+ USAMPLERCUBE = 325,
+ USAMPLER2DARRAY = 326,
+ SAMPLER3D = 327,
+ SAMPLER3DRECT = 328,
+ SAMPLER2DSHADOW = 329,
+ SAMPLERCUBESHADOW = 330,
+ SAMPLER2DARRAYSHADOW = 331,
+ IMAGE2D = 332,
+ IIMAGE2D = 333,
+ UIMAGE2D = 334,
+ IMAGE3D = 335,
+ IIMAGE3D = 336,
+ UIMAGE3D = 337,
+ IMAGE2DARRAY = 338,
+ IIMAGE2DARRAY = 339,
+ UIMAGE2DARRAY = 340,
+ IMAGECUBE = 341,
+ IIMAGECUBE = 342,
+ UIMAGECUBE = 343,
+ LAYOUT = 344,
+ IDENTIFIER = 345,
+ TYPE_NAME = 346,
+ FLOATCONSTANT = 347,
+ INTCONSTANT = 348,
+ UINTCONSTANT = 349,
+ BOOLCONSTANT = 350,
+ FIELD_SELECTION = 351,
+ LEFT_OP = 352,
+ RIGHT_OP = 353,
+ INC_OP = 354,
+ DEC_OP = 355,
+ LE_OP = 356,
+ GE_OP = 357,
+ EQ_OP = 358,
+ NE_OP = 359,
+ AND_OP = 360,
+ OR_OP = 361,
+ XOR_OP = 362,
+ MUL_ASSIGN = 363,
+ DIV_ASSIGN = 364,
+ ADD_ASSIGN = 365,
+ MOD_ASSIGN = 366,
+ LEFT_ASSIGN = 367,
+ RIGHT_ASSIGN = 368,
+ AND_ASSIGN = 369,
+ XOR_ASSIGN = 370,
+ OR_ASSIGN = 371,
+ SUB_ASSIGN = 372,
+ LEFT_PAREN = 373,
+ RIGHT_PAREN = 374,
+ LEFT_BRACKET = 375,
+ RIGHT_BRACKET = 376,
+ LEFT_BRACE = 377,
+ RIGHT_BRACE = 378,
+ DOT = 379,
+ COMMA = 380,
+ COLON = 381,
+ EQUAL = 382,
+ SEMICOLON = 383,
+ BANG = 384,
+ DASH = 385,
+ TILDE = 386,
+ PLUS = 387,
+ STAR = 388,
+ SLASH = 389,
+ PERCENT = 390,
+ LEFT_ANGLE = 391,
+ RIGHT_ANGLE = 392,
+ VERTICAL_BAR = 393,
+ CARET = 394,
+ AMPERSAND = 395,
+ QUESTION = 396
+};
#endif
/* Value type. */
@@ -204,6 +218,7 @@
TIntermNodePair nodePair;
TIntermTyped* intermTypedNode;
TIntermAggregate* intermAggregate;
+ TIntermBlock *intermBlock;
TIntermSwitch* intermSwitch;
TIntermCase* intermCase;
};
diff --git a/src/compiler/translator/util.cpp b/src/compiler/translator/util.cpp
index 584d653..54a1a2c 100644
--- a/src/compiler/translator/util.cpp
+++ b/src/compiler/translator/util.cpp
@@ -159,6 +159,30 @@
case EbtSampler2DShadow: return GL_SAMPLER_2D_SHADOW;
case EbtSamplerCubeShadow: return GL_SAMPLER_CUBE_SHADOW;
case EbtSampler2DArrayShadow: return GL_SAMPLER_2D_ARRAY_SHADOW;
+ case EbtImage2D:
+ return GL_IMAGE_2D;
+ case EbtIImage2D:
+ return GL_INT_IMAGE_2D;
+ case EbtUImage2D:
+ return GL_UNSIGNED_INT_IMAGE_2D;
+ case EbtImage2DArray:
+ return GL_IMAGE_2D_ARRAY;
+ case EbtIImage2DArray:
+ return GL_INT_IMAGE_2D_ARRAY;
+ case EbtUImage2DArray:
+ return GL_UNSIGNED_INT_IMAGE_2D_ARRAY;
+ case EbtImage3D:
+ return GL_IMAGE_3D;
+ case EbtIImage3D:
+ return GL_INT_IMAGE_3D;
+ case EbtUImage3D:
+ return GL_UNSIGNED_INT_IMAGE_3D;
+ case EbtImageCube:
+ return GL_IMAGE_CUBE;
+ case EbtIImageCube:
+ return GL_INT_IMAGE_CUBE;
+ case EbtUImageCube:
+ return GL_UNSIGNED_INT_IMAGE_CUBE;
default: UNREACHABLE();
}