Class: Gobstones::Lang::Commands::While

Inherits:
Conditional show all
Defined in:
lib/gobstones/lang/commands/while.rb

Constant Summary collapse

STACK_LIMIT =
10_000

Instance Attribute Summary

Attributes inherited from Conditional

#condition, #then_block

Instance Method Summary collapse

Methods inherited from Conditional

#equality_attributes, #evaluate_condition, #initialize

Methods included from EqualityDefinition

#==, #equality_attributes

Constructor Details

This class inherits a constructor from Gobstones::Lang::Commands::Conditional

Instance Method Details

#evaluate(context, stack_size = 0) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/gobstones/lang/commands/while.rb', line 10

def evaluate(context, stack_size = 0)
  raise Runner::GobstonesRuntimeError, 'stack overflow' if stack_size == STACK_LIMIT
  return unless evaluate_condition(context).true?

  then_block.evaluate(context)
  evaluate(context, stack_size + 1)
end