gpt4 book ai didi

prolog - 忽略其余输入

转载 作者:行者123 更新时间:2023-12-02 06:53:12 24 4
gpt4 key购买 nike

忽略其余输入的首选方法是什么?我发现了一种有点冗长的方式:

ignore_rest --> [].
ignore_rest --> [_|_].

它有效:

?- phrase(ignore_rest, "foo schmoo").
true ;

但是当我尝试将这两条规则折叠成:

ignore_rest2 --> _.

然后它不会:

?- phrase(ignore_rest2, "foo schmoo").
ERROR: phrase/3: Arguments are not sufficiently instantiated

最佳答案

您想要的是声明存在任意多个字符的序列。最简单的描述方式是:

... -->
[].
... -->
[_],
... .

像您一样将 [_|_] 用作非终端,是 SWI-Prolog 特定的扩展,问题很大。事实上,在过去,[_|_] 有几种不同的扩展/解释。最值得注意的是,Quintus Prolog 确实允许定义一个用户定义的 '.'/4,当 [_|_] 被用作非终端时调用。请注意,[_|[]] 仍被视为终端!实际上,这是一个执行错误。但是,尽管如此,它还是被利用了。请参阅这样的示例:

David B. Searls, Investigating the Linguistics of DNA with Definite Clause Grammars. NACLP 1989.

关于prolog - 忽略其余输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38040060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com