Prólogo - Análisis

Soy nuevo en el prólogo de lenguaje y me han asignado una tarea relacionada con el análisis en prólogo. Necesito ayuda para resolver el problema.

En la evaluación tenemos la gramática:

Expr ::= + Expr Expr | * Expr Expr | Num | Xer  
Xer  ::= x | ^ x Num  
Num  ::= 2 | 3 | .... a Integer (bigger than 1) ...

El token^ Es lo mismo que en matemáticas.5^5 es igual a25.

Parse debe funcionar en ambos sentidos: una llamada con una lista de instancias para generar un Ast, mientras que una llamada con un Ast de instancias debe generar una lista de prefijos similares.

Mi evaluación dice que debo hacer un análisis de prefijo que haga esto:
Ejemplo (con el valor de Ast eliminado):

?- parse([+, *, 2, x, ^, x, 5 ], Ast), parse(L, Ast).  
X = ...,  
L = [+, *, 2, x, ^, x, 5]  

También me gustaría saber cómo se verá el árbol de análisis.

Respuestas a la pregunta(1)

Su respuesta a la pregunta