2014-02-14 72 views
1

我希望能夠看到某個模塊的AST會是什麼樣的,所以我可以針對它編寫一個適當的過濾器。查看mli文件的AST

因爲我現在真的不知道如何在過濾器中記錄日誌,例如我嘗試匹配,當匹配失敗時我使用Camlp4AstLifter函數將模塊轉換爲樹,然後將其打印出來,在控制檯上,像我嘗試創建我的比賽方式,就像這樣:

camlp4o -filter Camlp4AstLifter -printer o name_of_file.ml 

這屬於有點短,現在當我想取一個MLI文件,並使用camlp4篩選以創建此mli文件的默認實現。

我不能使用Camlp4AstLifter來查看樹,因爲這個命令似乎不適用於mli's(它將mli再次顯示爲輸出),因此在嘗試匹配時我有點盲目。

有人有想法嗎?或者提示一下如何改進我的過濾/匹配方法(我沒有感覺到我做得對,很乏味)。

卡斯帕

回答

0

module type S = <contents of mli file>成毫升文件和應用的提升?

+0

是的,我首先嚐試了,但它似乎沒有給出與mli文件相同的樹,或者我的匹配當然是關閉的,目標是最終都有,所以模塊ml文件中的類型和mli文件中的類型。因此,我需要嘗試獲取mli文件的樹狀結構。就像我說的那樣,與模塊內部聲明的類型相比,它似乎有點偏離。 – Kasper

0

OCaml的編譯器有一些無證開關,做ocamlc -h(大概感謝模塊ARG)時,系統將顯示不過,ocamlopt更是把:

-dsource (undocumented) 
-dparsetree (undocumented) 
-dtypedtree (undocumented) 
-drawlambda (undocumented) 
-dlambda (undocumented) 
-dclambda (undocumented) 
... 

我發現-dsource給人一種漂亮的方式來源。你想要的選項也應該在那裏。