Prolog - Parsen

Ich bin neu im Sprachprolog und habe einen Auftrag zum Parsen in Prolog erhalten. Ich brauche Hilfe bei der Lösung des Problems.

Im Assingment haben wir die Grammatik:

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

Das Zeichen^ ist das gleiche wie in Mathe.5^5 gleich25.

Das Analysieren muss in beide Richtungen funktionieren: Ein Anruf mit einer instanziierten Liste, um einen Ast zu generieren, während ein Anruf mit einem instanziierten Ast eine ähnliche Präfixliste generieren sollte.

Mein Assingment besagt, dass ich eine Präfixanalyse machen muss, die dies macht:
Beispiel (mit dem Wert von Ast entfernt):

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

Ich möchte auch wissen, wie der Analysebaum aussehen wird.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage