This is the code repository for Clang Compiler Frontend, published by Packt.
Get to grips with the internals of a C/C++ compiler frontend and create your own tools
Discover the power of Clang, a versatile compiler known for its compilation speed and insightful error and warning messages. This book will get you acquainted with the capabilities of Clang, helping you harness its features for performance improvements and modularity by creating custom compiler tools.
This book covers the following exciting features:
- Get to grips with compiler architecture
- Gain an understanding of the inner workings of Clang
- Familiarize yourself with features specific to Clang
- Investigate various techniques for static code analysis
- Acquire knowledge on how to use AST matchers
- Create custom code modification and refactoring tools
- Explore tools for integrating compiler tools with IDEs
If you feel this book is for you, get your copy today!
All of the code is organized into folders.
The code will look like the following:
1 int main() {
2 return 0;
3 }
Following is what you need for this book: This book is for experienced C++ software engineers who have no prior experience with compiler design but want to gain the knoweldge they need to get up and running. Engineers who want to learn about how Clang works and familiarize themselves with its specific features will also benefit from this book.
With the following software and hardware list you can run all code files present in the book (Chapter 1-10).
| Chapter | Software required | OS required |
|---|---|---|
| 1-8 | Ninja | Mac OS X, Linux (Any Unix-like OS) |
| 1-8 | CMake | Mac OS X, Linux (Any Unix-like OS) |
| 1-8 | Git | Mac OS X, Linux (Any Unix-like OS) |
Ivan Murashko is a C++ software engineer. He earned his Ph.D. in Physics from Peter the Great St. Petersburg Polytechnic University and has over 20 years of C++ programming experience, mostly on Linux. Since 2020, he has worked with LLVM compilers and has been an LLVM committer since 2021. His areas of interest include the Clang compiler frontend, Clang Tools (such as Clang-Tidy and Clangd), and performance optimizations for compilers and compiler tools.

