Computing Reviews

A practical approach to compiler construction
Watson D., Springer International Publishing,New York, NY,2017. 254 pp.Type:Book
Date Reviewed: 02/16/18

Several comprehensive books have been written about compiler construction. Any new book on this topic is inevitably going to be compared against those works. However, by taking a different approach, a new book can set itself apart. This is exactly what the author has achieved. The book offers a practice-oriented take on the elementary concepts without overwhelming the reader with theory unnecessary to implement a simple, yet functional compiler from scratch.

Motivated by the implementation of high-level programming languages, the first two chapters introduce some of the core concepts in language and compiler design. From there on, the book is structured like most texts on compiler construction. Chapters mirror the path followed by the source language as it is converted into the target language. The first half of the book is concerned with lexing and parsing. The second part covers semantic analysis, (intermediate) code generation, and optimizations. The final chapter addresses some of the potential issues and concerns that eventually complicate the conceptually straightforward design of the compiler.

The book is an excellent resource for anyone who is looking for an introduction to the basic structure and concepts of a compiler. Better-suited works are available for an in-depth analysis. Nothing in this book is novel; neither the content nor the structure is significantly different from any other work on the topic. Only the surface is scratched for the things that make compiler construction hard. While this is possibly the book’s biggest weakness, it is also its biggest strength. It’s all too easy to lose the high-level overview when being bombarded with overly theoretical explanations of already-complex concepts.

For every topic that is covered, the author does an excellent job of explaining it in a clear, structured, and self-contained manner. Although every chapter builds on the previous one, there are no implicit dependencies such as algorithms on which the rest of a chapter hinges.

Overall, the book leaves the reader with a solid foundation. Every chapter ends with a thoughtful list of references that are valuable for anyone who wants to go beyond the breadth or depth of the book.

In conclusion, the book provides excellent material for those with limited or no knowledge about the internals of a compiler. When read carefully, it renders itself obsolete by the time it is finished.

Reviewer:  Jonas Devlieghere Review #: CR145859 (1806-0274)

Reproduction in whole or in part without permission is prohibited.   Copyright 2024 ComputingReviews.com™
Terms of Use
| Privacy Policy