Next Generation Compiler Collection Data types: • Source File • AST (Abstract Syntax Tree) • Intermediary (See: NgccIntermediary) • Machine code • Object File C Flow: • C Source • AST • Intermediary • Assembler Source • Machine Code • Object File Python Flow: • Python Source • AST • Intermediary • C Source C Decompilation Flow: • Object File • Machine Code • Intermediary • C Source Goals: • Become a viable replacement for the existing GCC (Gnu Compiler Collection) • Allow quick turnaround on new optimizations, even project-specific • Promote experimentation with new compilation and decompilation methods • Emphasize better output and ignore speed of compilation • Become faster both in compile-time and run-time than competing compilers through self-hosting and optimizing Crypto's Comments: Do you really source file as a layer of abstraction? Doesn't it just immediately get turned into an AST? Unless you are planning to make this also a preprocessor, and it's probably still better to handle that at the AST level. And for decompilation you could just have a printer on the AST