summaryrefslogtreecommitdiff
path: root/src/brainfuck/program.cr
diff options
context:
space:
mode:
authorMatthew Hall <hallmatthew314@gmail.com>2022-09-04 15:55:10 +1200
committerMatthew Hall <hallmatthew314@gmail.com>2022-09-04 15:55:10 +1200
commit2fe381c9a1719718d4a4dfc662f07db47af7831f (patch)
tree9878717f235f686849e685599500394a461e9b0e /src/brainfuck/program.cr
parent70dbbd733758b61317af37af1cbbec6aa4b6e2a5 (diff)
Big refactor + Program base class
Diffstat (limited to 'src/brainfuck/program.cr')
-rw-r--r--src/brainfuck/program.cr13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/brainfuck/program.cr b/src/brainfuck/program.cr
index 5b569df..4c3b41e 100644
--- a/src/brainfuck/program.cr
+++ b/src/brainfuck/program.cr
@@ -1,13 +1,18 @@
require "./parser.cr"
+require "../program.cr"
+require "../util.cr"
-class Brainfuck::Program
+struct Brainfuck::Program < Flint::Program
@mem_size : Int32
- def initialize(@parser : Parser, mem_size : Int32?)
- @mem_size = mem_size || DEFAULT_TAPE_SIZE
+ def initialize(source_io : IO, memory_size : Int32?)
+ super(source_io)
+
+ @parser = Parser.new(source_io)
+ @mem_size = memory_size || DEFAULT_TAPE_SIZE
end
- def interpret
+ def interpret : Nil
code = @parser.parse
jumps = find_jumps(code)
code_ptr = 0