Too Long; Didn't Read
This is the third article in the Build a programming language series. We are going to use a popular WebAssembly compiler toolchain called binaryen. Binaryen does most of the heavy compiling tasks for us. The compile function will take our root AST (a `BlockNode`) and return a new `binaryen module. The final phase of our code generation is code generation. The return type of `generateFunctionMap` is a map where the key is the function name and the value is an object containing all the important information about the function.