From 037470a0ce66943a61b34e15e1e86ee434e81a9c Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Fri, 1 Jan 2021 13:17:53 +0100 Subject: [PATCH] Slight performance improvements for parsing statements. --- src/Parser/Parser.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Parser/Parser.cpp b/src/Parser/Parser.cpp index 13cb4a9..24a3644 100644 --- a/src/Parser/Parser.cpp +++ b/src/Parser/Parser.cpp @@ -547,12 +547,17 @@ namespace MalachScript::Parser { } bool Parser::ParseStatement(ScopedPtr& out, const LexToken*& currentToken) { - // TODO: All the other statements. - - return ParseIfStatement(out, currentToken) || ParseForStatement(out, currentToken) || - ParseWhileStatement(out, currentToken) || ParseReturn(out, currentToken) || - ParseStatBlock(out, currentToken) || ParseBreak(out, currentToken) || ParseContinue(out, currentToken) || - ParseExprStat(out, currentToken); + // TODO: All the other statements. (dowhile | switch | try ); + switch (currentToken->GetKind()) { + case LexTokenKind::IfKeyword: return ParseIfStatement(out, currentToken); + case LexTokenKind::ForKeyword: return ParseForStatement(out, currentToken); + case LexTokenKind::WhileKeyword: return ParseWhileStatement(out, currentToken); + case LexTokenKind::ReturnKeyword: return ParseReturn(out, currentToken); + case LexTokenKind::BreakKeyword: return ParseBreak(out, currentToken); + case LexTokenKind::ContinueKeyword: return ParseContinue(out, currentToken); + default: return ParseStatBlock(out, currentToken) || ParseExprStat(out, currentToken); + } + return false; } bool Parser::ParseVar([[maybe_unused]] ScopedPtr& out, const LexToken*& currentToken) {