1. code is read from the source
2. code is tokenized into tokens, and things like compressed strings can be unpacked and provided as literal value tokens at this stage
3. tokens are parsed into a parse structure / tree
4. parse tree is compiled into the relevant python code