diff options
Diffstat (limited to 'GLESv2/yagl_glsl_lexer.l')
-rw-r--r-- | GLESv2/yagl_glsl_lexer.l | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/GLESv2/yagl_glsl_lexer.l b/GLESv2/yagl_glsl_lexer.l index de5d511..9190c7b 100644 --- a/GLESv2/yagl_glsl_lexer.l +++ b/GLESv2/yagl_glsl_lexer.l @@ -534,16 +534,34 @@ STRING [^ \r\t\v\f\n()\[\]{},;?:/%*&|^!+\-=<>\.]+ return TOK_STRING; } -<UNIFORM>{WS}*; { +<UNIFORM>{WS}+ { + struct yagl_glsl_state *state = yagl_glsl_lexer_get_extra(yyscanner); + yagl_glsl_state_new_pending(state, yytext); +} + +<UNIFORM>; { struct yagl_glsl_state *state = yagl_glsl_lexer_get_extra(yyscanner); BEGIN(INITIAL); - yagl_glsl_state_new_str_token(state, yylval, yytext); + yagl_glsl_state_new_character_token(state, yylval, *yytext); return TOK_EOI; } -<UNIFORM>{WS}+ { +<UNIFORM>\[ { struct yagl_glsl_state *state = yagl_glsl_lexer_get_extra(yyscanner); - yagl_glsl_state_new_pending(state, yytext); + yagl_glsl_state_new_character_token(state, yylval, *yytext); + return TOK_ARR_PAREN_OPEN; +} + +<UNIFORM>\] { + struct yagl_glsl_state *state = yagl_glsl_lexer_get_extra(yyscanner); + yagl_glsl_state_new_character_token(state, yylval, *yytext); + return TOK_ARR_PAREN_CLOSE; +} + +<UNIFORM>[0-9]* { + struct yagl_glsl_state *state = yagl_glsl_lexer_get_extra(yyscanner); + yagl_glsl_state_new_integer_token(state, yylval, strtol(yytext, NULL, 10)); + return TOK_INTEGER; } <UNIFORM>{PRECISION_QUAL} { |