[英]SWI-Prolog parsing DCG predicate doesn't work
我的目的是解析語法。 語法的產生是:
S-> B B->bB B->b
該謂詞旨在獲取一個列表,並確定該列表是否屬於語法。 我的代碼如下:
s(List,[]):- b(List,[]).
b(List,[]):-'C'(List,b,X), b(X,[]).
b([b|List],List).
該謂詞似乎能夠確定[b]是一個解,但是,它無法檢測到[b,b,b]也是一個解。
例如,
?-s([b],[]).
true.
?-s([b,b,b],[]).
false.
我認為代碼的第二行沒有按照我想要的去做,但是我不確定如何解決它。
如果您願意了解Prolog和DCG的基礎知識,請參見以下解決方案:
s(List):- b(List,[]).
b([b|List],Rest):- b(List,Rest).
b([b],[]).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.