Chervil is a toy Lisp interpreter written in Ruby
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

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