構文木(具体的な構文木)を抽象構文木に縮小する一般的な戦略は何ですか?パーズツリーを抽象構文ツリーに縮小するにはどうすればよいですか?
、解析ツリーとして残した場合、私はの子を連結した場合program
statement_list
statement_list
statement
definition
p_type
assignment
statement
definition
statement
assign
assignment
のような出力をあおる生成します
statement_list : statement
| statement_list statement
:
例えば、私は次の文法規則を持っています各ノード(構文解析後の文リストには固有の意味がないため)は次のようになります。
program
definition
p_type
assignment
definition
assign
assignment
これはうまくいきましたが、私はこれを行うための "ルール"を知らないです。私が簡素化するために探しているはずの具体的な文法規則はありますか?それは感じの問題なのですか、それとももっと機械的なプロセスがありますか?
あなたはかすかな "ルックアンドフィール"に行くことができますが、それは大部分の作業です。これは、文法を使用して再生成できるノードを削除することによって、基本的に機械的に行うことができます。 http://stackoverflow.com/a/1916687/120163 –