簡體   English   中英

SWI-Prolog解析DCG謂詞不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM