Dylan Baker 6 лет назад
Родитель
Сommit
7c02e3cfe9
4 измененных файлов: 23 добавлений и 0 удалений
  1. 1
    0
      lib/chervil.rb
  2. 4
    0
      lib/chervil/ast/number.rb
  3. 11
    0
      lib/chervil/interpreter.rb
  4. 7
    0
      spec/ast/number_spec.rb

+ 1
- 0
lib/chervil.rb Просмотреть файл

1
 require 'chervil/ast'
1
 require 'chervil/ast'
2
+require 'chervil/interpreter'
2
 require 'chervil/lexer'
3
 require 'chervil/lexer'
3
 require 'chervil/parser'
4
 require 'chervil/parser'
4
 require 'chervil/token'
5
 require 'chervil/token'

+ 4
- 0
lib/chervil/ast/number.rb Просмотреть файл

6
       @value = value
6
       @value = value
7
     end
7
     end
8
 
8
 
9
+    def evaluate
10
+      @value
11
+    end
12
+
9
     def ==(other)
13
     def ==(other)
10
       @value == other.value
14
       @value == other.value
11
     end
15
     end

+ 11
- 0
lib/chervil/interpreter.rb Просмотреть файл

1
+module Chervil
2
+  class Interpreter
3
+    def initialize(tree)
4
+      @tree = tree
5
+    end
6
+
7
+    def interpret
8
+      @tree.map(&:evaluate)
9
+    end
10
+  end
11
+end

+ 7
- 0
spec/ast/number_spec.rb Просмотреть файл

1
+module Chervil::AST
2
+  RSpec.describe Number do
3
+    it 'evaluates' do
4
+      expect(Number.new(5.0).evaluate).to eq(5.0)
5
+    end
6
+  end
7
+end

Загрузка…
Отмена
Сохранить