C++ parser

Hamish Rodda rodda at kde.org
Wed Jun 1 16:54:06 UTC 2005

Hi Robe,

On Wed, 1 Jun 2005 03:55 am, Roberto Raggi wrote:
> Hi!
> I've started to play with the _new_ C++ parser. Please, take a look at
> http://websvn.kde.org/branches/work/kdevelop4-parser/include/?rev=420247&vi
> The code is in the /branches/work/kdevelop4-parser. btw I want to change
> a couple of things in the AST(the AST for the expression is pretty broken
> :-) and I want to add a multi-pass parsing mode to parser.cpp. So expect a
> lot of changes in the API.

Nice :)  You're planning on implementing incremental parsing / parsing only of 
changed text, correct?  The internals in Kate are certainly ready to handle 
providing this information.  It will be easy to associate ASTs with ranges in 
the text, and then when the text changes, the most specific changed region 
(smallest which encapsulates all of the changes) could inform either the AST 
or the parser of the change, eg. via a signal.  The parser can then attempt 
to quickly determine what change has occurred, and the vast majority of the 
time, it should be a simple matter for the parser to account for this in 
realtime (or near-realtime if we decide to use threads).  It might require 
the use of an equivalent LocationTable class which uses smart cursors to stay 
up to date... I'm not too familiar with the code yet.

It would even be possible to provide this sort of tracking for non-kate text 
editors within a new ktexteditor interface, if they implemented a few simple 
signals (such as which region of text was changed).  If that could be 
accomplished, then most editors would be able to use this without major work.

Would it make sense to do parsing in the background, ie. for cases where a 
small change triggers a large amount parsing?  Do you think making the kate 
text buffer reentrant would make sense?  I'm just wary of avoiding occasional 
interference to the ui if we decide to switch to realtime parsing.

I guess the idea of multi-pass parsing is to shorten the time the parser holds 
things up, at the expense of increased latency of AST data?  Or is it for 
accuracy / speed of parsing?

I can't wait to see kdevelop4 with (and I'm imagining :) in-place code 
refactoring, code logic navigation, much improved highlighting, etc etc...

Hope what I've written makes sense :)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20050601/8b4f8a82/attachment.sig>

More information about the KDevelop-devel mailing list