Quiero hackear con el intérprete de Python y tratar de crear una pequeña DSL. ¿Hay algún módulo donde pueda hacer algo como este código teórico (similar a los árboles de expresión LINQ)?¿Hay alguna forma de generar programáticamente bytecode de Python?
expression_tree = Function(
Print(
String('Hello world!')
)
)
compile_to_bytecode(expression_tree)
¿O simplemente sería más fácil generar el código fuente de Python? ¿Podría esto ser más fácil usando C o SWIG o Cython?
Dada la tremenda fuerza expresiva de los lenguajes orientados a objetos (Python en particular) una conexión DSL es bastante tonto. Solo escribe el Python. Si se proporciona buenas definiciones de clase, tiene un Python "DSL-like" y no lo necesita. –