class RbScheme::Printer
Public Instance Methods
print_lisp_object(obj)
click to toggle source
# File lib/rb-scheme/printer.rb, line 8 def print_lisp_object(obj) case obj when LInt print obj.value when LSymbol print obj.name when LTrue print "#t" when LFalse print "#f" when primitive_procedure print "#<subr>" when compound_procedure print "#<closure>" when LCell if obj.null? print("()") return end print "(" loop do print_lisp_object(obj.car) case obj.cdr when LCell if obj.cdr.null? print(")") return end print(" ") obj = obj.cdr else print(" . ") print_lisp_object(obj.cdr) print(")") return end end else raise "bug - error unexpected type #{obj}" end end
puts_lisp_object(obj)
click to toggle source
# File lib/rb-scheme/printer.rb, line 3 def puts_lisp_object(obj) print_lisp_object(obj) print "\n" end
Private Instance Methods
compound_procedure()
click to toggle source
# File lib/rb-scheme/printer.rb, line 54 def compound_procedure # expression (lambda ...) is compiled into Array Array end
primitive_procedure()
click to toggle source
# File lib/rb-scheme/printer.rb, line 59 def primitive_procedure Primitive::Procedure end
print_debug(obj)
click to toggle source
for debug
# File lib/rb-scheme/printer.rb, line 64 def print_debug(obj) case obj when LInt print obj.value when LSymbol print obj.name when LTrue print "#t" when LFalse print "#f" when primitive_procedure print "#<subr>" when compound_procedure print "#<closure>" when LCell if obj.null? print("()") return end print "(" loop do print_debug(obj.car) case obj.cdr when LCell if obj.cdr.null? print(")") return end print(" ") obj = obj.cdr else print(" . ") print_debug(obj.cdr) print(")") return end end else print ("ruby(#{obj})") end end