構文木 (具体的な構文木) を抽象構文木に縮小するための一般的な戦略は何ですか?
たとえば、次の文法規則があります。
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
これはうまくいきました - しかし、私はこれを行うための「ルール」を知りません。簡素化する必要がある特定の文法規則はありますか? それは感覚の問題ですか、それとももっと機械的なプロセスがありますか?