Shader/ShaderLang: Add type inference for variable declaration

This commit is contained in:
Jérôme Leclercq
2021-04-14 17:56:33 +02:00
parent 0f15387c6c
commit b234134abc
6 changed files with 37 additions and 7 deletions

View File

@@ -637,15 +637,19 @@ namespace Nz::ShaderLang
Expect(Advance(), TokenType::Let);
std::string variableName = ParseIdentifierAsName();
RegisterVariable(variableName);
ShaderAst::ExpressionType variableType = ShaderAst::NoType{};
if (Peek().type == TokenType::Colon)
{
Expect(Advance(), TokenType::Colon);
Expect(Advance(), TokenType::Colon);
variableType = ParseType();
}
ShaderAst::ExpressionPtr expression;
ShaderAst::ExpressionPtr expression;
if (IsNoType(variableType) || Peek().type == TokenType::Assign)
{
{
Expect(Advance(), TokenType::Assign);
expression = ParseExpression();
}