2010-06-29 13 views

Odpowiedz

4

camlp4 to droga. Oto motivating example. Dokumenty są skąpe - prawda, ale można sobie pozwolić na czytanie poprzez wiki, istniejące przykłady, tutorials, a może nawet źródła camlp4.

+0

Co robi ten motywujący przykład? – aneccodeal

+0

Wstawianie wywołań co Camlp4prof.count (czytaj "dowolne") funkcja na początku każdej przeanalizowanej definicji funkcji przekazującej parametry nazwy i lokalizacji. – ygrek

+0

Aktywna dyskusja na temat zasobów do nauki camlp4: http://groups.google.com/group/fa.caml/browse_thread/thread/1751a2c308742ac3?hl=en – nlucaroni

2

To, czego szukasz, to [camlp4] [1]. Nie korzystałem wcześniej z camlp4, więc nie mogę potwierdzić jego zalet jako oprogramowania. Słyszałem o ludziach używających camlp5 [http://pauillac.inria.fr/~ddr/camlp5/] które, według Wikipedii, ma lepszą dokumentację niż aktualna wersja camlp4.

+0

Myślałem, że camlp4 został użyty do modyfikacji i dostosowania składni OCaml, ale przypuszczam, że ma to sens, że może jakoś dotrzeć do AST. – aneccodeal

1

Od czasu OCaml 4.02.1 można to zrobić, korzystając z PPX tools written bu Alain Frisch. Przykład:

% 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)})])} 
========= 

Jest możliwość korzystania z tego programu zrzucić AST normalnego pliku z kodem, jak również i różne opcje kontrolować stopień dokładności wysypisko. W powyższym przykładzie, na przykład, parametry lokalizacji AST są ukryte.

0

Możesz użyć compiler-libs, aby to osiągnąć. Zobacz Parsetree, Asttypes i Ast_helper.

Powiązane problemy