code for learning compiler construction