aboutsummaryrefslogtreecommitdiff
path: root/ruby/step1_read_print.rb
blob: ef416c308fd5b6190d5b83102c990117faaac091 (plain)
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
require_relative "mal_readline"
require_relative "types"
require_relative "reader"
require_relative "printer"

# read
def READ(str)
    return read_str(str)
end

# eval
def EVAL(ast, env)
    return ast
end

# print
def PRINT(exp)
    return _pr_str(exp, true)
end

# repl
def REP(str)
    return PRINT(EVAL(READ(str), {}))
end

# repl loop
while line = _readline("user> ")
    begin
        puts REP(line)
    rescue Exception => e
        puts "Error: #{e}" 
        puts "\t#{e.backtrace.join("\n\t")}"
    end
end