James Kyle (who created Babel) wrote a 'Super Tiny Compiler' that's a really great (low barrier to entry) place to start.
The inline docs are super well written, clear and extensive. It's also implemented in JabaScript.
It's an amazing learning tool and I really loved reading it!