这是一个作业分配问题,我知道我没有正确回答。我给了:
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/