J'ai travaillé récemment sur l'analyse statique du code source Python. Il existe déjà un analyseur statique écrit en Ocaml pour le CIL (C Intermediate Language) dans notre groupe. Nous voulons réutiliser cet analyseur, donc notre approche idéale est de traduire Python en CIL.
Actuellement, j'utilise le module ast intégré à Python pour analyser Python vers Python AST. Et ensuite je traduis l'AST Python que ast.dump a imprimé en AST C. En ce qui concerne l'AST C, l'API CIL et l'analyseur statique sont tous écrits en Ocaml. Je choisis Ocamllex&Ocamlyacc pour analyser l'AST Python en AST C. Cependant, il y a quelques gros problèmes.
La représentation AST que ast.dump a imprimée est difficile à identifier. Cela rend mon analyseur pas facile à mettre en oeuvre. D'autre part, je ne peux pas utiliser Ocaml pour accéder à la structure interne de Python ast. Même si je le pouvais, la structure des données est différente de celle d'Ocaml.
Je me demande si je n'ai pas choisi une mauvaise approche pour la traduction du code Python en AST C au début ? Existe-t-il d'autres outils ou approches existants qui pourraient répondre à mes besoins ?
S'il y a quelque chose qui m'échappe, merci de le signaler, cela m'aidera beaucoup. Merci.