2

抽象構文木について質問があります。
特に、特定の用語順序でいくつかのツリーをソートしたいと考えています。

次のプロパティを使用して AST の用語順序を定義するにはどうすればよいですか。

  1. ほとんどすべての用語について、順序は標準の組み込みの用語順序とまったく同じように動作します。
  2. AST に深くネストされているのは、ソース位置を表すファンクタ pos/6 の項です。これらのファンクタは項の順序では無視されるべきです。つまり、ファンクタ pos のすべての項は等しいものとして比較されるべきです。

「pos」の特別なケースで組み込みの用語順序を拡張することは可能ですか?

最も効率的なソリューションは何ですか?最も読みやすいソリューションは何ですか?

たぶん、私たちの AST は非常に大きくなる可能性があることにも言及する必要があります。私は 217479 個の適切なファンクターを持つ 1 つの AST をベンチマークしました (nullary アトムは無視します)。

4

2 に答える 2

4

ast_without_posAST を と同じ用語に関連付ける関係 /2 を定義しますが、すべての pos/6 サブ用語が同じ用語、たとえば atom に置き換えられることをA0除いては、これらの結果の用語で標準の用語順序を使用します。これは非常に読みやすく、かなり効率的だと思います。AA0t

于 2012-04-03T10:52:17.523 に答える