diff options
author | Lukasz Kostyra <l.kostyra@samsung.com> | 2020-12-29 12:08:05 +0100 |
---|---|---|
committer | Lukasz Kostyra <l.kostyra@samsung.com> | 2021-01-07 17:40:54 +0100 |
commit | 2c7783b1fef54254001594636906eb27baeebd2e (patch) | |
tree | f6f019e391f4e654935420ec498cf725f327c59f /GLESv2/yagl_glsl_lexer.l | |
parent | 680bb1745b92ed22b4325f170f338cf21e63f507 (diff) | |
download | emulator-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.l | 17 |
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; } |