Live data from Hacker News

Automatic compilation of partially available C source code

cuda.dcc.ufmg.br

1–10 of 18 posts

Re: Automatic compilation of partially available C source code

#6
post #5

Can somebody in simple but technical terms explain how this works? (I tried to no avail)

It builds the set of type and other constraints that must be fulfilled for the program to be valid. It uses a constraint solver to solve the set of constraints and generate a program that satisfies them.

IE For "List list" to work, there must be a thing named List available as a typedef. For list = 0 to work, tlist must be a pointer or an int. For list->data to work, list must be a pointer to a struct, and that struct must have a member named data. for list->data = val to work, the member named data must be compatible with a double.

It simply generates all of the constraints like this on the program, and then solves the constraint set, which produces a valid program (hopefully. it is possible it may not have enough data in some cases, given how C is parsed)

Re: Automatic compilation of partially available C source code

#7
Aiui Eclipse JDT (and probably other IDEs too) do something similar. It takes code that currently is not valid and tries to massage the AST until it becomes valid so that it can perform type-inference and use the type information to offer valid autocomplete suggestions even at the currently invalid location.

Re: Automatic compilation of partially available C source code

#9
post #4

The header code generated contains typedef int bool; I am not sure if I want that in my header.

What's the right type then? There is no bool type in C90. It appears in C99.

I've seen this in the wild, including the top answer on a StackOverflow question:

#define bool int

http://stackoverflow.com/questions/4159713/how-to-use-boolea...

Besides, if you want correct code, don't ask a tool to guess it! This tool is for patching up fragments enough to get them through the compiler front end analysis.

Re: Automatic compilation of partially available C source code

#10
post #8
post #4

The header code generated contains typedef int bool; I am not sure if I want that in my header.

Why not? C does not have a book type and it is standard to use either char or int, depending on if you're concerned about space or about time.

C does have a bool type as well. I have not seen it used much in the C code that I have encountered. See http://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdb...
Post reply on HN