开发者

Which variable stores the root node of a C GENERIC AST in gcc?

开发者 https://www.devze.com 2023-03-21 03:40 出处:网络
I am trying to write a plugin for g开发者_如何学编程cc 4.5 that will perform some analysis on the AST (GENERIC representation) just after parsing is complete. My source language is C and the plugin wi

I am trying to write a plugin for g开发者_如何学编程cc 4.5 that will perform some analysis on the AST (GENERIC representation) just after parsing is complete. My source language is C and the plugin will be written in C as well. There are a few posts here that explain how to do such a thing for C++. Both the GENERIC documentation and the previous link state that the variable global_namespace stores the root node of a C++ GENERIC AST. Which variable stores the root node of a C GENERIC AST?

Thanks in advance!


There are obviously no such things as namespaces for C but the concept of scopes does exist however. You can access the englobing scope of where you are (that depends on which event your plugin is called by GCC) through the function pop_scope() defined in c-tree.h. This returns a tree which is composed of a block. You can access all the declarations of this block, i.e. the symbols (variables, functions, etc.) declared at this scope through the macro BLOCK_VARS which provides you with a tree of decl-nodes.

If you neeed access to a function body, remember than you can always access it from the function definition through the macro DECL_SAVED_TREE(node), node being your FUNCTION_DECL node. This is valid only if the definition is in the same file and already built, again, it depends on where you hook your plugin.

Disclaimer: this is valid for GCC 4.8 and the interface is subject to frequent changes. As of GCC 4.9, the plugin interface is partially written in C++.

0

精彩评论

暂无评论...
验证码 换一张
取 消