[cfe-dev] Feature proposal: adding optional custom info to clang AST nodes.

steve naroff snaroff at apple.com
Sat Aug 15 07:26:27 PDT 2009


On Aug 15, 2009, at 9:57 AM, Enea Zaffanella wrote:

> Hello.
>
> Our application uses clang to parse a program, build the corresponding
> AST and then visit the AST so as to collect many kinds of info. Our
> visitors typically exploit functionality provided by clang AST nodes.
> However, sooner or later, we face the need to collect and cache
> additional info which is of interest for our visitors only: being
> ad-hoc, this info cannot be arbitrarily stored in clang AST nodes; on
> the other hand, storing it in the clang AST nodes would result in
> maximum efficiency, since we would avoid the need to maintain and  
> query
> (potentially huge) data structures whose only purpose is to map a  
> clang
> AST node into the corresponding additional info.
>
> For the reasons above, we would like to propose a minor modification  
> to
> the definition of the classes at the root of the clang AST hierarchy
> that, when enabled via a suitable configuration option, would let
> clients add arbitrary info to the clang AST nodes.
>
> The basic idea is to have a new header file defining a suitable macro
> (e.g., CLANG_CLIENT_CUSTOM_INFO): the name of the header file will be
> fixed, but its content will be controlled by a clang configuration
> option. All the root classes for AST nodes (i.e., Decl, Stmt, Type)  
> will
> include such a header file and will invoke the macro in their public
> section.
>
> By default, when the customization mechanism is disabled, the macro  
> will
> expand to no text at all, so as to incur zero overhead:
>
> #define CLANG_CLIENT_CUSTOM_INFO
>
> When customization is enabled, the macro will instead expand to  
> whatever
> data the client might need; for instance:
>
> #define CLANG_CLIENT_CUSTOM_INFO void* my_data;
>
> Clearly, the client will be responsible of all the problems related  
> with
> the management of customly allocated resources.
>
> Does this approach sound reasonable?
> Do you foresee better alternatives?
>

Why not use a map that associates the original AST with 'my_data'?

snaroff

> Cheers,
> Enea Zaffanella.
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev




More information about the cfe-dev mailing list