1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| class Expression: def __init__(self): pass def eval(self,evaluator,env): raise "Not implmented yet!"
class NumberExpression(Expression): def __init__(self,exp): self.value = int(exp) def eval(self,evaluator,env): pass
class StringExpression(Expression): def __init__(self,exp): self.value = exp[1:len(exp)-1] def eval(self,evaluator,env): pass
class VariableExpression(Expression): def __init__(self,exp): self.name = exp def eval(self,evaluator,env): pass
class DefineExpression(Expression): def __init__(self,exp): if isinstance(exp[1],list): self.variable = exp[1][0] self.value = LambdaExpression(['lambda',exp[1][1:],exp[2]]) else: self.variable = exp[1] self.value = exp[2] def eval(self,evaluator,env): pass
class AssignmentExpression(Expression): def __init__(self,exp): self.variable = exp[1] self.value = exp[2] def eval(self,evaluator,env): pass
class IfExpression(Expression): def __init__(self,exp): self.pred = exp[1] self.true_exp = exp[2] self.false_exp = exp[3] def eval(self,evaluator,env): pass
class CondExpression(Expression): def __init__(self,exp): self.conditions = exp[1:len(exp)-1] self.otherwise = exp[-1] def eval(self,evaluator,env): pass
class LambdaExpression(Expression): def __init__(self,exp): self.args = exp[1] self.body = exp[2] def eval(self,evaluator,env): pass
class SequenceExpression(Expression): def __init__(self,exp): self.exps = exp[1:] def eval(self,evaluator,env): pass
class ProcedureExpression(Expression): def __init__(self,exp): self.args = exp[1] self.proc = exp[2] self.env = exp[3] def eval(self,evaluator,env): pass
class ApplicationExpression(Expression): def __init__(self,exp): self.operator = exp[1] self.args = exp[2] def eval(self,evaluator,env): pass
|