2010-06-29 6 views

Antwort

4

camlp4 ist ein Weg zu gehen. Hier ist ein motivating example. Die Dokumente sind spärlich - wahr, aber man kann sich durch das Wiki, existierende Beispiele, tutorials und vielleicht sogar durch camlp4 Quellen hindurchlesen.

+0

Was macht dieses motivierende Beispiel? – aneccodeal

+0

Fügen Sie die Funktionen co Camlp4prof.count (lesen Sie "arbitrary") am Anfang jeder analysierten Funktionsdefinition ein, indem Sie den Namen und die Positionsparameter übergeben. – ygrek

+0

Eine aktive Diskussion über Ressourcen zum Erlernen von camlp4: http://groups.google.com/group/fa.caml/browse_thread/thread/1751a2c308742ac3?hl=de – nlucaroni

2

Was Sie suchen, ist [Camlp4] [1]. Ich habe Camlp4 vorher noch nicht benutzt, daher kann ich seine Tugenden als Software nicht bestätigen. Ich habe von Leuten gehört, die camlp5 [http://pauillac.inria.fr/~ddr/camlp5/] verwenden, das nach Wikipedia eine bessere Dokumentation hat als die aktuelle Version von camlp4.

+0

Ich dachte camlp4 wurde verwendet, um die OCaml-Syntax zu modifizieren und anzupassen, aber ich nehme an, es macht Sinn, dass es irgendwie zum AST kommen kann. – aneccodeal

1

Seit OCaml 4.02.1 ist es möglich, die PPX tools written bu Alain Frisch zu verwenden, um genau dies zu tun. Beispiel:

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

Es ist möglich, dieses Programm zu verwenden, um den AST einer normalen Code-Datei als auch abzuladen, und verschiedene Optionen steuern den Grad der Genauigkeit der Halde. Im obigen Beispiel sind beispielsweise die Standortparameter des AST ausgeblendet.

0

Sie können compiler-libs verwenden, um dies zu erreichen. Siehe Parsetree, Asttypes und Ast_helper.

Verwandte Themen