Prolog - Parsowanie

Jestem nowym użytkownikiem prologu językowego i otrzymałem zadanie dotyczące parsowania w prologu. Potrzebuję pomocy w rozwiązaniu problemu.

W przypisaniu mamy gramatykę:

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

Token^ jest taki sam jak w matematyce.5^5 równa się25.

Parse musi działać w obie strony: wywołanie z listą instancji do wygenerowania Ast, natomiast wywołanie z instancją Ast powinno wygenerować podobną listę prefiksów.

Moje przypuszczenie mówi, że muszę zrobić parsowanie prefiksu, który to robi:
Przykład (z wartością Ast usuniętą):

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

Chciałbym również wiedzieć, jak będzie wyglądało drzewo analizujące.

questionAnswers(1)

yourAnswerToTheQuestion