Writing Compilers and Interpreters: An Applied Approach
Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages (Pragmatic Programmers)
Crafting a Compiler with C