Example #1
0
func abs(context *parser.FunctionCallContext) error {
	values, err := parser.ValidateArguments(context, "abs", parser.VALUE_NUMBER)

	if err != nil {
		return err
	}

	context.Block.Stack.Push(parser.NewValueFromRat(big.NewRat(0, 1).Abs(values[0].N)))

	return nil
}
Example #2
0
func div(context *parser.FunctionCallContext) error {
	values, err := parser.ValidateArguments(context, "div", parser.VALUE_NUMBER, parser.VALUE_NUMBER)

	if err != nil {
		return err
	}

	if values[0].N.Cmp(big.NewRat(0, 1)) == 0 {
		return util.NewInvalidArgumentError("div", "division by zero", context.Token.Line, context.Token.Column, context.Token.File)
	}

	context.Block.Stack.Push(parser.NewValueFromRat(big.NewRat(0, 1).Quo(values[1].N, values[0].N)))

	return nil
}