Brainfuck, in Ruby.
See en.wikipedia.org/wiki/Brainfuck
Usage
rbfk.rb <brainfuck source file>
OR
echo '++++++[>++++++++++<-]+++++.' | rbfk.rb
although piping in a script this way that uses the “,” operation won’t work, since the “,” operation reads from STDIN.
Also supports Ook![esolangs.org/wiki/Ook!] and Spoon scripts.
You can use the BrainFuck class in your own programs (why?) like so:
require 'brain_fuck'
program = File.open('test.bf', 'r')
#
# OR any IO stream, e.g.
# require 'stringio'
# program = StringIO.new('++++++[>++++++++++<-]>+++++.')
#
bf = BrainFuck.new(program)
bf.run
Options
= { :memory_size => 50_000 }
bf = BrainFuck.new(program, )
bf.run
Where options is a hash with one or more of the following options:
- :debug
-
will emit debugging information to STDOUT
- :execution_limit
-
the maximum operations to execute (including repetition in loops) before forced termination (to prevent runaway scripts). Defaults to 1,000,000.
- :memory_size
-
the size of the “tape” (the array) size used for the BrainFuck machine’s memory. Defaults to 30,000.
- :input_stream
-
the IO stream from which the “,” operation reads
- :output_stream
-
the IO stream to which the “.” operation will write