Пролог - Разбор

Я новичок в языковом прологе и получил задание, касающееся разбора в прологе. Мне нужна помощь в решении проблемы.

В задании у нас есть грамматика:

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

Знак^ так же, как в математике.5^5 равняется25.

Parse должен работать в обоих направлениях: вызов с созданным экземпляром списка для генерации Ast, в то время как вызов с созданным экземпляром Ast должен генерировать аналогичный список префиксов.

Мое предложение говорит, что мне нужно сделать префиксный анализ, который делает это:
Пример (со значением Ast удалено):

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

Я также хотел бы знать, как будет выглядеть дерево разбора.

Ответы на вопрос(1)

Ваш ответ на вопрос