Slight performance improvements for parsing statements.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
a9c3a9e0c4
commit
037470a0ce
@ -547,12 +547,17 @@ namespace MalachScript::Parser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Parser::ParseStatement(ScopedPtr<const ParsedStatement>& out, const LexToken*& currentToken) {
|
bool Parser::ParseStatement(ScopedPtr<const ParsedStatement>& out, const LexToken*& currentToken) {
|
||||||
// TODO: All the other statements.
|
// TODO: All the other statements. (dowhile | switch | try );
|
||||||
|
switch (currentToken->GetKind()) {
|
||||||
return ParseIfStatement(out, currentToken) || ParseForStatement(out, currentToken) ||
|
case LexTokenKind::IfKeyword: return ParseIfStatement(out, currentToken);
|
||||||
ParseWhileStatement(out, currentToken) || ParseReturn(out, currentToken) ||
|
case LexTokenKind::ForKeyword: return ParseForStatement(out, currentToken);
|
||||||
ParseStatBlock(out, currentToken) || ParseBreak(out, currentToken) || ParseContinue(out, currentToken) ||
|
case LexTokenKind::WhileKeyword: return ParseWhileStatement(out, currentToken);
|
||||||
ParseExprStat(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<const ParsedStatement>& out, const LexToken*& currentToken) {
|
bool Parser::ParseVar([[maybe_unused]] ScopedPtr<const ParsedStatement>& out, const LexToken*& currentToken) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user