Goals I am going to show you how to make a DSL compiler in a single sitting. It will be capable of: consuming the DSL's concrete syntax lexing and parsing (you should already know how to do this) constructing a semantic model with all the bells and whistles variables, functions, etc. types and type inference and strong safety properties static compile-time checks error messages with input coordinates emitting native code which might actually be fast