Module: Braingasm

Defined in:
lib/braingasm.rb,
lib/braingasm/errors.rb,
lib/braingasm/parser.rb,
lib/braingasm/machine.rb,
lib/braingasm/options.rb,
lib/braingasm/version.rb,
lib/braingasm/tokenizer.rb

Defined Under Namespace

Modules: Options Classes: BraingasmError, JumpSignal, Machine, Parser, ParsingError, Tokenizer, VMError

Constant Summary collapse

VERSION =
"0.2.1"

Class Method Summary collapse

Class Method Details

.handle_options(**command_line_options) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/braingasm/options.rb', line 27

def self.handle_options(**command_line_options)
  Options[:eof] = 0 if command_line_options[:zero]
  Options[:eof] = -1 if command_line_options[:negative]
  Options[:eof] = nil if command_line_options[:as_is]

  Options[:wrap_cells] = false if command_line_options[:unbound]

  if command_line_options[:cell_size_given]
    cell_size = command_line_options[:cell_size]
    Options[:cell_limit] = 2**cell_size
  end
end

.initialize_machine(code) ⇒ Object



6
7
8
9
10
11
# File 'lib/braingasm.rb', line 6

def self.initialize_machine(code)
  machine = Machine.new
  tokenizer = Tokenizer.new(code)
  machine.program = Parser.new(tokenizer).parse_program
  machine
end