summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/compiler/glslang.l
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/compiler/glslang.l')
-rw-r--r--src/3rdparty/angle/src/compiler/glslang.l170
1 files changed, 12 insertions, 158 deletions
diff --git a/src/3rdparty/angle/src/compiler/glslang.l b/src/3rdparty/angle/src/compiler/glslang.l
index e0483e2ea9..140a9aeb2d 100644
--- a/src/3rdparty/angle/src/compiler/glslang.l
+++ b/src/3rdparty/angle/src/compiler/glslang.l
@@ -38,7 +38,7 @@ WHICH GENERATES THE GLSL ES LEXER (glslang_lex.cpp).
%{
#include "compiler/glslang.h"
#include "compiler/ParseHelper.h"
-#include "compiler/preprocessor/new/Token.h"
+#include "compiler/preprocessor/Token.h"
#include "compiler/util.h"
#include "glslang_tab.h"
@@ -51,7 +51,7 @@ WHICH GENERATES THE GLSL ES LEXER (glslang_lex.cpp).
#define YY_INPUT(buf, result, max_size) \
result = string_input(buf, max_size, yyscanner);
-static int string_input(char* buf, int max_size, yyscan_t yyscanner);
+static yy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner);
static int check_type(yyscan_t yyscanner);
static int reserved_word(yyscan_t yyscanner);
%}
@@ -203,10 +203,10 @@ O [0-7]
return check_type(yyscanner);
}
-0[xX]{H}+ { yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
-0{O}+ { yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
+0[xX]{H}+ { yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return(INTCONSTANT); }
+0{O}+ { yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return(INTCONSTANT); }
0{D}+ { context->error(yylineno, "Invalid Octal number.", yytext); context->recover(); return 0;}
-{D}+ { yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
+{D}+ { yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return(INTCONSTANT); }
{D}+{E} { yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
{D}+"."{D}*({E})? { yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
@@ -272,146 +272,13 @@ O [0-7]
%%
-// Old preprocessor interface.
-extern "C" {
-#include "compiler/preprocessor/preprocess.h"
-
-extern int InitPreprocessor();
-extern int FinalizePreprocessor();
-extern void PredefineIntMacro(const char *name, int value);
-
-#define SETUP_CONTEXT(pp) \
- TParseContext* context = (TParseContext*) pp->pC; \
- struct yyguts_t* yyg = (struct yyguts_t*) context->scanner;
-
-// Preprocessor callbacks.
-void CPPDebugLogMsg(const char *msg)
-{
- SETUP_CONTEXT(cpp);
- context->trace(msg);
-}
-
-void CPPWarningToInfoLog(const char *msg)
-{
- SETUP_CONTEXT(cpp);
- context->warning(yylineno, msg, "");
-}
-
-void CPPShInfoLogMsg(const char *msg)
-{
- SETUP_CONTEXT(cpp);
- context->error(yylineno, msg, "");
- context->recover();
-}
-
-void CPPErrorToInfoLog(const char *msg)
-{
- SETUP_CONTEXT(cpp);
- context->error(yylineno, msg, "");
- context->recover();
-}
-
-void SetLineNumber(int line)
-{
- SETUP_CONTEXT(cpp);
- int string = 0;
- DecodeSourceLoc(yylineno, &string, NULL);
- yylineno = EncodeSourceLoc(string, line);
-}
-
-void SetStringNumber(int string)
-{
- SETUP_CONTEXT(cpp);
- int line = 0;
- DecodeSourceLoc(yylineno, NULL, &line);
- yylineno = EncodeSourceLoc(string, line);
-}
-
-int GetStringNumber()
-{
- SETUP_CONTEXT(cpp);
- int string = 0;
- DecodeSourceLoc(yylineno, &string, NULL);
- return string;
-}
-
-int GetLineNumber()
-{
- SETUP_CONTEXT(cpp);
- int line = 0;
- DecodeSourceLoc(yylineno, NULL, &line);
- return line;
-}
-
-void IncLineNumber()
-{
- SETUP_CONTEXT(cpp);
- int string = 0, line = 0;
- DecodeSourceLoc(yylineno, &string, &line);
- yylineno = EncodeSourceLoc(string, ++line);
-}
-
-void DecLineNumber()
-{
- SETUP_CONTEXT(cpp);
- int string = 0, line = 0;
- DecodeSourceLoc(yylineno, &string, &line);
- yylineno = EncodeSourceLoc(string, --line);
-}
-
-void HandlePragma(const char **tokens, int numTokens)
-{
- SETUP_CONTEXT(cpp);
-
- if (numTokens != 4) return;
- if (strcmp(tokens[1], "(") != 0) return;
- if (strcmp(tokens[3], ")") != 0) return;
-
- context->handlePragmaDirective(yylineno, tokens[0], tokens[2]);
-}
-
-void StoreStr(const char *string)
-{
- SETUP_CONTEXT(cpp);
- TString strSrc;
- strSrc = TString(string);
-
- context->HashErrMsg = context->HashErrMsg + " " + strSrc;
-}
-
-const char* GetStrfromTStr(void)
-{
- SETUP_CONTEXT(cpp);
- cpp->ErrMsg = context->HashErrMsg.c_str();
- return cpp->ErrMsg;
-}
-
-void ResetTString(void)
-{
- SETUP_CONTEXT(cpp);
- context->HashErrMsg = "";
-}
-
-void updateExtensionBehavior(const char* extName, const char* behavior)
-{
- SETUP_CONTEXT(cpp);
- context->handleExtensionDirective(yylineno, extName, behavior);
-}
-} // extern "C"
-
-int string_input(char* buf, int max_size, yyscan_t yyscanner) {
- int len = 0;
-
-#if ANGLE_USE_NEW_PREPROCESSOR
+yy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner) {
pp::Token token;
yyget_extra(yyscanner)->preprocessor.lex(&token);
- len = token.type == pp::Token::LAST ? 0 : token.text.size();
- if ((len > 0) && (len < max_size))
+ yy_size_t len = token.type == pp::Token::LAST ? 0 : token.text.size();
+ if (len < max_size)
memcpy(buf, token.text.c_str(), len);
yyset_lineno(EncodeSourceLoc(token.location.file, token.location.line), yyscanner);
-#else
- len = yylex_CPP(buf, max_size);
-#endif // ANGLE_USE_NEW_PREPROCESSOR
if (len >= max_size)
YY_FATAL_ERROR("Input buffer overflow");
@@ -471,41 +338,28 @@ int glslang_finalize(TParseContext* context) {
context->scanner = NULL;
yylex_destroy(scanner);
-#if !ANGLE_USE_NEW_PREPROCESSOR
- FinalizePreprocessor();
-#endif
return 0;
}
-int glslang_scan(int count, const char* const string[], const int length[],
+int glslang_scan(size_t count, const char* const string[], const int length[],
TParseContext* context) {
yyrestart(NULL, context->scanner);
yyset_lineno(EncodeSourceLoc(0, 1), context->scanner);
context->AfterEOF = false;
// Initialize preprocessor.
-#if ANGLE_USE_NEW_PREPROCESSOR
if (!context->preprocessor.init(count, string, length))
return 1;
-#else
- if (InitPreprocessor())
- return 1;
- cpp->pC = context;
- cpp->pastFirstStatement = 0;
- if (InitScannerInput(cpp, count, string, length))
- return 1;
-#endif // ANGLE_USE_NEW_PREPROCESSOR
// Define extension macros.
const TExtensionBehavior& extBehavior = context->extensionBehavior();
for (TExtensionBehavior::const_iterator iter = extBehavior.begin();
iter != extBehavior.end(); ++iter) {
-#if ANGLE_USE_NEW_PREPROCESSOR
context->preprocessor.predefineMacro(iter->first.c_str(), 1);
-#else
- PredefineIntMacro(iter->first.c_str(), 1);
-#endif
}
+ if (context->fragmentPrecisionHigh)
+ context->preprocessor.predefineMacro("GL_FRAGMENT_PRECISION_HIGH", 1);
+
return 0;
}