Module: AjLisp

Defined in:
lib/ajlisp.rb,
lib/ajlisp/list.rb,
lib/ajlisp/lexer.rb,
lib/ajlisp/token.rb,
lib/ajlisp/parser.rb,
lib/ajlisp/context.rb,
lib/ajlisp/nil_atom.rb,
lib/ajlisp/primitive.rb,
lib/ajlisp/fprimitive.rb,
lib/ajlisp/named_atom.rb,
lib/ajlisp/file_source.rb,
lib/ajlisp/input_source.rb,
lib/ajlisp/dot_verb_atom.rb,
lib/ajlisp/fprimitive_do.rb,
lib/ajlisp/fprimitive_if.rb,
lib/ajlisp/primitive_add.rb,
lib/ajlisp/string_source.rb,
lib/ajlisp/fprimitive_let.rb,
lib/ajlisp/primitive_cons.rb,
lib/ajlisp/primitive_eval.rb,
lib/ajlisp/primitive_list.rb,
lib/ajlisp/primitive_load.rb,
lib/ajlisp/primitive_rest.rb,
lib/ajlisp/primitive_first.rb,
lib/ajlisp/at_constant_atom.rb,
lib/ajlisp/fprimitive_quote.rb,
lib/ajlisp/primitive_divide.rb,
lib/ajlisp/fprimitive_define.rb,
lib/ajlisp/fprimitive_lambda.rb,
lib/ajlisp/primitive_closure.rb,
lib/ajlisp/fprimitive_closure.rb,
lib/ajlisp/fprimitive_definef.rb,
lib/ajlisp/fprimitive_definem.rb,
lib/ajlisp/fprimitive_flambda.rb,
lib/ajlisp/fprimitive_mlambda.rb,
lib/ajlisp/primitive_multiply.rb,
lib/ajlisp/primitive_subtract.rb,
lib/ajlisp/primitive_predicates.rb,
lib/ajlisp/primitive_comparisons.rb,
lib/ajlisp/fprimitive_macro_closure.rb

Defined Under Namespace

Classes: AtConstantAtom, Context, DotVerbAtom, EmptyList, FPrimitive, FPrimitiveClosure, FPrimitiveDefine, FPrimitiveDefinef, FPrimitiveDefinem, FPrimitiveDo, FPrimitiveFLambda, FPrimitiveIf, FPrimitiveLambda, FPrimitiveLet, FPrimitiveMLambda, FPrimitiveMacroClosure, FPrimitiveQuote, FileSource, InputSource, Lexer, List, NamedAtom, NilAtom, Parser, Primitive, PrimitiveAdd, PrimitiveAtomPredicate, PrimitiveClosure, PrimitiveCons, PrimitiveDivide, PrimitiveEqual, PrimitiveEval, PrimitiveFirst, PrimitiveGreater, PrimitiveGreaterEqual, PrimitiveLess, PrimitiveLessEqual, PrimitiveList, PrimitiveListPredicate, PrimitiveLoad, PrimitiveMultiply, PrimitiveNativeMethod, PrimitiveNilPredicate, PrimitiveRest, PrimitiveSubtract, StringSource, Token, TokenType

Class Method Summary collapse

Class Method Details

.contextObject



87
88
89
# File 'lib/ajlisp.rb', line 87

def self.context
    return @context
end

.evaluate(context, item) ⇒ Object



91
92
93
94
95
96
97
# File 'lib/ajlisp.rb', line 91

def self.evaluate(context, item)
    if item.is_a? List or item.is_a? NamedAtom
        return item.evaluate(context)
    end
        
    return item	
end

.replObject



115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/ajlisp.rb', line 115

def self.repl
    source = InputSource.new
    lexer = Lexer.new(source)
    parser = Parser.new(lexer)

    expr = parser.parseExpression
   
    while expr
        puts evaluate(self.context, expr)
        expr = parser.parseExpression        
    end 
end

.to_s(item) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/ajlisp.rb', line 99

def self.to_s(item)
    if item.is_a? List or item.is_a? NamedAtom
        return item.to_s
    end
    
    if item.is_a? String
        return '"' + item + '"'
    end 
    
    if item == nil
        return "nil"
    end
    
    return item.to_s
end