Constexpr-8cc: Compile-time C Compiler
Keiichi Watanabe (via Hacker News):
Constant expressions in C++ are expressions that can be evaluated at compile-time. In C++14, by relaxing constrains, constant expressions became so powerful that a C compiler can be implemented in!
In constexpr-8cc, the main routine for compilations of C programs is implemented in a C++14
constexpr
function. Therefore, if you compile 8cc.cpp to a binary file by g++, compilation of a C program will be performed as a compile-time computation and the result of this C compilation will be embedded into the generated binary.[…]
When you see
8cc.hpp
, you will know this program was not written by hand. Actually, I used ELVM Compiler Infrastructure to generate it. I just implemented a translator from ELVM IR to C++14 constexpr here.