Walter Bright wrote:
Jeremie Pelletier wrote:
I think it would be great, but XML is only one format and a heavy one
at that, JSON for example is much lighter and easier to parse. It
shouldn't be hard to support both.
I'd never heard of JSON, but looking at it, it makes sense. I don't see
much point in supporting both.
XML makes sense when saving as a file and it can be transformed by XSLT
to generate formatted html documentation and whatnot, while JSON is
lightweight and better suited for pipes between dmd and the IDE.
However I would make the file generation optional, as the IDE might
just want to read from the standard output stream of dmd instead, this
would also be useful for shell scripts.
Yes, writing it to stdout as an option is a good idea.
Support to get the semantics information of multiple files at once
would also be neat, just like dmd can generate one object file from
multiple source files.
Yes.
Would it even be possible to have the C api behind the xml/json
frontends exported in a dll, so IDEs could just dynamically link to it
and call that API directly instead of parsing an intermediary text
format.
I did that with the C++ compiler, and it's a big pain to support. I
don't think it would be onerous to fork/exec the compiler to do the
work, capture the output, and parse it.
The IDE usually keeps the files in memory and could therefore just call
something like getSemantics(char** fileBuffers, int* fileSizes, int
nFiles, ParseNode* parseTree) and have its parse nodes already allocated
in process memory ready for use.
Considering a lot of IDEs like to re-parse the current file every time
the keyboard is idle for a few seconds, this could really help
performance, nothing is more annoying than an IDE that feels unresponsive.