2010-06-29 29 views

回答

4

camlp4是一種方法。這是一個motivating example。文檔很少 - 真實,但可以通過wiki,現有示例,tutorials,甚至可能是camlp4源文件來閱讀。

+0

這個動機的例子是什麼? – aneccodeal 2010-06-30 15:46:04

+0

在每個經過分析的函數定義的開頭傳入名稱和位置參數,插入調用函數Camlp4prof.count(讀取「任意」)函數。 – ygrek 2010-06-30 16:32:35

+0

積極討論學習camlp4的資源:http://groups.google.com/group/fa.caml/browse_thread/thread/1751a2c308742ac3?hl=zh-CN – nlucaroni 2010-09-28 13:29:46

2

您要找的是[camlp4] [1]。我之前沒有使用camlp4,所以我不能證明它是軟件的優點。我聽說有人使用camlp5 [http://pauillac.inria.fr/~ddr/camlp5/]],根據維基百科,它比當前版本的camlp4有更好的文檔。

+0

我以爲camlp4被用來修改和自定義OCaml語法,但我想它是有道理的,它可以以某種方式到達AST。 – aneccodeal 2010-06-30 03:03:25

1

由於OCaml 4.02.1可以使用PPX tools written bu Alain Frisch來精確地做到這一點。例如:

% 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的位置參數是隱藏的。

0

您可以使用compiler-libs來實現此目的。見Parsetree,AsttypesAst_helper

相關問題