On Wednesday, 17 December 2014 at 21:05:05 UTC, Kingsley wrote:
Hi Bruno,
Thanks very much. I do have a couple of questions about DDT in
relation to my plugin.
Firstly - I'm not too familiar with parsing/lexing but at the
moment the Psi Structure I have implemented that comes from
the DDT parser/lexer is not in any kind of hierarchy. All the
PsiElements are available but all at the same level. Is this
how the DDT parser works? Or is it down to my implementation
of the Parser/Lexer that wraps it to create some hierarchy.
For intellij it's going to be vastly easier to have a
hierarchy with nested elements in order to get hold of a
structure representing a class or a function for example - in
order to do things like get the start and end lines of a class
definition in order to apply code folding and to use for
searching for classes and stuff.
Secondly - how active it the development of DDT - does it keep
up with the D2 releases.
--Kingsley
After doing a bit more research it looks like I have to create
the psi hierarchy myself - my current psi structure is flat
because I'm just converting the DeeTokens into PsiElements
directly. I've still got some experimentation to do. On the
plus side I implemented commenting, code folding but everything
else needs a psi hierarchy
I've done some more investigation and I do need to build the
parser myself in order to create the various constructs. I've
made a start but I haven't gotten very far yet because I don't
fully understand the correct way to proceed.
I also had a look at using the DeeParser - because it already
does most of what I want. However the intellij plugin wants a
PsiParser which returns an intellij ASTNode in the primary parse
method. I can't see an easy way to hook this up with DeeParser
because the ParsedResult although had a node method on it - gives
back the wrong type of ASTNode.
Any pointers on how I might get the DeeParser to interface to an
intellij ASTNode would be appreciated.