diff --git a/include/Nazara/Shader/ShaderLangTokenList.hpp b/include/Nazara/Shader/ShaderLangTokenList.hpp index d8eb56139..959c5df31 100644 --- a/include/Nazara/Shader/ShaderLangTokenList.hpp +++ b/include/Nazara/Shader/ShaderLangTokenList.hpp @@ -13,8 +13,10 @@ NAZARA_SHADERLANG_TOKEN(Assign) NAZARA_SHADERLANG_TOKEN(BoolFalse) NAZARA_SHADERLANG_TOKEN(BoolTrue) +NAZARA_SHADERLANG_TOKEN(ClosingAttribute) NAZARA_SHADERLANG_TOKEN(ClosingParenthesis) NAZARA_SHADERLANG_TOKEN(ClosingCurlyBracket) +NAZARA_SHADERLANG_TOKEN(ClosingSquareBracket) NAZARA_SHADERLANG_TOKEN(Colon) NAZARA_SHADERLANG_TOKEN(Comma) NAZARA_SHADERLANG_TOKEN(Divide) @@ -29,7 +31,9 @@ NAZARA_SHADERLANG_TOKEN(Let) NAZARA_SHADERLANG_TOKEN(Multiply) NAZARA_SHADERLANG_TOKEN(Minus) NAZARA_SHADERLANG_TOKEN(Plus) +NAZARA_SHADERLANG_TOKEN(OpenAttribute) NAZARA_SHADERLANG_TOKEN(OpenCurlyBracket) +NAZARA_SHADERLANG_TOKEN(OpenSquareBracket) NAZARA_SHADERLANG_TOKEN(OpenParenthesis) NAZARA_SHADERLANG_TOKEN(Semicolon) NAZARA_SHADERLANG_TOKEN(Return) diff --git a/src/Nazara/Shader/ShaderLangLexer.cpp b/src/Nazara/Shader/ShaderLangLexer.cpp index 666b0d8d6..3ffd284f4 100644 --- a/src/Nazara/Shader/ShaderLangLexer.cpp +++ b/src/Nazara/Shader/ShaderLangLexer.cpp @@ -221,6 +221,28 @@ namespace Nz::ShaderLang break; } + case '[': + { + char next = Peek(); + if (next == '[') + tokenType = TokenType::OpenAttribute; + else + tokenType = TokenType::OpenSquareBracket; + + break; + } + + case ']': + { + char next = Peek(); + if (next == ']') + tokenType = TokenType::ClosingAttribute; + else + tokenType = TokenType::ClosingSquareBracket; + + break; + } + case '=': tokenType = TokenType::Assign; break; case '+': tokenType = TokenType::Plus; break; case '*': tokenType = TokenType::Multiply; break;