C++ Parser and C/C++ preprocessor

Matt Rogers mattr at kde.org
Tue Aug 23 01:39:05 UTC 2005

On Monday 22 August 2005 08:51, Roberto Raggi wrote:
> Hi!
> This week I've worked a bit on the KDevelop C++ parser. I'm going to submit
> a new version of the parser later today. The new version has a _completly_
> new Visitor and an improved Abstract Syntax Tree.
> I've removed from the AST the backward pointers (AST::parent()) and the
> list of the child nodes (AST::children()). Finally we have a *typed* AST
> :-)
> I'm pretty sure it will break a bit your changes(Per? John?), but it
> shouldn't be too hard to merge back your stuff. Anyway, the good news is
> that the parser uses about the 10% less of memory, it is a bit faster(it is
> about 10 times faster than the KDevelop 3.x C++ parser), the AST for
> expressions is more detailed(I know Adam was crying for it :-) and writing
> a new `operation' using the tree-walker is a lot easier.
> The other good news is I've started to rewrite the preprocessor from
> scratch. The new version of rpp is a lot faster(better?) than old one. The
> old preprocessor was hardcoded in the lexer and its implementation was
> awful :-) take a look at lexer.* in the KDevelop 3.x source code. I hope we
> can use the new prepressor to provides more features in KDevelop(things
> like `reorganize headers', check for dependencies, quick open integration,
> and so on..).
> I have almost completed the new interfaces for background parsing and
> problem reporting. The Problem reporter is almost the same as the old one,
> but now I'm trying to use the Model/View classes I've wrote for KDevelop 4
> together with Harald
> http://websvn.kde.org/branches/work/kdevelop4/lib/util/kdevitemmodel.h
> http://websvn.kde.org/branches/work/kdevelop4/lib/util/kdevitemmodel.cpp
> http://websvn.kde.org/branches/work/kdevelop4/lib/util/kdevtreeview.h
> http://websvn.kde.org/branches/work/kdevelop4/lib/util/kdevtreeview.cpp
> http://websvn.kde.org/branches/work/kdevelop4/lib/util/kfiltermodel.h
> http://websvn.kde.org/branches/work/kdevelop4/lib/util/kfiltermodel.cpp
> ciao robe
> PS: I'm sorry if I'm breaking your changes, but trust me it's for the best
> :-)

I don't care as long as it parses every bit of valid code we can throw at 
it. :)

More information about the KDevelop-devel mailing list