[aspectc-user] libpuma -- docs, mostly
Olaf.Spinczyk at informatik.uni-erlangen.de
Sun Nov 12 18:09:57 CET 2006
just to give you some advice where to look at ...
* from the class database, i.e. objects that represent classes,
functions, attributes, etc. you can find the associated concrete systax
tree with the 'Tree()' method.
* from the syntax tree you can go down to the token level ('token()' and
* each Token object can be checked whether it is generated by macro
expansion ('is_macro_generated()' method).
* the unit to which a macro-generated token belongs is a macro body. You
can find this unit by calling 'belonging_to()' on the Token object. The
unit can now savely be casted into a MacroUnit, which gives you more
information, e.g. about the macro call ("FOO").
With this information it shouldn't be difficult for you to track down
uses of FOO.
If you see a chance to let us participate in your fp6 project or future
f7 projects, let me know ... ;-)
Adriaan de Groot wrote:
> Recently Robert Scott has been asking questions on this list about Puma; he's
> sort of my "advance man" in this. We're involved in a european fp6 research
> project that needs to analyze C++ source code. KDE source code, obviously
> from my email address :) We need to analyze both pre-processed and raw
> (before the preprocessor runs) code. I'm having a devil of a time tracking
> things down because the header files don't contain much in the way of
> comments and the documentation PDF is from 2001 since when most things have
> changed. I'm going with Puma as contained in the 1.0pre3 tarball of aspectc++
> (which doesn't build as is, but Robert had gone down this road already and
> put up some signposts).
> Puma *seems* to be the most interesting candidate library for parsing since it
> claims to be able to handle the preprocessor syntax tree as well (unlike,
> say, Elsa which needs pre-processed source).
> Suppose I have source code like this:
> #define FOO 1
> int i = FOO;
> I want to track down uses of FOO. The preprocessor syntax tree won't have the
> int i declaration, while the C++ syntax tree won't have the symbol foo (but
> rather integer symbol 1). How do I do it? [ I can imagine that the answer
> lies at a level below puma, actually: just let lemon chew over it. ]
> aspectc-user mailing list
> aspectc-user at aspectc.org
More information about the aspectc-user