Prolog - Parsing

Sou novo no prólogo da linguagem e recebi uma tarefa referente à análise no prólogo. Eu preciso de ajuda para resolver o problema.

Na avaliação temos a gramática:

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

O token^ é o mesmo que em matemática.5^5 é igual a25.

O Parse precisa trabalhar nos dois sentidos: uma chamada com uma lista instanciada para gerar um Ast, enquanto uma chamada com um Ast instanciado deve gerar uma lista de prefixo semelhante.

Minha opinião diz que eu preciso fazer um prefixo parse que faz isso:
Exemplo (com o valor de Ast removido):

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

Eu também gostaria de saber como será a aparência da árvore de análise.

questionAnswers(1)

yourAnswerToTheQuestion