Me pidieron que escribiera un traductor de código que tomaría un programa Python y produciría un programa C. ¿Tiene alguna idea de cómo podría abordar este problema o incluso es posible?Escribiendo el traductor de código de Python a C?
Respuesta
Eche un vistazo a Shedskin. Hace exactamente eso (bueno, para C++ y para un subconjunto de Python y sus módulos). Pero debería ser capaz de proporcionar información valiosa sobre cómo abordar este problema en particular (aunque escribir el suyo ciertamente será no, una tarea trivial).
Gracias, Christopher. Voy a estudiar el código fuente de Shedskin ahora. – bodacydo
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, hay una lista de proyectos relacionados.
Pyrex: http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
psyco: http://psyco.sourceforge.net/
RPython: http://code.google.com/p/rpython/
Hay una cuestión fundamental aquí: es la intención de crear, básicamente, un compilador de Python que utiliza C como un back-end, o para convertir el programa a C y mantener la C después?
Escribir un compilador que produce (realmente feo) C ya que su salida probablemente no es trivial; un compilador raramente lo es, y la generación de código para Python será más difícil que para muchos otros lenguajes (mecanografía dinámica, en en particular, es difícil de compilar, al menos a una salida muy eficiente). OTOH, al menos el analizador será mucho más fácil que para algunos idiomas.
Si por "traducir", quiere decir convertir Python a C, que es legible y fácil de mantener, esa es una pregunta completamente diferente - es sustancialmente más difícil, por decirlo suavemente. De manera realista, dudo que cualquier traducción automática valga mucho; hay demasiadas diferencias en la forma en que abordas normalmente los problemas en Python y C para que haya muchas esperanzas de una traducción automática decente.
+1: Python no es C con una sintaxis diferente. Es un lenguaje fundamentalmente diferente con semántica única. Si fuera "C con una sintaxis diferente", alguien ya habría escrito esa transformación. –
Es difícil creer que nadie ha mencionado Cython - más o menos el estándar de facto para este tipo de trabajo, en mi opinión: http://www.cython.org/
- 1. Escribiendo el código de byte de llvm
- 2. ¿Acelera el código matemático en C# escribiendo un C dll?
- 3. Escribiendo un embellecedor de código
- 4. ¿Hay algún traductor OCaml to C gratis?
- 5. Escribiendo un documento LaTeX con fragmentos de código Python
- 6. Crear fuente a traductor de origen
- 7. Traducción de código Python a JVM
- 8. Escribiendo el sistema de complemento C#
- 9. Escribiendo código limpio, rendimiento para el iPhone
- 10. python configparser escribiendo a la sección predeterminada
- 11. Python: Escribiendo a Excel 2007+ archivos (.xlsx)
- 12. ¿Cómo llamas al código Python desde el código C?
- 13. Usar el código Python en C/C++
- 14. Apagar Traductor caché
- 15. C Python: Ejecutando el código Python dentro de un contexto
- 16. Python a C# Explicación del código
- 17. ejecutando código C++ de python
- 18. escribiendo valores genéricos (C#)
- 19. Traducir el código de Python a Smalltalk
- 20. Escribiendo controladores en C#
- 21. Escribiendo blob de SQLite a archivo usando Python
- 22. Escribiendo a los registros de Windows en Python
- 23. Escribiendo código C# reutilizable para sitios web ASP.NET
- 24. Escribiendo un Python Music Streamer
- 25. Traduciendo el diccionario de Python a C++
- 26. cómo convertir el código de Python 3 a Python 2?
- 27. analizando el código C usando python
- 28. Escribiendo mi propio compilador C++
- 29. Escribiendo una ayuda para el script de python
- 30. Escribiendo una extensión de Python en Go (Golang)
estoy indeciso de adivinar sus necesidades sin escuchar más, pero si "te pidieron que escribieras un traductor de código" (por alguien como uno de mis peores jefes), eso sugiere un malentendido en algún nivel. Mi reacción inicial es que (a) alguien piensa "Python = slow, C = fast" siempre, y (b) un traductor de código para Python sería una cosa fácil de escribir. Volvería y preguntaría por qué quieren esto. – Ken
posible duplicado de [¿Convertir el programa Python a código C/C++?] (Http://stackoverflow.com/questions/4650243/convert-python-program-to-c-c-code) –