func (b BinOp) ProcessExp(p ExpProcessor) {
	p.ProcessBinOpExp(b)
}
ProcessExp uses the given ExpProcessor to process the receiver.
package ast
import (
	"github.com/arnodel/golua/ops"
)
type BinOp struct {
	Location
	Left   ExpNode
	OpType ops.Op
	Right  []Operation
}
var _ ExpNode = BinOp{}
type Operation struct {
	Op      ops.Op
	Operand ExpNode
}
func NewBinOp(left ExpNode, op ops.Op, right ExpNode) *BinOp {
	loc := MergeLocations(left, right)
	leftOp, ok := left.(*BinOp)
	opType := op.Type()
	if ok && leftOp.OpType == opType {
		return &BinOp{
			Location: loc,
			Left:     leftOp.Left,
			OpType:   opType,
			Right:    append(leftOp.Right, Operation{op, right}),
		}
	}
	return &BinOp{
		Location: loc,
		Left:     left.(ExpNode),
		OpType:   opType,
		Right:    []Operation{{op, right}},
	}
}