私は言語プロローグを初めて使用し、プロローグでの解析に関する割り当てを与えられました。問題を解決するために助けが必要です。
assingment には、次の文法があります。
Expr ::= + Expr Expr | * Expr Expr | Num | Xer
Xer ::= x | ^ x Num
Num ::= 2 | 3 | .... a Integer (bigger than 1) ...
トークン^
は数学と同じです。5^5
に等しい25
。
解析は、両方の方法で機能する必要があります。インスタンス化されたリストを使用して呼び出して Ast を生成する一方で、インスタンス化された Ast を使用して呼び出しを行うと、同様のプレフィックス リストが生成されます。
私の割り当ては、これを行うプレフィックス解析を行う必要があることを示しています:
例 (Ast の値を削除):
?- parse([+, *, 2, x, ^, x, 5 ], Ast), parse(L, Ast).
X = ...,
L = [+, *, 2, x, ^, x, 5]
また、解析ツリーがどのようになるかを知りたいです。