Class: ProgramNode

Inherits:
Object
  • Object
show all
Defined in:
lib/nodes.rb

Overview

Root node for program. Stores statements and evaluates them.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(statements) ⇒ ProgramNode

Returns a new instance of ProgramNode.



205
206
207
# File 'lib/nodes.rb', line 205

def initialize(statements)
  @statements = statements
end

Instance Attribute Details

#statementsObject (readonly)

Returns the value of attribute statements.



204
205
206
# File 'lib/nodes.rb', line 204

def statements
  @statements
end

Instance Method Details

#evaluateObject



209
210
211
212
213
214
215
216
217
218
219
220
221
# File 'lib/nodes.rb', line 209

def evaluate
  global_scope = Scope.new
  result = nil
  @statements.each do |statement|
    result = statement.evaluate(global_scope)
    return result.value if statement.is_a?(ReturnNode)
  end
  if result.is_a?(ReturnValue)
    return result.value
  else
    return result
  end
end