Class: TuringTarpit::Interpreter

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

Constant Summary collapse

FORWARD_JUMP =
"["
BACKWARD_JUMP =
"]"
OPERATIONS =
{ "+" => :increment_cell_value,
"-" => :decrement_cell_value,
">" => :increment_pointer,
"<" => :decrement_pointer,
"." => :output_cell_value,
"," => :input_cell_value }

Instance Method Summary collapse

Constructor Details

#initialize(chars) ⇒ Interpreter

Returns a new instance of Interpreter.



13
14
15
16
# File 'lib/turing_tarpit/interpreter.rb', line 13

def initialize(chars)
  self.chars = chars
  self.index = -1
end

Instance Method Details

#next_operation(cell_value) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/turing_tarpit/interpreter.rb', line 18

def next_operation(cell_value)
  case next_char
  when FORWARD_JUMP
    if cell_value.zero?
      jump_forward 
    else
      skip_while(FORWARD_JUMP) 
    end
  when BACKWARD_JUMP
    if cell_value.zero?
      skip_while(BACKWARD_JUMP) 
    else
      jump_back
    end
  end

  OPERATIONS[current_char]
end