As part of Nand2Tetris Course I took, this is my take on the compiler development. The 2 tier compiler translate high-level Jack code (simplified OOP language that was developed for this course) into middle VM abstraction that using a stack implementation, and from there into Hack Assmbley code, which get translate into 16 bits commands using the Assmbler.
All of the above was implemented using Python 3.7, usage can be found on each README file.
All info can be found on Nand2Tetris' website, all right reserve to them.