Beispiel #1
0
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
}
Beispiel #2
0
func parseOperator(lit string) *operators.Operator {
	return operators.FindOperatorFromString(lit)
}