Commit bc58515e by Jiajia Qin Committed by Geoff Lang

ES31: Add 'buffer' qualifier support in shader

This change added 'buffer' qualifier support in shader which corresponds to ESSL 3.1 spec, session 4.3.7 'Buffer Variables'. BUG=angleproject:1951 TEST=angle_unittests:BufferVariablesTest Change-Id: I2ecb5317d5ea9d378a60b03f86bdae04dbd89e9f Reviewed-on: https://chromium-review.googlesource.com/534960Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent c5af8ba6
......@@ -25,7 +25,7 @@
// Version number for shader translation API.
// It is incremented every time the API changes.
#define ANGLE_SH_VERSION 176
#define ANGLE_SH_VERSION 177
enum ShShaderSpec
{
......@@ -401,6 +401,9 @@ struct ShBuiltInResources
// maximum number of uniform block bindings
int MaxUniformBufferBindings;
// maximum number of shader storage buffer bindings
int MaxShaderStorageBufferBindings;
};
//
......
......@@ -502,6 +502,7 @@ enum TQualifier
EvqVaryingIn, // readonly, fragment shaders only
EvqVaryingOut, // vertex shaders only read/write
EvqUniform, // Readonly, vertex and fragment
EvqBuffer, // read/write, vertex, fragment and compute shader
EvqVertexIn, // Vertex shader input
EvqFragmentOut, // Fragment shader output
......@@ -753,6 +754,7 @@ inline const char *getQualifierString(TQualifier q)
case EvqVaryingIn: return "varying";
case EvqVaryingOut: return "varying";
case EvqUniform: return "uniform";
case EvqBuffer: return "buffer";
case EvqVertexIn: return "in";
case EvqFragmentOut: return "out";
case EvqVertexOut: return "out";
......
......@@ -143,8 +143,10 @@ TParseContext::TParseContext(TSymbolTable &symt,
mFunctionReturnsValue(false),
mChecksPrecisionErrors(checksPrecErrors),
mFragmentPrecisionHighOnESSL1(false),
mDefaultMatrixPacking(EmpColumnMajor),
mDefaultBlockStorage(sh::IsWebGLBasedSpec(spec) ? EbsStd140 : EbsShared),
mDefaultUniformMatrixPacking(EmpColumnMajor),
mDefaultUniformBlockStorage(sh::IsWebGLBasedSpec(spec) ? EbsStd140 : EbsShared),
mDefaultBufferMatrixPacking(EmpColumnMajor),
mDefaultBufferBlockStorage(sh::IsWebGLBasedSpec(spec) ? EbsStd140 : EbsShared),
mDiagnostics(diagnostics),
mDirectiveHandler(ext,
*mDiagnostics,
......@@ -167,6 +169,7 @@ TParseContext::TParseContext(TSymbolTable &symt,
mMaxUniformLocations(resources.MaxUniformLocations),
mMaxUniformBufferBindings(resources.MaxUniformBufferBindings),
mMaxAtomicCounterBindings(resources.MaxAtomicCounterBindings),
mMaxShaderStorageBufferBindings(resources.MaxShaderStorageBufferBindings),
mDeclaringFunction(false)
{
mComputeShaderLocalSize.fill(-1);
......@@ -492,6 +495,10 @@ bool TParseContext::checkCanBeLValue(const TSourceLoc &line, const char *op, TIn
message = "can't modify a variable with type ";
message += getBasicString(node->getBasicType());
}
else if (node->getMemoryQualifier().readonly)
{
message = "can't modify a readonly variable";
}
}
if (message.empty() && binaryNode == 0 && symNode == 0)
......@@ -618,6 +625,11 @@ bool TParseContext::checkConstructorArguments(const TSourceLoc &line,
error(line, reason.c_str(), "constructor");
return false;
}
else if (argTyped->getMemoryQualifier().writeonly)
{
error(line, "cannot convert a variable with writeonly", "constructor");
return false;
}
if (argTyped->getBasicType() == EbtVoid)
{
error(line, "cannot convert a void", "constructor");
......@@ -1207,7 +1219,16 @@ void TParseContext::nonEmptyDeclarationErrorCheck(const TPublicType &publicType,
getQualifierString(publicType.qualifier));
return;
}
break;
case EvqBuffer:
if (publicType.getBasicType() != EbtInterfaceBlock)
{
error(identifierLocation,
"cannot declare buffer variables at global scope(outside a block)",
getQualifierString(publicType.qualifier));
return;
}
break;
default:
break;
}
......@@ -1429,13 +1450,28 @@ void TParseContext::checkSamplerBindingIsValid(const TSourceLoc &location,
}
}
void TParseContext::checkBlockBindingIsValid(const TSourceLoc &location, int binding, int arraySize)
void TParseContext::checkBlockBindingIsValid(const TSourceLoc &location,
const TQualifier &qualifier,
int binding,
int arraySize)
{
int size = (arraySize == 0 ? 1 : arraySize);
if (binding + size > mMaxUniformBufferBindings)
if (qualifier == EvqUniform)
{
error(location, "interface block binding greater than MAX_UNIFORM_BUFFER_BINDINGS",
"binding");
if (binding + size > mMaxUniformBufferBindings)
{
error(location, "uniform block binding greater than MAX_UNIFORM_BUFFER_BINDINGS",
"binding");
}
}
else if (qualifier == EvqBuffer)
{
if (binding + size > mMaxShaderStorageBufferBindings)
{
error(location,
"shader storage block binding greater than MAX_SHADER_STORAGE_BUFFER_BINDINGS",
"binding");
}
}
}
void TParseContext::checkAtomicCounterBindingIsValid(const TSourceLoc &location, int binding)
......@@ -1466,15 +1502,26 @@ void TParseContext::checkYuvIsNotSpecified(const TSourceLoc &location, bool yuv)
}
}
void TParseContext::functionCallLValueErrorCheck(const TFunction *fnCandidate,
TIntermAggregate *fnCall)
void TParseContext::functionCallRValueLValueErrorCheck(const TFunction *fnCandidate,
TIntermAggregate *fnCall)
{
for (size_t i = 0; i < fnCandidate->getParamCount(); ++i)
{
TQualifier qual = fnCandidate->getParam(i).type->getQualifier();
TIntermTyped *argument = (*(fnCall->getSequence()))[i]->getAsTyped();
if (!IsImage(argument->getBasicType()) && (IsQualifierUnspecified(qual) || qual == EvqIn ||
qual == EvqInOut || qual == EvqConstReadOnly))
{
if (argument->getMemoryQualifier().writeonly)
{
error(argument->getLine(),
"Writeonly value cannot be passed for 'in' or 'inout' parameters.",
fnCall->getFunctionSymbolInfo()->getName().c_str());
return;
}
}
if (qual == EvqOut || qual == EvqInOut)
{
TIntermTyped *argument = (*(fnCall->getSequence()))[i]->getAsTyped();
if (!checkCanBeLValue(argument->getLine(), "assign", argument))
{
error(argument->getLine(),
......@@ -2103,25 +2150,28 @@ void TParseContext::checkLocalVariableConstStorageQualifier(const TQualifierWrap
void TParseContext::checkMemoryQualifierIsNotSpecified(const TMemoryQualifier &memoryQualifier,
const TSourceLoc &location)
{
const std::string reason(
"Only allowed with shader storage blocks, variables declared within shader storage blocks "
"and variables declared as image types.");
if (memoryQualifier.readonly)
{
error(location, "Only allowed with images.", "readonly");
error(location, reason.c_str(), "readonly");
}
if (memoryQualifier.writeonly)
{
error(location, "Only allowed with images.", "writeonly");
error(location, reason.c_str(), "writeonly");
}
if (memoryQualifier.coherent)
{
error(location, "Only allowed with images.", "coherent");
error(location, reason.c_str(), "coherent");
}
if (memoryQualifier.restrictQualifier)
{
error(location, "Only allowed with images.", "restrict");
error(location, reason.c_str(), "restrict");
}
if (memoryQualifier.volatileQualifier)
{
error(location, "Only allowed with images.", "volatile");
error(location, reason.c_str(), "volatile");
}
}
......@@ -2711,9 +2761,9 @@ void TParseContext::parseGlobalLayoutQualifier(const TTypeQualifierBuilder &type
return;
}
if (typeQualifier.qualifier != EvqUniform)
if (typeQualifier.qualifier != EvqUniform && typeQualifier.qualifier != EvqBuffer)
{
error(typeQualifier.line, "invalid qualifier: global layout must be uniform",
error(typeQualifier.line, "invalid qualifier: global layout can only be set for blocks",
getQualifierString(typeQualifier.qualifier));
return;
}
......@@ -2729,12 +2779,26 @@ void TParseContext::parseGlobalLayoutQualifier(const TTypeQualifierBuilder &type
if (layoutQualifier.matrixPacking != EmpUnspecified)
{
mDefaultMatrixPacking = layoutQualifier.matrixPacking;
if (typeQualifier.qualifier == EvqUniform)
{
mDefaultUniformMatrixPacking = layoutQualifier.matrixPacking;
}
else if (typeQualifier.qualifier == EvqBuffer)
{
mDefaultBufferMatrixPacking = layoutQualifier.matrixPacking;
}
}
if (layoutQualifier.blockStorage != EbsUnspecified)
{
mDefaultBlockStorage = layoutQualifier.blockStorage;
if (typeQualifier.qualifier == EvqUniform)
{
mDefaultUniformBlockStorage = layoutQualifier.blockStorage;
}
else if (typeQualifier.qualifier == EvqBuffer)
{
mDefaultBufferBlockStorage = layoutQualifier.blockStorage;
}
}
}
}
......@@ -3122,9 +3186,16 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
TTypeQualifier typeQualifier = typeQualifierBuilder.getVariableTypeQualifier(mDiagnostics);
if (typeQualifier.qualifier != EvqUniform)
if (mShaderVersion < 310 && typeQualifier.qualifier != EvqUniform)
{
error(typeQualifier.line,
"invalid qualifier: interface blocks must be uniform in version lower than GLSL ES "
"3.10",
getQualifierString(typeQualifier.qualifier));
}
else if (typeQualifier.qualifier != EvqUniform && typeQualifier.qualifier != EvqBuffer)
{
error(typeQualifier.line, "invalid qualifier: interface blocks must be uniform",
error(typeQualifier.line, "invalid qualifier: interface blocks must be uniform or buffer",
getQualifierString(typeQualifier.qualifier));
}
......@@ -3133,7 +3204,10 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
error(typeQualifier.line, "invalid qualifier on interface block member", "invariant");
}
checkMemoryQualifierIsNotSpecified(typeQualifier.memoryQualifier, typeQualifier.line);
if (typeQualifier.qualifier != EvqBuffer)
{
checkMemoryQualifierIsNotSpecified(typeQualifier.memoryQualifier, typeQualifier.line);
}
// add array index
unsigned int arraySize = 0;
......@@ -3148,8 +3222,8 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
}
else
{
checkBlockBindingIsValid(typeQualifier.line, typeQualifier.layoutQualifier.binding,
arraySize);
checkBlockBindingIsValid(typeQualifier.line, typeQualifier.qualifier,
typeQualifier.layoutQualifier.binding, arraySize);
}
checkYuvIsNotSpecified(typeQualifier.line, typeQualifier.layoutQualifier.yuv);
......@@ -3159,12 +3233,26 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
if (blockLayoutQualifier.matrixPacking == EmpUnspecified)
{
blockLayoutQualifier.matrixPacking = mDefaultMatrixPacking;
if (typeQualifier.qualifier == EvqUniform)
{
blockLayoutQualifier.matrixPacking = mDefaultUniformMatrixPacking;
}
else if (typeQualifier.qualifier == EvqBuffer)
{
blockLayoutQualifier.matrixPacking = mDefaultBufferMatrixPacking;
}
}
if (blockLayoutQualifier.blockStorage == EbsUnspecified)
{
blockLayoutQualifier.blockStorage = mDefaultBlockStorage;
if (typeQualifier.qualifier == EvqUniform)
{
blockLayoutQualifier.blockStorage = mDefaultUniformBlockStorage;
}
else if (typeQualifier.qualifier == EvqBuffer)
{
blockLayoutQualifier.blockStorage = mDefaultBufferBlockStorage;
}
}
checkWorkGroupSizeIsNotSpecified(nameLine, blockLayoutQualifier);
......@@ -3194,7 +3282,20 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
switch (qualifier)
{
case EvqGlobal:
break;
case EvqUniform:
if (typeQualifier.qualifier == EvqBuffer)
{
error(field->line(), "invalid qualifier on shader storage block member",
getQualifierString(qualifier));
}
break;
case EvqBuffer:
if (typeQualifier.qualifier == EvqUniform)
{
error(field->line(), "invalid qualifier on uniform block member",
getQualifierString(qualifier));
}
break;
default:
error(field->line(), "invalid qualifier on interface block member",
......@@ -3230,6 +3331,24 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
}
fieldType->setLayoutQualifier(fieldLayoutQualifier);
if (typeQualifier.qualifier == EvqBuffer)
{
// set memory qualifiers
// GLSL ES 3.10 session 4.9 [Memory Access Qualifiers]. When a block declaration is
// qualified with a memory qualifier, it is as if all of its members were declared with
// the same memory qualifier.
const TMemoryQualifier &blockMemoryQualifier = typeQualifier.memoryQualifier;
TMemoryQualifier fieldMemoryQualifier = fieldType->getMemoryQualifier();
fieldMemoryQualifier.readonly |= blockMemoryQualifier.readonly;
fieldMemoryQualifier.writeonly |= blockMemoryQualifier.writeonly;
fieldMemoryQualifier.coherent |= blockMemoryQualifier.coherent;
fieldMemoryQualifier.restrictQualifier |= blockMemoryQualifier.restrictQualifier;
fieldMemoryQualifier.volatileQualifier |= blockMemoryQualifier.volatileQualifier;
// TODO(jiajia.qin@intel.com): Decide whether if readonly and writeonly buffer variable
// is legal. See bug https://github.com/KhronosGroup/OpenGL-API/issues/7
fieldType->setMemoryQualifier(fieldMemoryQualifier);
}
}
TInterfaceBlock *interfaceBlock =
......@@ -4190,6 +4309,12 @@ TIntermTyped *TParseContext::createUnaryMath(TOperator op,
break;
}
if (child->getMemoryQualifier().writeonly)
{
unaryOpError(loc, GetOperatorString(op), child->getCompleteString());
return nullptr;
}
TIntermUnary *node = new TIntermUnary(op, child);
node->setLine(loc);
......@@ -4239,6 +4364,29 @@ bool TParseContext::binaryOpCommonCheck(TOperator op,
}
}
if (right->getMemoryQualifier().writeonly)
{
error(loc, "Invalid operation for variables with writeonly", GetOperatorString(op));
return false;
}
if (left->getMemoryQualifier().writeonly)
{
switch (op)
{
case EOpAssign:
case EOpInitialize:
case EOpIndexDirect:
case EOpIndexIndirect:
case EOpIndexDirectStruct:
case EOpIndexDirectInterfaceBlock:
break;
default:
error(loc, "Invalid operation for variables with writeonly", GetOperatorString(op));
return false;
}
}
if (left->getType().getStruct() || right->getType().getStruct())
{
switch (op)
......@@ -4966,7 +5114,7 @@ TIntermTyped *TParseContext::addNonConstructorFunctionCall(TFunction *fnCall,
callNode->setLine(loc);
// Some built-in functions have out parameters too.
functionCallLValueErrorCheck(fnCandidate, callNode);
functionCallRValueLValueErrorCheck(fnCandidate, callNode);
if (TIntermAggregate::CanFoldAggregateBuiltInOp(callNode->getOp()))
{
......@@ -5001,7 +5149,7 @@ TIntermTyped *TParseContext::addNonConstructorFunctionCall(TFunction *fnCall,
checkImageMemoryAccessForUserDefinedFunctions(fnCandidate, callNode);
}
functionCallLValueErrorCheck(fnCandidate, callNode);
functionCallRValueLValueErrorCheck(fnCandidate, callNode);
callNode->setLine(loc);
......@@ -5045,6 +5193,13 @@ TIntermTyped *TParseContext::addTernarySelection(TIntermTyped *cond,
return falseExpression;
}
if (cond->getMemoryQualifier().writeonly || trueExpression->getMemoryQualifier().writeonly ||
falseExpression->getMemoryQualifier().writeonly)
{
error(loc, "ternary operator is not allowed for variables with writeonly", "?:");
return falseExpression;
}
// ESSL 1.00.17 sections 5.2 and 5.7:
// Ternary operator is not among the operators allowed for structures/arrays.
// ESSL 3.00.6 section 5.7:
......
......@@ -155,7 +155,7 @@ class TParseContext : angle::NonCopyable
int versionRequired);
bool checkWorkGroupSizeIsNotSpecified(const TSourceLoc &location,
const TLayoutQualifier &layoutQualifier);
void functionCallLValueErrorCheck(const TFunction *fnCandidate, TIntermAggregate *fnCall);
void functionCallRValueLValueErrorCheck(const TFunction *fnCandidate, TIntermAggregate *fnCall);
void checkInvariantVariableQualifier(bool invariant,
const TQualifier qualifier,
const TSourceLoc &invariantLocation);
......@@ -464,7 +464,10 @@ class TParseContext : angle::NonCopyable
void checkOffsetIsNotSpecified(const TSourceLoc &location, int offset);
void checkImageBindingIsValid(const TSourceLoc &location, int binding, int arraySize);
void checkSamplerBindingIsValid(const TSourceLoc &location, int binding, int arraySize);
void checkBlockBindingIsValid(const TSourceLoc &location, int binding, int arraySize);
void checkBlockBindingIsValid(const TSourceLoc &location,
const TQualifier &qualifier,
int binding,
int arraySize);
void checkAtomicCounterBindingIsValid(const TSourceLoc &location, int binding);
void checkUniformLocationInRange(const TSourceLoc &location,
......@@ -527,8 +530,10 @@ class TParseContext : angle::NonCopyable
// without precision, explicit or implicit.
bool mFragmentPrecisionHighOnESSL1; // true if highp precision is supported when compiling
// ESSL1.
TLayoutMatrixPacking mDefaultMatrixPacking;
TLayoutBlockStorage mDefaultBlockStorage;
TLayoutMatrixPacking mDefaultUniformMatrixPacking;
TLayoutBlockStorage mDefaultUniformBlockStorage;
TLayoutMatrixPacking mDefaultBufferMatrixPacking;
TLayoutBlockStorage mDefaultBufferBlockStorage;
TString mHashErrMsg;
TDiagnostics *mDiagnostics;
TDirectiveHandler mDirectiveHandler;
......@@ -554,6 +559,7 @@ class TParseContext : angle::NonCopyable
int mMaxUniformLocations;
int mMaxUniformBufferBindings;
int mMaxAtomicCounterBindings;
int mMaxShaderStorageBufferBindings;
// keeps track whether we are declaring / defining a function
bool mDeclaringFunction;
......
......@@ -581,7 +581,13 @@ bool CollectVariablesTraverser::visitDeclaration(Visit, TIntermDeclaration *node
const TIntermSymbol &variable = *variableNode->getAsSymbolNode();
if (typedNode.getBasicType() == EbtInterfaceBlock)
{
mInterfaceBlocks->push_back(recordInterfaceBlock(variable));
// TODO(jiajia.qin@intel.com): In order not to affect the old set of mInterfaceBlocks,
// only uniform blocks are added into mInterfaceBlocks. Refactor it to gather
// uniformBlocks and shaderStorageBlocks separately.
if (qualifier == EvqUniform)
{
mInterfaceBlocks->push_back(recordInterfaceBlock(variable));
}
}
else
{
......@@ -622,12 +628,15 @@ bool CollectVariablesTraverser::visitBinary(Visit, TIntermBinary *binaryNode)
const TInterfaceBlock *interfaceBlock = blockNode->getType().getInterfaceBlock();
InterfaceBlock *namedBlock = FindVariable(interfaceBlock->name(), mInterfaceBlocks);
ASSERT(namedBlock);
namedBlock->staticUse = true;
unsigned int fieldIndex = static_cast<unsigned int>(constantUnion->getIConst(0));
ASSERT(fieldIndex < namedBlock->fields.size());
namedBlock->fields[fieldIndex].staticUse = true;
// TODO(jiajia.qin@intel.com): Currently, only uniform blocks are added into
// mInterfaceBlocks.
if (namedBlock)
{
namedBlock->staticUse = true;
unsigned int fieldIndex = static_cast<unsigned int>(constantUnion->getIConst(0));
ASSERT(fieldIndex < namedBlock->fields.size());
namedBlock->fields[fieldIndex].staticUse = true;
}
return false;
}
......
......@@ -114,6 +114,7 @@ O [0-7]
"attribute" { return ES2_keyword_ES3_reserved(context, ATTRIBUTE); }
"const" { return CONST_QUAL; }
"uniform" { return UNIFORM; }
"buffer" { return ES2_and_ES3_ident_ES3_1_keyword(context, BUFFER); }
"varying" { return ES2_keyword_ES3_reserved(context, VARYING); }
"break" { return BREAK; }
......
......@@ -162,7 +162,7 @@ extern void yyerror(YYLTYPE* yylloc, TParseContext* context, void *scanner, cons
%token <lex> ATTRIBUTE CONST_QUAL BOOL_TYPE FLOAT_TYPE INT_TYPE UINT_TYPE
%token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT
%token <lex> BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 VEC2 VEC3 VEC4 UVEC2 UVEC3 UVEC4
%token <lex> MATRIX2 MATRIX3 MATRIX4 IN_QUAL OUT_QUAL INOUT_QUAL UNIFORM VARYING
%token <lex> MATRIX2 MATRIX3 MATRIX4 IN_QUAL OUT_QUAL INOUT_QUAL UNIFORM BUFFER VARYING
%token <lex> MATRIX2x3 MATRIX3x2 MATRIX2x4 MATRIX4x2 MATRIX3x4 MATRIX4x3
%token <lex> CENTROID FLAT SMOOTH
%token <lex> READONLY WRITEONLY COHERENT RESTRICT VOLATILE SHARED
......@@ -857,6 +857,10 @@ storage_qualifier
| UNIFORM {
$$ = context->parseGlobalStorageQualifier(EvqUniform, @1);
}
| BUFFER {
ES3_1_ONLY("buffer", @1, "storage qualifier");
$$ = context->parseGlobalStorageQualifier(EvqBuffer, @1);
}
| READONLY {
$$ = new TMemoryQualifierWrapper(EvqReadOnly, @1);
}
......
......@@ -63,37 +63,13 @@
#ifdef yyget_lval
#define yyget_lval_ALREADY_DEFINED
#else
#define yyget_lval yyget_lval
#endif
#define yyget_lval yyget_lval
#define yyset_lval yyset_lval
#ifdef yyset_lval
#define yyset_lval_ALREADY_DEFINED
#else
#define yyset_lval yyset_lval
#endif
#ifdef yyget_lloc
#define yyget_lloc_ALREADY_DEFINED
#else
#define yyget_lloc yyget_lloc
#endif
#ifdef yyset_lloc
#define yyset_lloc_ALREADY_DEFINED
#else
#define yyset_lloc yyset_lloc
#endif
#define yyget_lloc yyget_lloc
#define yyset_lloc yyset_lloc
......@@ -514,8 +490,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
yyg->yy_hold_char = *yy_cp; \
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
#define YY_NUM_RULES 246
#define YY_END_OF_BUFFER 247
#define YY_NUM_RULES 247
#define YY_END_OF_BUFFER 248
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
......@@ -523,105 +499,105 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
static const flex_int16_t yy_accept[886] =
static const flex_int16_t yy_accept[891] =
{ 0,
0, 0, 0, 0, 247, 245, 244, 244, 228, 234,
239, 223, 224, 232, 231, 220, 229, 227, 233, 186,
186, 221, 217, 235, 222, 236, 240, 183, 225, 226,
238, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 218, 237, 219, 230, 243, 242, 246,
241, 214, 200, 219, 208, 203, 198, 206, 196, 207,
197, 192, 199, 191, 185, 186, 0, 189, 0, 226,
218, 225, 215, 211, 213, 212, 216, 183, 204, 210,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 12, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 15, 183, 183,
23, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 205, 209, 241, 0,
195, 191, 0, 194, 188, 0, 190, 184, 201, 202,
183, 183, 143, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 13, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 28, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
24, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 0, 192, 0,
191, 193, 187, 183, 183, 183, 183, 31, 183, 183,
18, 180, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 16, 146, 183, 183, 183, 183, 21, 183,
183, 150, 161, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 158, 4, 36, 37,
38, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 149, 32, 183, 183,
29, 183, 183, 183, 183, 183, 183, 183, 48, 49,
50, 30, 183, 183, 183, 183, 183, 183, 183, 183,
10, 54, 55, 56, 183, 144, 183, 183, 7, 183,
183, 183, 183, 170, 171, 172, 183, 33, 183, 162,
27, 173, 174, 175, 2, 167, 168, 169, 183, 183,
183, 25, 165, 183, 183, 183, 183, 183, 51, 52,
53, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 108, 183, 183, 183, 183, 183, 183, 183,
183, 159, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 145, 183, 183, 182, 57, 58, 59,
183, 183, 14, 183, 183, 183, 113, 183, 183, 183,
183, 111, 183, 183, 183, 160, 155, 114, 183, 183,
183, 183, 183, 183, 151, 183, 183, 183, 183, 183,
83, 39, 42, 44, 43, 40, 46, 45, 47, 41,
183, 183, 183, 183, 166, 142, 183, 183, 153, 183,
183, 183, 35, 109, 26, 179, 22, 154, 82, 183,
164, 17, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 19, 34,
183, 183, 183, 183, 183, 183, 115, 88, 94, 183,
183, 183, 183, 183, 85, 87, 3, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 147, 183,
183, 183, 183, 183, 8, 183, 183, 9, 183, 183,
183, 183, 183, 183, 20, 102, 11, 156, 116, 89,
96, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 152, 183, 183, 183, 100, 106,
103, 183, 183, 183, 183, 183, 183, 183, 148, 117,
90, 95, 183, 183, 163, 183, 104, 183, 183, 183,
183, 6, 183, 183, 183, 183, 183, 183, 183, 183,
183, 99, 157, 1, 183, 183, 183, 183, 183, 183,
181, 183, 112, 5, 176, 60, 63, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
101, 183, 183, 183, 183, 183, 183, 97, 183, 183,
183, 183, 183, 130, 68, 69, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
110, 183, 183, 183, 98, 132, 73, 74, 183, 183,
183, 183, 105, 183, 183, 183, 183, 183, 183, 183,
125, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 67, 183, 183, 183, 183, 61, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 126, 118, 183, 91, 183, 183, 183, 72,
183, 183, 70, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 127, 183, 183,
77, 183, 183, 75, 183, 183, 119, 92, 183, 121,
183, 122, 183, 183, 183, 183, 183, 183, 107, 183,
183, 183, 183, 65, 183, 64, 136, 183, 183, 120,
93, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 134, 137, 183, 128, 183, 66, 183,
183, 183, 183, 183, 183, 183, 183, 135, 138, 183,
183, 183, 183, 131, 71, 183, 183, 183, 177, 183,
183, 183, 78, 183, 183, 133, 76, 183, 183, 183,
183, 183, 183, 183, 183, 183, 139, 183, 183, 183,
183, 183, 183, 183, 183, 140, 183, 183, 183, 183,
79, 183, 141, 84, 183, 123, 124, 86, 183, 183,
183, 62, 183, 183, 183, 178, 183, 129, 80, 183,
183, 183, 183, 81, 0
0, 0, 0, 0, 248, 246, 245, 245, 229, 235,
240, 224, 225, 233, 232, 221, 230, 228, 234, 187,
187, 222, 218, 236, 223, 237, 241, 184, 226, 227,
239, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 219, 238, 220, 231, 244, 243, 247,
242, 215, 201, 220, 209, 204, 199, 207, 197, 208,
198, 193, 200, 192, 186, 187, 0, 190, 0, 227,
219, 226, 216, 212, 214, 213, 217, 184, 205, 211,
184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 13, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 16, 184,
184, 24, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 206, 210, 242,
0, 196, 192, 0, 195, 189, 0, 191, 185, 202,
203, 184, 184, 144, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 14, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 29,
184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 25, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 0,
193, 0, 192, 194, 188, 184, 184, 184, 184, 32,
184, 184, 184, 19, 181, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 17, 147, 184, 184, 184,
184, 22, 184, 184, 151, 162, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 159,
4, 37, 38, 39, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 150,
33, 184, 184, 30, 184, 184, 184, 184, 184, 184,
184, 49, 50, 51, 31, 184, 184, 184, 184, 184,
184, 184, 184, 11, 184, 55, 56, 57, 184, 145,
184, 184, 7, 184, 184, 184, 184, 171, 172, 173,
184, 34, 184, 163, 28, 174, 175, 176, 2, 168,
169, 170, 184, 184, 184, 26, 166, 184, 184, 184,
184, 184, 52, 53, 54, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 109, 184, 184, 184,
184, 184, 184, 184, 184, 160, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 146, 184, 184,
183, 58, 59, 60, 184, 184, 15, 184, 184, 184,
114, 184, 184, 9, 184, 184, 112, 184, 184, 184,
161, 156, 115, 184, 184, 184, 184, 184, 184, 152,
184, 184, 184, 184, 184, 84, 40, 43, 45, 44,
41, 47, 46, 48, 42, 184, 184, 184, 184, 167,
143, 184, 184, 154, 184, 184, 184, 36, 110, 27,
180, 23, 155, 83, 184, 165, 18, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 20, 35, 184, 184, 184, 184, 184,
184, 116, 89, 95, 184, 184, 184, 184, 184, 86,
88, 3, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 148, 184, 184, 184, 184, 184, 8,
184, 184, 10, 184, 184, 184, 184, 184, 184, 21,
103, 12, 157, 117, 90, 97, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 153,
184, 184, 184, 101, 107, 104, 184, 184, 184, 184,
184, 184, 184, 149, 118, 91, 96, 184, 184, 164,
184, 105, 184, 184, 184, 184, 6, 184, 184, 184,
184, 184, 184, 184, 184, 184, 100, 158, 1, 184,
184, 184, 184, 184, 184, 182, 184, 113, 5, 177,
61, 64, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 102, 184, 184, 184, 184,
184, 184, 98, 184, 184, 184, 184, 184, 131, 69,
70, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 111, 184, 184, 184, 99,
133, 74, 75, 184, 184, 184, 184, 106, 184, 184,
184, 184, 184, 184, 184, 126, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 68, 184, 184,
184, 184, 62, 184, 184, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 127, 119, 184,
92, 184, 184, 184, 73, 184, 184, 71, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
184, 184, 128, 184, 184, 78, 184, 184, 76, 184,
184, 120, 93, 184, 122, 184, 123, 184, 184, 184,
184, 184, 184, 108, 184, 184, 184, 184, 66, 184,
65, 137, 184, 184, 121, 94, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 184, 184, 135, 138,
184, 129, 184, 67, 184, 184, 184, 184, 184, 184,
184, 184, 136, 139, 184, 184, 184, 184, 132, 72,
184, 184, 184, 178, 184, 184, 184, 79, 184, 184,
134, 77, 184, 184, 184, 184, 184, 184, 184, 184,
184, 140, 184, 184, 184, 184, 184, 184, 184, 184,
141, 184, 184, 184, 184, 80, 184, 142, 85, 184,
124, 125, 87, 184, 184, 184, 63, 184, 184, 184,
179, 184, 130, 81, 184, 184, 184, 184, 82, 0
} ;
static const YY_CHAR yy_ec[256] =
......@@ -668,213 +644,213 @@ static const YY_CHAR yy_meta[78] =
8, 8, 8, 1, 1, 1, 1
} ;
static const flex_int16_t yy_base[895] =
static const flex_int16_t yy_base[900] =
{ 0,
0, 0, 77, 0, 1089, 1090, 1090, 1090, 1060, 127,
151, 1090, 1090, 1059, 148, 1090, 147, 145, 1058, 167,
158, 1056, 1090, 167, 1056, 145, 1090, 0, 1090, 1090,
149, 1034, 147, 135, 155, 162, 146, 174, 1019, 172,
178, 179, 153, 196, 1013, 198, 1026, 200, 197, 213,
202, 113, 1011, 1090, 153, 1090, 1090, 1090, 1090, 1090,
0, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
1090, 237, 1090, 241, 237, 271, 243, 1090, 0, 1090,
1090, 1090, 1050, 1090, 1090, 1090, 1049, 0, 1090, 1090,
1010, 1008, 1013, 156, 1010, 1018, 1017, 1004, 1007, 1018,
226, 1012, 1000, 997, 1010, 997, 994, 994, 1000, 189,
235, 994, 1004, 990, 996, 999, 1000, 0, 992, 1002,
230, 1001, 982, 995, 976, 216, 980, 993, 984, 243,
977, 237, 989, 991, 250, 980, 259, 967, 976, 253,
259, 980, 976, 978, 967, 970, 250, 255, 269, 979,
967, 979, 266, 972, 971, 959, 1090, 1090, 0, 318,
1090, 296, 323, 1090, 1090, 325, 324, 286, 1090, 1090,
977, 968, 0, 964, 959, 963, 972, 969, 298, 953,
953, 964, 956, 271, 966, 963, 963, 961, 958, 950,
956, 943, 941, 953, 939, 955, 0, 952, 940, 947,
944, 948, 949, 942, 939, 928, 927, 940, 943, 931,
942, 938, 926, 932, 923, 338, 928, 931, 922, 929,
918, 922, 913, 927, 926, 917, 923, 295, 907, 910,
908, 907, 917, 907, 902, 900, 902, 912, 898, 900,
897, 908, 907, 910, 892, 298, 900, 896, 894, 903,
882, 349, 900, 902, 891, 883, 916, 354, 370, 368,
383, 1090, 1090, 887, 878, 888, 887, 0, 885, 379,
0, 0, 878, 876, 876, 877, 872, 880, 869, 886,
875, 382, 0, 0, 869, 879, 878, 878, 0, 863,
385, 0, 0, 865, 390, 872, 873, 864, 858, 857,
858, 857, 857, 342, 393, 852, 0, 0, 848, 847,
846, 848, 849, 854, 848, 844, 857, 852, 852, 850,
849, 843, 837, 839, 838, 842, 847, 833, 836, 831,
839, 844, 832, 829, 841, 832, 0, 0, 838, 834,
0, 826, 826, 831, 822, 829, 396, 826, 0, 0,
0, 0, 816, 828, 827, 814, 815, 824, 825, 825,
0, 0, 0, 0, 812, 0, 820, 811, 0, 810,
811, 805, 815, 0, 0, 0, 806, 0, 802, 0,
0, 0, 0, 0, 0, 0, 0, 0, 812, 400,
811, 0, 0, 809, 805, 802, 846, 845, 0, 0,
0, 792, 403, 409, 412, 797, 793, 798, 789, 787,
800, 785, 0, 785, 798, 787, 783, 789, 784, 791,
791, 0, 788, 785, 789, 773, 771, 774, 780, 786,
781, 780, 768, 0, 770, 771, 0, 0, 0, 0,
768, 771, 0, 765, 775, 766, 0, 776, 756, 765,
760, 0, 753, 753, 766, 0, 768, 0, 418, 783,
782, 781, 746, 745, 0, 762, 761, 756, 793, 784,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
743, 756, 743, 740, 0, 0, 745, 744, 0, 741,
748, 747, 0, 733, 0, 0, 0, 0, 0, 730,
0, 0, 729, 740, 423, 733, 739, 738, 735, 730,
727, 747, 733, 718, 718, 731, 716, 728, 0, 0,
721, 746, 745, 744, 709, 708, 233, 406, 0, 720,
723, 721, 710, 706, 721, 0, 0, 717, 714, 713,
703, 702, 692, 709, 695, 426, 703, 706, 0, 725,
724, 723, 688, 687, 0, 701, 688, 0, 698, 691,
683, 684, 690, 693, 0, 0, 0, 0, 715, 714,
0, 689, 692, 677, 684, 675, 682, 683, 683, 682,
668, 436, 679, 679, 0, 680, 669, 668, 0, 0,
0, 695, 694, 693, 658, 657, 653, 661, 0, 691,
690, 0, 665, 668, 0, 446, 0, 646, 667, 681,
653, 0, 649, 648, 657, 657, 645, 659, 643, 657,
652, 0, 0, 0, 671, 670, 669, 634, 633, 632,
0, 632, 0, 0, 426, 434, 658, 642, 645, 628,
640, 628, 627, 636, 636, 655, 654, 653, 618, 617,
0, 622, 612, 615, 616, 615, 625, 0, 628, 624,
626, 622, 609, 642, 442, 0, 617, 620, 610, 611,
603, 610, 601, 624, 610, 606, 608, 606, 606, 605,
0, 593, 592, 602, 0, 624, 445, 0, 599, 602,
599, 584, 0, 600, 599, 583, 575, 583, 573, 581,
0, 578, 577, 600, 586, 584, 584, 577, 567, 570,
584, 568, 601, 579, 580, 577, 574, 586, 561, 575,
574, 558, 557, 556, 579, 565, 563, 563, 566, 561,
542, 541, 0, 571, 541, 569, 539, 543, 542, 575,
553, 550, 0, 554, 548, 551, 547, 549, 532, 527,
534, 516, 514, 507, 501, 489, 124, 0, 162, 250,
289, 307, 327, 0, 329, 340, 0, 0, 366, 0,
367, 0, 395, 396, 383, 382, 395, 401, 0, 398,
408, 405, 416, 443, 423, 0, 0, 437, 438, 0,
0, 439, 440, 426, 425, 428, 441, 433, 446, 447,
426, 427, 435, 0, 0, 451, 461, 433, 463, 455,
449, 437, 455, 449, 438, 439, 447, 0, 0, 478,
464, 462, 463, 0, 0, 467, 456, 462, 0, 463,
449, 472, 0, 460, 485, 0, 0, 475, 482, 467,
465, 466, 458, 475, 482, 483, 0, 481, 465, 501,
465, 496, 522, 470, 471, 0, 488, 490, 491, 482,
0, 505, 0, 0, 513, 0, 0, 0, 485, 486,
480, 0, 506, 482, 483, 0, 537, 0, 0, 510,
521, 513, 516, 0, 1090, 556, 562, 568, 574, 578,
584, 585, 591, 594
0, 0, 77, 0, 1094, 1095, 1095, 1095, 1065, 127,
151, 1095, 1095, 1064, 148, 1095, 147, 145, 1063, 167,
158, 1061, 1095, 167, 1061, 145, 1095, 0, 1095, 1095,
149, 1039, 147, 135, 155, 162, 146, 174, 1024, 172,
178, 179, 169, 196, 1018, 198, 1031, 200, 197, 213,
202, 113, 1016, 1095, 153, 1095, 1095, 1095, 1095, 1095,
0, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1095, 237, 1095, 241, 237, 271, 243, 1095, 0, 1095,
1095, 1095, 1055, 1095, 1095, 1095, 1054, 0, 1095, 1095,
1015, 1013, 1018, 197, 1015, 1023, 1021, 1021, 1008, 1011,
1022, 226, 1016, 1004, 1001, 1014, 1001, 998, 998, 1004,
136, 235, 998, 1008, 994, 1000, 1003, 1004, 0, 996,
1006, 230, 1005, 986, 999, 980, 216, 984, 997, 988,
243, 981, 237, 993, 995, 250, 984, 259, 971, 980,
253, 259, 984, 980, 982, 971, 974, 250, 255, 269,
983, 971, 983, 266, 976, 975, 963, 1095, 1095, 0,
318, 1095, 296, 323, 1095, 1095, 325, 324, 206, 1095,
1095, 981, 972, 0, 968, 963, 967, 976, 970, 972,
298, 956, 956, 967, 959, 271, 969, 966, 966, 964,
961, 953, 959, 946, 944, 956, 942, 958, 0, 955,
943, 950, 947, 951, 952, 945, 942, 931, 930, 943,
946, 934, 945, 941, 929, 935, 926, 336, 931, 934,
925, 932, 921, 925, 916, 930, 929, 920, 926, 294,
910, 913, 911, 910, 920, 910, 905, 903, 905, 915,
901, 903, 900, 911, 910, 913, 895, 301, 903, 899,
897, 906, 885, 349, 903, 905, 894, 886, 919, 354,
370, 368, 383, 1095, 1095, 890, 881, 891, 890, 0,
888, 892, 379, 0, 0, 880, 878, 878, 879, 874,
882, 871, 888, 877, 382, 0, 0, 871, 881, 880,
880, 0, 865, 385, 0, 0, 867, 390, 874, 875,
866, 860, 859, 860, 859, 859, 337, 393, 854, 0,
0, 850, 849, 848, 850, 851, 856, 850, 846, 859,
854, 854, 852, 851, 845, 839, 841, 840, 844, 849,
835, 838, 833, 841, 846, 834, 831, 843, 834, 0,
0, 840, 836, 0, 828, 828, 833, 824, 831, 396,
828, 0, 0, 0, 0, 818, 830, 829, 816, 817,
826, 827, 827, 0, 812, 0, 0, 0, 813, 0,
821, 812, 0, 811, 812, 806, 816, 0, 0, 0,
807, 0, 803, 0, 0, 0, 0, 0, 0, 0,
0, 0, 813, 400, 812, 0, 0, 810, 806, 803,
847, 846, 0, 0, 0, 793, 403, 409, 412, 798,
794, 799, 790, 788, 801, 786, 0, 786, 799, 788,
784, 790, 785, 792, 792, 0, 789, 786, 790, 774,
772, 775, 781, 787, 782, 781, 769, 0, 771, 772,
0, 0, 0, 0, 769, 772, 0, 766, 776, 767,
0, 777, 757, 0, 766, 761, 0, 754, 754, 767,
0, 769, 0, 418, 784, 783, 782, 747, 746, 0,
763, 762, 757, 794, 785, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 744, 757, 744, 741, 0,
0, 746, 745, 0, 742, 749, 748, 0, 734, 0,
0, 0, 0, 0, 731, 0, 0, 730, 741, 423,
734, 740, 739, 736, 731, 728, 748, 734, 719, 719,
732, 717, 729, 0, 0, 722, 747, 746, 745, 710,
709, 406, 411, 0, 721, 724, 722, 711, 707, 722,
0, 0, 718, 715, 714, 704, 703, 693, 710, 696,
427, 704, 707, 0, 726, 725, 724, 689, 688, 0,
702, 689, 0, 699, 692, 684, 685, 691, 694, 0,
0, 0, 0, 716, 715, 0, 690, 693, 678, 685,
676, 683, 684, 684, 683, 669, 447, 680, 680, 0,
681, 670, 669, 0, 0, 0, 696, 695, 694, 659,
658, 654, 662, 0, 692, 691, 0, 666, 669, 0,
450, 0, 647, 668, 682, 654, 0, 650, 649, 658,
658, 646, 660, 644, 658, 653, 0, 0, 0, 672,
671, 670, 635, 634, 633, 0, 633, 0, 0, 417,
446, 659, 643, 646, 629, 641, 629, 628, 637, 637,
656, 655, 654, 619, 618, 0, 623, 613, 616, 617,
616, 626, 0, 629, 625, 627, 623, 610, 643, 438,
0, 618, 621, 611, 612, 604, 611, 602, 625, 611,
607, 609, 607, 607, 606, 0, 594, 593, 603, 0,
625, 450, 0, 600, 603, 600, 585, 0, 601, 600,
584, 576, 584, 574, 582, 0, 579, 578, 601, 587,
585, 585, 578, 568, 571, 585, 569, 602, 580, 581,
578, 575, 587, 562, 576, 575, 559, 558, 557, 580,
566, 564, 564, 567, 562, 543, 542, 0, 572, 542,
570, 540, 544, 543, 576, 554, 551, 0, 555, 548,
549, 539, 538, 519, 502, 515, 499, 162, 258, 258,
257, 290, 0, 298, 316, 363, 353, 369, 0, 359,
381, 0, 0, 392, 0, 396, 0, 404, 407, 396,
403, 406, 407, 0, 401, 411, 403, 420, 448, 428,
0, 0, 442, 443, 0, 0, 444, 445, 431, 430,
433, 446, 438, 451, 452, 431, 432, 440, 0, 0,
456, 466, 438, 468, 460, 454, 442, 460, 454, 443,
444, 452, 0, 0, 483, 469, 467, 468, 0, 0,
472, 461, 467, 0, 468, 454, 477, 0, 465, 490,
0, 0, 480, 487, 472, 470, 471, 463, 480, 487,
488, 0, 486, 470, 506, 470, 501, 527, 475, 476,
0, 493, 495, 496, 487, 0, 510, 0, 0, 518,
0, 0, 0, 490, 491, 485, 0, 511, 487, 488,
0, 542, 0, 0, 515, 526, 518, 521, 0, 1095,
561, 567, 573, 579, 583, 589, 590, 596, 599
} ;
static const flex_int16_t yy_def[895] =
static const flex_int16_t yy_def[900] =
{ 0,
885, 1, 885, 3, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
886, 885, 885, 885, 885, 885, 885, 887, 885, 885,
885, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 885, 885, 885, 885, 885, 885, 885,
888, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 889, 885, 890, 20, 886, 891, 885, 892, 885,
885, 885, 885, 885, 885, 885, 885, 887, 885, 885,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 885, 885, 888, 893,
885, 890, 894, 885, 885, 885, 891, 892, 885, 885,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 885, 893, 885,
894, 885, 885, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
887, 887, 887, 887, 0, 885, 885, 885, 885, 885,
885, 885, 885, 885
890, 1, 890, 3, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
891, 890, 890, 890, 890, 890, 890, 892, 890, 890,
890, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 890, 890, 890, 890, 890, 890, 890,
893, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 894, 890, 895, 20, 891, 896, 890, 897, 890,
890, 890, 890, 890, 890, 890, 890, 892, 890, 890,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 890, 890, 893,
898, 890, 895, 899, 890, 890, 890, 896, 897, 890,
890, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 890,
898, 890, 899, 890, 890, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
892, 892, 892, 892, 892, 892, 892, 892, 892, 0,
890, 890, 890, 890, 890, 890, 890, 890, 890
} ;
static const flex_int16_t yy_nxt[1168] =
static const flex_int16_t yy_nxt[1173] =
{ 0,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 21, 21, 21, 21,
......@@ -893,42 +869,42 @@ static const flex_int16_t yy_nxt[1168] =
61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
58, 58, 58, 58, 63, 64, 65, 68, 70, 72,
72, 72, 72, 72, 72, 72, 72, 72, 72, 154,
74, 81, 86, 87, 71, 69, 89, 155, 66, 74,
157, 75, 75, 75, 75, 75, 75, 75, 75, 76,
76, 82, 77, 83, 84, 791, 90, 95, 92, 96,
78, 77, 127, 97, 98, 106, 128, 107, 99, 78,
79, 77, 93, 94, 100, 102, 108, 101, 174, 103,
77, 115, 175, 109, 104, 78, 792, 158, 125, 116,
105, 110, 118, 111, 78, 119, 112, 79, 120, 121,
117, 126, 113, 122, 123, 129, 124, 132, 193, 136,
143, 151, 166, 144, 166, 152, 137, 138, 130, 194,
139, 145, 133, 574, 153, 134, 140, 141, 146, 142,
147, 160, 161, 575, 148, 163, 164, 214, 149, 165,
885, 150, 182, 74, 195, 215, 183, 184, 222, 205,
160, 161, 206, 207, 163, 164, 208, 196, 209, 227,
219, 223, 235, 224, 165, 77, 220, 885, 231, 237,
244, 245, 246, 78, 793, 228, 229, 236, 248, 794,
247, 232, 238, 253, 77, 254, 249, 258, 263, 258,
163, 164, 260, 885, 260, 885, 277, 278, 78, 167,
167, 167, 167, 167, 167, 167, 167, 167, 167, 163,
164, 271, 342, 263, 309, 310, 311, 323, 795, 262,
343, 324, 397, 398, 272, 349, 350, 351, 259, 259,
259, 259, 259, 259, 259, 259, 259, 259, 262, 885,
796, 885, 261, 261, 261, 261, 261, 261, 261, 261,
261, 261, 885, 797, 885, 362, 363, 364, 374, 375,
376, 382, 383, 384, 798, 161, 386, 387, 388, 399,
400, 401, 438, 439, 440, 460, 461, 462, 164, 472,
473, 474, 799, 800, 161, 475, 476, 477, 478, 479,
480, 463, 464, 522, 523, 524, 576, 164, 550, 551,
552, 592, 593, 594, 801, 802, 577, 803, 804, 525,
526, 625, 626, 627, 553, 554, 671, 595, 596, 805,
597, 646, 647, 648, 673, 806, 672, 628, 629, 807,
808, 674, 703, 675, 676, 724, 809, 649, 650, 704,
810, 705, 725, 811, 726, 812, 813, 814, 815, 816,
72, 72, 72, 72, 72, 72, 72, 72, 72, 155,
74, 81, 86, 87, 71, 69, 89, 156, 66, 74,
158, 75, 75, 75, 75, 75, 75, 75, 75, 76,
76, 82, 77, 83, 84, 195, 90, 95, 92, 96,
78, 77, 97, 98, 99, 107, 196, 108, 100, 78,
79, 77, 93, 94, 101, 103, 109, 102, 128, 104,
77, 116, 129, 110, 105, 78, 792, 159, 126, 117,
106, 111, 119, 112, 78, 120, 113, 79, 121, 122,
118, 127, 114, 123, 124, 130, 125, 133, 265, 137,
144, 152, 167, 145, 167, 153, 138, 139, 131, 175,
140, 146, 134, 176, 154, 135, 141, 142, 147, 143,
148, 161, 162, 265, 149, 164, 165, 216, 150, 166,
890, 151, 184, 74, 197, 217, 185, 186, 224, 207,
161, 162, 208, 209, 164, 165, 210, 198, 211, 229,
221, 225, 237, 226, 166, 77, 222, 890, 233, 239,
246, 247, 248, 78, 793, 230, 231, 238, 250, 794,
249, 234, 240, 255, 77, 256, 251, 260, 795, 260,
164, 165, 262, 890, 262, 890, 280, 281, 78, 168,
168, 168, 168, 168, 168, 168, 168, 168, 168, 164,
165, 274, 312, 313, 314, 345, 326, 401, 402, 264,
327, 796, 797, 346, 275, 352, 353, 354, 261, 261,
261, 261, 261, 261, 261, 261, 261, 261, 264, 890,
798, 890, 263, 263, 263, 263, 263, 263, 263, 263,
263, 263, 890, 799, 890, 366, 367, 368, 378, 379,
380, 386, 387, 388, 800, 162, 390, 391, 392, 403,
404, 405, 442, 443, 444, 465, 466, 467, 165, 477,
478, 479, 801, 802, 162, 480, 481, 482, 483, 484,
485, 468, 469, 527, 528, 529, 579, 165, 555, 556,
557, 581, 597, 598, 599, 803, 580, 676, 804, 530,
531, 582, 805, 806, 558, 559, 807, 677, 600, 601,
808, 602, 630, 631, 632, 651, 652, 653, 708, 809,
810, 811, 812, 813, 814, 709, 678, 710, 633, 634,
729, 654, 655, 679, 815, 680, 681, 730, 816, 731,
817, 818, 819, 820, 821, 822, 823, 824, 825, 826,
827, 828, 829, 830, 831, 832, 833, 834, 835, 836,
......@@ -936,77 +912,78 @@ static const flex_int16_t yy_nxt[1168] =
847, 848, 849, 850, 851, 852, 853, 854, 855, 856,
857, 858, 859, 860, 861, 862, 863, 864, 865, 866,
867, 868, 869, 870, 871, 872, 873, 874, 875, 876,
877, 878, 879, 880, 881, 882, 883, 884, 76, 76,
790, 76, 789, 788, 76, 88, 88, 88, 88, 88,
88, 159, 159, 159, 159, 159, 159, 72, 787, 72,
72, 162, 786, 162, 162, 167, 785, 167, 168, 168,
168, 168, 259, 784, 259, 261, 783, 261, 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, 723, 722, 721, 720, 719, 718,
717, 716, 715, 714, 713, 712, 711, 710, 709, 708,
707, 706, 702, 701, 700, 699, 698, 697, 696, 695,
694, 693, 692, 691, 690, 689, 688, 687, 686, 685,
684, 683, 682, 681, 680, 679, 678, 677, 670, 669,
668, 667, 666, 665, 664, 663, 662, 661, 660, 659,
658, 657, 656, 655, 654, 653, 652, 651, 645, 644,
643, 642, 641, 640, 639, 638, 637, 636, 635, 634,
633, 632, 631, 630, 624, 623, 622, 621, 620, 619,
618, 617, 616, 615, 614, 613, 612, 611, 610, 609,
608, 607, 606, 605, 604, 603, 602, 601, 600, 599,
598, 591, 590, 589, 588, 587, 586, 585, 584, 583,
582, 581, 580, 579, 578, 573, 572, 571, 570, 569,
568, 567, 566, 565, 564, 563, 562, 561, 560, 559,
558, 557, 556, 555, 549, 548, 547, 546, 545, 544,
543, 542, 541, 540, 539, 538, 537, 536, 535, 534,
533, 532, 531, 530, 529, 528, 527, 521, 520, 519,
518, 517, 516, 515, 514, 513, 512, 511, 510, 509,
508, 507, 506, 505, 504, 503, 502, 501, 500, 499,
498, 497, 496, 495, 494, 493, 492, 491, 490, 489,
488, 487, 486, 485, 484, 483, 482, 481, 471, 470,
469, 468, 467, 466, 465, 459, 458, 457, 456, 455,
454, 453, 452, 451, 450, 449, 448, 447, 446, 445,
444, 443, 442, 441, 437, 436, 435, 434, 433, 432,
431, 430, 429, 428, 427, 426, 425, 424, 423, 422,
421, 420, 419, 418, 417, 416, 415, 414, 413, 412,
411, 410, 409, 408, 407, 406, 405, 404, 403, 402,
396, 395, 394, 393, 392, 391, 390, 389, 385, 381,
380, 379, 378, 377, 373, 372, 371, 370, 369, 368,
367, 366, 365, 361, 360, 359, 358, 357, 356, 355,
354, 353, 352, 348, 347, 346, 345, 344, 341, 340,
339, 338, 337, 336, 335, 334, 333, 332, 331, 330,
329, 328, 327, 326, 325, 322, 321, 320, 319, 318,
317, 316, 315, 314, 313, 312, 308, 307, 306, 305,
304, 303, 302, 301, 300, 299, 298, 297, 296, 295,
294, 293, 292, 291, 290, 289, 288, 287, 286, 285,
284, 283, 282, 281, 280, 279, 276, 275, 274, 273,
270, 269, 268, 267, 266, 265, 264, 257, 256, 255,
252, 251, 250, 243, 242, 241, 240, 239, 234, 233,
230, 226, 225, 221, 218, 217, 216, 213, 212, 211,
210, 204, 203, 202, 201, 200, 199, 198, 197, 192,
191, 190, 189, 188, 187, 186, 185, 181, 180, 179,
178, 177, 176, 173, 172, 171, 170, 169, 156, 135,
131, 114, 91, 85, 80, 73, 67, 62, 885, 5,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885
877, 878, 879, 880, 881, 882, 883, 884, 885, 886,
887, 888, 889, 76, 76, 791, 76, 790, 789, 76,
88, 88, 88, 88, 88, 88, 160, 160, 160, 160,
160, 160, 72, 788, 72, 72, 163, 787, 163, 163,
168, 786, 168, 169, 169, 169, 169, 261, 785, 261,
263, 784, 263, 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, 728, 727, 726, 725, 724,
723, 722, 721, 720, 719, 718, 717, 716, 715, 714,
713, 712, 711, 707, 706, 705, 704, 703, 702, 701,
700, 699, 698, 697, 696, 695, 694, 693, 692, 691,
690, 689, 688, 687, 686, 685, 684, 683, 682, 675,
674, 673, 672, 671, 670, 669, 668, 667, 666, 665,
664, 663, 662, 661, 660, 659, 658, 657, 656, 650,
649, 648, 647, 646, 645, 644, 643, 642, 641, 640,
639, 638, 637, 636, 635, 629, 628, 627, 626, 625,
624, 623, 622, 621, 620, 619, 618, 617, 616, 615,
614, 613, 612, 611, 610, 609, 608, 607, 606, 605,
604, 603, 596, 595, 594, 593, 592, 591, 590, 589,
588, 587, 586, 585, 584, 583, 578, 577, 576, 575,
574, 573, 572, 571, 570, 569, 568, 567, 566, 565,
564, 563, 562, 561, 560, 554, 553, 552, 551, 550,
549, 548, 547, 546, 545, 544, 543, 542, 541, 540,
539, 538, 537, 536, 535, 534, 533, 532, 526, 525,
524, 523, 522, 521, 520, 519, 518, 517, 516, 515,
514, 513, 512, 511, 510, 509, 508, 507, 506, 505,
504, 503, 502, 501, 500, 499, 498, 497, 496, 495,
494, 493, 492, 491, 490, 489, 488, 487, 486, 476,
475, 474, 473, 472, 471, 470, 464, 463, 462, 461,
460, 459, 458, 457, 456, 455, 454, 453, 452, 451,
450, 449, 448, 447, 446, 445, 441, 440, 439, 438,
437, 436, 435, 434, 433, 432, 431, 430, 429, 428,
427, 426, 425, 424, 423, 422, 421, 420, 419, 418,
417, 416, 415, 414, 413, 412, 411, 410, 409, 408,
407, 406, 400, 399, 398, 397, 396, 395, 394, 393,
389, 385, 384, 383, 382, 381, 377, 376, 375, 374,
373, 372, 371, 370, 369, 365, 364, 363, 362, 361,
360, 359, 358, 357, 356, 355, 351, 350, 349, 348,
347, 344, 343, 342, 341, 340, 339, 338, 337, 336,
335, 334, 333, 332, 331, 330, 329, 328, 325, 324,
323, 322, 321, 320, 319, 318, 317, 316, 315, 311,
310, 309, 308, 307, 306, 305, 304, 303, 302, 301,
300, 299, 298, 297, 296, 295, 294, 293, 292, 291,
290, 289, 288, 287, 286, 285, 284, 283, 282, 279,
278, 277, 276, 273, 272, 271, 270, 269, 268, 267,
266, 259, 258, 257, 254, 253, 252, 245, 244, 243,
242, 241, 236, 235, 232, 228, 227, 223, 220, 219,
218, 215, 214, 213, 212, 206, 205, 204, 203, 202,
201, 200, 199, 194, 193, 192, 191, 190, 189, 188,
187, 183, 182, 181, 180, 179, 178, 177, 174, 173,
172, 171, 170, 157, 136, 132, 115, 91, 85, 80,
73, 67, 62, 890, 5, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890
} ;
static const flex_int16_t yy_chk[1168] =
static const flex_int16_t yy_chk[1173] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
......@@ -1028,119 +1005,120 @@ static const flex_int16_t yy_chk[1168] =
18, 18, 18, 18, 18, 18, 18, 18, 18, 52,
21, 24, 26, 26, 17, 15, 31, 52, 11, 20,
55, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 24, 21, 24, 24, 757, 31, 34, 33, 34,
20, 24, 21, 24, 24, 111, 31, 34, 33, 34,
21, 20, 43, 34, 35, 37, 43, 37, 35, 20,
20, 21, 33, 33, 35, 36, 37, 35, 94, 36,
20, 40, 94, 38, 36, 21, 759, 55, 42, 40,
21, 20, 34, 34, 35, 37, 111, 37, 35, 20,
20, 21, 33, 33, 35, 36, 37, 35, 43, 36,
20, 40, 43, 38, 36, 21, 758, 55, 42, 40,
36, 38, 41, 38, 20, 41, 38, 20, 41, 41,
40, 42, 38, 41, 41, 44, 41, 46, 110, 48,
49, 51, 77, 49, 77, 51, 48, 48, 44, 110,
48, 49, 46, 527, 51, 46, 48, 48, 49, 48,
50, 72, 72, 527, 50, 74, 74, 126, 50, 75,
75, 50, 101, 76, 111, 126, 101, 101, 132, 121,
72, 72, 121, 121, 74, 74, 121, 111, 121, 135,
130, 132, 140, 132, 75, 76, 130, 75, 137, 141,
147, 147, 148, 76, 760, 135, 135, 140, 149, 761,
148, 137, 141, 153, 76, 153, 149, 160, 168, 160,
162, 162, 163, 167, 163, 167, 184, 184, 76, 166,
166, 166, 166, 166, 166, 166, 166, 166, 166, 162,
162, 179, 246, 168, 216, 216, 216, 228, 762, 167,
246, 228, 304, 304, 179, 252, 252, 252, 258, 258,
258, 258, 258, 258, 258, 258, 258, 258, 167, 259,
763, 259, 260, 260, 260, 260, 260, 260, 260, 260,
260, 260, 261, 765, 261, 270, 270, 270, 282, 282,
282, 291, 291, 291, 766, 259, 295, 295, 295, 305,
305, 305, 347, 347, 347, 390, 390, 390, 261, 403,
403, 403, 769, 771, 259, 404, 404, 404, 405, 405,
405, 390, 390, 459, 459, 459, 528, 261, 505, 505,
505, 546, 546, 546, 773, 774, 528, 775, 776, 459,
459, 582, 582, 582, 505, 505, 635, 546, 546, 777,
546, 606, 606, 606, 636, 778, 635, 582, 582, 780,
781, 636, 665, 636, 636, 687, 782, 606, 606, 665,
783, 665, 687, 784, 687, 785, 788, 789, 792, 793,
794, 795, 796, 797, 798, 799, 800, 801, 802, 803,
806, 807, 808, 809, 810, 811, 812, 813, 814, 815,
816, 817, 820, 821, 822, 823, 826, 827, 828, 830,
831, 832, 834, 835, 838, 839, 840, 841, 842, 843,
844, 845, 846, 848, 849, 850, 851, 852, 853, 854,
855, 857, 858, 859, 860, 862, 865, 869, 870, 871,
873, 874, 875, 877, 880, 881, 882, 883, 886, 886,
756, 886, 755, 754, 886, 887, 887, 887, 887, 887,
887, 888, 888, 888, 888, 888, 888, 889, 753, 889,
889, 890, 752, 890, 890, 891, 751, 891, 892, 892,
892, 892, 893, 750, 893, 894, 749, 894, 748, 747,
746, 745, 744, 742, 741, 740, 739, 738, 737, 736,
735, 734, 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, 700, 699, 698, 697, 696, 695, 694,
692, 691, 690, 689, 686, 684, 683, 682, 680, 679,
678, 677, 676, 675, 674, 673, 672, 671, 670, 669,
668, 667, 664, 663, 662, 661, 660, 659, 657, 656,
655, 654, 653, 652, 650, 649, 648, 647, 646, 645,
644, 643, 642, 641, 640, 639, 638, 637, 632, 630,
629, 628, 627, 626, 625, 621, 620, 619, 618, 617,
616, 615, 614, 613, 611, 610, 609, 608, 604, 603,
601, 600, 598, 597, 596, 595, 594, 593, 592, 588,
587, 586, 584, 583, 581, 580, 579, 578, 577, 576,
575, 574, 573, 572, 570, 569, 564, 563, 562, 561,
560, 559, 557, 556, 554, 553, 552, 551, 550, 548,
547, 545, 544, 543, 542, 541, 540, 539, 538, 535,
534, 533, 532, 531, 530, 526, 525, 524, 523, 522,
521, 518, 517, 516, 515, 514, 513, 512, 511, 510,
509, 508, 507, 506, 504, 503, 500, 494, 492, 491,
490, 488, 487, 484, 483, 482, 481, 470, 469, 468,
467, 466, 464, 463, 462, 461, 460, 457, 455, 454,
453, 451, 450, 449, 448, 446, 445, 444, 442, 441,
436, 435, 433, 432, 431, 430, 429, 428, 427, 426,
425, 424, 423, 421, 420, 419, 418, 417, 416, 415,
414, 412, 411, 410, 409, 408, 407, 406, 402, 398,
397, 396, 395, 394, 391, 389, 379, 377, 373, 372,
371, 370, 368, 367, 365, 360, 359, 358, 357, 356,
355, 354, 353, 348, 346, 345, 344, 343, 342, 340,
339, 336, 335, 334, 333, 332, 331, 330, 329, 328,
327, 326, 325, 324, 323, 322, 321, 320, 319, 318,
317, 316, 315, 314, 313, 312, 311, 310, 309, 306,
303, 302, 301, 300, 299, 298, 297, 296, 294, 290,
288, 287, 286, 285, 281, 280, 279, 278, 277, 276,
275, 274, 273, 269, 267, 266, 265, 264, 257, 256,
255, 254, 253, 251, 250, 249, 248, 247, 245, 244,
243, 242, 241, 240, 239, 238, 237, 236, 235, 234,
233, 232, 231, 230, 229, 227, 226, 225, 224, 223,
222, 221, 220, 219, 218, 217, 215, 214, 213, 212,
211, 210, 209, 208, 207, 206, 205, 204, 203, 202,
201, 200, 199, 198, 196, 195, 194, 193, 192, 191,
190, 189, 188, 187, 186, 185, 183, 182, 181, 180,
178, 177, 176, 175, 174, 172, 171, 156, 155, 154,
152, 151, 150, 146, 145, 144, 143, 142, 139, 138,
136, 134, 133, 131, 129, 128, 127, 125, 124, 123,
122, 120, 119, 117, 116, 115, 114, 113, 112, 109,
108, 107, 106, 105, 104, 103, 102, 100, 99, 98,
97, 96, 95, 93, 92, 91, 87, 83, 53, 47,
45, 39, 32, 25, 22, 19, 14, 9, 5, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
885, 885, 885, 885, 885, 885, 885
40, 42, 38, 41, 41, 44, 41, 46, 169, 48,
49, 51, 77, 49, 77, 51, 48, 48, 44, 94,
48, 49, 46, 94, 51, 46, 48, 48, 49, 48,
50, 72, 72, 169, 50, 74, 74, 127, 50, 75,
75, 50, 102, 76, 112, 127, 102, 102, 133, 122,
72, 72, 122, 122, 74, 74, 122, 112, 122, 136,
131, 133, 141, 133, 75, 76, 131, 75, 138, 142,
148, 148, 149, 76, 759, 136, 136, 141, 150, 760,
149, 138, 142, 154, 76, 154, 150, 161, 761, 161,
163, 163, 164, 168, 164, 168, 186, 186, 76, 167,
167, 167, 167, 167, 167, 167, 167, 167, 167, 163,
163, 181, 218, 218, 218, 248, 230, 307, 307, 168,
230, 762, 764, 248, 181, 254, 254, 254, 260, 260,
260, 260, 260, 260, 260, 260, 260, 260, 168, 261,
765, 261, 262, 262, 262, 262, 262, 262, 262, 262,
262, 262, 263, 766, 263, 273, 273, 273, 285, 285,
285, 294, 294, 294, 767, 261, 298, 298, 298, 308,
308, 308, 350, 350, 350, 394, 394, 394, 263, 407,
407, 407, 768, 770, 261, 408, 408, 408, 409, 409,
409, 394, 394, 464, 464, 464, 532, 263, 510, 510,
510, 533, 551, 551, 551, 771, 532, 640, 774, 464,
464, 533, 776, 778, 510, 510, 779, 640, 551, 551,
780, 551, 587, 587, 587, 611, 611, 611, 670, 781,
782, 783, 785, 786, 787, 670, 641, 670, 587, 587,
692, 611, 611, 641, 788, 641, 641, 692, 789, 692,
790, 793, 794, 797, 798, 799, 800, 801, 802, 803,
804, 805, 806, 807, 808, 811, 812, 813, 814, 815,
816, 817, 818, 819, 820, 821, 822, 825, 826, 827,
828, 831, 832, 833, 835, 836, 837, 839, 840, 843,
844, 845, 846, 847, 848, 849, 850, 851, 853, 854,
855, 856, 857, 858, 859, 860, 862, 863, 864, 865,
867, 870, 874, 875, 876, 878, 879, 880, 882, 885,
886, 887, 888, 891, 891, 757, 891, 756, 755, 891,
892, 892, 892, 892, 892, 892, 893, 893, 893, 893,
893, 893, 894, 754, 894, 894, 895, 753, 895, 895,
896, 752, 896, 897, 897, 897, 897, 898, 751, 898,
899, 750, 899, 749, 747, 746, 745, 744, 743, 742,
741, 740, 739, 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, 705, 704, 703, 702, 701, 700,
699, 697, 696, 695, 694, 691, 689, 688, 687, 685,
684, 683, 682, 681, 680, 679, 678, 677, 676, 675,
674, 673, 672, 669, 668, 667, 666, 665, 664, 662,
661, 660, 659, 658, 657, 655, 654, 653, 652, 651,
650, 649, 648, 647, 646, 645, 644, 643, 642, 637,
635, 634, 633, 632, 631, 630, 626, 625, 624, 623,
622, 621, 620, 619, 618, 616, 615, 614, 613, 609,
608, 606, 605, 603, 602, 601, 600, 599, 598, 597,
593, 592, 591, 589, 588, 586, 585, 584, 583, 582,
581, 580, 579, 578, 577, 575, 574, 569, 568, 567,
566, 565, 564, 562, 561, 559, 558, 557, 556, 555,
553, 552, 550, 549, 548, 547, 546, 545, 544, 543,
540, 539, 538, 537, 536, 535, 531, 530, 529, 528,
527, 526, 523, 522, 521, 520, 519, 518, 517, 516,
515, 514, 513, 512, 511, 509, 508, 505, 499, 497,
496, 495, 493, 492, 489, 488, 487, 486, 475, 474,
473, 472, 471, 469, 468, 467, 466, 465, 462, 460,
459, 458, 456, 455, 453, 452, 450, 449, 448, 446,
445, 440, 439, 437, 436, 435, 434, 433, 432, 431,
430, 429, 428, 427, 425, 424, 423, 422, 421, 420,
419, 418, 416, 415, 414, 413, 412, 411, 410, 406,
402, 401, 400, 399, 398, 395, 393, 383, 381, 377,
376, 375, 374, 372, 371, 369, 365, 363, 362, 361,
360, 359, 358, 357, 356, 351, 349, 348, 347, 346,
345, 343, 342, 339, 338, 337, 336, 335, 334, 333,
332, 331, 330, 329, 328, 327, 326, 325, 324, 323,
322, 321, 320, 319, 318, 317, 316, 315, 314, 313,
312, 309, 306, 305, 304, 303, 302, 301, 300, 299,
297, 293, 291, 290, 289, 288, 284, 283, 282, 281,
280, 279, 278, 277, 276, 272, 271, 269, 268, 267,
266, 259, 258, 257, 256, 255, 253, 252, 251, 250,
249, 247, 246, 245, 244, 243, 242, 241, 240, 239,
238, 237, 236, 235, 234, 233, 232, 231, 229, 228,
227, 226, 225, 224, 223, 222, 221, 220, 219, 217,
216, 215, 214, 213, 212, 211, 210, 209, 208, 207,
206, 205, 204, 203, 202, 201, 200, 198, 197, 196,
195, 194, 193, 192, 191, 190, 189, 188, 187, 185,
184, 183, 182, 180, 179, 178, 177, 176, 175, 173,
172, 157, 156, 155, 153, 152, 151, 147, 146, 145,
144, 143, 140, 139, 137, 135, 134, 132, 130, 129,
128, 126, 125, 124, 123, 121, 120, 118, 117, 116,
115, 114, 113, 110, 109, 108, 107, 106, 105, 104,
103, 101, 100, 99, 98, 97, 96, 95, 93, 92,
91, 87, 83, 53, 47, 45, 39, 32, 25, 22,
19, 14, 9, 5, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
890, 890
} ;
/* Table of booleans, true if rule could match eol. */
static const flex_int32_t yy_rule_can_match_eol[247] =
static const flex_int32_t yy_rule_can_match_eol[248] =
{ 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
......@@ -1154,7 +1132,7 @@ static const flex_int32_t yy_rule_can_match_eol[247] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, };
0, 0, 0, 0, 0, 1, 0, 0, };
/* The intent behind this definition is that it'll catch
* any uses of REJECT which flex missed.
......@@ -1650,13 +1628,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 886 )
if ( yy_current_state >= 891 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
while ( yy_current_state != 885 );
while ( yy_current_state != 890 );
yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state;
......@@ -1725,311 +1703,311 @@ YY_RULE_SETUP
YY_BREAK
case 9:
YY_RULE_SETUP
{ return ES2_keyword_ES3_reserved(context, VARYING); }
{ return ES2_and_ES3_ident_ES3_1_keyword(context, BUFFER); }
YY_BREAK
case 10:
YY_RULE_SETUP
{ return BREAK; }
{ return ES2_keyword_ES3_reserved(context, VARYING); }
YY_BREAK
case 11:
YY_RULE_SETUP
{ return CONTINUE; }
{ return BREAK; }
YY_BREAK
case 12:
YY_RULE_SETUP
{ return DO; }
{ return CONTINUE; }
YY_BREAK
case 13:
YY_RULE_SETUP
{ return FOR; }
{ return DO; }
YY_BREAK
case 14:
YY_RULE_SETUP
{ return WHILE; }
{ return FOR; }
YY_BREAK
case 15:
YY_RULE_SETUP
{ return IF; }
{ return WHILE; }
YY_BREAK
case 16:
YY_RULE_SETUP
{ return ELSE; }
{ return IF; }
YY_BREAK
case 17:
YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, SWITCH); }
{ return ELSE; }
YY_BREAK
case 18:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, CASE); }
{ return ES2_reserved_ES3_keyword(context, SWITCH); }
YY_BREAK
case 19:
YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, DEFAULT); }
{ return ES2_ident_ES3_keyword(context, CASE); }
YY_BREAK
case 20:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, CENTROID); }
{ return ES2_reserved_ES3_keyword(context, DEFAULT); }
YY_BREAK
case 21:
YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, FLAT); }
{ return ES2_ident_ES3_keyword(context, CENTROID); }
YY_BREAK
case 22:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, SMOOTH); }
{ return ES2_reserved_ES3_keyword(context, FLAT); }
YY_BREAK
case 23:
YY_RULE_SETUP
{ return IN_QUAL; }
{ return ES2_ident_ES3_keyword(context, SMOOTH); }
YY_BREAK
case 24:
YY_RULE_SETUP
{ return OUT_QUAL; }
{ return IN_QUAL; }
YY_BREAK
case 25:
YY_RULE_SETUP
{ return INOUT_QUAL; }
{ return OUT_QUAL; }
YY_BREAK
case 26:
YY_RULE_SETUP
{ return ES2_and_ES3_ident_ES3_1_keyword(context, SHARED); }
{ return INOUT_QUAL; }
YY_BREAK
case 27:
YY_RULE_SETUP
{ return FLOAT_TYPE; }
{ return ES2_and_ES3_ident_ES3_1_keyword(context, SHARED); }
YY_BREAK
case 28:
YY_RULE_SETUP
{ return INT_TYPE; }
{ return FLOAT_TYPE; }
YY_BREAK
case 29:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, UINT_TYPE); }
{ return INT_TYPE; }
YY_BREAK
case 30:
YY_RULE_SETUP
{ return VOID_TYPE; }
{ return ES2_ident_ES3_keyword(context, UINT_TYPE); }
YY_BREAK
case 31:
YY_RULE_SETUP
{ return BOOL_TYPE; }
{ return VOID_TYPE; }
YY_BREAK
case 32:
YY_RULE_SETUP
{ yylval->lex.b = true; return BOOLCONSTANT; }
{ return BOOL_TYPE; }
YY_BREAK
case 33:
YY_RULE_SETUP
{ yylval->lex.b = false; return BOOLCONSTANT; }
{ yylval->lex.b = true; return BOOLCONSTANT; }
YY_BREAK
case 34:
YY_RULE_SETUP
{ return DISCARD; }
{ yylval->lex.b = false; return BOOLCONSTANT; }
YY_BREAK
case 35:
YY_RULE_SETUP
{ return RETURN; }
{ return DISCARD; }
YY_BREAK
case 36:
YY_RULE_SETUP
{ return MATRIX2; }
{ return RETURN; }
YY_BREAK
case 37:
YY_RULE_SETUP
{ return MATRIX3; }
{ return MATRIX2; }
YY_BREAK
case 38:
YY_RULE_SETUP
{ return MATRIX4; }
{ return MATRIX3; }
YY_BREAK
case 39:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX2); }
{ return MATRIX4; }
YY_BREAK
case 40:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX3); }
{ return ES2_ident_ES3_keyword(context, MATRIX2); }
YY_BREAK
case 41:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX4); }
{ return ES2_ident_ES3_keyword(context, MATRIX3); }
YY_BREAK
case 42:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX2x3); }
{ return ES2_ident_ES3_keyword(context, MATRIX4); }
YY_BREAK
case 43:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX3x2); }
{ return ES2_ident_ES3_keyword(context, MATRIX2x3); }
YY_BREAK
case 44:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX2x4); }
{ return ES2_ident_ES3_keyword(context, MATRIX3x2); }
YY_BREAK
case 45:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX4x2); }
{ return ES2_ident_ES3_keyword(context, MATRIX2x4); }
YY_BREAK
case 46:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX3x4); }
{ return ES2_ident_ES3_keyword(context, MATRIX4x2); }
YY_BREAK
case 47:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX4x3); }
{ return ES2_ident_ES3_keyword(context, MATRIX3x4); }
YY_BREAK
case 48:
YY_RULE_SETUP
{ return VEC2; }
{ return ES2_ident_ES3_keyword(context, MATRIX4x3); }
YY_BREAK
case 49:
YY_RULE_SETUP
{ return VEC3; }
{ return VEC2; }
YY_BREAK
case 50:
YY_RULE_SETUP
{ return VEC4; }
{ return VEC3; }
YY_BREAK
case 51:
YY_RULE_SETUP
{ return IVEC2; }
{ return VEC4; }
YY_BREAK
case 52:
YY_RULE_SETUP
{ return IVEC3; }
{ return IVEC2; }
YY_BREAK
case 53:
YY_RULE_SETUP
{ return IVEC4; }
{ return IVEC3; }
YY_BREAK
case 54:
YY_RULE_SETUP
{ return BVEC2; }
{ return IVEC4; }
YY_BREAK
case 55:
YY_RULE_SETUP
{ return BVEC3; }
{ return BVEC2; }
YY_BREAK
case 56:
YY_RULE_SETUP
{ return BVEC4; }
{ return BVEC3; }
YY_BREAK
case 57:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, UVEC2); }
{ return BVEC4; }
YY_BREAK
case 58:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, UVEC3); }
{ return ES2_ident_ES3_keyword(context, UVEC2); }
YY_BREAK
case 59:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, UVEC4); }
{ return ES2_ident_ES3_keyword(context, UVEC3); }
YY_BREAK
case 60:
YY_RULE_SETUP
{ return SAMPLER2D; }
{ return ES2_ident_ES3_keyword(context, UVEC4); }
YY_BREAK
case 61:
YY_RULE_SETUP
{ return SAMPLERCUBE; }
{ return SAMPLER2D; }
YY_BREAK
case 62:
YY_RULE_SETUP
{ return SAMPLER_EXTERNAL_OES; }
{ return SAMPLERCUBE; }
YY_BREAK
case 63:
YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, SAMPLER3D); }
{ return SAMPLER_EXTERNAL_OES; }
YY_BREAK
case 64:
YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); }
{ return ES2_reserved_ES3_keyword(context, SAMPLER3D); }
YY_BREAK
case 65:
YY_RULE_SETUP
{ return SAMPLER2DRECT; }
{ return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); }
YY_BREAK
case 66:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, SAMPLER2DARRAY); }
{ return SAMPLER2DRECT; }
YY_BREAK
case 67:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, SAMPLER2DMS); }
{ return ES2_ident_ES3_keyword(context, SAMPLER2DARRAY); }
YY_BREAK
case 68:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, ISAMPLER2D); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, SAMPLER2DMS); }
YY_BREAK
case 69:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, ISAMPLER3D); }
{ return ES2_ident_ES3_keyword(context, ISAMPLER2D); }
YY_BREAK
case 70:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, ISAMPLERCUBE); }
{ return ES2_ident_ES3_keyword(context, ISAMPLER3D); }
YY_BREAK
case 71:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, ISAMPLER2DARRAY); }
{ return ES2_ident_ES3_keyword(context, ISAMPLERCUBE); }
YY_BREAK
case 72:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, ISAMPLER2DMS); }
{ return ES2_ident_ES3_keyword(context, ISAMPLER2DARRAY); }
YY_BREAK
case 73:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, USAMPLER2D); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, ISAMPLER2DMS); }
YY_BREAK
case 74:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, USAMPLER3D); }
{ return ES2_ident_ES3_keyword(context, USAMPLER2D); }
YY_BREAK
case 75:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, USAMPLERCUBE); }
{ return ES2_ident_ES3_keyword(context, USAMPLER3D); }
YY_BREAK
case 76:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, USAMPLER2DARRAY); }
{ return ES2_ident_ES3_keyword(context, USAMPLERCUBE); }
YY_BREAK
case 77:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, USAMPLER2DMS); }
{ return ES2_ident_ES3_keyword(context, USAMPLER2DARRAY); }
YY_BREAK
case 78:
YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, USAMPLER2DMS); }
YY_BREAK
case 79:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, SAMPLERCUBESHADOW); }
{ return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); }
YY_BREAK
case 80:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, SAMPLER2DARRAYSHADOW); }
{ return ES2_ident_ES3_keyword(context, SAMPLERCUBESHADOW); }
YY_BREAK
case 81:
YY_RULE_SETUP
{ return ES3_extension_keyword_else_ident(context, "GL_EXT_YUV_target", SAMPLEREXTERNAL2DY2YEXT); }
{ return ES2_ident_ES3_keyword(context, SAMPLER2DARRAYSHADOW); }
YY_BREAK
case 82:
YY_RULE_SETUP
{ return STRUCT; }
{ return ES3_extension_keyword_else_ident(context, "GL_EXT_YUV_target", SAMPLEREXTERNAL2DY2YEXT); }
YY_BREAK
case 83:
YY_RULE_SETUP
{ return ES2_ident_ES3_keyword_multiview_keyword(context, LAYOUT); }
{ return STRUCT; }
YY_BREAK
case 84:
YY_RULE_SETUP
{ return ES3_extension_keyword_else_ident(context, "GL_EXT_YUV_target", YUVCSCSTANDARDEXT); }
{ return ES2_ident_ES3_keyword_multiview_keyword(context, LAYOUT); }
YY_BREAK
case 85:
YY_RULE_SETUP
{ return yuvcscstandardext_constant(context); }
{ return ES3_extension_keyword_else_ident(context, "GL_EXT_YUV_target", YUVCSCSTANDARDEXT); }
YY_BREAK
case 86:
YY_RULE_SETUP
......@@ -2041,78 +2019,81 @@ YY_RULE_SETUP
YY_BREAK
case 88:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE2D); }
{ return yuvcscstandardext_constant(context); }
YY_BREAK
case 89:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE2D); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE2D); }
YY_BREAK
case 90:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE2D); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE2D); }
YY_BREAK
case 91:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE2DARRAY); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE2D); }
YY_BREAK
case 92:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE2DARRAY); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE2DARRAY); }
YY_BREAK
case 93:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE2DARRAY); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE2DARRAY); }
YY_BREAK
case 94:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE3D); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE2DARRAY); }
YY_BREAK
case 95:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE3D); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGE3D); }
YY_BREAK
case 96:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE3D); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGE3D); }
YY_BREAK
case 97:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGECUBE); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGE3D); }
YY_BREAK
case 98:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGECUBE); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IIMAGECUBE); }
YY_BREAK
case 99:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGECUBE); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, UIMAGECUBE); }
YY_BREAK
case 100:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, READONLY); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, IMAGECUBE); }
YY_BREAK
case 101:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, WRITEONLY); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, READONLY); }
YY_BREAK
case 102:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, COHERENT); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, WRITEONLY); }
YY_BREAK
case 103:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, RESTRICT); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, COHERENT); }
YY_BREAK
case 104:
YY_RULE_SETUP
{ return ES2_and_ES3_reserved_ES3_1_keyword(context, VOLATILE); }
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, RESTRICT); }
YY_BREAK
case 105:
YY_RULE_SETUP
{ return ES2_and_ES3_reserved_ES3_1_keyword(context, VOLATILE); }
YY_BREAK
case 106:
YY_RULE_SETUP
{ return ES2_ident_ES3_reserved_ES3_1_keyword(context, ATOMICUINT); }
YY_BREAK
/* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */
case 106:
case 107:
case 108:
case 109:
......@@ -2148,6 +2129,7 @@ case 138:
case 139:
case 140:
case 141:
case 142:
YY_RULE_SETUP
{
if (context->getShaderVersion() < 300) {
......@@ -2158,7 +2140,7 @@ YY_RULE_SETUP
}
YY_BREAK
/* Reserved keywords in GLSL ES 1.00 that are not reserved in GLSL ES 3.00 */
case 142:
case 143:
YY_RULE_SETUP
{
if (context->getShaderVersion() >= 300)
......@@ -2171,7 +2153,6 @@ YY_RULE_SETUP
}
YY_BREAK
/* Reserved keywords */
case 143:
case 144:
case 145:
case 146:
......@@ -2211,20 +2192,17 @@ case 179:
case 180:
case 181:
case 182:
case 183:
YY_RULE_SETUP
{ return reserved_word(yyscanner); }
YY_BREAK
case 183:
case 184:
YY_RULE_SETUP
{
yylval->lex.string = NewPoolTString(yytext);
return check_type(yyscanner);
}
YY_BREAK
case 184:
YY_RULE_SETUP
{ return int_constant(context); }
YY_BREAK
case 185:
YY_RULE_SETUP
{ return int_constant(context); }
......@@ -2235,7 +2213,7 @@ YY_RULE_SETUP
YY_BREAK
case 187:
YY_RULE_SETUP
{ return uint_constant(context); }
{ return int_constant(context); }
YY_BREAK
case 188:
YY_RULE_SETUP
......@@ -2247,7 +2225,7 @@ YY_RULE_SETUP
YY_BREAK
case 190:
YY_RULE_SETUP
{ return float_constant(yyscanner); }
{ return uint_constant(context); }
YY_BREAK
case 191:
YY_RULE_SETUP
......@@ -2259,7 +2237,7 @@ YY_RULE_SETUP
YY_BREAK
case 193:
YY_RULE_SETUP
{ return floatsuffix_check(context); }
{ return float_constant(yyscanner); }
YY_BREAK
case 194:
YY_RULE_SETUP
......@@ -2271,205 +2249,209 @@ YY_RULE_SETUP
YY_BREAK
case 196:
YY_RULE_SETUP
{ return ADD_ASSIGN; }
{ return floatsuffix_check(context); }
YY_BREAK
case 197:
YY_RULE_SETUP
{ return SUB_ASSIGN; }
{ return ADD_ASSIGN; }
YY_BREAK
case 198:
YY_RULE_SETUP
{ return MUL_ASSIGN; }
{ return SUB_ASSIGN; }
YY_BREAK
case 199:
YY_RULE_SETUP
{ return DIV_ASSIGN; }
{ return MUL_ASSIGN; }
YY_BREAK
case 200:
YY_RULE_SETUP
{ return MOD_ASSIGN; }
{ return DIV_ASSIGN; }
YY_BREAK
case 201:
YY_RULE_SETUP
{ return LEFT_ASSIGN; }
{ return MOD_ASSIGN; }
YY_BREAK
case 202:
YY_RULE_SETUP
{ return RIGHT_ASSIGN; }
{ return LEFT_ASSIGN; }
YY_BREAK
case 203:
YY_RULE_SETUP
{ return AND_ASSIGN; }
{ return RIGHT_ASSIGN; }
YY_BREAK
case 204:
YY_RULE_SETUP
{ return XOR_ASSIGN; }
{ return AND_ASSIGN; }
YY_BREAK
case 205:
YY_RULE_SETUP
{ return OR_ASSIGN; }
{ return XOR_ASSIGN; }
YY_BREAK
case 206:
YY_RULE_SETUP
{ return INC_OP; }
{ return OR_ASSIGN; }
YY_BREAK
case 207:
YY_RULE_SETUP
{ return DEC_OP; }
{ return INC_OP; }
YY_BREAK
case 208:
YY_RULE_SETUP
{ return AND_OP; }
{ return DEC_OP; }
YY_BREAK
case 209:
YY_RULE_SETUP
{ return OR_OP; }
{ return AND_OP; }
YY_BREAK
case 210:
YY_RULE_SETUP
{ return XOR_OP; }
{ return OR_OP; }
YY_BREAK
case 211:
YY_RULE_SETUP
{ return LE_OP; }
{ return XOR_OP; }
YY_BREAK
case 212:
YY_RULE_SETUP
{ return GE_OP; }
{ return LE_OP; }
YY_BREAK
case 213:
YY_RULE_SETUP
{ return EQ_OP; }
{ return GE_OP; }
YY_BREAK
case 214:
YY_RULE_SETUP
{ return NE_OP; }
{ return EQ_OP; }
YY_BREAK
case 215:
YY_RULE_SETUP
{ return LEFT_OP; }
{ return NE_OP; }
YY_BREAK
case 216:
YY_RULE_SETUP
{ return RIGHT_OP; }
{ return LEFT_OP; }
YY_BREAK
case 217:
YY_RULE_SETUP
{ return SEMICOLON; }
{ return RIGHT_OP; }
YY_BREAK
case 218:
YY_RULE_SETUP
{ return LEFT_BRACE; }
{ return SEMICOLON; }
YY_BREAK
case 219:
YY_RULE_SETUP
{ return RIGHT_BRACE; }
{ return LEFT_BRACE; }
YY_BREAK
case 220:
YY_RULE_SETUP
{ return COMMA; }
{ return RIGHT_BRACE; }
YY_BREAK
case 221:
YY_RULE_SETUP
{ return COLON; }
{ return COMMA; }
YY_BREAK
case 222:
YY_RULE_SETUP
{ return EQUAL; }
{ return COLON; }
YY_BREAK
case 223:
YY_RULE_SETUP
{ return LEFT_PAREN; }
{ return EQUAL; }
YY_BREAK
case 224:
YY_RULE_SETUP
{ return RIGHT_PAREN; }
{ return LEFT_PAREN; }
YY_BREAK
case 225:
YY_RULE_SETUP
{ return LEFT_BRACKET; }
{ return RIGHT_PAREN; }
YY_BREAK
case 226:
YY_RULE_SETUP
{ return RIGHT_BRACKET; }
{ return LEFT_BRACKET; }
YY_BREAK
case 227:
YY_RULE_SETUP
{ BEGIN(FIELDS); return DOT; }
{ return RIGHT_BRACKET; }
YY_BREAK
case 228:
YY_RULE_SETUP
{ return BANG; }
{ BEGIN(FIELDS); return DOT; }
YY_BREAK
case 229:
YY_RULE_SETUP
{ return DASH; }
{ return BANG; }
YY_BREAK
case 230:
YY_RULE_SETUP
{ return TILDE; }
{ return DASH; }
YY_BREAK
case 231:
YY_RULE_SETUP
{ return PLUS; }
{ return TILDE; }
YY_BREAK
case 232:
YY_RULE_SETUP
{ return STAR; }
{ return PLUS; }
YY_BREAK
case 233:
YY_RULE_SETUP
{ return SLASH; }
{ return STAR; }
YY_BREAK
case 234:
YY_RULE_SETUP
{ return PERCENT; }
{ return SLASH; }
YY_BREAK
case 235:
YY_RULE_SETUP
{ return LEFT_ANGLE; }
{ return PERCENT; }
YY_BREAK
case 236:
YY_RULE_SETUP
{ return RIGHT_ANGLE; }
{ return LEFT_ANGLE; }
YY_BREAK
case 237:
YY_RULE_SETUP
{ return VERTICAL_BAR; }
{ return RIGHT_ANGLE; }
YY_BREAK
case 238:
YY_RULE_SETUP
{ return CARET; }
{ return VERTICAL_BAR; }
YY_BREAK
case 239:
YY_RULE_SETUP
{ return AMPERSAND; }
{ return CARET; }
YY_BREAK
case 240:
YY_RULE_SETUP
{ return QUESTION; }
{ return AMPERSAND; }
YY_BREAK
case 241:
YY_RULE_SETUP
{ return QUESTION; }
YY_BREAK
case 242:
YY_RULE_SETUP
{
BEGIN(INITIAL);
yylval->lex.string = NewPoolTString(yytext);
return FIELD_SELECTION;
}
YY_BREAK
case 242:
case 243:
YY_RULE_SETUP
{}
YY_BREAK
case 243:
case 244:
YY_RULE_SETUP
{
yyextra->error(*yylloc, "Illegal character at fieldname start", yytext);
return 0;
}
YY_BREAK
case 244:
/* rule 244 can match eol */
case 245:
/* rule 245 can match eol */
YY_RULE_SETUP
{ }
YY_BREAK
......@@ -2477,11 +2459,11 @@ case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(FIELDS):
{ yyterminate(); }
YY_BREAK
case 245:
case 246:
YY_RULE_SETUP
{ assert(false); return 0; }
YY_BREAK
case 246:
case 247:
YY_RULE_SETUP
ECHO;
YY_BREAK
......@@ -2754,8 +2736,6 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
(void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
/* "- 2" to take care of EOB's */
YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
}
yyg->yy_n_chars += number_to_move;
......@@ -2789,7 +2769,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 886 )
if ( yy_current_state >= 891 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
......@@ -2819,11 +2799,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 886 )
if ( yy_current_state >= 891 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
yy_is_jam = (yy_current_state == 885);
yy_is_jam = (yy_current_state == 890);
(void)yyg;
return yy_is_jam ? 0 : yy_current_state;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -93,115 +93,116 @@ enum yytokentype
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,
COHERENT = 311,
RESTRICT = 312,
VOLATILE = 313,
SHARED = 314,
STRUCT = 315,
VOID_TYPE = 316,
WHILE = 317,
SAMPLER2D = 318,
SAMPLERCUBE = 319,
SAMPLER_EXTERNAL_OES = 320,
SAMPLER2DRECT = 321,
SAMPLER2DARRAY = 322,
ISAMPLER2D = 323,
ISAMPLER3D = 324,
ISAMPLERCUBE = 325,
ISAMPLER2DARRAY = 326,
USAMPLER2D = 327,
USAMPLER3D = 328,
USAMPLERCUBE = 329,
USAMPLER2DARRAY = 330,
SAMPLER2DMS = 331,
ISAMPLER2DMS = 332,
USAMPLER2DMS = 333,
SAMPLER3D = 334,
SAMPLER3DRECT = 335,
SAMPLER2DSHADOW = 336,
SAMPLERCUBESHADOW = 337,
SAMPLER2DARRAYSHADOW = 338,
SAMPLEREXTERNAL2DY2YEXT = 339,
IMAGE2D = 340,
IIMAGE2D = 341,
UIMAGE2D = 342,
IMAGE3D = 343,
IIMAGE3D = 344,
UIMAGE3D = 345,
IMAGE2DARRAY = 346,
IIMAGE2DARRAY = 347,
UIMAGE2DARRAY = 348,
IMAGECUBE = 349,
IIMAGECUBE = 350,
UIMAGECUBE = 351,
ATOMICUINT = 352,
LAYOUT = 353,
YUVCSCSTANDARDEXT = 354,
YUVCSCSTANDARDEXTCONSTANT = 355,
IDENTIFIER = 356,
TYPE_NAME = 357,
FLOATCONSTANT = 358,
INTCONSTANT = 359,
UINTCONSTANT = 360,
BOOLCONSTANT = 361,
FIELD_SELECTION = 362,
LEFT_OP = 363,
RIGHT_OP = 364,
INC_OP = 365,
DEC_OP = 366,
LE_OP = 367,
GE_OP = 368,
EQ_OP = 369,
NE_OP = 370,
AND_OP = 371,
OR_OP = 372,
XOR_OP = 373,
MUL_ASSIGN = 374,
DIV_ASSIGN = 375,
ADD_ASSIGN = 376,
MOD_ASSIGN = 377,
LEFT_ASSIGN = 378,
RIGHT_ASSIGN = 379,
AND_ASSIGN = 380,
XOR_ASSIGN = 381,
OR_ASSIGN = 382,
SUB_ASSIGN = 383,
LEFT_PAREN = 384,
RIGHT_PAREN = 385,
LEFT_BRACKET = 386,
RIGHT_BRACKET = 387,
LEFT_BRACE = 388,
RIGHT_BRACE = 389,
DOT = 390,
COMMA = 391,
COLON = 392,
EQUAL = 393,
SEMICOLON = 394,
BANG = 395,
DASH = 396,
TILDE = 397,
PLUS = 398,
STAR = 399,
SLASH = 400,
PERCENT = 401,
LEFT_ANGLE = 402,
RIGHT_ANGLE = 403,
VERTICAL_BAR = 404,
CARET = 405,
AMPERSAND = 406,
QUESTION = 407
BUFFER = 299,
VARYING = 300,
MATRIX2x3 = 301,
MATRIX3x2 = 302,
MATRIX2x4 = 303,
MATRIX4x2 = 304,
MATRIX3x4 = 305,
MATRIX4x3 = 306,
CENTROID = 307,
FLAT = 308,
SMOOTH = 309,
READONLY = 310,
WRITEONLY = 311,
COHERENT = 312,
RESTRICT = 313,
VOLATILE = 314,
SHARED = 315,
STRUCT = 316,
VOID_TYPE = 317,
WHILE = 318,
SAMPLER2D = 319,
SAMPLERCUBE = 320,
SAMPLER_EXTERNAL_OES = 321,
SAMPLER2DRECT = 322,
SAMPLER2DARRAY = 323,
ISAMPLER2D = 324,
ISAMPLER3D = 325,
ISAMPLERCUBE = 326,
ISAMPLER2DARRAY = 327,
USAMPLER2D = 328,
USAMPLER3D = 329,
USAMPLERCUBE = 330,
USAMPLER2DARRAY = 331,
SAMPLER2DMS = 332,
ISAMPLER2DMS = 333,
USAMPLER2DMS = 334,
SAMPLER3D = 335,
SAMPLER3DRECT = 336,
SAMPLER2DSHADOW = 337,
SAMPLERCUBESHADOW = 338,
SAMPLER2DARRAYSHADOW = 339,
SAMPLEREXTERNAL2DY2YEXT = 340,
IMAGE2D = 341,
IIMAGE2D = 342,
UIMAGE2D = 343,
IMAGE3D = 344,
IIMAGE3D = 345,
UIMAGE3D = 346,
IMAGE2DARRAY = 347,
IIMAGE2DARRAY = 348,
UIMAGE2DARRAY = 349,
IMAGECUBE = 350,
IIMAGECUBE = 351,
UIMAGECUBE = 352,
ATOMICUINT = 353,
LAYOUT = 354,
YUVCSCSTANDARDEXT = 355,
YUVCSCSTANDARDEXTCONSTANT = 356,
IDENTIFIER = 357,
TYPE_NAME = 358,
FLOATCONSTANT = 359,
INTCONSTANT = 360,
UINTCONSTANT = 361,
BOOLCONSTANT = 362,
FIELD_SELECTION = 363,
LEFT_OP = 364,
RIGHT_OP = 365,
INC_OP = 366,
DEC_OP = 367,
LE_OP = 368,
GE_OP = 369,
EQ_OP = 370,
NE_OP = 371,
AND_OP = 372,
OR_OP = 373,
XOR_OP = 374,
MUL_ASSIGN = 375,
DIV_ASSIGN = 376,
ADD_ASSIGN = 377,
MOD_ASSIGN = 378,
LEFT_ASSIGN = 379,
RIGHT_ASSIGN = 380,
AND_ASSIGN = 381,
XOR_ASSIGN = 382,
OR_ASSIGN = 383,
SUB_ASSIGN = 384,
LEFT_PAREN = 385,
RIGHT_PAREN = 386,
LEFT_BRACKET = 387,
RIGHT_BRACKET = 388,
LEFT_BRACE = 389,
RIGHT_BRACE = 390,
DOT = 391,
COMMA = 392,
COLON = 393,
EQUAL = 394,
SEMICOLON = 395,
BANG = 396,
DASH = 397,
TILDE = 398,
PLUS = 399,
STAR = 400,
SLASH = 401,
PERCENT = 402,
LEFT_ANGLE = 403,
RIGHT_ANGLE = 404,
VERTICAL_BAR = 405,
CARET = 406,
AMPERSAND = 407,
QUESTION = 408
};
#endif
......
......@@ -50,6 +50,7 @@
'<(angle_path)/src/tests/compiler_tests/API_test.cpp',
'<(angle_path)/src/tests/compiler_tests/AppendixALimitations_test.cpp',
'<(angle_path)/src/tests/compiler_tests/AtomicCounter_test.cpp',
'<(angle_path)/src/tests/compiler_tests/BufferVariables_test.cpp',
'<(angle_path)/src/tests/compiler_tests/CollectVariables_test.cpp',
'<(angle_path)/src/tests/compiler_tests/ConstantFolding_test.cpp',
'<(angle_path)/src/tests/compiler_tests/ConstantFoldingNaN_test.cpp',
......
//
// Copyright (c) 2017 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.
//
// BufferVariables_test.cpp:
// Tests for buffer variables in GLSL ES 3.10 section 4.3.7.
//
#include "gtest/gtest.h"
#include "GLSLANG/ShaderLang.h"
#include "angle_gl.h"
#include "gtest/gtest.h"
#include "tests/test_utils/ShaderCompileTreeTest.h"
using namespace sh;
class BufferVariablesTest : public ShaderCompileTreeTest
{
public:
BufferVariablesTest() {}
protected:
::GLenum getShaderType() const override { return GL_VERTEX_SHADER; }
ShShaderSpec getShaderSpec() const override { return SH_GLES3_1_SPEC; }
void initResources(ShBuiltInResources *resources) override
{
resources->MaxShaderStorageBufferBindings = 8;
}
};
// Test that the buffer qualifier described in GLSL ES 3.10 section 4.3.7 can be successfully
// compiled.
TEST_F(BufferVariablesTest, BasicShaderStorageBlockDeclaration)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" int b1;\n"
" buffer int b2;\n"
"};\n"
"void main()\n"
"{\n"
"}\n";
if (!compile(source))
{
FAIL() << "Shader compilation failed, expecting success:\n" << mInfoLog;
}
}
// Test that shader storage block layout qualifiers can be declared for global scope.
TEST_F(BufferVariablesTest, LayoutQualifiersDeclaredInGlobal)
{
const std::string &source =
"#version 310 es\n"
"layout(shared, column_major) buffer;\n"
"void main()\n"
"{\n"
"}\n";
if (!compile(source))
{
FAIL() << "Shader compilation failed, expecting success:\n" << mInfoLog;
}
}
// Test that shader storage block can be used with one or more memory qualifiers.
TEST_F(BufferVariablesTest, ShaderStorageBlockWithMemoryQualifier)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) writeonly buffer buf {\n"
" int b1;\n"
" buffer int b2;\n"
"};\n"
"void main()\n"
"{\n"
"}\n";
if (!compile(source))
{
FAIL() << "Shader compilation failed, expecting success:\n" << mInfoLog;
}
}
// Test that buffer variables can be used with one or more memory qualifiers.
TEST_F(BufferVariablesTest, BufferVariablesWithMemoryQualifier)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" writeonly int b1;\n"
" writeonly buffer int b2;\n"
"};\n"
"void main()\n"
"{\n"
"}\n";
if (!compile(source))
{
FAIL() << "Shader compilation failed, expecting success:\n" << mInfoLog;
}
}
// Test that it is a compile-time error to declare buffer variables at global scope (outside a
// block).
TEST_F(BufferVariablesTest, DeclareBufferVariableAtGlobal)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer int a;\n"
"void main()\n"
"{\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that the buffer variable can't be opaque type.
TEST_F(BufferVariablesTest, BufferVariableWithOpaqueType)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" int b1;\n"
" atomic_uint b2;\n"
"};\n"
"void main()\n"
"{\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that the uniform variable can't be in shader storage block.
TEST_F(BufferVariablesTest, UniformVariableInShaderStorageBlock)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" uniform int a;\n"
"};\n"
"void main()\n"
"{\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that buffer qualifier is not supported in verson lower than GLSL ES 3.10.
TEST_F(BufferVariablesTest, BufferQualifierInESSL3)
{
const std::string &source =
"#version 300 es\n"
"layout(binding = 3) buffer buf {\n"
" int b1;\n"
" buffer int b2;\n"
"};\n"
"void main()\n"
"{\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that can't assign to a readonly buffer variable.
TEST_F(BufferVariablesTest, AssignToReadonlyBufferVariable)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" readonly int b1;\n"
"};\n"
"void main()\n"
"{\n"
" b1 = 5;\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that can't assign to a buffer variable declared within shader storage block with readonly.
TEST_F(BufferVariablesTest, AssignToBufferVariableWithinReadonlyBlock)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) readonly buffer buf {\n"
" int b1;\n"
"};\n"
"void main()\n"
"{\n"
" b1 = 5;\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that a readonly and writeonly buffer variable should neither read or write.
TEST_F(BufferVariablesTest, AccessReadonlyWriteonlyBufferVariable)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" readonly writeonly int b1;\n"
"};\n"
"void main()\n"
"{\n"
" b1 = 5;\n"
" int test = b1;\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that accessing a writeonly buffer variable should be error.
TEST_F(BufferVariablesTest, AccessWriteonlyBufferVariable)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" writeonly int b1;\n"
"};\n"
"void main()\n"
"{\n"
" int test = b1;\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that accessing a buffer variable through an instance name is ok.
TEST_F(BufferVariablesTest, AccessReadonlyBufferVariableByInstanceName)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" readonly float f;\n"
"} instanceBuffer;\n"
"void main()\n"
"{\n"
" float test = instanceBuffer.f;\n"
"}\n";
if (!compile(source))
{
FAIL() << "Shader compilation failed, expecting success:\n" << mInfoLog;
}
}
// Test that accessing a buffer variable through an instance name inherits the writeonly qualifier
// and generates errors.
TEST_F(BufferVariablesTest, AccessWriteonlyBufferVariableByInstanceName)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) writeonly buffer buf {\n"
" float f;\n"
"} instanceBuffer;\n"
"void main()\n"
"{\n"
" float test = instanceBuffer.f;\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that writeonly buffer variable as the argument of a unary operator should be error.
TEST_F(BufferVariablesTest, UnaryOperatorWithWriteonlyBufferVariable)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" writeonly int b1;\n"
"};\n"
"void main()\n"
"{\n"
" ++b1;\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that writeonly buffer variable on the left-hand side of compound assignment should be error.
TEST_F(BufferVariablesTest, CompoundAssignmentToWriteonlyBufferVariable)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" writeonly int b1;\n"
"};\n"
"void main()\n"
"{\n"
" b1 += 5;\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that writeonly buffer variable as ternary op argument should be error.
TEST_F(BufferVariablesTest, TernarySelectionWithWriteonlyBufferVariable)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" writeonly bool b1;\n"
"};\n"
"void main()\n"
"{\n"
" int test = b1 ? 1 : 0;\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that writeonly buffer variable as array constructor argument should be error.
TEST_F(BufferVariablesTest, ArrayConstructorWithWriteonlyBufferVariable)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" writeonly float f;\n"
"};\n"
"void main()\n"
"{\n"
" float a[3] = float[3](f, f, f);\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that writeonly buffer variable as structure constructor argument should be error.
TEST_F(BufferVariablesTest, StructureConstructorWithWriteonlyBufferVariable)
{
const std::string &source =
"#version 310 es\n"
"struct S {\n"
" int a;\n"
"};\n"
"struct T {\n"
" S b;\n"
"};\n"
"layout(binding = 3) buffer buf {\n"
" writeonly S c;\n"
"};\n"
"void main()\n"
"{\n"
" T t = T(c);\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that writeonly buffer variable as built-in function argument should be error.
TEST_F(BufferVariablesTest, BuildInFunctionWithWriteonlyBufferVariable)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" writeonly int a;\n"
"};\n"
"void main()\n"
"{\n"
" int test = min(a, 1);\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that readonly buffer variable as user-defined function in argument should be ok.
TEST_F(BufferVariablesTest, UserDefinedFunctionWithReadonlyBufferVariableInArgument)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" readonly float f;\n"
"};\n"
"void foo(float a) {}\n"
"void main()\n"
"{\n"
" foo(f);\n"
"}\n";
if (!compile(source))
{
FAIL() << "Shader compilation failed, expecting success:\n" << mInfoLog;
}
}
// Test that writeonly buffer variable as user-defined function in argument should be error.
TEST_F(BufferVariablesTest, UserDefinedFunctionWithWriteonlyBufferVariableInArgument)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" writeonly float f;\n"
"};\n"
"void foo(float a) {}\n"
"void main()\n"
"{\n"
" foo(f);\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that writeonly buffer variable as user-defined function out argument should be ok.
TEST_F(BufferVariablesTest, UserDefinedFunctionWithWriteonlyBufferVariableOutArgument)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" writeonly float f;\n"
"};\n"
"void foo(out float a) {}\n"
"void main()\n"
"{\n"
" foo(f);\n"
"}\n";
if (!compile(source))
{
FAIL() << "Shader compilation failed, expecting success:\n" << mInfoLog;
}
}
// Test that readonly buffer variable as user-defined function out argument should be error.
TEST_F(BufferVariablesTest, UserDefinedFunctionWithReadonlyBufferVariableOutArgument)
{
const std::string &source =
"#version 310 es\n"
"layout(binding = 3) buffer buf {\n"
" readonly float f;\n"
"};\n"
"void foo(out float a) {}\n"
"void main()\n"
"{\n"
" foo(f);\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
// Test that buffer qualifier can't modify a function parameter.
TEST_F(BufferVariablesTest, BufferQualifierOnFunctionParameter)
{
const std::string &source =
"#version 310 es\n"
"void foo(buffer float a) {}\n"
"void main()\n"
"{\n"
"}\n";
if (compile(source))
{
FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
}
}
......@@ -3885,6 +3885,23 @@ TEST_F(FragmentShaderValidationTest, InvalidInterfaceBlockTernaryExpression)
}
}
// Test that "buffer" and "shared" are valid identifiers in version lower than GLSL ES 3.10.
TEST_F(FragmentShaderValidationTest, BufferAndSharedAsIdentifierOnES3)
{
const std::string &shaderString =
"#version 300 es\n"
"void main()\n"
"{\n"
" int buffer;\n"
" int shared;\n"
"}\n";
if (!compile(shaderString))
{
FAIL() << "Shader compilation failed, expecting success:\n" << mInfoLog;
}
}
// Test that a struct can not be used as a constructor argument for a scalar.
TEST_F(FragmentShaderValidationTest, StructAsBoolConstructorArgument)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment