Fix issue 246 (#247)

* Add `parse_expression` with one argument in preparation to fix #246.

* Fix issue #246: `func(n1 + n2, n3)` runs as if `func(n1, n2 + n3)`

* Simplify parser for an expression enclosed by parentheses.
This commit is contained in:
Kubo Takehiro
2022-12-04 19:28:04 +09:00
committed by GitHub
parent edc17798b3
commit d462b9f829
6 changed files with 128 additions and 152 deletions

View File

@@ -148,7 +148,7 @@ public:
CallbackFunction callback;
explicit FunctionNode(std::string_view name, size_t pos)
: ExpressionNode(pos), precedence(8), associativity(Associativity::Left), operation(Op::Callback), name(name), number_args(1) {}
: ExpressionNode(pos), precedence(8), associativity(Associativity::Left), operation(Op::Callback), name(name), number_args(0) {}
explicit FunctionNode(Op operation, size_t pos): ExpressionNode(pos), operation(operation), number_args(1) {
switch (operation) {
case Op::Not: {