... ... >The key question is just how difficult will it be to write a tool that >can parse the C header files, and magic comments, to output suitable >XML parser/formatter functions ? There's no easy way to answer that >without someone trying it. > > >Regards, >Daniel >-- >|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| >|: https://libvirt.org -o- https://fstop138.berrange.com :| >|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| > Thanks for your reply in detail. I get your point. My intention of doing this is to test an idea: only using one language or notation to depict object-models in libvirt; and then calling a series of tools to translate it into various representations, such as c-language structures/parse/format, rng-files, other language bindings, part of test-framwork, part of document, etc. I knew this idea is too ideal and too big, so I just tried to generate some c-code based on rng-files as a beginning point. During the process, I found that the descriptive power of relax-ng was weak. Of cause, it is not designed for this aim. I had to introduce extra DIRECTIVES to enhance it, which made it not concise. I have also considered of using json-schema rather than relax-ng. Json-schema has more descriptive power than relax-ng. And json-schema has combining schemas and conditional schemas, which can be used to define data constrains and reduce error-checking code in parsefunctions. But using json-schema cannot solve the problems that you have mentioned and rewriting rng file with json-schema is another big job. As you suggested, parsing C-structs plus some magic comments may be a good starting point. But parsing C is much more difficult than parsing xml or json. I think this job should base on some present tools or other basis. We can first refer to Clang or other light compiler front-end. Maybe we can utilize some output of the middle stage of these compilers. Regards, Shi Lei