1
1
mirror of https://github.com/kanaka/mal.git synced 2024-10-27 22:58:00 +03:00
mal/impls/ruby.2/step1_read_print.rb
2021-12-13 18:18:16 -06:00

44 lines
987 B
Ruby

require "readline"
require_relative "errors"
require_relative "printer"
require_relative "reader"
module Mal
extend self
def READ(input)
read_str(input)
end
def EVAL(input)
input
end
def PRINT(input)
pr_str(input, true)
end
def rep(input)
PRINT(EVAL(READ(input)))
rescue InvalidHashmapKeyError => e
"Error! Hashmap keys can only be strings or keywords."
rescue UnbalancedEscapingError => e
"Error! Detected unbalanced escaping. Check for matching '\\'."
rescue UnbalancedHashmapError => e
"Error! Detected unbalanced list. Check for matching '}'."
rescue UnbalancedListError => e
"Error! Detected unbalanced list. Check for matching ')'."
rescue UnbalancedStringError => e
"Error! Detected unbalanced string. Check for matching '\"'."
rescue UnbalancedVectorError => e
"Error! Detected unbalanced list. Check for matching ']'."
end
end
while input = Readline.readline("user> ")
puts Mal.rep(input)
end
puts