module Chervil class Repl def initialize @env = Env.new end def run begin while line = Readline.readline("> ", true) break if line == "(exit)" lexer = Lexer.new(line) tree = Parser.new(lexer).parse if tree.is_a? Error puts tree next end results = Interpreter.new(tree, @env).interpret results.each { |result| puts result unless result.nil? } end rescue Interrupt puts repl(@env) end end end end