Add support for the unsigned integer scalar type to the shader translator.

TRAC #23080 Signed-off-by: Nicolas Capens Signed-off-by: Shannon Woods Author: Jamie Madill git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2403 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 1885113c
...@@ -88,6 +88,7 @@ typedef enum { ...@@ -88,6 +88,7 @@ typedef enum {
typedef enum { typedef enum {
SH_NONE = 0, SH_NONE = 0,
SH_INT = 0x1404, SH_INT = 0x1404,
SH_UNSIGNED_INT = 0x1405,
SH_FLOAT = 0x1406, SH_FLOAT = 0x1406,
SH_FLOAT_VEC2 = 0x8B50, SH_FLOAT_VEC2 = 0x8B50,
SH_FLOAT_VEC3 = 0x8B51, SH_FLOAT_VEC3 = 0x8B51,
...@@ -95,6 +96,9 @@ typedef enum { ...@@ -95,6 +96,9 @@ typedef enum {
SH_INT_VEC2 = 0x8B53, SH_INT_VEC2 = 0x8B53,
SH_INT_VEC3 = 0x8B54, SH_INT_VEC3 = 0x8B54,
SH_INT_VEC4 = 0x8B55, SH_INT_VEC4 = 0x8B55,
SH_UNSIGNED_INT_VEC2 = 0x8DC6,
SH_UNSIGNED_INT_VEC3 = 0x8DC7,
SH_UNSIGNED_INT_VEC4 = 0x8DC8,
SH_BOOL = 0x8B56, SH_BOOL = 0x8B56,
SH_BOOL_VEC2 = 0x8B57, SH_BOOL_VEC2 = 0x8B57,
SH_BOOL_VEC3 = 0x8B58, SH_BOOL_VEC3 = 0x8B58,
......
...@@ -326,6 +326,10 @@ void PrintActiveVariables(ShHandle compiler, ShShaderInfo varType, bool mapLongV ...@@ -326,6 +326,10 @@ void PrintActiveVariables(ShHandle compiler, ShShaderInfo varType, bool mapLongV
case SH_INT_VEC2: typeName = "GL_INT_VEC2"; break; case SH_INT_VEC2: typeName = "GL_INT_VEC2"; break;
case SH_INT_VEC3: typeName = "GL_INT_VEC3"; break; case SH_INT_VEC3: typeName = "GL_INT_VEC3"; break;
case SH_INT_VEC4: typeName = "GL_INT_VEC4"; break; case SH_INT_VEC4: typeName = "GL_INT_VEC4"; break;
case SH_UNSIGNED_INT: typeName = "GL_UNSIGNED_INT"; break;
case SH_UNSIGNED_INT_VEC2: typeName = "GL_UNSIGNED_INT_VEC2"; break;
case SH_UNSIGNED_INT_VEC3: typeName = "GL_UNSIGNED_INT_VEC3"; break;
case SH_UNSIGNED_INT_VEC4: typeName = "GL_UNSIGNED_INT_VEC4"; break;
case SH_BOOL: typeName = "GL_BOOL"; break; case SH_BOOL: typeName = "GL_BOOL"; break;
case SH_BOOL_VEC2: typeName = "GL_BOOL_VEC2"; break; case SH_BOOL_VEC2: typeName = "GL_BOOL_VEC2"; break;
case SH_BOOL_VEC3: typeName = "GL_BOOL_VEC3"; break; case SH_BOOL_VEC3: typeName = "GL_BOOL_VEC3"; break;
......
...@@ -164,6 +164,7 @@ int VariableRowCount(GLenum type) ...@@ -164,6 +164,7 @@ int VariableRowCount(GLenum type)
case GL_BOOL: case GL_BOOL:
case GL_FLOAT: case GL_FLOAT:
case GL_INT: case GL_INT:
case GL_UNSIGNED_INT:
case GL_BOOL_VEC2: case GL_BOOL_VEC2:
case GL_FLOAT_VEC2: case GL_FLOAT_VEC2:
case GL_INT_VEC2: case GL_INT_VEC2:
...@@ -204,6 +205,7 @@ int VariableColumnCount(GLenum type) ...@@ -204,6 +205,7 @@ int VariableColumnCount(GLenum type)
case GL_BOOL: case GL_BOOL:
case GL_FLOAT: case GL_FLOAT:
case GL_INT: case GL_INT:
case GL_UNSIGNED_INT:
case GL_SAMPLER_2D: case GL_SAMPLER_2D:
case GL_SAMPLER_CUBE: case GL_SAMPLER_CUBE:
return 1; return 1;
......
...@@ -77,16 +77,24 @@ const char* getOperatorString(TOperator op) { ...@@ -77,16 +77,24 @@ const char* getOperatorString(TOperator op) {
// Fall-through. // Fall-through.
case EOpConvIntToBool: case EOpConvIntToBool:
case EOpConvUnsignedIntToBool:
case EOpConvFloatToBool: return "bool"; case EOpConvFloatToBool: return "bool";
// Fall-through. // Fall-through.
case EOpConvBoolToFloat: case EOpConvBoolToFloat:
case EOpConvUnsignedIntToFloat:
case EOpConvIntToFloat: return "float"; case EOpConvIntToFloat: return "float";
// Fall-through. // Fall-through.
case EOpConvFloatToInt: case EOpConvFloatToInt:
case EOpConvUnsignedIntToInt:
case EOpConvBoolToInt: return "int"; case EOpConvBoolToInt: return "int";
// Fall-through.
case EOpConvIntToUnsignedInt:
case EOpConvFloatToUnsignedInt:
case EOpConvBoolToUnsignedInt: return "uint";
case EOpRadians: return "radians"; case EOpRadians: return "radians";
case EOpDegrees: return "degrees"; case EOpDegrees: return "degrees";
case EOpSin: return "sin"; case EOpSin: return "sin";
...@@ -315,6 +323,7 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermNode* childNode, ...@@ -315,6 +323,7 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermNode* childNode,
TBasicType newType = EbtVoid; TBasicType newType = EbtVoid;
switch (op) { switch (op) {
case EOpConstructInt: newType = EbtInt; break; case EOpConstructInt: newType = EbtInt; break;
case EOpConstructUnsignedInt: newType = EbtUInt; break;
case EOpConstructBool: newType = EbtBool; break; case EOpConstructBool: newType = EbtBool; break;
case EOpConstructFloat: newType = EbtFloat; break; case EOpConstructFloat: newType = EbtFloat; break;
default: break; default: break;
...@@ -335,6 +344,7 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermNode* childNode, ...@@ -335,6 +344,7 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermNode* childNode,
// //
switch (op) { switch (op) {
case EOpConstructInt: case EOpConstructInt:
case EOpConstructUnsignedInt:
case EOpConstructBool: case EOpConstructBool:
case EOpConstructFloat: case EOpConstructFloat:
return child; return child;
...@@ -462,6 +472,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt ...@@ -462,6 +472,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EOpConstructInt: case EOpConstructInt:
promoteTo = EbtInt; promoteTo = EbtInt;
break; break;
case EOpConstructUnsignedInt:
promoteTo = EbtUInt;
break;
default: default:
// //
// implicit conversions were removed from the language. // implicit conversions were removed from the language.
...@@ -490,6 +503,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt ...@@ -490,6 +503,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EbtFloat: case EbtFloat:
switch (node->getBasicType()) { switch (node->getBasicType()) {
case EbtInt: newOp = EOpConvIntToFloat; break; case EbtInt: newOp = EOpConvIntToFloat; break;
case EbtUInt: newOp = EOpConvFloatToUnsignedInt; break;
case EbtBool: newOp = EOpConvBoolToFloat; break; case EbtBool: newOp = EOpConvBoolToFloat; break;
default: default:
infoSink.info.message(EPrefixInternalError, "Bad promotion node", node->getLine()); infoSink.info.message(EPrefixInternalError, "Bad promotion node", node->getLine());
...@@ -499,6 +513,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt ...@@ -499,6 +513,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EbtBool: case EbtBool:
switch (node->getBasicType()) { switch (node->getBasicType()) {
case EbtInt: newOp = EOpConvIntToBool; break; case EbtInt: newOp = EOpConvIntToBool; break;
case EbtUInt: newOp = EOpConvBoolToUnsignedInt; break;
case EbtFloat: newOp = EOpConvFloatToBool; break; case EbtFloat: newOp = EOpConvFloatToBool; break;
default: default:
infoSink.info.message(EPrefixInternalError, "Bad promotion node", node->getLine()); infoSink.info.message(EPrefixInternalError, "Bad promotion node", node->getLine());
...@@ -507,6 +522,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt ...@@ -507,6 +522,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
break; break;
case EbtInt: case EbtInt:
switch (node->getBasicType()) { switch (node->getBasicType()) {
case EbtUInt: newOp = EOpConvUnsignedIntToInt; break;
case EbtBool: newOp = EOpConvBoolToInt; break; case EbtBool: newOp = EOpConvBoolToInt; break;
case EbtFloat: newOp = EOpConvFloatToInt; break; case EbtFloat: newOp = EOpConvFloatToInt; break;
default: default:
...@@ -514,6 +530,16 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt ...@@ -514,6 +530,16 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
return 0; return 0;
} }
break; break;
case EbtUInt:
switch (node->getBasicType()) {
case EbtInt: newOp = EOpConvIntToUnsignedInt; break;
case EbtBool: newOp = EOpConvBoolToUnsignedInt; break;
case EbtFloat: newOp = EOpConvFloatToUnsignedInt; break;
default:
infoSink.info.message(EPrefixInternalError, "Bad promotion node", node->getLine());
return 0;
}
break;
default: default:
infoSink.info.message(EPrefixInternalError, "Bad promotion type", node->getLine()); infoSink.info.message(EPrefixInternalError, "Bad promotion type", node->getLine());
return 0; return 0;
...@@ -803,6 +829,7 @@ bool TIntermOperator::isConstructor() const ...@@ -803,6 +829,7 @@ bool TIntermOperator::isConstructor() const
case EOpConstructIVec3: case EOpConstructIVec3:
case EOpConstructIVec4: case EOpConstructIVec4:
case EOpConstructInt: case EOpConstructInt:
case EOpConstructUnsignedInt:
case EOpConstructBVec2: case EOpConstructBVec2:
case EOpConstructBVec3: case EOpConstructBVec3:
case EOpConstructBVec4: case EOpConstructBVec4:
...@@ -1305,6 +1332,18 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, TIntermTyped* constantNod ...@@ -1305,6 +1332,18 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, TIntermTyped* constantNod
} }
break; break;
case EbtUInt:
if (rightUnionArray[i] == 0)
{
infoSink.info.message(EPrefixWarning, "Divide by zero error during constant folding", getLine());
tempConstArray[i].setUConst(UINT_MAX);
}
else
{
tempConstArray[i].setUConst(unionArray[i].getUConst() / rightUnionArray[i].getUConst());
}
break;
default: default:
infoSink.info.message(EPrefixInternalError, "Constant folding cannot be done for \"/\"", getLine()); infoSink.info.message(EPrefixInternalError, "Constant folding cannot be done for \"/\"", getLine());
return 0; return 0;
...@@ -1575,6 +1614,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC ...@@ -1575,6 +1614,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
case EbtInt: case EbtInt:
leftUnionArray[i].setFConst(static_cast<float>(node->getIConst(i))); leftUnionArray[i].setFConst(static_cast<float>(node->getIConst(i)));
break; break;
case EbtUInt:
leftUnionArray[i].setFConst(static_cast<float>(node->getUConst(i)));
break;
case EbtBool: case EbtBool:
leftUnionArray[i].setFConst(static_cast<float>(node->getBConst(i))); leftUnionArray[i].setFConst(static_cast<float>(node->getBConst(i)));
break; break;
...@@ -1591,6 +1633,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC ...@@ -1591,6 +1633,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
case EbtInt: case EbtInt:
leftUnionArray[i].setIConst(static_cast<int>(node->getIConst(i))); leftUnionArray[i].setIConst(static_cast<int>(node->getIConst(i)));
break; break;
case EbtUInt:
leftUnionArray[i].setIConst(static_cast<int>(node->getUConst(i)));
break;
case EbtBool: case EbtBool:
leftUnionArray[i].setIConst(static_cast<int>(node->getBConst(i))); leftUnionArray[i].setIConst(static_cast<int>(node->getBConst(i)));
break; break;
...@@ -1602,11 +1647,33 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC ...@@ -1602,11 +1647,33 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
return 0; return 0;
} }
break; break;
case EbtUInt:
switch (node->getType().getBasicType()) {
case EbtInt:
leftUnionArray[i].setUConst(static_cast<unsigned int>(node->getIConst(i)));
break;
case EbtUInt:
leftUnionArray[i].setUConst(static_cast<unsigned int>(node->getUConst(i)));
break;
case EbtBool:
leftUnionArray[i].setUConst(static_cast<unsigned int>(node->getBConst(i)));
break;
case EbtFloat:
leftUnionArray[i].setUConst(static_cast<unsigned int>(node->getFConst(i)));
break;
default:
infoSink.info.message(EPrefixInternalError, "Cannot promote", node->getLine());
return 0;
}
break;
case EbtBool: case EbtBool:
switch (node->getType().getBasicType()) { switch (node->getType().getBasicType()) {
case EbtInt: case EbtInt:
leftUnionArray[i].setBConst(node->getIConst(i) != 0); leftUnionArray[i].setBConst(node->getIConst(i) != 0);
break; break;
case EbtUInt:
leftUnionArray[i].setBConst(node->getUConst(i) != 0);
break;
case EbtBool: case EbtBool:
leftUnionArray[i].setBConst(node->getBConst(i)); leftUnionArray[i].setBConst(node->getBConst(i));
break; break;
......
...@@ -1619,6 +1619,10 @@ bool OutputHLSL::visitBinary(Visit visit, TIntermBinary *node) ...@@ -1619,6 +1619,10 @@ bool OutputHLSL::visitBinary(Visit visit, TIntermBinary *node)
default: UNREACHABLE(); default: UNREACHABLE();
} }
break; break;
case EbtUInt:
// TODO
UNIMPLEMENTED();
break;
case EbtBool: case EbtBool:
switch (node->getLeft()->getNominalSize()) switch (node->getLeft()->getNominalSize())
{ {
...@@ -1680,6 +1684,7 @@ bool OutputHLSL::visitUnary(Visit visit, TIntermUnary *node) ...@@ -1680,6 +1684,7 @@ bool OutputHLSL::visitUnary(Visit visit, TIntermUnary *node)
case EOpPreIncrement: outputTriplet(visit, "(++", "", ")"); break; case EOpPreIncrement: outputTriplet(visit, "(++", "", ")"); break;
case EOpPreDecrement: outputTriplet(visit, "(--", "", ")"); break; case EOpPreDecrement: outputTriplet(visit, "(--", "", ")"); break;
case EOpConvIntToBool: case EOpConvIntToBool:
case EOpConvUnsignedIntToBool:
case EOpConvFloatToBool: case EOpConvFloatToBool:
switch (node->getOperand()->getType().getNominalSize()) switch (node->getOperand()->getType().getNominalSize())
{ {
...@@ -1692,6 +1697,7 @@ bool OutputHLSL::visitUnary(Visit visit, TIntermUnary *node) ...@@ -1692,6 +1697,7 @@ bool OutputHLSL::visitUnary(Visit visit, TIntermUnary *node)
break; break;
case EOpConvBoolToFloat: case EOpConvBoolToFloat:
case EOpConvIntToFloat: case EOpConvIntToFloat:
case EOpConvUnsignedIntToFloat:
switch (node->getOperand()->getType().getNominalSize()) switch (node->getOperand()->getType().getNominalSize())
{ {
case 1: outputTriplet(visit, "float(", "", ")"); break; case 1: outputTriplet(visit, "float(", "", ")"); break;
...@@ -1703,6 +1709,7 @@ bool OutputHLSL::visitUnary(Visit visit, TIntermUnary *node) ...@@ -1703,6 +1709,7 @@ bool OutputHLSL::visitUnary(Visit visit, TIntermUnary *node)
break; break;
case EOpConvFloatToInt: case EOpConvFloatToInt:
case EOpConvBoolToInt: case EOpConvBoolToInt:
case EOpConvUnsignedIntToInt:
switch (node->getOperand()->getType().getNominalSize()) switch (node->getOperand()->getType().getNominalSize())
{ {
case 1: outputTriplet(visit, "int(", "", ")"); break; case 1: outputTriplet(visit, "int(", "", ")"); break;
...@@ -1712,6 +1719,18 @@ bool OutputHLSL::visitUnary(Visit visit, TIntermUnary *node) ...@@ -1712,6 +1719,18 @@ bool OutputHLSL::visitUnary(Visit visit, TIntermUnary *node)
default: UNREACHABLE(); default: UNREACHABLE();
} }
break; break;
case EOpConvFloatToUnsignedInt:
case EOpConvBoolToUnsignedInt:
case EOpConvIntToUnsignedInt:
switch (node->getOperand()->getType().getCols())
{
case 1: outputTriplet(visit, "uint(", "", ")"); break;
case 2:
case 3:
case 4: UNIMPLEMENTED(); break;
default: UNREACHABLE();
}
break;
case EOpRadians: outputTriplet(visit, "radians(", "", ")"); break; case EOpRadians: outputTriplet(visit, "radians(", "", ")"); break;
case EOpDegrees: outputTriplet(visit, "degrees(", "", ")"); break; case EOpDegrees: outputTriplet(visit, "degrees(", "", ")"); break;
case EOpSin: outputTriplet(visit, "sin(", "", ")"); break; case EOpSin: outputTriplet(visit, "sin(", "", ")"); break;
...@@ -2201,6 +2220,10 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node) ...@@ -2201,6 +2220,10 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
addConstructor(node->getType(), "ivec4", &node->getSequence()); addConstructor(node->getType(), "ivec4", &node->getSequence());
outputTriplet(visit, "ivec4(", ", ", ")"); outputTriplet(visit, "ivec4(", ", ", ")");
break; break;
case EOpConstructUnsignedInt:
addConstructor(node->getType(), "uvec1", &node->getSequence());
outputTriplet(visit, "uvec1(", "", ")");
break;
case EOpConstructMat2: case EOpConstructMat2:
addConstructor(node->getType(), "mat2", &node->getSequence()); addConstructor(node->getType(), "mat2", &node->getSequence());
outputTriplet(visit, "mat2(", ", ", ")"); outputTriplet(visit, "mat2(", ", ", ")");
...@@ -2856,6 +2879,12 @@ TString OutputHLSL::typeString(const TType &type) ...@@ -2856,6 +2879,12 @@ TString OutputHLSL::typeString(const TType &type)
case 3: return "int3"; case 3: return "int3";
case 4: return "int4"; case 4: return "int4";
} }
case EbtUInt:
switch (type.getCols())
{
case 1: return "uint";
default: UNIMPLEMENTED(); return "error";
}
case EbtBool: case EbtBool:
switch (type.getNominalSize()) switch (type.getNominalSize())
{ {
...@@ -3184,6 +3213,7 @@ const ConstantUnion *OutputHLSL::writeConstantUnion(const TType &type, const Con ...@@ -3184,6 +3213,7 @@ const ConstantUnion *OutputHLSL::writeConstantUnion(const TType &type, const Con
{ {
case EbtFloat: out << std::min(FLT_MAX, std::max(-FLT_MAX, constUnion->getFConst())); break; case EbtFloat: out << std::min(FLT_MAX, std::max(-FLT_MAX, constUnion->getFConst())); break;
case EbtInt: out << constUnion->getIConst(); break; case EbtInt: out << constUnion->getIConst(); break;
case EbtUInt: out << constUnion->getUConst(); break;
case EbtBool: out << constUnion->getBConst(); break; case EbtBool: out << constUnion->getBConst(); break;
default: UNREACHABLE(); default: UNREACHABLE();
} }
...@@ -3417,6 +3447,18 @@ GLenum OutputHLSL::glVariableType(const TType &type) ...@@ -3417,6 +3447,18 @@ GLenum OutputHLSL::glVariableType(const TType &type)
} }
else UNREACHABLE(); else UNREACHABLE();
} }
else if (type.getBasicType() == EbtUInt)
{
if (type.isScalar())
{
return GL_UNSIGNED_INT;
}
else if (type.isVector())
{
UNIMPLEMENTED();
}
else UNREACHABLE();
}
else if (type.getBasicType() == EbtBool) else if (type.getBasicType() == EbtBool)
{ {
if (type.isScalar()) if (type.isScalar())
...@@ -3462,7 +3504,7 @@ GLenum OutputHLSL::glVariablePrecision(const TType &type) ...@@ -3462,7 +3504,7 @@ GLenum OutputHLSL::glVariablePrecision(const TType &type)
default: UNREACHABLE(); default: UNREACHABLE();
} }
} }
else if (type.getBasicType() == EbtInt) else if (type.getBasicType() == EbtInt || type.getBasicType() == EbtUInt)
{ {
switch (type.getPrecision()) switch (type.getPrecision())
{ {
......
...@@ -396,7 +396,7 @@ bool TParseContext::constErrorCheck(TIntermTyped* node) ...@@ -396,7 +396,7 @@ bool TParseContext::constErrorCheck(TIntermTyped* node)
// //
bool TParseContext::integerErrorCheck(TIntermTyped* node, const char* token) bool TParseContext::integerErrorCheck(TIntermTyped* node, const char* token)
{ {
if (node->getBasicType() == EbtInt && node->isScalar()) if (node->isScalarInt())
return false; return false;
error(node->getLine(), "integer expression required", token); error(node->getLine(), "integer expression required", token);
...@@ -676,18 +676,36 @@ bool TParseContext::containsSampler(TType& type) ...@@ -676,18 +676,36 @@ bool TParseContext::containsSampler(TType& type)
bool TParseContext::arraySizeErrorCheck(int line, TIntermTyped* expr, int& size) bool TParseContext::arraySizeErrorCheck(int line, TIntermTyped* expr, int& size)
{ {
TIntermConstantUnion* constant = expr->getAsConstantUnion(); TIntermConstantUnion* constant = expr->getAsConstantUnion();
if (constant == 0 || constant->getBasicType() != EbtInt) {
if (constant == 0 || !constant->isScalarInt())
{
error(line, "array size must be a constant integer expression", ""); error(line, "array size must be a constant integer expression", "");
return true; return true;
} }
if (constant->getBasicType() == EbtUInt)
{
unsigned int uintSize = constant->getUConst(0);
if (uintSize > static_cast<unsigned int>(std::numeric_limits<int>::max()))
{
error(line, "array size too large", "");
size = 1;
return true;
}
size = static_cast<int>(uintSize);
}
else
{
size = constant->getIConst(0); size = constant->getIConst(0);
if (size <= 0) { if (size <= 0)
{
error(line, "array size must be a positive integer", ""); error(line, "array size must be a positive integer", "");
size = 1; size = 1;
return true; return true;
} }
}
return false; return false;
} }
...@@ -1193,6 +1211,14 @@ TFunction *TParseContext::addConstructorFunc(TPublicType publicType) ...@@ -1193,6 +1211,14 @@ TFunction *TParseContext::addConstructorFunc(TPublicType publicType)
} }
break; break;
case EbtUInt:
switch(publicType.getNominalSize())
{
case 1: op = EOpConstructUnsignedInt; break;
default: UNIMPLEMENTED(); break;
}
break;
case EbtBool: case EbtBool:
switch(publicType.getNominalSize()) switch(publicType.getNominalSize())
{ {
...@@ -1359,6 +1385,10 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType* type, TOperator op, T ...@@ -1359,6 +1385,10 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType* type, TOperator op, T
basicOp = EOpConstructInt; basicOp = EOpConstructInt;
break; break;
case EOpConstructUnsignedInt:
basicOp = EOpConstructUnsignedInt;
break;
case EOpConstructBVec2: case EOpConstructBVec2:
case EOpConstructBVec3: case EOpConstructBVec3:
case EOpConstructBVec4: case EOpConstructBVec4:
......
...@@ -44,6 +44,7 @@ void TType::buildMangledName(TString& mangledName) ...@@ -44,6 +44,7 @@ void TType::buildMangledName(TString& mangledName)
switch (type) { switch (type) {
case EbtFloat: mangledName += 'f'; break; case EbtFloat: mangledName += 'f'; break;
case EbtInt: mangledName += 'i'; break; case EbtInt: mangledName += 'i'; break;
case EbtUInt: mangledName += 'u'; break;
case EbtBool: mangledName += 'b'; break; case EbtBool: mangledName += 'b'; break;
case EbtSampler2D: mangledName += "s2"; break; case EbtSampler2D: mangledName += "s2"; break;
case EbtSamplerCube: mangledName += "sC"; break; case EbtSamplerCube: mangledName += "sC"; break;
......
...@@ -342,6 +342,10 @@ public: ...@@ -342,6 +342,10 @@ public:
// Searches down the precisionStack for a precision qualifier for the specified TBasicType // Searches down the precisionStack for a precision qualifier for the specified TBasicType
TPrecision getDefaultPrecision( TBasicType type){ TPrecision getDefaultPrecision( TBasicType type){
// unsigned integers use the same precision as signed
if (type == EbtUInt) type = EbtInt;
if( type != EbtFloat && type != EbtInt ) return EbpUndefined; if( type != EbtFloat && type != EbtInt ) return EbpUndefined;
int level = static_cast<int>(precisionStack.size()) - 1; int level = static_cast<int>(precisionStack.size()) - 1;
assert( level >= 0); // Just to be safe. Should not happen. assert( level >= 0); // Just to be safe. Should not happen.
......
...@@ -195,6 +195,7 @@ public: ...@@ -195,6 +195,7 @@ public:
bool isVector() const { return primarySize > 1 && secondarySize == 1; } bool isVector() const { return primarySize > 1 && secondarySize == 1; }
bool isScalar() const { return primarySize == 1 && secondarySize == 1 && !structure; } bool isScalar() const { return primarySize == 1 && secondarySize == 1 && !structure; }
bool isScalarInt() const { return isScalar() && (type == EbtInt || type == EbtUInt); }
TTypeList* getStruct() const { return structure; } TTypeList* getStruct() const { return structure; }
void setStruct(TTypeList* s) { structure = s; computeDeepestStructNesting(); } void setStruct(TTypeList* s) { structure = s; computeDeepestStructNesting(); }
......
...@@ -79,6 +79,10 @@ public: ...@@ -79,6 +79,10 @@ public:
case EbtFloat: case EbtFloat:
mUsesFloatLoopIndex = true; mUsesFloatLoopIndex = true;
break; break;
case EbtUInt:
mUsesIntLoopIndex = true;
MarkLoopForUnroll(symbol, mLoopStack);
break;
case EbtInt: case EbtInt:
mUsesIntLoopIndex = true; mUsesIntLoopIndex = true;
MarkLoopForUnroll(symbol, mLoopStack); MarkLoopForUnroll(symbol, mLoopStack);
...@@ -269,7 +273,7 @@ bool ValidateLimitations::validateForLoopInit(TIntermLoop* node, ...@@ -269,7 +273,7 @@ bool ValidateLimitations::validateForLoopInit(TIntermLoop* node,
} }
// The loop index has type int or float. // The loop index has type int or float.
TBasicType type = symbol->getBasicType(); TBasicType type = symbol->getBasicType();
if ((type != EbtInt) && (type != EbtFloat)) { if ((type != EbtInt) && (type != EbtUInt) && (type != EbtFloat)) {
error(symbol->getLine(), error(symbol->getLine(),
"Invalid type for loop index", getBasicString(type)); "Invalid type for loop index", getBasicString(type));
return false; return false;
...@@ -492,7 +496,7 @@ bool ValidateLimitations::validateIndexing(TIntermBinary* node) ...@@ -492,7 +496,7 @@ bool ValidateLimitations::validateIndexing(TIntermBinary* node)
bool valid = true; bool valid = true;
TIntermTyped* index = node->getRight(); TIntermTyped* index = node->getRight();
// The index expression must have integral type. // The index expression must have integral type.
if (!index->isScalar() || (index->getBasicType() != EbtInt)) { if (!index->isScalarInt()) {
error(index->getLine(), error(index->getLine(),
"Index expression must have integral type", "Index expression must have integral type",
index->getCompleteString().c_str()); index->getCompleteString().c_str());
......
...@@ -69,6 +69,19 @@ static ShDataType getVariableDataType(const TType& type) ...@@ -69,6 +69,19 @@ static ShDataType getVariableDataType(const TType& type)
} else { } else {
return SH_INT; return SH_INT;
} }
case EbtUInt:
if (type.isMatrix()) {
UNREACHABLE();
} else if (type.isVector()) {
switch (type.getCols()) {
case 2: return SH_UNSIGNED_INT_VEC2;
case 3: return SH_UNSIGNED_INT_VEC3;
case 4: return SH_UNSIGNED_INT_VEC4;
default: UNREACHABLE();
}
} else {
return SH_UNSIGNED_INT;
}
case EbtBool: case EbtBool:
if (type.isMatrix()) { if (type.isMatrix()) {
UNREACHABLE(); UNREACHABLE();
......
...@@ -119,6 +119,7 @@ O [0-7] ...@@ -119,6 +119,7 @@ O [0-7]
"float" { context->lexAfterType = true; return(FLOAT_TYPE); } "float" { context->lexAfterType = true; return(FLOAT_TYPE); }
"int" { context->lexAfterType = true; return(INT_TYPE); } "int" { context->lexAfterType = true; return(INT_TYPE); }
"uint" { return ES2_ident_ES3_keyword(context, UINT_TYPE); }
"void" { context->lexAfterType = true; return(VOID_TYPE); } "void" { context->lexAfterType = true; return(VOID_TYPE); }
"bool" { context->lexAfterType = true; return(BOOL_TYPE); } "bool" { context->lexAfterType = true; return(BOOL_TYPE); }
"true" { yylval->lex.b = true; return(BOOLCONSTANT); } "true" { yylval->lex.b = true; return(BOOLCONSTANT); }
......
...@@ -122,7 +122,7 @@ extern void yyerror(TParseContext* context, const char* reason); ...@@ -122,7 +122,7 @@ extern void yyerror(TParseContext* context, const char* reason);
%} %}
%token <lex> INVARIANT HIGH_PRECISION MEDIUM_PRECISION LOW_PRECISION PRECISION %token <lex> INVARIANT HIGH_PRECISION MEDIUM_PRECISION LOW_PRECISION PRECISION
%token <lex> ATTRIBUTE CONST_QUAL BOOL_TYPE FLOAT_TYPE INT_TYPE %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> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT
%token <lex> BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 VEC2 VEC3 VEC4 %token <lex> BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 VEC2 VEC3 VEC4
%token <lex> MATRIX2 MATRIX3 MATRIX4 IN_QUAL OUT_QUAL INOUT_QUAL UNIFORM VARYING %token <lex> MATRIX2 MATRIX3 MATRIX4 IN_QUAL OUT_QUAL INOUT_QUAL UNIFORM VARYING
...@@ -1458,15 +1458,14 @@ type_specifier_nonarray ...@@ -1458,15 +1458,14 @@ type_specifier_nonarray
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtInt, qual, $1.line); $$.setBasic(EbtInt, qual, $1.line);
} }
| UINT_TYPE {
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtUInt, qual, $1.line);
}
| BOOL_TYPE { | BOOL_TYPE {
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtBool, qual, $1.line); $$.setBasic(EbtBool, qual, $1.line);
} }
// | UNSIGNED INT_TYPE {
// PACK_UNPACK_ONLY("unsigned", $1.line);
// TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
// $$.setBasic(EbtInt, qual, $1.line);
// }
| VEC2 { | VEC2 {
TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
$$.setBasic(EbtFloat, qual, $1.line); $$.setBasic(EbtFloat, qual, $1.line);
......
...@@ -383,8 +383,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); ...@@ -383,8 +383,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
*yy_cp = '\0'; \ *yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp; yyg->yy_c_buf_p = yy_cp;
#define YY_NUM_RULES 223 #define YY_NUM_RULES 224
#define YY_END_OF_BUFFER 224 #define YY_END_OF_BUFFER 225
/* This struct is not used in this scanner, /* This struct is not used in this scanner,
but its presence is necessary. */ but its presence is necessary. */
struct yy_trans_info struct yy_trans_info
...@@ -392,92 +392,93 @@ struct yy_trans_info ...@@ -392,92 +392,93 @@ struct yy_trans_info
flex_int32_t yy_verify; flex_int32_t yy_verify;
flex_int32_t yy_nxt; flex_int32_t yy_nxt;
}; };
static yyconst flex_int16_t yy_accept[771] = static yyconst flex_int16_t yy_accept[773] =
{ 0, { 0,
0, 0, 0, 0, 0, 0, 224, 222, 221, 221, 0, 0, 0, 0, 0, 0, 225, 223, 222, 222,
206, 212, 217, 201, 202, 210, 209, 198, 207, 205, 207, 213, 218, 202, 203, 211, 210, 199, 208, 206,
211, 170, 170, 199, 195, 213, 200, 214, 218, 166, 212, 171, 171, 200, 196, 214, 201, 215, 219, 167,
203, 204, 216, 166, 166, 166, 166, 166, 166, 166, 204, 205, 217, 167, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
166, 166, 166, 196, 215, 197, 208, 3, 4, 3, 167, 167, 167, 197, 216, 198, 209, 3, 4, 3,
220, 223, 219, 192, 178, 197, 186, 181, 176, 184, 221, 224, 220, 193, 179, 198, 187, 182, 177, 185,
174, 185, 175, 173, 2, 1, 177, 172, 168, 169, 175, 186, 176, 174, 2, 1, 178, 173, 169, 170,
0, 0, 170, 204, 196, 203, 193, 189, 191, 190, 0, 0, 171, 205, 197, 204, 194, 190, 192, 191,
194, 166, 182, 188, 166, 166, 166, 166, 166, 166, 195, 167, 183, 189, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 166, 17, 166, 166, 166, 167, 167, 167, 167, 167, 167, 17, 167, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
20, 166, 166, 28, 166, 166, 166, 166, 166, 166, 20, 167, 167, 28, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 183, 187, 5, 219, 0, 167, 167, 167, 167, 167, 184, 188, 5, 220, 0,
1, 172, 0, 0, 171, 167, 179, 180, 166, 124, 1, 173, 0, 0, 172, 168, 180, 181, 167, 125,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
166, 166, 166, 18, 166, 166, 166, 166, 166, 166, 167, 167, 167, 18, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 32, 166, 166, 166, 166, 166, 167, 167, 167, 167, 32, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 29, 166, 166, 166, 166, 167, 167, 167, 167, 167, 29, 167, 167, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 0, 173, 167, 167, 167, 167, 167, 167, 167, 167, 167, 0,
0, 172, 166, 166, 166, 34, 166, 166, 23, 163, 174, 0, 173, 167, 167, 167, 35, 167, 167, 23,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 164, 167, 167, 167, 167, 167, 167, 167, 167, 167,
21, 127, 166, 166, 166, 166, 26, 166, 166, 132, 167, 21, 128, 167, 167, 167, 167, 26, 167, 167,
144, 166, 166, 166, 166, 166, 166, 166, 166, 166, 133, 145, 167, 167, 167, 167, 167, 167, 167, 167,
166, 166, 141, 9, 39, 40, 41, 166, 166, 166, 167, 167, 167, 142, 9, 40, 41, 42, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
166, 130, 35, 166, 166, 166, 166, 166, 166, 166, 167, 167, 131, 36, 167, 167, 33, 167, 167, 167,
166, 51, 52, 53, 33, 166, 166, 166, 166, 166, 167, 167, 167, 52, 53, 54, 34, 167, 167, 167,
166, 15, 57, 58, 59, 166, 125, 166, 166, 12, 167, 167, 167, 15, 58, 59, 60, 167, 126, 167,
166, 166, 166, 166, 153, 154, 155, 166, 36, 166, 167, 12, 167, 167, 167, 167, 154, 155, 156, 167,
145, 31, 156, 157, 158, 7, 150, 151, 152, 166, 37, 167, 146, 31, 157, 158, 159, 7, 151, 152,
166, 166, 30, 148, 166, 166, 166, 54, 55, 56, 153, 167, 167, 167, 30, 149, 167, 167, 167, 55,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 56, 57, 167, 167, 167, 167, 167, 167, 167, 167,
75, 166, 166, 166, 166, 166, 166, 166, 142, 166, 167, 167, 76, 167, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 143, 167, 167, 167, 167, 167, 167, 167, 167, 167,
126, 166, 166, 165, 166, 166, 19, 166, 80, 166, 167, 167, 127, 167, 167, 166, 167, 167, 19, 167,
166, 166, 166, 78, 166, 166, 166, 143, 138, 81, 81, 167, 167, 167, 167, 79, 167, 167, 167, 144,
166, 166, 166, 166, 166, 166, 133, 166, 166, 166, 139, 82, 167, 167, 167, 167, 167, 167, 134, 167,
42, 45, 47, 46, 43, 49, 48, 50, 44, 166, 167, 167, 43, 46, 48, 47, 44, 50, 49, 51,
166, 166, 166, 149, 131, 166, 166, 136, 166, 166, 45, 167, 167, 167, 167, 150, 132, 167, 167, 137,
166, 38, 76, 162, 27, 137, 67, 166, 147, 22, 167, 167, 167, 39, 77, 163, 27, 138, 68, 167,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 148, 22, 167, 167, 167, 167, 167, 167, 167, 167,
166, 166, 166, 166, 24, 37, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 24, 38, 167, 167,
166, 166, 82, 83, 84, 166, 166, 166, 166, 166, 167, 167, 167, 167, 83, 84, 85, 167, 167, 167,
8, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 8, 167, 167, 167, 167, 167, 167, 167,
166, 166, 128, 166, 166, 166, 166, 166, 13, 166, 167, 167, 167, 167, 129, 167, 167, 167, 167, 167,
166, 14, 166, 166, 166, 166, 25, 68, 16, 139, 13, 167, 167, 14, 167, 167, 167, 167, 25, 69,
86, 87, 88, 166, 166, 166, 166, 166, 166, 166, 16, 140, 87, 88, 89, 167, 167, 167, 167, 167,
166, 166, 166, 166, 166, 134, 166, 166, 166, 70, 167, 167, 167, 167, 167, 167, 167, 135, 167, 167,
72, 69, 166, 166, 166, 166, 166, 166, 166, 129, 167, 71, 73, 70, 167, 167, 167, 167, 167, 167,
90, 91, 92, 166, 166, 146, 166, 135, 166, 166, 167, 130, 91, 92, 93, 167, 167, 147, 167, 136,
11, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 11, 167, 167, 167, 167, 167, 167, 167,
85, 140, 6, 166, 166, 166, 164, 166, 79, 10, 167, 167, 86, 141, 6, 167, 167, 167, 165, 167,
159, 60, 63, 166, 166, 166, 166, 166, 166, 166, 80, 10, 160, 61, 64, 167, 167, 167, 167, 167,
166, 166, 166, 166, 71, 166, 166, 166, 166, 89, 167, 167, 167, 167, 167, 167, 72, 167, 167, 167,
166, 166, 166, 166, 166, 109, 166, 166, 166, 166, 167, 90, 167, 167, 167, 167, 167, 110, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 77, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
166, 166, 93, 111, 166, 166, 73, 166, 166, 166, 78, 167, 167, 167, 94, 112, 167, 167, 74, 167,
166, 166, 166, 166, 104, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 105, 167, 167, 167,
166, 166, 118, 166, 166, 166, 166, 61, 166, 166, 167, 167, 167, 167, 119, 167, 167, 167, 167, 62,
166, 166, 166, 166, 166, 166, 166, 166, 105, 94, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
166, 95, 166, 166, 119, 166, 166, 166, 166, 166, 106, 95, 167, 96, 167, 167, 120, 167, 167, 167,
166, 166, 166, 166, 166, 166, 166, 166, 106, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
120, 166, 166, 96, 97, 166, 100, 166, 101, 166, 107, 167, 121, 167, 167, 97, 98, 167, 101, 167,
166, 166, 166, 74, 166, 166, 166, 66, 166, 64, 102, 167, 167, 167, 167, 75, 167, 167, 167, 67,
115, 166, 98, 99, 166, 166, 166, 166, 166, 166, 167, 65, 116, 167, 99, 100, 167, 167, 167, 167,
166, 166, 113, 116, 107, 166, 166, 166, 166, 166, 167, 167, 167, 167, 114, 117, 108, 167, 167, 167,
166, 166, 114, 117, 166, 166, 110, 166, 166, 160, 167, 167, 167, 167, 115, 118, 167, 167, 111, 167,
166, 166, 65, 166, 112, 166, 166, 166, 166, 166, 167, 161, 167, 167, 66, 167, 113, 167, 167, 167,
121, 166, 166, 166, 166, 166, 122, 166, 166, 166, 167, 167, 122, 167, 167, 167, 167, 167, 123, 167,
123, 102, 103, 166, 166, 62, 166, 161, 108, 0 167, 167, 124, 103, 104, 167, 167, 63, 167, 162,
109, 0
} ; } ;
static yyconst flex_int32_t yy_ec[256] = static yyconst flex_int32_t yy_ec[256] =
...@@ -524,185 +525,185 @@ static yyconst flex_int32_t yy_meta[72] = ...@@ -524,185 +525,185 @@ static yyconst flex_int32_t yy_meta[72] =
1 1
} ; } ;
static yyconst flex_int16_t yy_base[776] = static yyconst flex_int16_t yy_base[778] =
{ 0, { 0,
0, 0, 69, 70, 79, 0, 1000, 1001, 1001, 1001, 0, 0, 69, 70, 79, 0, 1002, 1003, 1003, 1003,
974, 49, 145, 1001, 1001, 973, 142, 1001, 141, 139, 976, 49, 145, 1003, 1003, 975, 142, 1003, 141, 139,
154, 167, 176, 971, 1001, 176, 971, 51, 1001, 0, 154, 167, 176, 973, 1003, 176, 973, 51, 1003, 0,
1001, 1001, 136, 116, 112, 159, 157, 156, 173, 938, 1003, 1003, 136, 116, 112, 159, 157, 156, 173, 940,
174, 179, 937, 175, 189, 931, 185, 944, 197, 203, 174, 179, 939, 175, 189, 933, 185, 946, 197, 203,
204, 209, 113, 1001, 186, 1001, 1001, 1001, 1001, 977, 204, 209, 113, 1003, 186, 1003, 1003, 1003, 1003, 979,
1001, 1001, 0, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1003, 1003, 0, 1003, 1003, 1003, 1003, 1003, 1003, 1003,
1001, 1001, 1001, 255, 1001, 0, 1001, 262, 280, 298, 1003, 1003, 1003, 255, 1003, 0, 1003, 262, 280, 298,
317, 0, 332, 1001, 1001, 1001, 965, 1001, 1001, 1001, 317, 0, 332, 1003, 1003, 1003, 967, 1003, 1003, 1003,
964, 0, 1001, 1001, 927, 932, 206, 929, 937, 936, 966, 0, 1003, 1003, 929, 934, 206, 931, 939, 938,
923, 926, 937, 233, 931, 919, 916, 929, 916, 913, 925, 928, 939, 233, 933, 921, 918, 931, 918, 915,
913, 919, 237, 248, 913, 923, 909, 915, 918, 919, 915, 921, 237, 248, 915, 925, 911, 917, 920, 921,
0, 911, 921, 300, 920, 915, 109, 901, 914, 905, 0, 913, 923, 300, 922, 917, 109, 903, 916, 907,
268, 898, 262, 910, 912, 246, 901, 898, 887, 896, 268, 900, 262, 912, 914, 246, 903, 900, 889, 898,
206, 264, 900, 896, 898, 887, 890, 892, 279, 315, 206, 264, 902, 898, 900, 889, 892, 230, 279, 315,
887, 899, 150, 892, 891, 1001, 1001, 1001, 0, 356, 890, 902, 150, 895, 894, 1003, 1003, 1003, 0, 356,
0, 366, 384, 391, 400, 0, 1001, 1001, 890, 0, 0, 366, 384, 391, 400, 0, 1003, 1003, 893, 0,
886, 881, 885, 894, 891, 294, 875, 875, 886, 878, 889, 884, 888, 897, 894, 294, 878, 878, 889, 881,
225, 888, 885, 885, 883, 880, 872, 878, 865, 863, 264, 891, 888, 888, 886, 883, 875, 881, 868, 866,
875, 861, 877, 0, 874, 862, 869, 866, 870, 871, 878, 864, 880, 0, 877, 865, 872, 869, 873, 874,
864, 861, 850, 849, 862, 865, 853, 861, 856, 847, 867, 864, 853, 852, 865, 868, 856, 864, 859, 850,
371, 852, 855, 846, 853, 842, 846, 837, 851, 850, 371, 855, 858, 849, 856, 845, 849, 840, 854, 853,
841, 847, 283, 831, 834, 832, 842, 832, 827, 825, 844, 850, 283, 834, 837, 835, 845, 835, 830, 828,
827, 837, 823, 825, 822, 833, 832, 835, 313, 826, 830, 840, 826, 828, 825, 836, 835, 838, 820, 313,
822, 820, 809, 374, 827, 829, 818, 810, 407, 414, 828, 824, 822, 811, 374, 829, 831, 820, 812, 407,
421, 428, 807, 817, 816, 0, 814, 433, 0, 0, 414, 421, 428, 809, 819, 818, 0, 816, 433, 0,
807, 805, 805, 806, 801, 809, 798, 815, 804, 436, 0, 809, 807, 807, 808, 803, 811, 800, 817, 806,
0, 0, 798, 808, 807, 807, 0, 792, 439, 0, 436, 0, 0, 800, 810, 809, 809, 0, 794, 439,
0, 794, 442, 801, 802, 793, 787, 786, 787, 786, 0, 0, 796, 442, 803, 804, 795, 789, 788, 789,
786, 445, 0, 0, 778, 777, 776, 778, 779, 784, 788, 788, 445, 0, 0, 780, 779, 778, 780, 781,
778, 774, 787, 782, 782, 780, 779, 773, 767, 769, 786, 780, 776, 789, 784, 784, 782, 781, 775, 769,
768, 772, 764, 767, 762, 770, 775, 763, 760, 772, 771, 770, 774, 766, 769, 764, 772, 777, 765, 762,
763, 0, 0, 769, 765, 757, 757, 762, 753, 760, 774, 765, 0, 0, 771, 767, 0, 759, 759, 764,
757, 0, 0, 0, 0, 747, 759, 758, 757, 758, 755, 762, 759, 0, 0, 0, 0, 749, 761, 760,
758, 0, 0, 0, 0, 745, 0, 753, 744, 0, 759, 760, 760, 0, 0, 0, 0, 747, 0, 755,
743, 744, 738, 748, 0, 0, 0, 739, 0, 735, 746, 0, 745, 746, 740, 750, 0, 0, 0, 741,
0, 0, 0, 0, 0, 0, 0, 0, 0, 745, 0, 737, 0, 0, 0, 0, 0, 0, 0, 0,
449, 744, 0, 0, 742, 738, 735, 0, 0, 0, 0, 747, 449, 746, 0, 0, 744, 740, 737, 0,
451, 454, 457, 733, 729, 734, 725, 723, 736, 721, 0, 0, 451, 454, 457, 735, 731, 736, 727, 725,
0, 721, 734, 723, 719, 725, 720, 727, 0, 725, 738, 723, 0, 723, 736, 725, 721, 727, 722, 729,
722, 726, 710, 708, 711, 717, 723, 718, 717, 705, 0, 727, 724, 728, 712, 710, 713, 719, 725, 720,
0, 707, 708, 0, 705, 708, 0, 702, 0, 715, 719, 707, 0, 709, 710, 0, 707, 710, 0, 704,
695, 704, 699, 0, 692, 692, 705, 0, 707, 0, 0, 717, 697, 706, 701, 0, 694, 694, 707, 0,
464, 719, 718, 717, 685, 684, 0, 701, 700, 695, 709, 0, 464, 721, 720, 719, 687, 686, 0, 703,
0, 0, 0, 0, 0, 0, 0, 0, 0, 684, 702, 697, 0, 0, 0, 0, 0, 0, 0, 0,
697, 684, 681, 0, 0, 686, 685, 0, 682, 689, 0, 686, 699, 686, 683, 0, 0, 688, 687, 0,
688, 0, 674, 0, 0, 0, 0, 671, 0, 0, 684, 691, 690, 0, 676, 0, 0, 0, 0, 673,
670, 681, 467, 674, 680, 679, 676, 671, 668, 661, 0, 0, 672, 683, 467, 676, 682, 681, 678, 673,
661, 674, 659, 671, 0, 0, 664, 686, 685, 684, 670, 663, 663, 676, 661, 673, 0, 0, 666, 688,
652, 651, 341, 449, 0, 663, 666, 664, 653, 649, 687, 686, 654, 653, 341, 449, 0, 665, 668, 666,
0, 661, 658, 657, 647, 646, 636, 653, 639, 472, 655, 651, 0, 663, 660, 659, 649, 648, 638, 655,
647, 650, 0, 666, 665, 664, 632, 631, 0, 645, 641, 472, 649, 652, 0, 668, 667, 666, 634, 633,
632, 0, 642, 635, 636, 639, 0, 0, 0, 0, 0, 647, 634, 0, 644, 637, 638, 641, 0, 0,
658, 657, 0, 635, 638, 623, 630, 621, 628, 629, 0, 0, 660, 659, 0, 637, 640, 625, 632, 623,
629, 628, 614, 482, 626, 0, 627, 616, 615, 0, 630, 631, 631, 630, 616, 482, 628, 0, 629, 618,
0, 0, 639, 638, 637, 605, 604, 600, 608, 0, 617, 0, 0, 0, 641, 640, 639, 607, 606, 602,
635, 634, 0, 612, 615, 0, 489, 0, 593, 602, 610, 0, 637, 636, 0, 614, 617, 0, 489, 0,
0, 598, 597, 606, 606, 594, 608, 592, 606, 601, 595, 604, 0, 600, 599, 608, 608, 596, 610, 594,
0, 0, 0, 617, 616, 584, 0, 584, 0, 0, 608, 603, 0, 0, 0, 619, 618, 586, 0, 586,
472, 477, 607, 594, 597, 580, 592, 580, 579, 588, 0, 0, 472, 477, 609, 596, 599, 582, 594, 582,
588, 604, 603, 571, 0, 571, 572, 571, 581, 0, 581, 590, 590, 606, 605, 573, 0, 573, 574, 573,
584, 580, 582, 578, 565, 595, 203, 573, 569, 561, 583, 0, 586, 582, 584, 580, 567, 597, 203, 575,
568, 580, 569, 565, 567, 565, 565, 564, 0, 552, 571, 563, 570, 582, 571, 567, 569, 567, 567, 566,
551, 561, 0, 580, 208, 558, 0, 562, 561, 545, 0, 554, 553, 563, 0, 582, 208, 560, 0, 564,
537, 545, 535, 543, 0, 540, 560, 549, 547, 532, 563, 547, 539, 547, 537, 545, 0, 542, 562, 551,
535, 549, 564, 545, 546, 543, 540, 0, 528, 542, 549, 534, 537, 551, 566, 547, 548, 545, 542, 0,
541, 525, 524, 544, 533, 531, 513, 512, 0, 539, 530, 544, 543, 527, 526, 546, 535, 533, 515, 514,
512, 537, 510, 514, 544, 525, 522, 521, 524, 520, 0, 541, 514, 539, 512, 516, 546, 527, 524, 523,
507, 504, 517, 502, 503, 505, 494, 493, 0, 499, 526, 522, 509, 506, 519, 504, 505, 507, 496, 495,
529, 510, 507, 0, 0, 503, 0, 502, 0, 508, 0, 501, 531, 512, 509, 0, 0, 505, 0, 504,
492, 489, 490, 0, 482, 490, 487, 507, 487, 0, 0, 510, 494, 491, 492, 0, 484, 492, 489, 509,
0, 499, 0, 0, 498, 482, 479, 480, 494, 493, 489, 0, 0, 501, 0, 0, 500, 484, 481, 482,
470, 476, 0, 0, 496, 469, 488, 480, 464, 463, 496, 495, 472, 478, 0, 0, 498, 471, 490, 482,
450, 454, 0, 0, 462, 461, 0, 463, 452, 0, 468, 477, 462, 458, 0, 0, 469, 466, 0, 465,
429, 448, 0, 455, 0, 442, 356, 340, 329, 334, 457, 0, 441, 459, 0, 459, 0, 448, 434, 429,
0, 318, 328, 290, 279, 277, 0, 278, 267, 266, 347, 353, 0, 348, 346, 299, 296, 292, 0, 296,
0, 0, 0, 211, 158, 0, 126, 0, 0, 1001, 284, 266, 0, 0, 0, 211, 158, 0, 126, 0,
518, 520, 522, 526, 171 0, 1003, 518, 520, 522, 526, 171
} ; } ;
static yyconst flex_int16_t yy_def[776] = static yyconst flex_int16_t yy_def[778] =
{ 0, { 0,
770, 1, 771, 771, 770, 5, 770, 770, 770, 770, 772, 1, 773, 773, 772, 5, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770,
770, 770, 770, 770, 770, 770, 770, 770, 770, 772,
770, 770, 770, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774,
770, 770, 773, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774,
770, 770, 770, 770, 770, 774, 770, 770, 770, 770, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
770, 775, 770, 770, 770, 770, 770, 770, 770, 770, 774, 774, 774, 772, 772, 772, 772, 772, 772, 772,
770, 772, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 775, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 776, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 777, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 772, 772, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 770, 770, 770, 773, 770, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 770, 770, 770, 770, 775, 770, 770, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 772, 772, 772, 775, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 776, 772, 772, 772, 772, 777, 772, 772, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 770, 770, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
772, 772, 772, 772, 772, 772, 772, 772, 772, 0, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
770, 770, 770, 770, 770 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
774, 0, 772, 772, 772, 772, 772
} ; } ;
static yyconst flex_int16_t yy_nxt[1073] = static yyconst flex_int16_t yy_nxt[1075] =
{ 0, { 0,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 23, 23, 23, 23, 18, 19, 20, 21, 22, 23, 23, 23, 23, 23,
...@@ -723,108 +724,108 @@ static yyconst flex_int16_t yy_nxt[1073] = ...@@ -723,108 +724,108 @@ static yyconst flex_int16_t yy_nxt[1073] =
67, 70, 72, 74, 74, 74, 74, 74, 74, 74, 67, 70, 72, 74, 74, 74, 74, 74, 74, 74,
93, 95, 75, 154, 209, 73, 71, 76, 98, 68, 93, 95, 75, 154, 209, 73, 71, 76, 98, 68,
99, 155, 210, 166, 100, 96, 97, 94, 77, 78, 99, 155, 210, 166, 100, 96, 97, 94, 77, 78,
85, 79, 79, 79, 79, 79, 79, 80, 78, 769, 85, 79, 79, 79, 79, 79, 79, 80, 78, 771,
83, 83, 83, 83, 83, 83, 83, 86, 81, 87, 83, 83, 83, 83, 83, 83, 83, 86, 81, 87,
88, 245, 101, 246, 105, 82, 102, 81, 106, 109, 88, 246, 101, 247, 105, 82, 102, 81, 106, 109,
156, 110, 103, 107, 81, 104, 112, 118, 128, 108, 156, 110, 103, 107, 81, 104, 112, 118, 128, 108,
111, 768, 129, 81, 113, 119, 114, 121, 133, 115, 111, 770, 129, 81, 113, 119, 114, 121, 133, 115,
122, 82, 130, 123, 124, 116, 120, 647, 125, 648, 122, 82, 130, 123, 124, 116, 120, 649, 125, 650,
137, 126, 664, 134, 665, 131, 135, 138, 139, 229, 137, 126, 666, 134, 667, 131, 135, 138, 139, 229,
144, 140, 151, 145, 157, 148, 152, 141, 142, 149, 144, 140, 151, 145, 157, 148, 152, 141, 142, 149,
143, 146, 171, 150, 230, 153, 172, 767, 147, 74, 143, 146, 171, 150, 230, 153, 172, 769, 147, 74,
74, 74, 74, 74, 74, 74, 162, 162, 162, 162, 74, 74, 74, 74, 74, 74, 162, 162, 162, 162,
162, 162, 162, 179, 265, 266, 160, 180, 181, 222, 162, 162, 162, 179, 238, 239, 160, 180, 181, 222,
190, 192, 78, 163, 79, 79, 79, 79, 79, 79, 190, 192, 78, 163, 79, 79, 79, 79, 79, 79,
80, 191, 160, 766, 193, 223, 224, 217, 231, 163, 80, 191, 160, 768, 193, 223, 224, 217, 231, 163,
78, 81, 80, 80, 80, 80, 80, 80, 80, 214, 78, 81, 80, 80, 80, 80, 80, 80, 80, 214,
218, 232, 219, 765, 764, 215, 164, 81, 164, 81, 218, 232, 219, 266, 267, 215, 164, 81, 164, 81,
239, 165, 165, 165, 165, 165, 165, 165, 240, 309, 240, 165, 165, 165, 165, 165, 165, 165, 241, 310,
763, 259, 762, 310, 78, 81, 83, 83, 83, 83, 767, 260, 766, 311, 78, 81, 83, 83, 83, 83,
83, 83, 83, 202, 260, 761, 203, 204, 241, 760, 83, 83, 83, 202, 261, 765, 203, 204, 242, 764,
205, 326, 206, 81, 759, 249, 242, 249, 536, 327, 205, 328, 206, 81, 763, 250, 243, 250, 538, 329,
250, 250, 250, 250, 250, 250, 250, 758, 537, 81, 251, 251, 251, 251, 251, 251, 251, 762, 539, 81,
162, 162, 162, 162, 162, 162, 162, 295, 296, 297, 162, 162, 162, 162, 162, 162, 162, 296, 297, 298,
332, 333, 334, 251, 757, 251, 756, 163, 252, 252, 334, 335, 336, 252, 761, 252, 760, 163, 253, 253,
252, 252, 252, 252, 252, 165, 165, 165, 165, 165, 253, 253, 253, 253, 253, 165, 165, 165, 165, 165,
165, 165, 755, 163, 165, 165, 165, 165, 165, 165, 165, 165, 759, 163, 165, 165, 165, 165, 165, 165,
165, 250, 250, 250, 250, 250, 250, 250, 250, 250, 165, 251, 251, 251, 251, 251, 251, 251, 251, 251,
250, 250, 250, 250, 250, 252, 252, 252, 252, 252, 251, 251, 251, 251, 251, 253, 253, 253, 253, 253,
252, 252, 252, 252, 252, 252, 252, 252, 252, 343, 253, 253, 253, 253, 253, 253, 253, 253, 253, 345,
344, 345, 355, 356, 357, 363, 364, 365, 367, 368, 346, 347, 357, 358, 359, 365, 366, 367, 369, 370,
369, 378, 379, 380, 432, 433, 434, 441, 442, 443, 371, 380, 381, 382, 434, 435, 436, 443, 444, 445,
444, 445, 446, 447, 448, 449, 538, 435, 436, 488, 446, 447, 448, 449, 450, 451, 540, 437, 438, 490,
489, 490, 514, 515, 516, 754, 539, 553, 554, 555, 491, 492, 516, 517, 518, 758, 541, 555, 556, 557,
753, 752, 491, 492, 751, 517, 518, 584, 585, 620, 757, 756, 493, 494, 755, 519, 520, 586, 587, 622,
556, 557, 750, 558, 602, 603, 749, 748, 747, 621, 558, 559, 754, 560, 604, 605, 753, 752, 751, 623,
586, 622, 746, 623, 624, 745, 744, 604, 58, 58, 588, 624, 750, 625, 626, 749, 748, 606, 58, 58,
58, 58, 92, 92, 159, 159, 161, 743, 161, 161, 58, 58, 92, 92, 159, 159, 161, 747, 161, 161,
742, 741, 740, 739, 738, 737, 736, 735, 734, 733, 746, 745, 744, 743, 742, 741, 740, 739, 738, 737,
732, 731, 730, 729, 728, 727, 726, 725, 724, 723, 736, 735, 734, 733, 732, 731, 730, 729, 728, 727,
722, 721, 720, 719, 718, 717, 716, 715, 714, 713, 726, 725, 724, 723, 722, 721, 720, 719, 718, 717,
712, 711, 710, 709, 708, 707, 706, 705, 704, 703, 716, 715, 714, 713, 712, 711, 710, 709, 708, 707,
702, 701, 700, 699, 698, 697, 696, 695, 694, 693, 706, 705, 704, 703, 702, 701, 700, 699, 698, 697,
692, 691, 690, 689, 688, 687, 686, 685, 684, 683, 696, 695, 694, 693, 692, 691, 690, 689, 688, 687,
682, 681, 680, 679, 678, 677, 676, 675, 674, 673, 686, 685, 684, 683, 682, 681, 680, 679, 678, 677,
672, 671, 670, 669, 668, 667, 666, 663, 662, 661, 676, 675, 674, 673, 672, 671, 670, 669, 668, 665,
660, 659, 658, 657, 656, 655, 654, 653, 652, 651, 664, 663, 662, 661, 660, 659, 658, 657, 656, 655,
650, 649, 646, 645, 644, 643, 642, 641, 640, 639, 654, 653, 652, 651, 648, 647, 646, 645, 644, 643,
638, 637, 636, 635, 634, 633, 632, 631, 630, 629, 642, 641, 640, 639, 638, 637, 636, 635, 634, 633,
628, 627, 626, 625, 619, 618, 617, 616, 615, 614, 632, 631, 630, 629, 628, 627, 621, 620, 619, 618,
613, 612, 611, 610, 609, 608, 607, 606, 605, 601, 617, 616, 615, 614, 613, 612, 611, 610, 609, 608,
600, 599, 598, 597, 596, 595, 594, 593, 592, 591, 607, 603, 602, 601, 600, 599, 598, 597, 596, 595,
590, 589, 588, 587, 583, 582, 581, 580, 579, 578, 594, 593, 592, 591, 590, 589, 585, 584, 583, 582,
577, 576, 575, 574, 573, 572, 571, 570, 569, 568, 581, 580, 579, 578, 577, 576, 575, 574, 573, 572,
567, 566, 565, 564, 563, 562, 561, 560, 559, 552, 571, 570, 569, 568, 567, 566, 565, 564, 563, 562,
551, 550, 549, 548, 547, 546, 545, 544, 543, 542, 561, 554, 553, 552, 551, 550, 549, 548, 547, 546,
541, 540, 535, 534, 533, 532, 531, 530, 529, 528, 545, 544, 543, 542, 537, 536, 535, 534, 533, 532,
527, 526, 525, 524, 523, 522, 521, 520, 519, 513, 531, 530, 529, 528, 527, 526, 525, 524, 523, 522,
512, 511, 510, 509, 508, 507, 506, 505, 504, 503, 521, 515, 514, 513, 512, 511, 510, 509, 508, 507,
502, 501, 500, 499, 498, 497, 496, 495, 494, 493, 506, 505, 504, 503, 502, 501, 500, 499, 498, 497,
487, 486, 485, 484, 483, 482, 481, 480, 479, 478, 496, 495, 489, 488, 487, 486, 485, 484, 483, 482,
477, 476, 475, 474, 473, 472, 471, 470, 469, 468, 481, 480, 479, 478, 477, 476, 475, 474, 473, 472,
467, 466, 465, 464, 463, 462, 461, 460, 459, 458, 471, 470, 469, 468, 467, 466, 465, 464, 463, 462,
457, 456, 455, 454, 453, 452, 451, 450, 440, 439, 461, 460, 459, 458, 457, 456, 455, 454, 453, 452,
438, 437, 431, 430, 429, 428, 427, 426, 425, 424, 442, 441, 440, 439, 433, 432, 431, 430, 429, 428,
423, 422, 421, 420, 419, 418, 417, 416, 415, 414, 427, 426, 425, 424, 423, 422, 421, 420, 419, 418,
413, 412, 411, 410, 409, 408, 407, 406, 405, 404, 417, 416, 415, 414, 413, 412, 411, 410, 409, 408,
403, 402, 401, 400, 399, 398, 397, 396, 395, 394, 407, 406, 405, 404, 403, 402, 401, 400, 399, 398,
393, 392, 391, 390, 389, 388, 387, 386, 385, 384, 397, 396, 395, 394, 393, 392, 391, 390, 389, 388,
383, 382, 381, 377, 376, 375, 374, 373, 372, 371, 387, 386, 385, 384, 383, 379, 378, 377, 376, 375,
370, 366, 362, 361, 360, 359, 358, 354, 353, 352, 374, 373, 372, 368, 364, 363, 362, 361, 360, 356,
351, 350, 349, 348, 347, 346, 342, 341, 340, 339, 355, 354, 353, 352, 351, 350, 349, 348, 344, 343,
338, 337, 336, 335, 331, 330, 329, 328, 325, 324, 342, 341, 340, 339, 338, 337, 333, 332, 331, 330,
323, 322, 321, 320, 319, 318, 317, 316, 315, 314, 327, 326, 325, 324, 323, 322, 321, 320, 319, 318,
313, 312, 311, 308, 307, 306, 305, 304, 303, 302, 317, 316, 315, 314, 313, 312, 309, 308, 307, 306,
301, 300, 299, 298, 294, 293, 292, 291, 290, 289, 305, 304, 303, 302, 301, 300, 299, 295, 294, 293,
288, 287, 286, 285, 284, 283, 282, 281, 280, 279, 292, 291, 290, 289, 288, 287, 286, 285, 284, 283,
278, 277, 276, 275, 274, 273, 272, 271, 270, 269, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273,
268, 267, 264, 263, 262, 261, 258, 257, 256, 255, 272, 271, 270, 269, 268, 265, 264, 263, 262, 259,
254, 253, 248, 247, 244, 243, 238, 237, 236, 235, 258, 257, 256, 255, 254, 249, 248, 245, 244, 237,
234, 233, 228, 227, 226, 225, 221, 220, 216, 213, 236, 235, 234, 233, 228, 227, 226, 225, 221, 220,
212, 211, 208, 207, 201, 200, 199, 198, 197, 196, 216, 213, 212, 211, 208, 207, 201, 200, 199, 198,
195, 194, 189, 188, 187, 186, 185, 184, 183, 182, 197, 196, 195, 194, 189, 188, 187, 186, 185, 184,
178, 177, 176, 175, 174, 173, 170, 169, 168, 167, 183, 182, 178, 177, 176, 175, 174, 173, 170, 169,
158, 136, 132, 127, 117, 89, 84, 69, 64, 770, 168, 167, 158, 136, 132, 127, 117, 89, 84, 69,
7, 770, 770, 770, 770, 770, 770, 770, 770, 770, 64, 772, 7, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770 772, 772, 772, 772
} ; } ;
static yyconst flex_int16_t yy_chk[1073] = static yyconst flex_int16_t yy_chk[1075] =
{ 0, { 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
...@@ -844,110 +845,110 @@ static yyconst flex_int16_t yy_chk[1073] = ...@@ -844,110 +845,110 @@ static yyconst flex_int16_t yy_chk[1073] =
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
13, 17, 19, 20, 20, 20, 20, 20, 20, 20, 13, 17, 19, 20, 20, 20, 20, 20, 20, 20,
33, 34, 21, 53, 127, 19, 17, 21, 35, 13, 33, 34, 21, 53, 127, 19, 17, 21, 35, 13,
35, 53, 127, 775, 35, 34, 34, 33, 21, 22, 35, 53, 127, 777, 35, 34, 34, 33, 21, 22,
26, 22, 22, 22, 22, 22, 22, 22, 23, 767, 26, 22, 22, 22, 22, 22, 22, 22, 23, 769,
23, 23, 23, 23, 23, 23, 23, 26, 22, 26, 23, 23, 23, 23, 23, 23, 23, 26, 22, 26,
26, 153, 36, 153, 37, 22, 36, 23, 37, 38, 26, 153, 36, 153, 37, 22, 36, 23, 37, 38,
55, 38, 36, 37, 22, 36, 39, 41, 44, 37, 55, 38, 36, 37, 22, 36, 39, 41, 44, 37,
38, 765, 44, 23, 39, 41, 39, 42, 47, 39, 38, 767, 44, 23, 39, 41, 39, 42, 47, 39,
42, 22, 45, 42, 42, 39, 41, 617, 42, 617, 42, 22, 45, 42, 42, 39, 41, 619, 42, 619,
49, 42, 635, 47, 635, 45, 47, 49, 49, 141, 49, 42, 637, 47, 637, 45, 47, 49, 49, 141,
50, 49, 52, 50, 55, 51, 52, 49, 49, 51, 50, 49, 52, 50, 55, 51, 52, 49, 49, 51,
49, 50, 97, 51, 141, 52, 97, 764, 50, 74, 49, 50, 97, 51, 141, 52, 97, 766, 50, 74,
74, 74, 74, 74, 74, 74, 78, 78, 78, 78, 74, 74, 74, 74, 74, 74, 78, 78, 78, 78,
78, 78, 78, 104, 181, 181, 74, 104, 104, 136, 78, 78, 78, 104, 148, 148, 74, 104, 104, 136,
113, 114, 79, 78, 79, 79, 79, 79, 79, 79, 113, 114, 79, 78, 79, 79, 79, 79, 79, 79,
79, 113, 74, 760, 114, 136, 136, 133, 142, 78, 79, 113, 74, 762, 114, 136, 136, 133, 142, 78,
80, 79, 80, 80, 80, 80, 80, 80, 80, 131, 80, 79, 80, 80, 80, 80, 80, 80, 80, 131,
133, 142, 133, 759, 758, 131, 81, 79, 81, 80, 133, 142, 133, 181, 181, 131, 81, 79, 81, 80,
149, 81, 81, 81, 81, 81, 81, 81, 149, 223, 149, 81, 81, 81, 81, 81, 81, 81, 149, 223,
756, 176, 755, 223, 83, 80, 83, 83, 83, 83, 761, 176, 760, 223, 83, 80, 83, 83, 83, 83,
83, 83, 83, 124, 176, 754, 124, 124, 150, 753, 83, 83, 83, 124, 176, 758, 124, 124, 150, 757,
124, 239, 124, 83, 752, 160, 150, 160, 493, 239, 124, 240, 124, 83, 756, 160, 150, 160, 495, 240,
160, 160, 160, 160, 160, 160, 160, 750, 493, 83, 160, 160, 160, 160, 160, 160, 160, 755, 495, 83,
162, 162, 162, 162, 162, 162, 162, 211, 211, 211, 162, 162, 162, 162, 162, 162, 162, 211, 211, 211,
244, 244, 244, 163, 749, 163, 748, 162, 163, 163, 245, 245, 245, 163, 754, 163, 752, 162, 163, 163,
163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164,
164, 164, 747, 162, 165, 165, 165, 165, 165, 165, 164, 164, 751, 162, 165, 165, 165, 165, 165, 165,
165, 249, 249, 249, 249, 249, 249, 249, 250, 250, 165, 250, 250, 250, 250, 250, 250, 250, 251, 251,
250, 250, 250, 250, 250, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 252, 252, 252, 252, 252,
251, 251, 252, 252, 252, 252, 252, 252, 252, 258, 252, 252, 253, 253, 253, 253, 253, 253, 253, 259,
258, 258, 270, 270, 270, 279, 279, 279, 283, 283, 259, 259, 271, 271, 271, 280, 280, 280, 284, 284,
283, 292, 292, 292, 371, 371, 371, 381, 381, 381, 284, 293, 293, 293, 373, 373, 373, 383, 383, 383,
382, 382, 382, 383, 383, 383, 494, 371, 371, 431, 384, 384, 384, 385, 385, 385, 496, 373, 373, 433,
431, 431, 473, 473, 473, 746, 494, 510, 510, 510, 433, 433, 475, 475, 475, 750, 496, 512, 512, 512,
744, 742, 431, 431, 741, 473, 473, 544, 544, 591, 749, 748, 433, 433, 746, 475, 475, 546, 546, 593,
510, 510, 739, 510, 567, 567, 738, 736, 735, 591, 512, 512, 744, 512, 569, 569, 743, 741, 740, 593,
544, 592, 732, 592, 592, 731, 730, 567, 771, 771, 546, 594, 738, 594, 594, 737, 734, 569, 773, 773,
771, 771, 772, 772, 773, 773, 774, 729, 774, 774, 773, 773, 774, 774, 775, 775, 776, 733, 776, 776,
728, 727, 726, 725, 722, 721, 720, 719, 718, 717, 732, 731, 730, 729, 728, 727, 724, 723, 722, 721,
716, 715, 712, 709, 708, 707, 706, 705, 703, 702, 720, 719, 718, 717, 714, 711, 710, 709, 708, 707,
701, 700, 698, 696, 693, 692, 691, 690, 688, 687, 705, 704, 703, 702, 700, 698, 695, 694, 693, 692,
686, 685, 684, 683, 682, 681, 680, 679, 678, 677, 690, 689, 688, 687, 686, 685, 684, 683, 682, 681,
676, 675, 674, 673, 672, 671, 670, 668, 667, 666, 680, 679, 678, 677, 676, 675, 674, 673, 672, 670,
665, 664, 663, 662, 661, 660, 659, 657, 656, 655, 669, 668, 667, 666, 665, 664, 663, 662, 661, 659,
654, 653, 652, 651, 650, 649, 648, 647, 646, 644, 658, 657, 656, 655, 654, 653, 652, 651, 650, 649,
643, 642, 641, 640, 639, 638, 636, 634, 632, 631, 648, 646, 645, 644, 643, 642, 641, 640, 638, 636,
630, 628, 627, 626, 625, 624, 623, 622, 621, 620, 634, 633, 632, 630, 629, 628, 627, 626, 625, 624,
619, 618, 616, 615, 614, 613, 612, 611, 609, 608, 623, 622, 621, 620, 618, 617, 616, 615, 614, 613,
607, 606, 604, 603, 602, 601, 600, 599, 598, 597, 611, 610, 609, 608, 606, 605, 604, 603, 602, 601,
596, 595, 594, 593, 588, 586, 585, 584, 580, 579, 600, 599, 598, 597, 596, 595, 590, 588, 587, 586,
578, 577, 576, 575, 574, 573, 572, 570, 569, 565, 582, 581, 580, 579, 578, 577, 576, 575, 574, 572,
564, 562, 561, 559, 558, 557, 556, 555, 554, 553, 571, 567, 566, 564, 563, 561, 560, 559, 558, 557,
549, 548, 547, 545, 543, 542, 541, 540, 539, 538, 556, 555, 551, 550, 549, 547, 545, 544, 543, 542,
537, 536, 535, 534, 532, 531, 526, 525, 524, 523, 541, 540, 539, 538, 537, 536, 534, 533, 528, 527,
521, 520, 518, 517, 516, 515, 514, 512, 511, 509, 526, 525, 523, 522, 520, 519, 518, 517, 516, 514,
508, 507, 506, 505, 504, 503, 502, 500, 499, 498, 513, 511, 510, 509, 508, 507, 506, 505, 504, 502,
497, 496, 492, 491, 490, 489, 488, 487, 484, 483, 501, 500, 499, 498, 494, 493, 492, 491, 490, 489,
482, 481, 480, 479, 478, 477, 476, 475, 474, 472, 486, 485, 484, 483, 482, 481, 480, 479, 478, 477,
471, 468, 463, 461, 460, 459, 457, 456, 453, 452, 476, 474, 473, 470, 465, 463, 462, 461, 459, 458,
451, 450, 440, 439, 438, 436, 435, 434, 433, 432, 455, 454, 453, 452, 442, 441, 440, 438, 437, 436,
429, 427, 426, 425, 423, 422, 421, 420, 418, 416, 435, 434, 431, 429, 428, 427, 425, 424, 423, 422,
415, 413, 412, 410, 409, 408, 407, 406, 405, 404, 420, 418, 417, 415, 414, 412, 411, 410, 409, 408,
403, 402, 401, 400, 398, 397, 396, 395, 394, 393, 407, 406, 405, 404, 403, 402, 400, 399, 398, 397,
392, 390, 389, 388, 387, 386, 385, 384, 377, 376, 396, 395, 394, 392, 391, 390, 389, 388, 387, 386,
375, 372, 370, 360, 358, 354, 353, 352, 351, 349, 379, 378, 377, 374, 372, 362, 360, 356, 355, 354,
348, 346, 341, 340, 339, 338, 337, 336, 331, 330, 353, 351, 350, 348, 343, 342, 341, 340, 339, 338,
329, 328, 327, 326, 325, 324, 321, 320, 319, 318, 333, 332, 331, 330, 329, 328, 326, 325, 322, 321,
317, 316, 315, 314, 313, 312, 311, 310, 309, 308, 320, 319, 318, 317, 316, 315, 314, 313, 312, 311,
307, 306, 305, 304, 303, 302, 301, 300, 299, 298, 310, 309, 308, 307, 306, 305, 304, 303, 302, 301,
297, 296, 295, 291, 290, 289, 288, 287, 286, 285, 300, 299, 298, 297, 296, 292, 291, 290, 289, 288,
284, 282, 278, 276, 275, 274, 273, 269, 268, 267, 287, 286, 285, 283, 279, 277, 276, 275, 274, 270,
266, 265, 264, 263, 262, 261, 257, 255, 254, 253, 269, 268, 267, 266, 265, 264, 263, 262, 258, 256,
248, 247, 246, 245, 243, 242, 241, 240, 238, 237, 255, 254, 249, 248, 247, 246, 244, 243, 242, 241,
236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230,
226, 225, 224, 222, 221, 220, 219, 218, 217, 216, 229, 228, 227, 226, 225, 224, 222, 221, 220, 219,
215, 214, 213, 212, 210, 209, 208, 207, 206, 205, 218, 217, 216, 215, 214, 213, 212, 210, 209, 208,
204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198,
193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 197, 196, 195, 193, 192, 191, 190, 189, 188, 187,
183, 182, 180, 179, 178, 177, 175, 174, 173, 172, 186, 185, 184, 183, 182, 180, 179, 178, 177, 175,
171, 169, 155, 154, 152, 151, 148, 147, 146, 145, 174, 173, 172, 171, 169, 155, 154, 152, 151, 147,
144, 143, 140, 139, 138, 137, 135, 134, 132, 130, 146, 145, 144, 143, 140, 139, 138, 137, 135, 134,
129, 128, 126, 125, 123, 122, 120, 119, 118, 117, 132, 130, 129, 128, 126, 125, 123, 122, 120, 119,
116, 115, 112, 111, 110, 109, 108, 107, 106, 105, 118, 117, 116, 115, 112, 111, 110, 109, 108, 107,
103, 102, 101, 100, 99, 98, 96, 95, 91, 87, 106, 105, 103, 102, 101, 100, 99, 98, 96, 95,
60, 48, 46, 43, 40, 27, 24, 16, 11, 7, 91, 87, 60, 48, 46, 43, 40, 27, 24, 16,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 11, 7, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
770, 770 772, 772, 772, 772
} ; } ;
/* Table of booleans, true if rule could match eol. */ /* Table of booleans, true if rule could match eol. */
static yyconst flex_int32_t yy_rule_can_match_eol[224] = static yyconst flex_int32_t yy_rule_can_match_eol[225] =
{ 0, { 0,
0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
...@@ -960,7 +961,7 @@ static yyconst flex_int32_t yy_rule_can_match_eol[224] = ...@@ -960,7 +961,7 @@ static yyconst flex_int32_t yy_rule_can_match_eol[224] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, };
/* The intent behind this definition is that it'll catch /* The intent behind this definition is that it'll catch
* any uses of REJECT which flex missed. * any uses of REJECT which flex missed.
...@@ -1290,13 +1291,13 @@ yy_match: ...@@ -1290,13 +1291,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 771 ) if ( yy_current_state >= 773 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp; ++yy_cp;
} }
while ( yy_current_state != 770 ); while ( yy_current_state != 772 );
yy_cp = yyg->yy_last_accepting_cpos; yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state; yy_current_state = yyg->yy_last_accepting_state;
...@@ -1457,146 +1458,149 @@ YY_RULE_SETUP ...@@ -1457,146 +1458,149 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 33: case 33:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return(VOID_TYPE); } { return ES2_ident_ES3_keyword(context, UINT_TYPE); }
YY_BREAK YY_BREAK
case 34: case 34:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return(BOOL_TYPE); } { context->lexAfterType = true; return(VOID_TYPE); }
YY_BREAK YY_BREAK
case 35: case 35:
YY_RULE_SETUP YY_RULE_SETUP
{ yylval->lex.b = true; return(BOOLCONSTANT); } { context->lexAfterType = true; return(BOOL_TYPE); }
YY_BREAK YY_BREAK
case 36: case 36:
YY_RULE_SETUP YY_RULE_SETUP
{ yylval->lex.b = false; return(BOOLCONSTANT); } { yylval->lex.b = true; return(BOOLCONSTANT); }
YY_BREAK YY_BREAK
case 37: case 37:
YY_RULE_SETUP YY_RULE_SETUP
{ return(DISCARD); } { yylval->lex.b = false; return(BOOLCONSTANT); }
YY_BREAK YY_BREAK
case 38: case 38:
YY_RULE_SETUP YY_RULE_SETUP
{ return(RETURN); } { return(DISCARD); }
YY_BREAK YY_BREAK
case 39: case 39:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return(MATRIX2); } { return(RETURN); }
YY_BREAK YY_BREAK
case 40: case 40:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return(MATRIX3); } { context->lexAfterType = true; return(MATRIX2); }
YY_BREAK YY_BREAK
case 41: case 41:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return(MATRIX4); } { context->lexAfterType = true; return(MATRIX3); }
YY_BREAK YY_BREAK
case 42: case 42:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX2); } { context->lexAfterType = true; return(MATRIX4); }
YY_BREAK YY_BREAK
case 43: case 43:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX3); } { return ES2_ident_ES3_keyword(context, MATRIX2); }
YY_BREAK YY_BREAK
case 44: case 44:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX4); } { return ES2_ident_ES3_keyword(context, MATRIX3); }
YY_BREAK YY_BREAK
case 45: case 45:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX2x3); } { return ES2_ident_ES3_keyword(context, MATRIX4); }
YY_BREAK YY_BREAK
case 46: case 46:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX3x2); } { return ES2_ident_ES3_keyword(context, MATRIX2x3); }
YY_BREAK YY_BREAK
case 47: case 47:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX2x4); } { return ES2_ident_ES3_keyword(context, MATRIX3x2); }
YY_BREAK YY_BREAK
case 48: case 48:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX4x2); } { return ES2_ident_ES3_keyword(context, MATRIX2x4); }
YY_BREAK YY_BREAK
case 49: case 49:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX3x4); } { return ES2_ident_ES3_keyword(context, MATRIX4x2); }
YY_BREAK YY_BREAK
case 50: case 50:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_ident_ES3_keyword(context, MATRIX4x3); } { return ES2_ident_ES3_keyword(context, MATRIX3x4); }
YY_BREAK YY_BREAK
case 51: case 51:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return (VEC2); } { return ES2_ident_ES3_keyword(context, MATRIX4x3); }
YY_BREAK YY_BREAK
case 52: case 52:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return (VEC3); } { context->lexAfterType = true; return (VEC2); }
YY_BREAK YY_BREAK
case 53: case 53:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return (VEC4); } { context->lexAfterType = true; return (VEC3); }
YY_BREAK YY_BREAK
case 54: case 54:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return (IVEC2); } { context->lexAfterType = true; return (VEC4); }
YY_BREAK YY_BREAK
case 55: case 55:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return (IVEC3); } { context->lexAfterType = true; return (IVEC2); }
YY_BREAK YY_BREAK
case 56: case 56:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return (IVEC4); } { context->lexAfterType = true; return (IVEC3); }
YY_BREAK YY_BREAK
case 57: case 57:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return (BVEC2); } { context->lexAfterType = true; return (IVEC4); }
YY_BREAK YY_BREAK
case 58: case 58:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return (BVEC3); } { context->lexAfterType = true; return (BVEC2); }
YY_BREAK YY_BREAK
case 59: case 59:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return (BVEC4); } { context->lexAfterType = true; return (BVEC3); }
YY_BREAK YY_BREAK
case 60: case 60:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLER2D; } { context->lexAfterType = true; return (BVEC4); }
YY_BREAK YY_BREAK
case 61: case 61:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLERCUBE; } { context->lexAfterType = true; return SAMPLER2D; }
YY_BREAK YY_BREAK
case 62: case 62:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLER_EXTERNAL_OES; } { context->lexAfterType = true; return SAMPLERCUBE; }
YY_BREAK YY_BREAK
case 63: case 63:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, SAMPLER3D); } { context->lexAfterType = true; return SAMPLER_EXTERNAL_OES; }
YY_BREAK YY_BREAK
case 64: case 64:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); } { return ES2_reserved_ES3_keyword(context, SAMPLER3D); }
YY_BREAK YY_BREAK
case 65: case 65:
YY_RULE_SETUP YY_RULE_SETUP
{ return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); } { return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); }
YY_BREAK YY_BREAK
case 66: case 66:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLER2DRECT; } { return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); }
YY_BREAK YY_BREAK
case 67: case 67:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = true; return SAMPLER2DRECT; }
YY_BREAK
case 68:
YY_RULE_SETUP
{ context->lexAfterType = true; return(STRUCT); } { context->lexAfterType = true; return(STRUCT); }
YY_BREAK YY_BREAK
/* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */ /* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */
case 68:
case 69: case 69:
case 70: case 70:
case 71: case 71:
...@@ -1652,6 +1656,7 @@ case 120: ...@@ -1652,6 +1656,7 @@ case 120:
case 121: case 121:
case 122: case 122:
case 123: case 123:
case 124:
YY_RULE_SETUP YY_RULE_SETUP
{ {
if (context->shaderVersion < 300) { if (context->shaderVersion < 300) {
...@@ -1662,7 +1667,6 @@ YY_RULE_SETUP ...@@ -1662,7 +1667,6 @@ YY_RULE_SETUP
} }
YY_BREAK YY_BREAK
/* Reserved keywords */ /* Reserved keywords */
case 124:
case 125: case 125:
case 126: case 126:
case 127: case 127:
...@@ -1704,35 +1708,32 @@ case 162: ...@@ -1704,35 +1708,32 @@ case 162:
case 163: case 163:
case 164: case 164:
case 165: case 165:
case 166:
YY_RULE_SETUP YY_RULE_SETUP
{ return reserved_word(yyscanner); } { return reserved_word(yyscanner); }
YY_BREAK YY_BREAK
case 166: case 167:
YY_RULE_SETUP YY_RULE_SETUP
{ {
yylval->lex.string = NewPoolTString(yytext); yylval->lex.string = NewPoolTString(yytext);
return check_type(yyscanner); return check_type(yyscanner);
} }
YY_BREAK YY_BREAK
case 167:
YY_RULE_SETUP
{ yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return(INTCONSTANT); }
YY_BREAK
case 168: case 168:
YY_RULE_SETUP YY_RULE_SETUP
{ yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return(INTCONSTANT); } { yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return(INTCONSTANT); }
YY_BREAK YY_BREAK
case 169: case 169:
YY_RULE_SETUP YY_RULE_SETUP
{ context->error(yylineno, "Invalid Octal number.", yytext); context->recover(); return 0;} { yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return(INTCONSTANT); }
YY_BREAK YY_BREAK
case 170: case 170:
YY_RULE_SETUP YY_RULE_SETUP
{ yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return(INTCONSTANT); } { context->error(yylineno, "Invalid Octal number.", yytext); context->recover(); return 0;}
YY_BREAK YY_BREAK
case 171: case 171:
YY_RULE_SETUP YY_RULE_SETUP
{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); } { yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return(INTCONSTANT); }
YY_BREAK YY_BREAK
case 172: case 172:
YY_RULE_SETUP YY_RULE_SETUP
...@@ -1744,198 +1745,202 @@ YY_RULE_SETUP ...@@ -1744,198 +1745,202 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 174: case 174:
YY_RULE_SETUP YY_RULE_SETUP
{ return(ADD_ASSIGN); } { yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
YY_BREAK YY_BREAK
case 175: case 175:
YY_RULE_SETUP YY_RULE_SETUP
{ return(SUB_ASSIGN); } { return(ADD_ASSIGN); }
YY_BREAK YY_BREAK
case 176: case 176:
YY_RULE_SETUP YY_RULE_SETUP
{ return(MUL_ASSIGN); } { return(SUB_ASSIGN); }
YY_BREAK YY_BREAK
case 177: case 177:
YY_RULE_SETUP YY_RULE_SETUP
{ return(DIV_ASSIGN); } { return(MUL_ASSIGN); }
YY_BREAK YY_BREAK
case 178: case 178:
YY_RULE_SETUP YY_RULE_SETUP
{ return(MOD_ASSIGN); } { return(DIV_ASSIGN); }
YY_BREAK YY_BREAK
case 179: case 179:
YY_RULE_SETUP YY_RULE_SETUP
{ return(LEFT_ASSIGN); } { return(MOD_ASSIGN); }
YY_BREAK YY_BREAK
case 180: case 180:
YY_RULE_SETUP YY_RULE_SETUP
{ return(RIGHT_ASSIGN); } { return(LEFT_ASSIGN); }
YY_BREAK YY_BREAK
case 181: case 181:
YY_RULE_SETUP YY_RULE_SETUP
{ return(AND_ASSIGN); } { return(RIGHT_ASSIGN); }
YY_BREAK YY_BREAK
case 182: case 182:
YY_RULE_SETUP YY_RULE_SETUP
{ return(XOR_ASSIGN); } { return(AND_ASSIGN); }
YY_BREAK YY_BREAK
case 183: case 183:
YY_RULE_SETUP YY_RULE_SETUP
{ return(OR_ASSIGN); } { return(XOR_ASSIGN); }
YY_BREAK YY_BREAK
case 184: case 184:
YY_RULE_SETUP YY_RULE_SETUP
{ return(INC_OP); } { return(OR_ASSIGN); }
YY_BREAK YY_BREAK
case 185: case 185:
YY_RULE_SETUP YY_RULE_SETUP
{ return(DEC_OP); } { return(INC_OP); }
YY_BREAK YY_BREAK
case 186: case 186:
YY_RULE_SETUP YY_RULE_SETUP
{ return(AND_OP); } { return(DEC_OP); }
YY_BREAK YY_BREAK
case 187: case 187:
YY_RULE_SETUP YY_RULE_SETUP
{ return(OR_OP); } { return(AND_OP); }
YY_BREAK YY_BREAK
case 188: case 188:
YY_RULE_SETUP YY_RULE_SETUP
{ return(XOR_OP); } { return(OR_OP); }
YY_BREAK YY_BREAK
case 189: case 189:
YY_RULE_SETUP YY_RULE_SETUP
{ return(LE_OP); } { return(XOR_OP); }
YY_BREAK YY_BREAK
case 190: case 190:
YY_RULE_SETUP YY_RULE_SETUP
{ return(GE_OP); } { return(LE_OP); }
YY_BREAK YY_BREAK
case 191: case 191:
YY_RULE_SETUP YY_RULE_SETUP
{ return(EQ_OP); } { return(GE_OP); }
YY_BREAK YY_BREAK
case 192: case 192:
YY_RULE_SETUP YY_RULE_SETUP
{ return(NE_OP); } { return(EQ_OP); }
YY_BREAK YY_BREAK
case 193: case 193:
YY_RULE_SETUP YY_RULE_SETUP
{ return(LEFT_OP); } { return(NE_OP); }
YY_BREAK YY_BREAK
case 194: case 194:
YY_RULE_SETUP YY_RULE_SETUP
{ return(RIGHT_OP); } { return(LEFT_OP); }
YY_BREAK YY_BREAK
case 195: case 195:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = false; return(SEMICOLON); } { return(RIGHT_OP); }
YY_BREAK YY_BREAK
case 196: case 196:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = false; return(LEFT_BRACE); } { context->lexAfterType = false; return(SEMICOLON); }
YY_BREAK YY_BREAK
case 197: case 197:
YY_RULE_SETUP YY_RULE_SETUP
{ return(RIGHT_BRACE); } { context->lexAfterType = false; return(LEFT_BRACE); }
YY_BREAK YY_BREAK
case 198: case 198:
YY_RULE_SETUP YY_RULE_SETUP
{ if (context->inTypeParen) context->lexAfterType = false; return(COMMA); } { return(RIGHT_BRACE); }
YY_BREAK YY_BREAK
case 199: case 199:
YY_RULE_SETUP YY_RULE_SETUP
{ return(COLON); } { if (context->inTypeParen) context->lexAfterType = false; return(COMMA); }
YY_BREAK YY_BREAK
case 200: case 200:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = false; return(EQUAL); } { return(COLON); }
YY_BREAK YY_BREAK
case 201: case 201:
YY_RULE_SETUP YY_RULE_SETUP
{ context->lexAfterType = false; context->inTypeParen = true; return(LEFT_PAREN); } { context->lexAfterType = false; return(EQUAL); }
YY_BREAK YY_BREAK
case 202: case 202:
YY_RULE_SETUP YY_RULE_SETUP
{ context->inTypeParen = false; return(RIGHT_PAREN); } { context->lexAfterType = false; context->inTypeParen = true; return(LEFT_PAREN); }
YY_BREAK YY_BREAK
case 203: case 203:
YY_RULE_SETUP YY_RULE_SETUP
{ return(LEFT_BRACKET); } { context->inTypeParen = false; return(RIGHT_PAREN); }
YY_BREAK YY_BREAK
case 204: case 204:
YY_RULE_SETUP YY_RULE_SETUP
{ return(RIGHT_BRACKET); } { return(LEFT_BRACKET); }
YY_BREAK YY_BREAK
case 205: case 205:
YY_RULE_SETUP YY_RULE_SETUP
{ BEGIN(FIELDS); return(DOT); } { return(RIGHT_BRACKET); }
YY_BREAK YY_BREAK
case 206: case 206:
YY_RULE_SETUP YY_RULE_SETUP
{ return(BANG); } { BEGIN(FIELDS); return(DOT); }
YY_BREAK YY_BREAK
case 207: case 207:
YY_RULE_SETUP YY_RULE_SETUP
{ return(DASH); } { return(BANG); }
YY_BREAK YY_BREAK
case 208: case 208:
YY_RULE_SETUP YY_RULE_SETUP
{ return(TILDE); } { return(DASH); }
YY_BREAK YY_BREAK
case 209: case 209:
YY_RULE_SETUP YY_RULE_SETUP
{ return(PLUS); } { return(TILDE); }
YY_BREAK YY_BREAK
case 210: case 210:
YY_RULE_SETUP YY_RULE_SETUP
{ return(STAR); } { return(PLUS); }
YY_BREAK YY_BREAK
case 211: case 211:
YY_RULE_SETUP YY_RULE_SETUP
{ return(SLASH); } { return(STAR); }
YY_BREAK YY_BREAK
case 212: case 212:
YY_RULE_SETUP YY_RULE_SETUP
{ return(PERCENT); } { return(SLASH); }
YY_BREAK YY_BREAK
case 213: case 213:
YY_RULE_SETUP YY_RULE_SETUP
{ return(LEFT_ANGLE); } { return(PERCENT); }
YY_BREAK YY_BREAK
case 214: case 214:
YY_RULE_SETUP YY_RULE_SETUP
{ return(RIGHT_ANGLE); } { return(LEFT_ANGLE); }
YY_BREAK YY_BREAK
case 215: case 215:
YY_RULE_SETUP YY_RULE_SETUP
{ return(VERTICAL_BAR); } { return(RIGHT_ANGLE); }
YY_BREAK YY_BREAK
case 216: case 216:
YY_RULE_SETUP YY_RULE_SETUP
{ return(CARET); } { return(VERTICAL_BAR); }
YY_BREAK YY_BREAK
case 217: case 217:
YY_RULE_SETUP YY_RULE_SETUP
{ return(AMPERSAND); } { return(CARET); }
YY_BREAK YY_BREAK
case 218: case 218:
YY_RULE_SETUP YY_RULE_SETUP
{ return(QUESTION); } { return(AMPERSAND); }
YY_BREAK YY_BREAK
case 219: case 219:
YY_RULE_SETUP YY_RULE_SETUP
{ return(QUESTION); }
YY_BREAK
case 220:
YY_RULE_SETUP
{ {
BEGIN(INITIAL); BEGIN(INITIAL);
yylval->lex.string = NewPoolTString(yytext); yylval->lex.string = NewPoolTString(yytext);
return FIELD_SELECTION; return FIELD_SELECTION;
} }
YY_BREAK YY_BREAK
case 220: case 221:
YY_RULE_SETUP YY_RULE_SETUP
{} {}
YY_BREAK YY_BREAK
case 221: case 222:
/* rule 221 can match eol */ /* rule 222 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
{ } { }
YY_BREAK YY_BREAK
...@@ -1944,11 +1949,11 @@ case YY_STATE_EOF(COMMENT): ...@@ -1944,11 +1949,11 @@ case YY_STATE_EOF(COMMENT):
case YY_STATE_EOF(FIELDS): case YY_STATE_EOF(FIELDS):
{ context->AfterEOF = true; yyterminate(); } { context->AfterEOF = true; yyterminate(); }
YY_BREAK YY_BREAK
case 222: case 223:
YY_RULE_SETUP YY_RULE_SETUP
{ context->warning(yylineno, "Unknown char", yytext, ""); return 0; } { context->warning(yylineno, "Unknown char", yytext, ""); return 0; }
YY_BREAK YY_BREAK
case 223: case 224:
YY_RULE_SETUP YY_RULE_SETUP
ECHO; ECHO;
YY_BREAK YY_BREAK
...@@ -2244,7 +2249,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) ...@@ -2244,7 +2249,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 771 ) if ( yy_current_state >= 773 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
...@@ -2273,11 +2278,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) ...@@ -2273,11 +2278,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 771 ) if ( yy_current_state >= 773 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 770); yy_is_jam = (yy_current_state == 772);
return yy_is_jam ? 0 : yy_current_state; 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.
...@@ -56,104 +56,105 @@ extern int yydebug; ...@@ -56,104 +56,105 @@ extern int yydebug;
BOOL_TYPE = 265, BOOL_TYPE = 265,
FLOAT_TYPE = 266, FLOAT_TYPE = 266,
INT_TYPE = 267, INT_TYPE = 267,
BREAK = 268, UINT_TYPE = 268,
CONTINUE = 269, BREAK = 269,
DO = 270, CONTINUE = 270,
ELSE = 271, DO = 271,
FOR = 272, ELSE = 272,
IF = 273, FOR = 273,
DISCARD = 274, IF = 274,
RETURN = 275, DISCARD = 275,
SWITCH = 276, RETURN = 276,
CASE = 277, SWITCH = 277,
DEFAULT = 278, CASE = 278,
BVEC2 = 279, DEFAULT = 279,
BVEC3 = 280, BVEC2 = 280,
BVEC4 = 281, BVEC3 = 281,
IVEC2 = 282, BVEC4 = 282,
IVEC3 = 283, IVEC2 = 283,
IVEC4 = 284, IVEC3 = 284,
VEC2 = 285, IVEC4 = 285,
VEC3 = 286, VEC2 = 286,
VEC4 = 287, VEC3 = 287,
MATRIX2 = 288, VEC4 = 288,
MATRIX3 = 289, MATRIX2 = 289,
MATRIX4 = 290, MATRIX3 = 290,
IN_QUAL = 291, MATRIX4 = 291,
OUT_QUAL = 292, IN_QUAL = 292,
INOUT_QUAL = 293, OUT_QUAL = 293,
UNIFORM = 294, INOUT_QUAL = 294,
VARYING = 295, UNIFORM = 295,
MATRIX2x3 = 296, VARYING = 296,
MATRIX3x2 = 297, MATRIX2x3 = 297,
MATRIX2x4 = 298, MATRIX3x2 = 298,
MATRIX4x2 = 299, MATRIX2x4 = 299,
MATRIX3x4 = 300, MATRIX4x2 = 300,
MATRIX4x3 = 301, MATRIX3x4 = 301,
CENTROID = 302, MATRIX4x3 = 302,
FLAT = 303, CENTROID = 303,
SMOOTH = 304, FLAT = 304,
STRUCT = 305, SMOOTH = 305,
VOID_TYPE = 306, STRUCT = 306,
WHILE = 307, VOID_TYPE = 307,
SAMPLER2D = 308, WHILE = 308,
SAMPLERCUBE = 309, SAMPLER2D = 309,
SAMPLER_EXTERNAL_OES = 310, SAMPLERCUBE = 310,
SAMPLER2DRECT = 311, SAMPLER_EXTERNAL_OES = 311,
SAMPLER3D = 312, SAMPLER2DRECT = 312,
SAMPLER3DRECT = 313, SAMPLER3D = 313,
SAMPLER2DSHADOW = 314, SAMPLER3DRECT = 314,
IDENTIFIER = 315, SAMPLER2DSHADOW = 315,
TYPE_NAME = 316, IDENTIFIER = 316,
FLOATCONSTANT = 317, TYPE_NAME = 317,
INTCONSTANT = 318, FLOATCONSTANT = 318,
BOOLCONSTANT = 319, INTCONSTANT = 319,
FIELD_SELECTION = 320, BOOLCONSTANT = 320,
LEFT_OP = 321, FIELD_SELECTION = 321,
RIGHT_OP = 322, LEFT_OP = 322,
INC_OP = 323, RIGHT_OP = 323,
DEC_OP = 324, INC_OP = 324,
LE_OP = 325, DEC_OP = 325,
GE_OP = 326, LE_OP = 326,
EQ_OP = 327, GE_OP = 327,
NE_OP = 328, EQ_OP = 328,
AND_OP = 329, NE_OP = 329,
OR_OP = 330, AND_OP = 330,
XOR_OP = 331, OR_OP = 331,
MUL_ASSIGN = 332, XOR_OP = 332,
DIV_ASSIGN = 333, MUL_ASSIGN = 333,
ADD_ASSIGN = 334, DIV_ASSIGN = 334,
MOD_ASSIGN = 335, ADD_ASSIGN = 335,
LEFT_ASSIGN = 336, MOD_ASSIGN = 336,
RIGHT_ASSIGN = 337, LEFT_ASSIGN = 337,
AND_ASSIGN = 338, RIGHT_ASSIGN = 338,
XOR_ASSIGN = 339, AND_ASSIGN = 339,
OR_ASSIGN = 340, XOR_ASSIGN = 340,
SUB_ASSIGN = 341, OR_ASSIGN = 341,
LEFT_PAREN = 342, SUB_ASSIGN = 342,
RIGHT_PAREN = 343, LEFT_PAREN = 343,
LEFT_BRACKET = 344, RIGHT_PAREN = 344,
RIGHT_BRACKET = 345, LEFT_BRACKET = 345,
LEFT_BRACE = 346, RIGHT_BRACKET = 346,
RIGHT_BRACE = 347, LEFT_BRACE = 347,
DOT = 348, RIGHT_BRACE = 348,
COMMA = 349, DOT = 349,
COLON = 350, COMMA = 350,
EQUAL = 351, COLON = 351,
SEMICOLON = 352, EQUAL = 352,
BANG = 353, SEMICOLON = 353,
DASH = 354, BANG = 354,
TILDE = 355, DASH = 355,
PLUS = 356, TILDE = 356,
STAR = 357, PLUS = 357,
SLASH = 358, STAR = 358,
PERCENT = 359, SLASH = 359,
LEFT_ANGLE = 360, PERCENT = 360,
RIGHT_ANGLE = 361, LEFT_ANGLE = 361,
VERTICAL_BAR = 362, RIGHT_ANGLE = 362,
CARET = 363, VERTICAL_BAR = 363,
AMPERSAND = 364, CARET = 364,
QUESTION = 365 AMPERSAND = 365,
QUESTION = 366
}; };
#endif #endif
......
...@@ -153,11 +153,16 @@ bool TOutputTraverser::visitUnary(Visit visit, TIntermUnary* node) ...@@ -153,11 +153,16 @@ bool TOutputTraverser::visitUnary(Visit visit, TIntermUnary* node)
case EOpPreDecrement: out << "Pre-Decrement"; break; case EOpPreDecrement: out << "Pre-Decrement"; break;
case EOpConvIntToBool: out << "Convert int to bool"; break; case EOpConvIntToBool: out << "Convert int to bool"; break;
case EOpConvUnsignedIntToBool: out << "Convert unsigned int to bool"; break;
case EOpConvFloatToBool:out << "Convert float to bool";break; case EOpConvFloatToBool:out << "Convert float to bool";break;
case EOpConvBoolToFloat:out << "Convert bool to float";break; case EOpConvBoolToFloat:out << "Convert bool to float";break;
case EOpConvIntToFloat: out << "Convert int to float"; break; case EOpConvIntToFloat: out << "Convert int to float"; break;
case EOpConvUnsignedIntToFloat: out << "Convert unsigned int to float"; break;
case EOpConvFloatToInt: out << "Convert float to int"; break; case EOpConvFloatToInt: out << "Convert float to int"; break;
case EOpConvBoolToInt: out << "Convert bool to int"; break; case EOpConvBoolToInt: out << "Convert bool to int"; break;
case EOpConvIntToUnsignedInt: out << "Convert int to unsigned int"; break;
case EOpConvFloatToUnsignedInt: out << "Convert float to unsigned int"; break;
case EOpConvBoolToUnsignedInt: out << "Convert bool to unsigned int"; break;
case EOpRadians: out << "radians"; break; case EOpRadians: out << "radians"; break;
case EOpDegrees: out << "degrees"; break; case EOpDegrees: out << "degrees"; break;
...@@ -230,6 +235,7 @@ bool TOutputTraverser::visitAggregate(Visit visit, TIntermAggregate* node) ...@@ -230,6 +235,7 @@ bool TOutputTraverser::visitAggregate(Visit visit, TIntermAggregate* node)
case EOpConstructIVec2: out << "Construct ivec2"; break; case EOpConstructIVec2: out << "Construct ivec2"; break;
case EOpConstructIVec3: out << "Construct ivec3"; break; case EOpConstructIVec3: out << "Construct ivec3"; break;
case EOpConstructIVec4: out << "Construct ivec4"; break; case EOpConstructIVec4: out << "Construct ivec4"; break;
case EOpConstructUnsignedInt: out << "Construct uint"; break;
case EOpConstructMat2: out << "Construct mat2"; break; case EOpConstructMat2: out << "Construct mat2"; break;
case EOpConstructMat3: out << "Construct mat3"; break; case EOpConstructMat3: out << "Construct mat3"; break;
case EOpConstructMat4: out << "Construct mat4"; break; case EOpConstructMat4: out << "Construct mat4"; break;
...@@ -334,6 +340,10 @@ void TOutputTraverser::visitConstantUnion(TIntermConstantUnion* node) ...@@ -334,6 +340,10 @@ void TOutputTraverser::visitConstantUnion(TIntermConstantUnion* node)
out << node->getUnionArrayPointer()[i].getIConst(); out << node->getUnionArrayPointer()[i].getIConst();
out << " (const int)\n"; out << " (const int)\n";
break; break;
case EbtUInt:
out << node->getUnionArrayPointer()[i].getUConst();
out << " (const uint)\n";
break;
default: default:
out.message(EPrefixInternalError, "Unknown constant", node->getLine()); out.message(EPrefixInternalError, "Unknown constant", node->getLine());
break; break;
......
...@@ -49,11 +49,17 @@ enum TOperator { ...@@ -49,11 +49,17 @@ enum TOperator {
EOpPreDecrement, EOpPreDecrement,
EOpConvIntToBool, EOpConvIntToBool,
EOpConvUnsignedIntToBool,
EOpConvFloatToBool, EOpConvFloatToBool,
EOpConvBoolToFloat, EOpConvBoolToFloat,
EOpConvIntToFloat, EOpConvIntToFloat,
EOpConvUnsignedIntToFloat,
EOpConvFloatToInt, EOpConvFloatToInt,
EOpConvBoolToInt, EOpConvBoolToInt,
EOpConvUnsignedIntToInt,
EOpConvIntToUnsignedInt,
EOpConvFloatToUnsignedInt,
EOpConvBoolToUnsignedInt,
// //
// binary operations // binary operations
...@@ -155,6 +161,7 @@ enum TOperator { ...@@ -155,6 +161,7 @@ enum TOperator {
// //
EOpConstructInt, EOpConstructInt,
EOpConstructUnsignedInt,
EOpConstructBool, EOpConstructBool,
EOpConstructFloat, EOpConstructFloat,
EOpConstructVec2, EOpConstructVec2,
...@@ -259,6 +266,7 @@ public: ...@@ -259,6 +266,7 @@ public:
bool isArray() const { return type.isArray(); } bool isArray() const { return type.isArray(); }
bool isVector() const { return type.isVector(); } bool isVector() const { return type.isVector(); }
bool isScalar() const { return type.isScalar(); } bool isScalar() const { return type.isScalar(); }
bool isScalarInt() const { return type.isScalarInt(); }
const char* getBasicString() const { return type.getBasicString(); } const char* getBasicString() const { return type.getBasicString(); }
const char* getQualifierString() const { return type.getQualifierString(); } const char* getQualifierString() const { return type.getQualifierString(); }
TString getCompleteString() const { return type.getCompleteString(); } TString getCompleteString() const { return type.getCompleteString(); }
...@@ -368,6 +376,7 @@ public: ...@@ -368,6 +376,7 @@ public:
ConstantUnion* getUnionArrayPointer() const { return unionArrayPointer; } ConstantUnion* getUnionArrayPointer() const { return unionArrayPointer; }
int getIConst(int index) const { return unionArrayPointer ? unionArrayPointer[index].getIConst() : 0; } int getIConst(int index) const { return unionArrayPointer ? unionArrayPointer[index].getIConst() : 0; }
int getUConst(int index) const { return unionArrayPointer ? unionArrayPointer[index].getUConst() : 0; }
float getFConst(int index) const { return unionArrayPointer ? unionArrayPointer[index].getFConst() : 0.0f; } float getFConst(int index) const { return unionArrayPointer ? unionArrayPointer[index].getFConst() : 0.0f; }
bool getBConst(int index) const { return unionArrayPointer ? unionArrayPointer[index].getBConst() : false; } bool getBConst(int index) const { return unionArrayPointer ? unionArrayPointer[index].getBConst() : false; }
......
...@@ -50,6 +50,7 @@ namespace gl_d3d ...@@ -50,6 +50,7 @@ namespace gl_d3d
case GL_INT_VEC2: return "int2"; case GL_INT_VEC2: return "int2";
case GL_INT_VEC3: return "int3"; case GL_INT_VEC3: return "int3";
case GL_INT_VEC4: return "int4"; case GL_INT_VEC4: return "int4";
case GL_UNSIGNED_INT: return "uint";
case GL_FLOAT_MAT2: return "float2x2"; case GL_FLOAT_MAT2: return "float2x2";
case GL_FLOAT_MAT3: return "float3x3"; case GL_FLOAT_MAT3: return "float3x3";
case GL_FLOAT_MAT4: return "float4x4"; case GL_FLOAT_MAT4: return "float4x4";
......
...@@ -533,6 +533,10 @@ GLenum Shader::parseType(const std::string &type) ...@@ -533,6 +533,10 @@ GLenum Shader::parseType(const std::string &type)
{ {
return GL_INT_VEC4; return GL_INT_VEC4;
} }
else if (type == "uint")
{
return GL_UNSIGNED_INT;
}
else UNREACHABLE(); else UNREACHABLE();
return GL_NONE; return GL_NONE;
...@@ -560,6 +564,7 @@ static void makeVaryingPriorityMap() ...@@ -560,6 +564,7 @@ static void makeVaryingPriorityMap()
varyingPriorities[GL_INT_VEC2] = 111; varyingPriorities[GL_INT_VEC2] = 111;
varyingPriorities[GL_FLOAT] = 120; varyingPriorities[GL_FLOAT] = 120;
varyingPriorities[GL_INT] = 125; varyingPriorities[GL_INT] = 125;
varyingPriorities[GL_UNSIGNED_INT] = 130;
} }
// true if varying x has a higher priority in packing than y // true if varying x has a higher priority in packing than y
......
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