Exemplo n.º 1
0
	def call(self, args):
		self.ensure_args(args, 2)
		self.ensure_arg_type(args, 0, ast.literal)
		self.ensure_arg_type(args, 1, ast.literal)
		x, y = args
		if x.tkn != y.tkn:
			raise(runtime_error("+: arguments must have same type"))
		if x.tkn == T_INT or x.tkn == T_FLOAT:
			return ast.scm_bool(x.content < y.content)
		elif x.tkn == T_RATIONAL:
			x1, x2 = x.content
			y1, y2 = y.content
			return ast.scm_bool(x1 / x2 < y1 / y2)
		elif x.tkn == T_COMPLEX:
			raise(runtime_error("+: cannot compare complex numbers"))
Exemplo n.º 2
0
	def call(self, args):
		self.ensure_args(args, 1)
		return ast.scm_bool(isinstance(args[0], ast.function) or isinstance(args[0], lib_function))
Exemplo n.º 3
0
	def call(self, args):
		self.ensure_args(args, 1)
		return ast.scm_bool(isinstance(args[0], ast.name))
Exemplo n.º 4
0
	def call(self, args):
		self.ensure_args(args, 1)
		return ast.scm_bool(isinstance(args[0], ast.literal) and args[0].tkn == T_BOOL)
Exemplo n.º 5
0
	def call(self, args):
		self.ensure_args(args, 1)
		return ast.scm_bool(isinstance(args[0], ast.literal) and (args[0].tkn == T_INT or args[0].tkn == T_RATIONAL or args[0].tkn == T_FLOAT))
Exemplo n.º 6
0
	def call(self, args):
		self.ensure_args(args, 1)
		self.ensure_arg_type(args, 0, ast.slist)
		return ast.scm_bool(len(args[0].lst) == 0)