http://cuda.dcc.ufmg.br/psyche-c/ [PsycheLogo] The compilation of incomplete C code can be useful in a variety of scenarios: debugging a snippet retrieved from a bug-tracking tool; running an static analysis on only part of a program; supporting code-completion within an IDE; during cross-platform development when a header is incompatible; or to generate data-structures straight out of algorithm implementations. Psyche-c is a compiler for incomplete C code being developed in our lab. It receives as an input a snippet[1]. From it, psyche-c produces a header file that, once #included into the original program, leads to compilable code[2]. To complete the missing parts of programs, psyche-c solves several challenges. The first ones appear during parsing, which in C requires, not only syntax, but also semantic information. Yet, the really cool challenges appear during type inference. Is 0 an integer or the null pointer? How to account for const/volatile in implicit conversions (particularly through poitners)? What about variadic functions? And the subtyping relation involving void*? Psyche-c is still under research, but you can give it a try. Its source is available at https://github.com/ltcmelo/psychec. [1] In this online version, if an expanded macro is present, then it must conform to the C grammar (i.e. be syntactically valid). [2] We don't generate function definitions, only declarations. Therefore, linking may not be possible. For a wrapper around psyche-c that integrates with your host compiler, check Cnippet. A paper that describes psyche-c's internals has been accepted to to POPL 2018 (Slides/Video). - To preprocess your code you can run GCC/Clang with `gcc -E -P'. [at] - Ensure the code is valid: start with a compilable program, then gradually strip it off. [/* The code commen] Check if the result is compilable with: [ ]gcc [ ]clang [Compile Source Code] ---------------------------------------------------------------------