Just went out and wrote a simple interpreter in 65 lines of Ruby. It's pretty slow but seems to be correct.
One thing you didn't mention is that the cells are supposed to be bytes, and thus increment and decrement need to be modulo 256. That may not be part of the actual definition but the sample programs I found all relied on it.
I also found it pretty funny that "apt-cache search brainfuck" returns a total of 3 interpreters in the Debian archive.
Yeah, you're right about the cells usually being bytes. I followed the "spec" far enough for it to be a compliant implementation, but its fairly quick-and-dirty, and will probably break on more advanced programs.
Yes, I nearly put that in, but it didn't feel right. I've only given a very basic introduction to the language - the purpose of the blog was to teach the language rather than give its history.
8 comments
[ 2.5 ms ] story [ 33.4 ms ] threadhttp://inshame.blogspot.com/search/label/My%20Progs%3A%20Fuc...
I've been meaning to figure out how the program works, but the source code doesn't have a lot of comments so it isn't going so well.
One thing you didn't mention is that the cells are supposed to be bytes, and thus increment and decrement need to be modulo 256. That may not be part of the actual definition but the sample programs I found all relied on it.
I also found it pretty funny that "apt-cache search brainfuck" returns a total of 3 interpreters in the Debian archive.
Wikipedia claims [1] that most brainfuck compilers are < 200 bytes.
[1] - http://en.wikipedia.org/wiki/Brainfuck
Not quite - "Several brainfuck compilers have been made smaller than 200 bytes." - http://en.wikipedia.org/wiki/Brainfuck