add check for too few arguments in operator parser

This commit is contained in:
pantor
2022-07-10 13:46:33 +02:00
parent 72f90122a2
commit 9f923b3677
4 changed files with 12 additions and 3 deletions
+1 -1
View File
@@ -143,7 +143,7 @@ public:
Op operation;
std::string name;
int number_args; // Should also be negative -> -1 for unknown number
int number_args; // Can also be negative -> -1 for unknown number
std::vector<std::shared_ptr<ExpressionNode>> arguments;
CallbackFunction callback;
+4
View File
@@ -76,6 +76,10 @@ class Parser {
auto function = operator_stack.top();
operator_stack.pop();
if (static_cast<int>(arguments.size()) < function->number_args) {
throw_parser_error("too few arguments");
}
for (int i = 0; i < function->number_args; ++i) {
function->arguments.insert(function->arguments.begin(), arguments.back());
arguments.pop_back();