class Gobstones::Lang::Program

Attributes

definitions[R]
main_definition[R]

Public Class Methods

new(definitions, main_definition) click to toggle source
# File lib/gobstones/lang/program.rb, line 12
def initialize(definitions, main_definition)
  @definitions = definitions
  @main_definition = main_definition
end

Public Instance Methods

equality_attributes() click to toggle source
# File lib/gobstones/lang/program.rb, line 17
def equality_attributes
  %i[definitions main_definition]
end
evaluate() click to toggle source
# File lib/gobstones/lang/program.rb, line 21
def evaluate
  with_execution_context do |context|
    return_values = main_definition.evaluate(context)
    Runner::ProgramResult.new(context.head, return_values)
  end
end

Private Instance Methods

create_context() click to toggle source
# File lib/gobstones/lang/program.rb, line 34
def create_context
  Runner::ExecutionContext.for_program(self)
end
with_execution_context() { |create_context| ... } click to toggle source
# File lib/gobstones/lang/program.rb, line 30
def with_execution_context
  yield create_context
end