Sfoglia il codice sorgente

Handle ctrl+c in repl, add exit function

master
Dylan Baker 5 anni fa
parent
commit
cc51634636
1 ha cambiato i file con 15 aggiunte e 6 eliminazioni
  1. 15
    6
      bin/chervil

+ 15
- 6
bin/chervil Vedi File

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

Loading…
Annulla
Salva