This text is perfect for advanced undergraduate and beginning graduate courses in programming language theory.