Fundamentals of programing language - Horowitz Ellis