Util: Properly detect empty Tokens and multiple root elements

This commit is contained in:
Riyyi
2022-07-11 19:08:30 +02:00
parent a3ab6aecfa
commit abb075939f
+8 -4
View File
@@ -36,17 +36,18 @@ Value Parser::parse()
{ {
Value result; Value result;
Token token; if (m_tokens->size() == 0) {
while (m_index < m_tokens->size()) { m_job->printErrorLine({}, "expecting token, not 'EOF'");
token = peek(); return result;
}
Token token = peek();
switch (token.type) { switch (token.type) {
case Token::Type::Literal: case Token::Type::Literal:
result = getLiteral(); result = getLiteral();
break; break;
case Token::Type::Number: case Token::Type::Number:
result = getNumber(); result = getNumber();
m_index++;
break; break;
case Token::Type::String: case Token::Type::String:
result = getString(); result = getString();
@@ -70,6 +71,9 @@ Value Parser::parse()
m_index++; m_index++;
break; break;
} }
if (m_index < m_tokens->size()) {
m_job->printErrorLine(peek(), "multiple root elements");
} }
return result; return result;