Пример #1
0
 def read_number(self, reader):
     chars = []
     while self.is_number(reader.current()) or \
           reader.current() == '.' or \
           reader.current() == '-':
           chars.append(reader.current())
           reader.next()
     str = "".join(chars)
     if str == "-":
         return Symbol.from_string(str)
     if '.' in str:
         return FloatObj(float(str))
     return IntObj(int(str))
Пример #2
0
def init_vars():
	from clojure.lang.var import Var
	conslist = Var(Symbol.from_string("cons_list*"), Cons_List())
Пример #3
0
	def is_builtin(self):
		return BoolObj(True)
	def evaluate(self):
		return self
	def invoke2(self, arg0, arg1):
		val = arg1.evaluate()
		return Var(arg0, val)


class Recur(Obj):
	def __init__(self):
		pass
	def is_builtin(self):
		return BoolObj(True)
	def evaluate(self):
		return self
	def apply(self, args):
		nlist = []
		while args is not None:
			nlist.append(args.first().evaluate())
			args = args.rest()
		_RecurInfo.set_recur(List.from_list(nlist))
		return None
  
recur = Var(Symbol.from_string("recur"), Recur())  
d = Var(Symbol.from_string("def"), Def())	    	
fn = Var(Symbol.from_string("fn"), Fn())	
    	
ifsym = Var(Symbol.from_string("if"), If())	
        
Пример #4
0
from clojure.lang.var import Var
from clojure.lang.symbol import Symbol
from clojure.lang.primitives import Obj, IntObj
from clojure.lang.afn import AFn


class Add(AFn):
	def __init__(self):
		pass
	def evaluate(self):
		return self
	def invoke2(self, arg0, arg1):
		return IntObj(arg0.int_value() + arg1.int_value())
		
add = Var(Symbol.from_string("+"), Add())

class Sub(AFn):
	def __init__(self):
		pass
	def evaluate(self):
		return self
	def invoke2(self, arg0, arg1):
		return IntObj(arg0.int_value() - arg1.int_value())
		
sub = Var(Symbol.from_string("-"), Sub())

class Equals(AFn):
	def __init__(self):
		pass
	def evaluate(self):
		return self