This is a very simple (and a bit unoptimized) brainfuck interpreter written in brainfuck.
To run your code using this interpreter, go to this online brainfuck interpreter (because you still need a brainfuck interpreter to run the interpreter)
Then, copy paste the contents of bf_interpreter.bf
to the codesection of that site.
Write your own brainfuck code in the input section, and hit run :)
By cheating. I first wrote a language that compiles to brainfuck here and then wrote a brainfuck interpreter in that language. Finally I compiled the interpreter.
Under a 1 byte per cell memory tape, it can't run code larger than 256 characters, however, with slight modification to the original code, this is entirely possible, but will slow it down by a lot.
Another solution is to just use an interpreter with a memory cell size of 16 bits or higher (which you can do in copy.sh)