这是一个作业分配问题,我知道我没有正确回答。我给了:

S -> ''


表示S产生空字符串。我知道空集和空字符串不一样。根据我的教授,答案是:

S -> S


现在,这个答案对我来说似乎很奇怪:


它永远不会终止。
它与其说是一种语言,不如说是一种语言。


从严格的数学角度来看,我知道第二名是我无法企及的。但是,语言是否需要终止?拥有可以永远持续下去的语言听起来不错,但是永远不会终止的语言听起来很不对劲,以至于我想问问是否有人知道这是否是一种语言要求。

最佳答案

Formal Grammar Wikipedia page


G的语言(表示为L(G))定义为可以从起始符号S进行有限步数导出的所有那些句子。


以S开头,对S应用一次生产规则将得出S。两次应用规则将得出S。通过归纳法,将规则应用到任何有限数仍将得出S。由于无法在有限数量的步骤中推导句子,因此该语言为空的,所以你的教授是正确的。

定义接受空集的语法的替代方法是L(G) = {}(语言为空)或P = {}(生产规则集为空)。

关于grammar - 接受规则S-> S的空集的语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7558687/

10-10 05:15