特定のOCamlプログラムのASTを取得できるようにしたい(たとえば、ASTをウォークして、インストルメント化されたバージョンのコードを生成したり、何らかの変換を実行したりしたい)。OCamlツールのいずれかがこの機能をサポートしていますか?
4 に答える
3
OCaml 4.02.1 以降、Alain Frisch によって書かれた PPX ツールを使用して、これを正確に行うことができます。例:
% ocamlfind ppx_tools/dumpast -e "1 + 2"
1 + 2
==>
{pexp_desc =
Pexp_apply ({pexp_desc = Pexp_ident {txt = Lident "+"}},
[("", {pexp_desc = Pexp_constant (Const_int 1)});
("", {pexp_desc = Pexp_constant (Const_int 2)})])}
=========
このプログラムを使用して通常のコード ファイルの AST をダンプすることもでき、さまざまなオプションでダンプの精度を制御できます。たとえば、上記の例では、AST のロケーション パラメータが非表示になっています。
于 2016-03-11T18:30:26.600 に答える
2
あなたが探しているのは[camlp4][1]です。私はこれまでcamlp4を使用したことがないので、ソフトウェアとしての長所を証明することはできません。camlp5 [ http://pauillac.inria.fr/~ddr/camlp5/]を使用している人の話を聞いたことがあります。ウィキペディアによると、現在のバージョンのcamlp4よりも優れたドキュメントがあります。
于 2010-06-30T02:55:48.837 に答える