module Rbtm

Constants

REGEX

Regexp for matching rules.

Public Class Methods

parse(file) click to toggle source

Parses rules and start state from a file.

# File lib/rbtm.rb, line 9
def self.parse(file)
  rules = {}
  state = nil

  File.readlines(file).each do |line|
    next unless line =~ REGEX

    state ||= $1
    rules[[$1, $2]] = [$3, $4, $5]
  end

  [rules, state]
end
turing_machine(rules, head) { |head| ... } click to toggle source

Runs a Turing machine. Yields current head if given a block.

# File lib/rbtm.rb, line 25
def self.turing_machine(rules, head)
  loop do
    rule = rules[head.signature]

    yield head if block_given?
    break unless rule

    head.operate(rule)
  end
end