Robert Nystrom is a language developer who works at Google on the Dart programming language. In his book Crafting Interpreters he explains lexing, parsing and executing a programming language in an accessible way.
"Crafting Interpreters ", Robert Nystrom
Nystrom sets out with the (correct) observation that the matter of handling and executing code is a complex topic that is not made easier with all the theory that surrounds it. In his book, he takes the reader on a journey to implement a toy language, Lox, two times. First with a tree walker execution algorithm, not unlike PHP 3 or early Ruby. Then, again, with a bytecode executor written in C.
The book starts out by defining an intentionally very basic, but complete programming language, and then chapter by chapter builds the infrastructure to scan, parse and execute the code. All explanations are very practical and on the code, but a lot of boxes, asides and cross-references make the theory behind all this discoverable, while at the same time keeping it out of the way. One of the nicest and most practical introductions to programming language interpretation and compilation that I have seen.
“Crafting Interpreters ”, Robert Nystrom, EUR 25.84