gpt4 book ai didi

prolog - DCG : zero-or-more, 零次或一次,一次或多次出现?

转载 作者:行者123 更新时间:2023-12-04 08:21:19 25 4
gpt4 key购买 nike

在 DCG 中,您如何实现:零次或多次、零次或一次、一次或多次出现?
我在伪代码中谈论以下内容:

  sentence --> word+
float --> int+, ['.'], int+
nilORa --> a?
nilORaaaa --> a*

最佳答案

您使用谓词的子句集提供的或非确定性(或者,在这种情况下,同一 DCG“非终结符”的 DCG 产生式集合 - DCG 产生式是 Horn 子句的替代表示法)
将应该首先执行的生产移到顶部。例如,要收集至少一个 word ,但可能更多,贪婪地:

sentence --> word, sentence.
sentence --> word.
根据语法中有多少确定性,您甚至可以削减:
sentence --> word, !, sentence.
sentence --> word.
与浮点数相同。 digits至少是一位数。 digit 已经有了定义在图书馆我认为:
float --> digits, ['.'], digits.

digits --> digit, digits.
digits --> digit.
nilORaa -- 或者可能什么都没有:
nilORa --> a.
nilORa --> [].
nilORaaaaa其次是 nilORaaaa -- 或者可能什么都没有:
nilORaaaa --> a, nilORaaaa.
nilORaaaa --> [].
您还应该能够部署 ;我认为:
nilORaaaa --> (a, nilORaaa) ; [].

关于prolog - DCG : zero-or-more, 零次或一次,一次或多次出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65484604/

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