http://www.cs.wisc.edu/~cs536-1/overview.html
CS536 is an introduction to the design and translation of programming languages. Subjects to be covered include scanning and regular expressions, context-free grammars and parsing, syntax-directed translation, abstract syntax trees, scoping, symbol tables, and code-generation. A variety of tools, including Lex, Yacc, and Spim will be used.