func evalOp(opName string, floats *FloatStack) error { op := operators.FindOperatorFromString(opName) if op == nil { return errors.New("Either unmatched paren or unrecognized operator") } var args = make([]float64, op.Args) for i := op.Args - 1; i >= 0; i-- { arg, err := floats.Pop() if err != nil { return errors.New("Not enough arguments to operator!") } args[i] = arg } floats.Push(op.Operation(args)) return nil }
func parseOperator(lit string) *operators.Operator { return operators.FindOperatorFromString(lit) }