Related articles |
---|
Seeking contributors for psyche-c pronesto@gmail.com (Fernando) (2016-11-09) |
From: | Fernando <pronesto@gmail.com> |
Newsgroups: | comp.compilers |
Date: | Wed, 9 Nov 2016 07:58:11 -0800 (PST) |
Organization: | Compilers Central |
Injection-Info: | miucha.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="99029"; mail-complaints-to="abuse@iecc.com" |
Keywords: | C, tools, available |
Posted-Date: | 09 Nov 2016 12:28:55 EST |
Dear guys,
I would like to announce an open-source tool that we are developing: psyche-c.
It completes missing parts of C programs, so that you can have a fully
compilable program. In other words, it does type inference and stub generation
for missing functions, performing compilation of incomplete C code. The tool
has an online interface, which you can use: http://cuda.dcc.ufmg.br/psyche-c/
For instance, if you feed it with this program, taken from Sedgewick's book:
void TCdfsR(Graph G, Edge e) {
link t;
G->tc[e.v][e.w] = 1;
for (t = G->adj[e.w]; t != NULL; t = t->next) if (G->tc[e.v][t->v] == 0)
TCdfsR(G, EDGE(e.v, t->v));
}
Then psyche-c will give you back these declarations:
typedef struct link {int v;struct link* next;}* link ;
typedef struct Graph {int** tc;struct link** adj;}* Graph ;
typedef struct Edge {int v;int w;} Edge ;
struct Edge EDGE (int,int) ;
Notice that it reconstructs recursive types that are pretty complicated. We
have used psyche-c to reconstruct missing code in the GNU Core Util programs
and in all the Sedgewick's examples (on graphs), for instance. Psyche-c is
good for code completion, as a helper to debug programs, and even to reduce
compilation time. It uses a unification based type-inference engine, and has a
few tricks to parse C, even when missing declarations. If you would like to
contribute, or just know more about the project, the code is available at
https://github.com/ltcmelo/psychec.
Regards,
Fernando
Return to the
comp.compilers page.
Search the
comp.compilers archives again.