From 895120776a0ae4dd121029f1730d29ca886e201e Mon Sep 17 00:00:00 2001 From: Mel Date: Thu, 28 Jul 2022 21:18:09 +0000 Subject: Fix nested stacked exprs and parse members --- pkg/lang/ast/expr.go | 6 ++++++ pkg/lang/ast/op.go | 8 -------- 2 files changed, 6 insertions(+), 8 deletions(-) (limited to 'pkg/lang/ast') diff --git a/pkg/lang/ast/expr.go b/pkg/lang/ast/expr.go index b0ed599..aceed18 100644 --- a/pkg/lang/ast/expr.go +++ b/pkg/lang/ast/expr.go @@ -11,6 +11,7 @@ const ( ExprKindUnary ExprKindCall ExprKindSubscription + ExprKindMember ExprKindGroup ExprKindFnLit @@ -57,6 +58,11 @@ type ExprSubscription struct { Key Expr } +type ExprMember struct { + Obj Expr + Key IdentNode +} + type ExprGroup struct { Value Expr } diff --git a/pkg/lang/ast/op.go b/pkg/lang/ast/op.go index 063a309..6f48e0c 100644 --- a/pkg/lang/ast/op.go +++ b/pkg/lang/ast/op.go @@ -21,8 +21,6 @@ const ( BinOpLte BinOpGt BinOpGte - - BinOpDot ) func BinOpFromToken(tok token.Token) (BinOp, bool) { @@ -52,8 +50,6 @@ func BinOpFromToken(tok token.Token) (BinOp, bool) { op = BinOpGt case token.Gte: op = BinOpGte - case token.Dot: - op = BinOpDot default: return 0, false } @@ -71,8 +67,6 @@ func (op BinOp) Precedence() int { return 3 case BinOpStar, BinOpSlash, BinOpPercent: return 4 - case BinOpDot: - return 5 default: panic(fmt.Sprintf("unknown binary operator: %d", op)) @@ -94,8 +88,6 @@ func (op BinOp) Associativity() Associativity { return AssociativityRight case BinOpEq, BinOpNeq, BinOpLt, BinOpLte, BinOpGt, BinOpGte: return AssociativityLeft - case BinOpDot: - return AssociativityLeft default: panic(fmt.Sprintf("unknown binary operator: %d", op)) } -- cgit 1.4.1