Always throw an error when an unexpected expression is found in Parser.hpp

Signed-off-by: Username404 <w.iron.zombie@gmail.com>
This commit is contained in:
Username404 2022-04-16 21:14:22 +02:00
parent 453025b18c
commit 5a96757942
Signed by: Username404-59
GPG Key ID: 7AB361FBB257A5D1

View File

@ -117,23 +117,23 @@ namespace Parser {
} }
} }
} }
const component_ptr& previous = parseTree.at(parseTree.size() - 1); if (not parseTree.empty()) {
if (current.toktype == LPAR) {
try { try {
dynamic_cast<Call&>(*previous).ParseTree::operator=(parse(subTokens)); const component_ptr& previous = parseTree.at(parseTree.size() - 1);
} catch (const bad_cast&) { if (current.toktype == LPAR) {
parsingError(current, "Unexpected parenthesis"); dynamic_cast<Call&>(*previous).ParseTree::operator=(parse(subTokens));
} } else if (current.toktype == LBRACE) {
} else if (current.toktype == LBRACE) { const type_info& previous_id = previous->getId();
const type_info& previous_id = previous->getId(); if (previous_id == typeid(Function)) {
if (previous_id == typeid(Function)) { dynamic_cast<Function&>(*previous).ParseTree::operator=(parse(subTokens));
dynamic_cast<Function&>(*previous).ParseTree::operator=(parse(subTokens)); } else if (previous_id == typeid(Class)) {
} else if (previous_id == typeid(Class)) { dynamic_cast<Class&>(*previous).body = parse(subTokens);
dynamic_cast<Class&>(*previous).body = parse(subTokens); }
} } else parseTree << parse(subTokens);
} else parseTree << parse(subTokens); i = distance(lexed.begin(), closingCharacter);
i = distance(lexed.begin(), closingCharacter); break;
break; } catch (const out_of_range&) {} catch (const bad_cast&) {}
}
} }
default: parsingError(current, " \u27F5 Unexpected character", true); default: parsingError(current, " \u27F5 Unexpected character", true);
} }