Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [cdt-dev] AST/DOM refactoring

Great question that I've been asked often and should really documented in a
developer FAQ on the wiki somewhere.

Yes, we do have a number of different code models. A lot of it is
historical, but they also meet different requirements. We'll try to reduce
the duplication over time, so here's what we have:

CModel - the first code model. Used to populate Outline view and Project
Navigator. Also includes some build information which will be expanded over
time. Also gives a CDT view on the IResource tree.

core.parser.ast - the old parser. Currently used by the CModel, used to be
used by most search feature. This AST is deprecated and we'll eventually
move the CModel off if it and remove it.

DOM - the new parser. This is where we are trying to move everyone. This is
where we'd like to focus refactoring. It's structure is similar to JDT's DOM
so hopefully we can make CDT refactoring similar to JDT refactoring as well.

PDOM - actually part of the DOM. Used to provide a project wide index to
various declarations and references, amongst other things. Used by various
search features. The index is *P*ersisted in the workspace metadata. The
intention is to be able to navigate between objects in the DOM and PDOM
seamlessly. DOM to PDOM works pretty cleanly, but it is yet to be seen how
well we can move back to the DOM. Refactoring would need this kind of path,
I would think.

Hope this helps, keep the questions coming and I'll try to answer.

Doug Schaefer, QNX Software Systems
Eclipse CDT Project Lead, Tools PMC member
http://cdtdoug.blogspot.com
 
-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx] On
Behalf Of Leo Büttiker
Sent: Friday, April 21, 2006 10:41 AM
To: cdt-dev@xxxxxxxxxxx
Subject: [cdt-dev] AST/DOM refactoring

 
As we mention befor we start with a term project that will implement 
refactorings for cdt.

Now we are a bit confused about so many implentations of dom, ast, scanner
and 
parsers. We've looked now depper in the code and the documentation. But we 
still not sure where to start.

CModel (which use parser.ast and internal.core.parser) looks a bit out of
date 
but is used in many package, is this right? So should we use instead CDOM 
(core.dom, core.dom.ast with the parser core.dom.parser.cpp and the scanner 
internal.core.parser.scanner2)? Or even the very new pdom (which use both 
CDOM and CModel)? Would the pdom get stable in the next days? This important

because we've only 10 weeks left for our work.

Or the short form of all this question: Where should we start to add 
writabilty to perform refactorings (CModel, CDOM or anywhere else)?

Any help would be appreciated
Leo Büttiker
_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev


Back to the top