This book provides a gently paced introduction to techniques for implementing programming languages by means of compilers and interpreters, using the object-oriented programming language Java. The book aims to exemplify good software engineering principles at the same time as explaining the specific techniques needed to build compilers and interpreters.
Covers a lot in a fairly small volume. There are code samples but it might be easier to download them from the book website http://www.dcs.gla.ac.uk/~daw/books/P... and view them in an IDE