summaryrefslogtreecommitdiff
path: root/GLESv2/yagl_glsl_lexer.l
diff options
context:
space:
mode:
Diffstat (limited to 'GLESv2/yagl_glsl_lexer.l')
-rw-r--r--GLESv2/yagl_glsl_lexer.l26
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} {