This book covers most of the modern tecniques and concepts used today when writing compilers. It has some code examples in pseudo-C which describes parts of the compilers main structure, not in detail. It shows the concepts of how to write a descent Recursive Descent Parser. Also as many books do, this book covers parts on how to use scanner and parser generators. The book lacks in depth of the code. Though it is hard to balance between depth and simplicity, so I don't blame the author anyway. The book begins with describing the building blocks of the compiler (very good), and a very small language called micro is used to understand the main ideas of these parts. Later the book describes each part in detail. First scanning, then scanner generators, grammars and parsing, syntax error handling, parser tables, how to remove left recursion and common prefixes, LL, LR and LALR, semantic processing, symbol-tables, AST:s, stack allocation, declarations, optimizing, and much much more. However the book never deals with code generation in detail for a specific processor as for 80x86 or Sparc, but instead uses a virtual stack machine to generate code (that is a minus). There is a good Ada grammar specification at the end of the book. This is a good book for beginners. Though it is good to now some set-theory, I don't think this is absolutely nesscary (not to begin with). However, in order to understand all the scanning techniques in the book it _is_ nessecary to know some set-theory. In short: This is a very deep book, but could be understood by the intermediate C programmer. It is also a very good reference over different compiler methodologies.