BNF grammar for D?

Kingsley via Digitalmars-d digitalmars-d at puremagic.com
Thu Dec 18 13:19:11 PST 2014


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.


More information about the Digitalmars-d mailing list