From 0bb9c37a388af0a972adbf2dc87e585e12c5a71a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 14 Apr 2021 20:20:37 +0200 Subject: [PATCH] Shader/Lang: [[attribute]] => [attribute] --- include/Nazara/Shader/ShaderLangTokenList.hpp | 2 -- src/Nazara/Shader/ShaderLangLexer.cpp | 30 ++----------------- src/Nazara/Shader/ShaderLangParser.cpp | 16 +++++----- 3 files changed, 10 insertions(+), 38 deletions(-) diff --git a/include/Nazara/Shader/ShaderLangTokenList.hpp b/include/Nazara/Shader/ShaderLangTokenList.hpp index 9b818cd0b..183a16062 100644 --- a/include/Nazara/Shader/ShaderLangTokenList.hpp +++ b/include/Nazara/Shader/ShaderLangTokenList.hpp @@ -13,7 +13,6 @@ 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) @@ -38,7 +37,6 @@ NAZARA_SHADERLANG_TOKEN(Multiply) NAZARA_SHADERLANG_TOKEN(Minus) NAZARA_SHADERLANG_TOKEN(NotEqual) NAZARA_SHADERLANG_TOKEN(Plus) -NAZARA_SHADERLANG_TOKEN(OpenAttribute) NAZARA_SHADERLANG_TOKEN(OpenCurlyBracket) NAZARA_SHADERLANG_TOKEN(OpenSquareBracket) NAZARA_SHADERLANG_TOKEN(OpenParenthesis) diff --git a/src/Nazara/Shader/ShaderLangLexer.cpp b/src/Nazara/Shader/ShaderLangLexer.cpp index fbede99d0..0b084a014 100644 --- a/src/Nazara/Shader/ShaderLangLexer.cpp +++ b/src/Nazara/Shader/ShaderLangLexer.cpp @@ -227,34 +227,6 @@ namespace Nz::ShaderLang break; } - case '[': - { - char next = Peek(); - if (next == '[') - { - currentPos++; - tokenType = TokenType::OpenAttribute; - } - else - tokenType = TokenType::OpenSquareBracket; - - break; - } - - case ']': - { - char next = Peek(); - if (next == ']') - { - currentPos++; - tokenType = TokenType::ClosingAttribute; - } - else - tokenType = TokenType::ClosingSquareBracket; - - break; - } - case '=': { char next = Peek(); @@ -307,6 +279,8 @@ namespace Nz::ShaderLang case '}': tokenType = TokenType::ClosingCurlyBracket; break; case '(': tokenType = TokenType::OpenParenthesis; break; case ')': tokenType = TokenType::ClosingParenthesis; break; + case '[': tokenType = TokenType::OpenSquareBracket; break; + case ']': tokenType = TokenType::ClosingSquareBracket; break; default: { diff --git a/src/Nazara/Shader/ShaderLangParser.cpp b/src/Nazara/Shader/ShaderLangParser.cpp index 6df94d266..1bc9316b5 100644 --- a/src/Nazara/Shader/ShaderLangParser.cpp +++ b/src/Nazara/Shader/ShaderLangParser.cpp @@ -82,7 +82,7 @@ namespace Nz::ShaderLang attributes.clear(); break; - case TokenType::OpenAttribute: + case TokenType::OpenSquareBracket: assert(attributes.empty()); attributes = ParseAttributes(); break; @@ -262,7 +262,7 @@ namespace Nz::ShaderLang { std::vector attributes; - Expect(Advance(), TokenType::OpenAttribute); + Expect(Advance(), TokenType::OpenSquareBracket); bool expectComma = false; for (;;) @@ -270,10 +270,10 @@ namespace Nz::ShaderLang const Token& t = Peek(); ExpectNot(t, TokenType::EndOfStream); - if (t.type == TokenType::ClosingAttribute) + if (t.type == TokenType::ClosingSquareBracket) { - // Parse [[attribute1]] [[attribute2]] the same as [[attribute1, attribute2]] - if (Peek(1).type == TokenType::OpenAttribute) + // Parse [attribute1] [attribute2] the same as [attribute1, attribute2] + if (Peek(1).type == TokenType::OpenSquareBracket) { Consume(2); expectComma = false; @@ -316,7 +316,7 @@ namespace Nz::ShaderLang }); } - Expect(Advance(), TokenType::ClosingAttribute); + Expect(Advance(), TokenType::ClosingSquareBracket); return attributes; } @@ -354,7 +354,7 @@ namespace Nz::ShaderLang auto& extVar = externalStatement->externalVars.emplace_back(); - if (token.type == TokenType::OpenAttribute) + if (token.type == TokenType::OpenSquareBracket) { for (const auto& [attributeType, arg] : ParseAttributes()) { @@ -521,7 +521,7 @@ namespace Nz::ShaderLang auto& structField = description.members.emplace_back(); - if (token.type == TokenType::OpenAttribute) + if (token.type == TokenType::OpenSquareBracket) { for (const auto& [attributeType, attributeParam] : ParseAttributes()) {