Class: Gobstones::Lang::Program

Inherits:
Object
  • Object
show all
Includes:
EqualityDefinition
Defined in:
lib/gobstones/lang/program.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from EqualityDefinition

#==

Constructor Details

#initialize(definitions, main_definition) ⇒ Program

Returns a new instance of Program.



12
13
14
15
# File 'lib/gobstones/lang/program.rb', line 12

def initialize(definitions, main_definition)
  @definitions = definitions
  @main_definition = main_definition
end

Instance Attribute Details

#definitionsObject (readonly)

Returns the value of attribute definitions.



10
11
12
# File 'lib/gobstones/lang/program.rb', line 10

def definitions
  @definitions
end

#main_definitionObject (readonly)

Returns the value of attribute main_definition.



10
11
12
# File 'lib/gobstones/lang/program.rb', line 10

def main_definition
  @main_definition
end

Instance Method Details

#equality_attributesObject



17
18
19
# File 'lib/gobstones/lang/program.rb', line 17

def equality_attributes
  %i[definitions main_definition]
end

#evaluateObject



21
22
23
24
25
26
# 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