从分析树到语法树...什么意思呢, 就说这个图中其实很多节点是多余的, 比如左右括号, 还有从E到3其实可以直接由3代替E等等, 因为到了分析树这一阶段, 其实优先级结合性都已经由树的结构简介的体现出来了, 所以用于表示优先级结合性的括号, 以及分析过程中冗余的结构(3和4 上面的E)都不必要...

所以抽象语法树要比分析树更加紧凑直接, 节约空间 :

 

接下来具体来看C语言中抽象语法树的代码 :

 

用C语言模拟实现该结构的构造函数...

下图代码是手工调用函数进行语法树的生成, 而实际仔细观察就会发现, 手工调用生成的顺序就是自底向下的生成顺序...这里只是为了更加清晰的展现语法树生成过程, 实际编码过程中显然不可能如图按顺序人工编写生成...

C语言实现打印 :

 

代码实现计算节点的个数对树的规模进行估计 :

 

posted on 2016-05-27 21:37  内脏坏了  阅读(372)  评论(0编辑  收藏  举报