什么是将解析树(即具体语法树)转化为抽象语法树的一般策略?
例如,我有以下语法规则:
statement_list : statement
| statement_list statement
如果原样生成解析树,则会产生类似于扇形的输出
program
statement_list
statement_list
statement
definition
p_type
assignment
statement
definition
statement
assign
assignment
如果我将每个节点的子项连接起来(因为语句列表在解析后没有固有的含义),我可以达到以下效果
program
definition
p_type
assignment
definition
assign
assignment
这个方法效果很好,但是我不知道是否有任何“规则”可以简化它。我应该寻找哪些特定的语法规则来简化它?这是一种感觉上的问题,还是有更加机械化的过程?