2016-11-26 21 views
0

の解析、私は私がT-> UUを持っていることになっています知っている、と最初parse_Uは唯一の「aabb」を解析している、第二parse_Uは、最後の「ab」を解析するだろうが、私はこれを行う方法を見つけ出すことはできません追加します。 aで始まり、bで終わるサブリストしか取得できませんが、それは私が望む結果ではありません。連続した非端末

ご協力いただければ幸いです。

+0

コードに問題がある場合は、 – max66

答えて

1

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の構文を書くことができます。

+0

@Solaceに表示してください。私の解決策の伝統的な( '' - > '構文なしの)バージョンを提案する私の答えを改善しました。 – max66

+0

それは動作します!どうもありがとうございます!!! – Solace

関連する問題