4 ms·
brainfuck is a wonderful toy language. it is so simple - the entire language fits easily in your head, even though it is difficult to do anything useful with it
by shoo 13y ago
brainfuck is a wonderful toy language. it is so simple - the entire language fits easily in your head, even though it is difficult to do anything useful with it.
more generally, compilers are fun to learn about. i found Jack Crenshaw's "Let's build a compiler" series a good starting reference and source of inspiration [1].
i built a brainfuck to GNU assembly compiler in brainfuck.
to be able to write that compiler, i first built a higher-level macro language that could target brainfuck, and wrote a compiler for that. the macro language was implemented as a horrible DSL in python [2].
later i built an implementation in haskell that could parse and compile the macro DSL to brainfuck, so things ended up entirely python-free [3]. Haskell's Parsec parser combinator library was fun to learn about too [4].
[1] http://compilers.iecc.com/crenshaw/ http://compilers.iecc.com/crenshaw/
[2] https://github.com/fcostin/abfc https://github.com/fcostin/abfc
[3] https://github.com/fcostin/abfc_hs https://github.com/fcostin/abfc_hs
[4] http://www.haskell.org/haskellwiki/Parsec http://www.haskell.org/haskellwiki/Parsec