There are plenty of potential improvements that could be made to the software. These could potentially constitute a roadmap of sorts.
Errors are not very informative and could be reported and handled better.
The code generally assumes that some forms of input will make sense in the output. Moreover, some characteristics of the output might result in deficient program behaviour. For instance, where the opcodes of individual interfaces combined into a compound interface conflict, the resulting code will not be able to deliver messages to all of the conflicting operations, and the tool should really be detecting such conditions.
Having written the software in C, very basic techniques have been used to generate code, and these have also had some impact on the output itself. Ideally, more sophisticated templating would be used to make the workings of the code generation more obvious.
It might be interesting to reimplement the tool in Python and to use a similar parsing toolkit. PLY would be a potentially usable candidate.
Having compound interfaces supported at the command level helps to avoid difficult issues introduced by supporting them at the language level, but it would arguably be more elegant to support them using a form of interface inheritance, even though this introduces some awkward issues of its own.
Currently, the _interface.h, _interfaces.h and _interface_type.h files generated for compound interfaces are all created because individual interface details are written incrementally to different output constructs, and such constructs are most easily maintained using distinct output streams. However, the details of the individual interfaces are readily available from the processed command options.
Thus, interface type information (_interface.h and _interface_type.h) could be written out completely without involving the individual interface code generation in the production of these files.
Types employed in interface descriptions are currently mostly propagated to generated code without any attempt to understand them. Other interface description languages permit the definition and use of structured types.