示例#1
0
def dump(arg: Value) -> Value:
	""" Dumps a debug representation of `arg` and returns `arg`. """
	arg = arg.run()

	print(repr(arg), end='')

	return arg
示例#2
0
def assign(name: Value, value: Value) -> Value:
    """
	Assigns `value` to `name`, where `name` must be an `Identifier`.

	Returns `value`.
	"""

    value = value.run()
    name.assign(value)
    return value
示例#3
0
def assign(name: Value, value: Value) -> Value:
	"""
	Assigns `value` to `name`, converting `name` to an `Identifier` if
	it isn't already.

	Returns `value`.
	"""
	if not isinstance(name, Identifier):
		name = Identifier(str(name))

	value = value.run()
	name.assign(value)
	return value 
示例#4
0
def while_(cond: Value, body: Value) -> Null:
	""" Executes `body` while `cond` is truthy. """
	while cond:
		body.run()

	return Null()
示例#5
0
def then(lhs: Value, rhs: Value) -> Value:
	""" Simply executes `lhs`, then `rhs`, then returns `rhs`. """
	lhs.run()
	return rhs.run()
示例#6
0
def or_(lhs: Value, rhs: Value) -> Value:
	""" Returns `lhs` if its truthy, otherwise `rhs`. """
	return lhs.run() or rhs.run()
示例#7
0
def and_(lhs: Value, rhs: Value) -> Value:
	""" Returns `lhs` if its falsey, otherwise `rhs`. """
	return lhs.run() and rhs.run()
示例#8
0
def eql(lhs: Value, rhs: Value) -> Boolean:
	""" Checks to see if `lhs` is equal to `rhs`. """
	return Boolean(lhs.run() == rhs.run())
示例#9
0
def gth(lhs: Value, rhs: Value) -> Boolean:
	""" Checks to see if `lhs` is greater than `rhs`. """
	return Boolean(lhs.run() > rhs.run())
示例#10
0
def pow(lhs: Value, rhs: Value) -> Value:
	""" Exponentiates `lhs` by `rhs`. """
	return lhs.run() ** rhs.run()
示例#11
0
def mod(lhs: Value, rhs: Value) -> Value:
	""" Modulos `lhs` by `rhs`. """
	return lhs.run() % rhs.run()
示例#12
0
def div(lhs: Value, rhs: Value) -> Value:
	""" Divides `lhs` by `rhs`. """
	return lhs.run() // rhs.run()
示例#13
0
def mul(lhs: Value, rhs: Value) -> Value:
	""" Multiplies `lhs` by `rhs`. """
	return lhs.run() * rhs.run()
示例#14
0
def sub(lhs: Value, rhs: Value) -> Value:
	""" Subtracts `rhs` from `lhs`. """
	return lhs.run() - rhs.run()
示例#15
0
def add(lhs: Value, rhs: Value) -> Value:
	""" Adds `rhs` to `lhs`. """
	return lhs.run() + rhs.run()
示例#16
0
def call(blk: Value) -> Value:
	""" Executes the return value of a `block`. """
	return blk.run().run()
示例#17
0
def lth(lhs: Value, rhs: Value) -> Boolean:
	""" Checks to see if `lhs` is less than `rhs`. """
	return Boolean(lhs.run() < rhs.run())