This is a very quickly hacked-up C parser that was created for a single purpose, so don't expect it to be usable in any general context. It exists basically as a rather advanced macro processor which can recognise and rearrange any part of a C program rather than just simple procedure-call-like syntax. I originally wrote the grammar for a different project and a different parser some years ago, when a static binary translator that we wrote for converting arcade video games generated C as its output, and this was meant to tidy up some of the awkward machine-generated C to make it more readable. Well, now it is being used in a slightly similar context, to tidy up machine generated C that is output by my Imp to C translator. (Imp being an Algol-like language created in the 60's) Although I admit I shouldn't be generating ugly C in the first place, this does come in handy to clean up constructs such as "int fred[(10) - (5) + 1]" to "int fred[6];" which is the translated version of "i̲n̲t̲e̲g̲e̲r̲ a̲r̲r̲a̲y̲ fred(5:10)" The imp to C converter is in ../imp80/*