dmd Lexer and Parser in D
Zach Tollen
reachzachatgooglesmailservice at dot.com
Sat Feb 4 09:39:05 PST 2012
On 2/4/12 6:59 AM, F i L wrote:
> Very cool. I was talking with someone on the IRC about the
> possibility/difficulties of making DMD's parser/lexer/AST stay open in
> memory with protocols designed for IDE code-completion communication. It
> would be ideal to have an IDE's intellisense automatically update with
> DMD semantically.
This is my thinking too. One good thing about having cut the program is
that it's a much lighter weight now, and I did it because I thought,
well, maybe once it's paired down, I can actually steer it toward IDE
functionality. For example, you could really cut out a lot of the
members of the data structures which only point to backend functionality
anyway.
Even if the whole project fails I won't regret doing it because I
learned a lot about D in the process.
What I'm really wondering is if you wanted a program which helped you
edit the syntax tree directly and only produced a text file for saving
and running, what kind of data structure would you like to have
representing the syntax tree? Without knowing anything else, I guessed
that it would be nice to have something resembling the official D
parse-tree.
> Unfortunately the conclusion was that it would be to difficult an
> undertaking to be realistic, since DMD is designed to be run-and-done
> (also something about "Walter code" :-)).
I was wondering if you couldn't take a parse-tree data structure and
deparse (disparse?) it back to formatted program code so that you could
see what you were editing? As unrealistic as that sounds, I'm
sufficiently attracted to the idea that I'm investigating it with an
open mind.
> But maybe a rewrite/port of DMD, especially one written in D, might
> be able to be reworked with this
> goal in mind? How complete is DDMD?
This is exactly what I'm aiming at. My basic hopes for its being
possible are the comforting notion that the huge part of dmd is actually
the stuff I threw out! The goal would be to construct the front end (of
a front end) which was at least theoretically capable both of allowing
code editing, and of translation to a more backend-friendly data
structure. If that's not possible, then I'm stuck with this thought that
you edit the tree, then the IDE reverses the parse back into ordinary
code for saving and compiling.
If anybody can refer me to any examples and demonstrations of this type
of code-editing, please do. As someone new to programming I'm really
wondering why, if the program itself is understood by the computer as a
tree, why do I have to edit a text file instead of a tree?
Zach
More information about the Digitalmars-d
mailing list