Stanford University: Keith Schwarz's "Lexical Analysis Notes"

Read slides 46-216.