2016-10-10 1 views
1

J'essaye actuellement de traduire des programmes OCaml (avec une grammaire assez standard/limitée) en Racket, et j'essaie de voir s'il y a un moyen de faire l'analyse en représentation intermédiaire en utilisant camlp4. J'ai essayé de construire un lexer et un analyseur en utilisant ocamlyacc et ocamllex mais vu la taille de la grammaire, cela devenait assez compliqué. Donc, j'ai cherché autour de camlp4 et j'en ai trouvé quelques-uns déjà intégrés, mais je n'arrive pas à chercher comment obtenir l'AST d'un code OCaml en l'utilisant. Toute documentation/exemples/idées? Aussi, si vous avez des suggestions sur la façon de faire mieux, ce serait génial aussi! Merci. Utilisez simplement compilateur-libs, qui est distribué avec le compilateurComment utiliser camlp4 dans un programme OCaml pour analyser un autre programme OCaml dans un AST?

+2

Probablement vous devriez regarder camlp5 et baser votre projet sur l'extension de leur schéma: http://camlp5.gforge.inria.fr/doc/htmlc/scheme.html – ivg

Répondre

4

Vous pouvez utiliser directement l'analyseur ocaml lui-même.

Voici un example of code that reads a .ml file. La documentation pour l'analyseur est assez décente. Vous obtiendrez, après l'analyse, un Parsetree.

+0

Une sorte de question stupide, mais comment je vais chargement du module Parse dans? L'utilisation de Windows rend impossible l'installation de choses comme ocamlfind et opam. – podington

+0

Il s'agit d'une question sans rapport que vous devriez poser séparément. En bref, dans Windows, il existe plusieurs façons d'utiliser ocamlfind et opam (ex: http://protz.github.io/ocaml-installer/). Cependant, le coût est encore élevé: vous devrez faire face à des tonnes de problèmes. Pour moi, le mieux est d'installer un environnement Linux virtuel. – camlspotter

+0

Re: tonnes de pépins; c'est exactement ce à quoi je suis confronté maintenant. Je vais voir si je peux travailler sur un environnement Linux en quelque sorte. Merci. – podington