首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DCG :零或多,零或一,一或多个事件?

DCG :零或多,零或一,一或多个事件?
EN

Stack Overflow用户
提问于 2020-12-29 05:55:59
回答 1查看 64关注 0票数 2

在DCG中,如何实现:零或多、零或一、一或多个事件?

我在讨论伪代码中的以下内容:

代码语言:javascript
复制
  sentence --> word+
  float --> int+, ['.'], int+
  nilORa --> a? 
  nilORaaaa --> a*
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-29 06:03:11

您可以使用谓词的子句集提供的or-不确定性(或者,在本例中,为同一DCG“非终结点”使用DCG生成集- DCG生成是Horn子句的另一种表示法)

将应该首先执行的生产移到顶部。例如,贪婪地收集至少一个但可能更多的word

代码语言:javascript
复制
sentence --> word, sentence.
sentence --> word.

根据语法中确定性的程度,你甚至可以删减:

代码语言:javascript
复制
sentence --> word, !, sentence.
sentence --> word.

浮点数也是如此。digits至少是一个数字。我认为在库中已经有了对digit的定义:

代码语言:javascript
复制
float --> digits, ['.'], digits.

digits --> digit, digits.
digits --> digit.

nilORa是一个a --或者可能什么都不是:

代码语言:javascript
复制
nilORa --> a.
nilORa --> [].

nilORaaaa是一个后跟nilORaaaaa --或者可能什么都不是:

代码语言:javascript
复制
nilORaaaa --> a, nilORaaaa.
nilORaaaa --> [].

我认为您还应该能够部署;

代码语言:javascript
复制
nilORaaaa --> (a, nilORaaa) ; [].
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65484604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档