Code Critique: A Brainfuck Interpreter

I’m new to Crystal and wrote my first project. A command line Brainfuck interpreter. As I’ve only been using Crystal for a few days, it would be helpful if someone with more experience could review the code and point out any mistakes if they have time.
The code is here. Also I did have one question. I like how easy it is to colorize text in crystal. I created a custom error class

class BrainFuckError < Exception
  def initialize(msg)
    super("BrainFuck Error: #{msg}")

And I’d like to be able to colorize the message so that it shows up red in the terminal. I tried to add the colorize method to the string, and the result of the superclass itself, but that didn’t seem to work. How would I do this properly?

Thank You!

You could reference the sample in the Crystal repo: crystal/ at master · crystal-lang/crystal · GitHub.

It should just be like super "BrainFuck Error: #{msg}".colorize(:red).to_s.