Chervil is a toy Lisp interpreter written in Ruby
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

repl.rb 568B

12345678910111213141516171819202122232425262728
  1. module Chervil
  2. class Repl
  3. def initialize
  4. @env = Env.new
  5. end
  6. def run
  7. begin
  8. while line = Readline.readline("> ", true)
  9. break if line == "(exit)"
  10. lexer = Lexer.new(line)
  11. tree = Parser.new(lexer).parse
  12. if tree.is_a? Error
  13. puts tree
  14. next
  15. end
  16. results = Interpreter.new(tree, @env).interpret
  17. results.each { |result| puts result unless result.nil? }
  18. end
  19. rescue Interrupt
  20. puts
  21. repl(@env)
  22. end
  23. end
  24. end
  25. end