ACC: A C Compiler Overview An implementation of C89 compiler The compiler itself is written in C89 Self-hosting Compiles C source code to assembly language Uses platform's assembler and linker Uses platform's libc Features C Preprocessor Integers and floating point numbers Pointers and arrays Structs, unions and enumerators Variadic functions Function pointers Multiple diagnostic messages (Not all of language features are supported yet) Build $ make Builds acc $ make test Builds acc and runs test $ make test_all Builds acc and runs test Builds the second generation compiler using the first compiler Builds the third generation compiler using the second compiler Runs binary comparison between the second and the third compiler Platforms MacOS with clang License MIT License Reference C11 Specification ANSI C Yacc grammar Dave Prosser's C Preprocessing Algorithm Crafting Interpreters Engineering a Compiler Beginning x64 Assembly Programming lcc chibicc