aboutsummaryrefslogtreecommitdiff
path: root/pkg/lang/ast
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/lang/ast')
-rw-r--r--pkg/lang/ast/expr.go6
-rw-r--r--pkg/lang/ast/op.go8
2 files changed, 6 insertions, 8 deletions
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))
}