在gcc中,几乎所有的东西都是用树结构串起来的,从而形成抽象语法树。tree可以看作是指向树节点的指针,所有的树节点都有一个共同的基类:tree_common。
在文件coretypes.h中,tree的定义如下:
#ifndef USED_FOR_TARGET
...
typedef union tree_node *tree;
...
#else
...
#define tree union _dont_use_tree_here_ *
...
#endif
可见,当
USED_FOR_TARGET宏未被定义的时候,tree是指向联合类型
tree_node的指针类型;否则,tree是一个定义为
union _dont_use_tree_here_ *的宏。
在tree.h中,可以找到union tree_node的定义:
union tree_node
{
struct tree_common common;
struct tree_int_cst int_cst;

本文主要探讨了GCC编译器中广泛使用的tree结构,它构成了抽象语法树的基础。tree本质上是一个指向tree_node联合体的指针,根据USED_FOR_TARGET宏的定义有不同的表示形式。在union tree_node中详细列举了各种类型的树节点,如int_cst、real_cst、decl_minimal等,这些节点包含了编译过程中涉及的各种信息。
最低0.47元/天 解锁文章
628

被折叠的 条评论
为什么被折叠?



