summaryrefslogtreecommitdiff
path: root/GLESv2/yagl_glsl_lexer.l
diff options
context:
space:
mode:
authorLukasz Kostyra <l.kostyra@samsung.com>2020-12-29 12:08:05 +0100
committerLukasz Kostyra <l.kostyra@samsung.com>2021-01-07 17:40:54 +0100
commit2c7783b1fef54254001594636906eb27baeebd2e (patch)
treef6f019e391f4e654935420ec498cf725f327c59f /GLESv2/yagl_glsl_lexer.l
parent680bb1745b92ed22b4325f170f338cf21e63f507 (diff)
downloademulator-yagl-2c7783b1fef54254001594636906eb27baeebd2e.tar.gz
emulator-yagl-2c7783b1fef54254001594636906eb27baeebd2e.tar.bz2
emulator-yagl-2c7783b1fef54254001594636906eb27baeebd2e.zip
Parse GLSL #define preprocessor macros
GLSL lexer/parser now handles #define macros in order to properly discover samplerExternalOES/sampler2D type. Change-Id: I77f01bb722d31f980bf8a1d6b00a717c108a15b0
Diffstat (limited to 'GLESv2/yagl_glsl_lexer.l')
-rw-r--r--GLESv2/yagl_glsl_lexer.l17
1 files changed, 6 insertions, 11 deletions
diff --git a/GLESv2/yagl_glsl_lexer.l b/GLESv2/yagl_glsl_lexer.l
index 84be821..8ec6599 100644
--- a/GLESv2/yagl_glsl_lexer.l
+++ b/GLESv2/yagl_glsl_lexer.l
@@ -264,26 +264,20 @@ STRING [^ \r\t\v\f\n()\[\]{},;?:/%*&|^!+\-=<>\.]+
return TOK_STRING;
}
-<UNIFORM>{WS}+ {
- struct yagl_glsl_state *state = yagl_glsl_lexer_get_extra(yyscanner);
- yagl_glsl_state_new_pending(state, yytext);
-}
-
-<UNIFORM>"samplerExternalOES" {
+<UNIFORM>{WS}*; {
struct yagl_glsl_state *state = yagl_glsl_lexer_get_extra(yyscanner);
+ BEGIN(INITIAL);
yagl_glsl_state_new_str_token(state, yylval, yytext);
- return TOK_SAMPLEREXTERNALOES;
+ return TOK_EOI;
}
-<UNIFORM>"sampler2D" {
+<UNIFORM>{WS}+ {
struct yagl_glsl_state *state = yagl_glsl_lexer_get_extra(yyscanner);
- yagl_glsl_state_new_str_token(state, yylval, yytext);
- return TOK_SAMPLER2D;
+ yagl_glsl_state_new_pending(state, yytext);
}
<UNIFORM>{STRING} {
struct yagl_glsl_state *state = yagl_glsl_lexer_get_extra(yyscanner);
- BEGIN(INITIAL);
yagl_glsl_state_new_str_token(state, yylval, yytext);
return TOK_STRING;
}
@@ -365,6 +359,7 @@ int yagl_glsl_state_init(struct yagl_glsl_state *state,
yagl_vector_init(&state->strings, sizeof(char*), 0);
yagl_vector_init(&state->samplers_ExternalOES, sizeof(struct yagl_glsl_sampler), 0);
yagl_vector_init(&state->samplers_2D, sizeof(struct yagl_glsl_sampler), 0);
+ yagl_vector_init(&state->defines, sizeof(struct yagl_glsl_define), 0);
return 1;
}