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.

chervil 542B

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