Martin Fowler once said that there are two types of people in this world: those who didn't take compilers at the university and are afraid of them, and those who took compilers at the university and are afraid of them. Compilers are some of the most complex and theoretically-rich pieces of software in existence. Each one requires careful and well considered design to avoid becoming a tangled morass of meta-generators and bailing wire.
This talk will look at the construction of a simple compiler in Scala. We will examine some of the tools Scala gives us that can dramatically simplify the task of writing and testing a compiler, and in the process, gain an appreciation for what compilers look like and how to build your own.