2010-06-29 12 views

Répondre

4

camlp4 est un chemin à parcourir. Voici un motivating example. Les docs sont clairsemés - vrai, mais on peut faire son chemin en lisant le wiki, les exemples existants, tutorials, et peut-être même les sources de camlp4.

+0

Que fait cet exemple motivant? – aneccodeal

+0

Insérer des appels co Camlp4prof.count (lire "arbitraire") fonction au début de chaque définition de fonction analysée en passant les paramètres de nom et d'emplacement. – ygrek

+0

Une discussion active sur les ressources pour apprendre camlp4: http://groups.google.com/group/fa.caml/browse_thread/thread/1751a2c308742ac3?hl=fr – nlucaroni

2

Ce que vous cherchez est [camlp4] [1]. Je n'ai jamais utilisé camlp4 auparavant, donc je ne peux pas certifier ses vertus en tant que logiciel. J'ai entendu parler de gens utilisant camlp5 [http://pauillac.inria.fr/~ddr/camlp5/] qui, selon wikipedia, a une meilleure documentation que la version actuelle de camlp4.

+0

Je pensais que camlp4 était utilisé pour modifier et personnaliser la syntaxe OCaml, mais je suppose qu'il est logique que cela puisse arriver à l'AST d'une manière ou d'une autre. – aneccodeal

1

Depuis OCaml 4.02.1, il est possible d'utiliser le PPX tools written bu Alain Frisch pour le faire précisément. Exemple:

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

Il est possible d'utiliser ce programme pour vider l'AST d'un fichier de code normal ainsi, et diverses options contrôlent le degré de précision de la décharge. Dans l'exemple ci-dessus, par exemple, les paramètres de localisation de l'AST sont cachés.

0

Pour cela, vous pouvez utiliser compiler-libs. Voir Parsetree, Asttypes et Ast_helper.