/ / expandir cadenas como expresiones algebraicas - python, cadena

expandir cadenas como expresiones algebraicas - python, cadena

Tengo un conjunto de cadenas simples, que representan algunos DSL:

my_str = ["("word 1" + "word 2") * "word 3"",
"("word 1" + "word 2") * ("word 3" + "word 4")",
"(("word 1" + "word 2") * ("word 3" + "word 4")) * "word 5"",
]

Estaba intentando (y fallando gravemente) cambiar esto a una forma más directa, como

a = foo(my_str)
a= [
"("word 1" * "word 3") + ("word 2" * "word 3")",
"("word 1" * "word 3") + ("word 1" * "word 4") + ("word 2" * "word 3") + ("word 2" * "word 4")",
"("word 1" * "word 3" * "word 5") + ("word 1" * "word 4" * "word 5") + ("word 2" * "word 3" * "word 5") + ("word 2" * "word 4" * "word 5")",
]

Puede que sea algo simple pero parece que no puedo entender mi lógica.

Respuestas

1 para la respuesta № 1

Ok, al final usé una combinación de sympy y pyparsing. Utilicé pyparsing para entender las relaciones y jerarquías entre variables, y luego sympy para crear y expandir la expresión.

Alguien interesado en un código poco terminado puede echar un vistazo a la esencia aquí.