// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com). // All rights reserved. // operator-post-inc.go package expr // -------- post increment term func newPostIncTerm(tk *Token) *term { return &term{ tk: *tk, parent: nil, children: make([]*term, 0, 1), position: posPostfix, priority: priPrePost, evalFunc: evalPostInc, } } func evalPostInc(ctx ExprContext, self *term) (v any, err error) { var leftValue any if leftValue, err = self.evalPrefix(ctx); err != nil { return } if dc, ok := leftValue.(*dataCursor); ok { v, err = dc.Next() } else if isInteger(leftValue) && self.children[0].symbol() == SymIdentifier { v = leftValue i, _ := leftValue.(int64) ctx.SetVar(self.children[0].source(), i+1) } else { self.errIncompatibleType(leftValue) } return } // init func init() { registerTermConstructor(SymDoublePlus, newPostIncTerm) }