for (profileLength = 0; profileLength < maxProfileLength; ++profileLength) {
if (c < 0 || c == ' ' || c == '\t' || c == '\n' || c == '\r')
break;
- profileString[profileLength] = c;
+ profileString[profileLength] = (char)c;
c = get();
}
if (c > 0 && c != ' ' && c != '\t' && c != '\n' && c != '\r') {
explicit TParserToken(YYSTYPE& b) : sType(b) { }
YYSTYPE& sType;
+protected:
+ TParserToken(TParserToken&);
+ TParserToken& operator=(TParserToken&);
};
} // end namespace glslang
ReservedSet->insert("using");
}
+void TScanContext::deleteKeywordMap()
+{
+ delete KeywordMap;
+ KeywordMap = 0;
+ delete ReservedSet;
+ ReservedSet = 0;
+}
+
int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
{
do {
default:
char buf[2];
- buf[0] = ppToken.token;
+ buf[0] = (char)ppToken.token;
buf[1] = 0;
parseContext.error(loc, "unexpected token", buf, "");
break;
return keyword;
case ATOMIC_UINT:
- if (parseContext.profile == EEsProfile && parseContext.version >= 310)
+ if (parseContext.profile == EEsProfile && parseContext.version >= 310 ||
+ parseContext.extensionsTurnedOn(1, &GL_ARB_shader_atomic_counters))
return keyword;
- else
- return es30ReservedFromGLSL(420);
+ return es30ReservedFromGLSL(420);
case COHERENT:
case RESTRICT:
case WRITEONLY:
if (parseContext.profile == EEsProfile && parseContext.version >= 310)
return keyword;
- else
- return es30ReservedFromGLSL(parseContext.extensionsTurnedOn(1, &GL_ARB_shader_image_load_store) ? 130 : 420);
+ return es30ReservedFromGLSL(parseContext.extensionsTurnedOn(1, &GL_ARB_shader_image_load_store) ? 130 : 420);
case VOLATILE:
+ if (parseContext.profile == EEsProfile && parseContext.version >= 310)
+ return keyword;
if (! parseContext.symbolTable.atBuiltInLevel() && (parseContext.profile == EEsProfile || (parseContext.version < 420 && ! parseContext.extensionsTurnedOn(1, &GL_ARB_shader_image_load_store))))
reservedWord();
return keyword;
case LAYOUT:
+ {
+ const int numLayoutExts = 2;
+ const char* layoutExts[numLayoutExts] = { GL_ARB_shading_language_420pack,
+ GL_ARB_explicit_attrib_location };
if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
(parseContext.profile != EEsProfile && parseContext.version < 140 &&
- ! parseContext.extensionsTurnedOn(1, &GL_ARB_shading_language_420pack)))
+ ! parseContext.extensionsTurnedOn(numLayoutExts, layoutExts)))
return identifierOrType();
return keyword;
-
+ }
case SHARED:
if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
(parseContext.profile != EEsProfile && parseContext.version < 140))
case SAMPLER2DMS:
case ISAMPLER2DMS:
case USAMPLER2DMS:
+ afterType = true;
+ if (parseContext.profile == EEsProfile && parseContext.version >= 310)
+ return keyword;
+ return es30ReservedFromGLSL(150);
+
case SAMPLER2DMSARRAY:
case ISAMPLER2DMSARRAY:
case USAMPLER2DMSARRAY:
return keyword;
case PRECISE:
- if (parseContext.profile == EEsProfile ||
+ if (parseContext.profile == EEsProfile && parseContext.version >= 310)
+ reservedWord();
+ else if (parseContext.profile == EEsProfile ||
(parseContext.profile != EEsProfile && parseContext.version < 400))
return identifierOrType();
return keyword;
{
afterType = true;
+ if (parseContext.profile == EEsProfile && parseContext.version >= 310) {
+ reservedWord();
+ return keyword;
+ }
+
if (parseContext.symbolTable.atBuiltInLevel() || parseContext.profile != EEsProfile && (parseContext.version >= 420 || parseContext.extensionsTurnedOn(1, &GL_ARB_shader_image_load_store)))
return keyword;