Antlr3 を使用してドメイン固有言語を作成しています。これまでのところ、パーサー文法内から解析済みオブジェクトを直接翻訳しました。AST と Tree Walker の例を見ていくと、それらは通常、文法を階層ツリーに分割し、ノードからオブジェクトを変換するために使用されることがわかりました。現在、パーサー文法を使用して同じ種類のアクションを実行しており、各サブルールからオブジェクトを変換しています。パーサー文法を使用するだけでなく、AST と Tree walker を使用する利点を知っていただければ幸いです。よろしくお願いします。
質問する
385 次
1 に答える
1
ツリー パーサーを使用する利点の 1 つは、それらを複数のパスに編成できることです。私が行ったいくつかの翻訳作業では、7 つのパスを使用して、独自のパスに論理ステップを分離することができました。1 つのパスは式の分析を行い、1 つのパスは制御フローの分析を行い、他のパスはその分析を使用してデッド コードを排除したり、特殊なケースの変換を簡素化したりしました。
私は個人的に、テキスト文法にパーサーを使用するのが好きなのと同じ理由で、ツリー文法を使用するのが好きです。ルールを使用して解析コンテキストを整理できます。認識目的でそれらを区別する必要がある場合、最上位の式と部分式を認識するための構造規則などを実行するのは簡単です。通常のパーサーで使用する属性とコンテキストの管理はすべて、ツリー パーサーに適用できます。
于 2013-03-02T01:40:22.680 に答える