Class: Ascode::Interpreter::Main

Inherits:
Object
  • Object
show all
Defined in:
lib/ascode/interpreter/main.rb

Instance Method Summary collapse

Constructor Details

#initialize(ast, env = Environment.new) ⇒ Main

Returns a new instance of Main.



9
10
11
12
13
14
15
16
17
18
# File 'lib/ascode/interpreter/main.rb', line 9

def initialize(ast, env = Environment.new)
  @env = env
  @env.ast = ast

  @map = {
    io: IO,
    math: Math,
    condition: Condition
  }
end

Instance Method Details

#call(type, name) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/ascode/interpreter/main.rb', line 34

def call(type, name)
  if type == :env
    @env.send name
  else
    @map[type].send name, @env
  end
end

#runObject



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ascode/interpreter/main.rb', line 20

def run
  @env.ast.each do |action|
    name = action[:action]

    if name == "push"
      @env.push(action[:what])
    elsif name == "condition"
      Condition.begin @env, action[:true_block], action[:false_block]
    else
      call action[:type], name
    end
  end
end