の解析、私は私がT-> UU
を持っていることになっています知っている、と最初parse_U
は唯一の「aabb
」を解析している、第二parse_U
は、最後の「ab
」を解析するだろうが、私はこれを行う方法を見つけ出すことはできません追加します。 a
で始まり、b
で終わるサブリストしか取得できませんが、それは私が望む結果ではありません。連続した非端末
ご協力いただければ幸いです。
の解析、私は私がT-> UU
を持っていることになっています知っている、と最初parse_U
は唯一の「aabb
」を解析している、第二parse_U
は、最後の「ab
」を解析するだろうが、私はこれを行う方法を見つけ出すことはできません追加します。 a
で始まり、b
で終わるサブリストしか取得できませんが、それは私が望む結果ではありません。連続した非端末
ご協力いただければ幸いです。
Prologでの解析では、DCG(Definite Clause Grammar)を使用することをお勧めします。
私は間違っていないよ場合は、あなたの文法は、単に
isS --> isT.
isS --> isV.
isT --> isU, isU.
isU --> [a], isU, [b].
isU --> [a, b].
isV --> [a], isV, [b].
isV --> [a], isW, [b].
isW --> [b], isW, [a].
isW --> [b, a].
になる可能性があり、Lは、解析する配列とリストですisS(L, [])
を呼び出して使用することができます。
あなたは真取得する必要があり
isS([a,a,b,b,a,b], [])
を呼び出します。
--- EDIT ---
が、これは宿題であり、我々が使用を許可されていません " - >"
特別なものは何も-->
の使用は(DGCではありません)構文;それは通常の構文の唯一のsemplificationです。あなたは真の入手すべき
is_S([a,a,b,b,a,b], [])
を呼び出す:(ルール名に追加undescores注意)
私は間違っていないよ場合
は、あなたが上記のようにDCSの構文を書くことができます。
コードに問題がある場合は、 – max66