Dylan Baker пре 5 година
родитељ
комит
f34112d2c8
3 измењених фајлова са 11 додато и 1 уклоњено
  1. 2
    1
      bin/chervil
  2. 1
    0
      lib/chervil/ast/definition.rb
  3. 8
    0
      lib/chervil/ast/function.rb

+ 2
- 1
bin/chervil Прегледај датотеку

8
 while line = Readline.readline("> ", true)
8
 while line = Readline.readline("> ", true)
9
   lexer = Chervil::Lexer.new(line)
9
   lexer = Chervil::Lexer.new(line)
10
   tree = Chervil::Parser.new(lexer).parse
10
   tree = Chervil::Parser.new(lexer).parse
11
-  puts Chervil::Interpreter.new(tree, env).interpret
11
+  results = Chervil::Interpreter.new(tree, env).interpret
12
+  results.each { |result| puts result unless result.nil? }
12
 end
13
 end

+ 1
- 0
lib/chervil/ast/definition.rb Прегледај датотеку

14
 
14
 
15
     def evaluate(env)
15
     def evaluate(env)
16
       env.set(@name.name, @value)
16
       env.set(@name.name, @value)
17
+      nil
17
     end
18
     end
18
   end
19
   end
19
 end
20
 end

+ 8
- 0
lib/chervil/ast/function.rb Прегледај датотеку

12
       @params == other.params && @body == other.body
12
       @params == other.params && @body == other.body
13
     end
13
     end
14
 
14
 
15
+    def evaluate(env)
16
+      self
17
+    end
18
+
15
     def call(args)
19
     def call(args)
16
       unless @params.size == args.size
20
       unless @params.size == args.size
17
         raise "Expected #{params.size} arguments but received #{args.size}"
21
         raise "Expected #{params.size} arguments but received #{args.size}"
29
 
33
 
30
       current_expr
34
       current_expr
31
     end
35
     end
36
+
37
+    def to_s
38
+      "<function>"
39
+    end
32
   end
40
   end
33
 end
41
 end

Loading…
Откажи
Сачувај