Shader: Rework Parser internals

This commit is contained in:
Jérôme Leclercq
2021-03-11 17:51:38 +01:00
parent 48b93a9dea
commit 3f74ee4d66
3 changed files with 73 additions and 54 deletions

View File

@@ -49,9 +49,9 @@ namespace Nz::ShaderLang
private:
// Flow control
const Token& Advance();
void Expect(const Token& token, TokenType type);
const Token& ExpectNext(TokenType type);
const Token& PeekNext();
const Token& Expect(const Token& token, TokenType type);
const Token& Expect(TokenType type);
const Token& Peek(std::size_t advance = 0);
// Statements
std::vector<ShaderAst::StatementPtr> ParseFunctionBody();
@@ -70,7 +70,7 @@ namespace Nz::ShaderLang
ShaderAst::ExpressionPtr ParseParenthesisExpression();
ShaderAst::ExpressionPtr ParsePrimaryExpression();
std::string ParseIdentifierAsName();
const std::string& ParseIdentifierAsName();
ShaderAst::ShaderExpressionType ParseIdentifierAsType();
static int GetTokenPrecedence(TokenType token);