On Wed, Apr 22, 2020 at 11:37:23AM +0200, Andrea Bolognani wrote:
On Wed, 2020-04-22 at 09:48 +0100, Daniel P. Berrangé wrote:
> On Wed, Apr 22, 2020 at 01:51:10PM +0800, Shi Lei wrote:
> > 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.
>
> FWIW, we already have a tool in libvirt that parsers C header files. The
> scripts/apibuild.py file extracts info about our enums, structs, APIs and
> uses it to build the public API documentation.
>
> I wonder if we can refactor that tool to extract the code for parsing into
> a module, so that we can more reasily re-use it for both the API docs and
> for a new XML generator
Or we could replace that C parsing code with something based on
libclang.
I think that's a double edged sword. While it gives you the full coverage
of the C language, you then have to deal with the full range of the C
language. I think the simplified parser we have for the docs build will
be easier to work with by being more constrained in what it tries to
support.
Either way, if this ever becomes usable I think it should not live
in the libvirt repository but be a standalone tool instead, as I can
see many projects potentially benefiting from it.
Yes, but we can worry about that at a later date IMHO.
Which begs the question: are we absolutely certain something like
this doesn't exist already? We should make sure that's really the
case before we invest time on it...
I've not found anything equivalent to Golang's XML parser for C
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 :|