diff --git a/src/expression/Expression_test.go b/src/expression/Expression_test.go index 143b2d4..df62868 100644 --- a/src/expression/Expression_test.go +++ b/src/expression/Expression_test.go @@ -110,7 +110,8 @@ func TestParse(t *testing.T) { {"Array access 4", "a.b[c+d]", "(@ (. a b) (+ c d))"}, {"Array access 5", "a()[b]", "(@ (λ a) b)"}, {"Array access 6", "a.b()[c]", "(@ (λ (. a b)) c)"}, - // {"Array access 7", "a.b(c)[d]", "(@ (λ (. a b) c) d)"}, + {"Array access 7", "a.b(c)[d]", "(@ (λ (. a b) c) d)"}, + {"Array access 8", "a.b(c)[d][e]", "(@ (@ (λ (. a b) c) d) e)"}, } for _, test := range tests { diff --git a/src/expression/Operator.go b/src/expression/Operator.go index 57468da..f69ba00 100644 --- a/src/expression/Operator.go +++ b/src/expression/Operator.go @@ -63,6 +63,10 @@ func isComplete(expr *Expression) bool { return true } + if expr.Token.Kind == token.Call { + return true + } + if expr.Token.IsOperator() && len(expr.Children) == numOperands(expr.Token.Kind) { return true }