How Does A Compiler Work?