The best things about compilers is that they have gentle ramps for learning. If you start simple enough, https://github.com/oriansj/M2-Planet the rest just becomes just add one more thing...
It even works if you start from zero: https://github.com/oriansj/mescc-tools-seed