C++ Parser and C/C++ preprocessor
Roberto Raggi
roberto at kdevelop.org
Mon Aug 22 23:56:03 UTC 2005
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 :-)
More information about the KDevelop-devel
mailing list