Shader: Add missing ! and != parsing
This commit is contained in:
parent
a5b71f33b9
commit
ac08afe9f1
|
|
@ -42,6 +42,7 @@ NAZARA_SHADERLANG_TOKEN(LogicalAnd)
|
|||
NAZARA_SHADERLANG_TOKEN(LogicalOr)
|
||||
NAZARA_SHADERLANG_TOKEN(Multiply)
|
||||
NAZARA_SHADERLANG_TOKEN(Minus)
|
||||
NAZARA_SHADERLANG_TOKEN(Not)
|
||||
NAZARA_SHADERLANG_TOKEN(NotEqual)
|
||||
NAZARA_SHADERLANG_TOKEN(Plus)
|
||||
NAZARA_SHADERLANG_TOKEN(OpenCurlyBracket)
|
||||
|
|
|
|||
|
|
@ -303,6 +303,21 @@ namespace Nz::ShaderLang
|
|||
break;
|
||||
}
|
||||
|
||||
case '!':
|
||||
{
|
||||
char next = Peek();
|
||||
if (next == '=')
|
||||
{
|
||||
currentPos++;
|
||||
tokenType = TokenType::NotEqual;
|
||||
}
|
||||
else
|
||||
tokenType = TokenType::Not;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case '+': tokenType = TokenType::Plus; break;
|
||||
case '*': tokenType = TokenType::Multiply; break;
|
||||
case ':': tokenType = TokenType::Colon; break;
|
||||
|
|
|
|||
|
|
@ -1117,6 +1117,14 @@ namespace Nz::ShaderLang
|
|||
return ShaderBuilder::Unary(ShaderAst::UnaryType::Plus, std::move(expr));
|
||||
}
|
||||
|
||||
case TokenType::Not:
|
||||
{
|
||||
Consume();
|
||||
ShaderAst::ExpressionPtr expr = ParsePrimaryExpression();
|
||||
|
||||
return ShaderBuilder::Unary(ShaderAst::UnaryType::LogicalNot, std::move(expr));
|
||||
}
|
||||
|
||||
case TokenType::OpenParenthesis:
|
||||
return ParseParenthesisExpression();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue