Écrire un traducteur de code de Python à C? [fermé]
on m'a demandé d'écrire un traducteur de code qui prendrait un programme Python et produirait un programme C. Avez-vous des idées comment pourrais-je aborder ce problème ou est-ce même possible?
4 réponses
Shedskin: http://code.google.com/p/shedskin/
Boost Python: http://www.boost.org/doc/libs/1_42_0/libs/python/doc/index.html
PyCXX: http://cxx.sourceforge.net/
Cython: http://www.cython.org/
de http://wiki.python.org/moin/compile%20Python%20to%20C , il y a une liste de projets connexes.
Pyrex: http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
psyco: http://psyco.sourceforge.net/
RPython: http://code.google.com/p/rpython/
il y a une question fondamentale ici: est-ce que l'intention est de créer fondamentalement un compilateur Python qui utilise C comme back-end, ou de convertir le programme en C et de maintenir le C ensuite?
Écrire un compilateur qui produit (vraiment moche) C car sa sortie n'est probablement pas triviale -- un compilateur l'est rarement, et générer du code pour Python sera plus difficile que pour beaucoup d'autres langues (le typage dynamique, en particulier, est difficile à compiler, au moins pour très efficace sortie.) OTOH, au moins l'analyseur sera beaucoup plus facile que pour certaines langues.
si par" Traduire", vous voulez dire convertir Python en C qui est lisible et maintenable, c'est une toute autre question -- c'est substantiellement plus difficile, pour le dire modérément. De façon réaliste, je doute qu'une traduction automatique vaille beaucoup -- il y a juste trop de différences dans la façon dont vous abordez normalement les problèmes en Python et en C pour qu'il y ait beaucoup l'espoir d'une vie décente à la traduction automatique.
regarder Shedskin . Il fait exactement cela (bien, en C++ et pour un sous-ensemble de Python et ses modules). Mais il devrait être en mesure de fournir un aperçu précieux sur la façon d'aborder ce problème particulier (bien que l'écriture de votre propre sera certainement pas être une tâche triviale).
il est difficile de croire que personne N'ait mentionné Cython -- à peu près la norme de facto pour ce type de travail, à mon avis: http://www.cython.org/