这是一个家庭作业问题,我知道我没有错误地回答。我给了:
S -> ''
意味着S产生空字符串。我知道空集和空字符串不一样。据我的教授说,答案是:
S -> S
现在,这个答案对我来说很奇怪:
我从严格的数学观点来理解,我不会得到第二名。但是,语言是否需要终止?拥有一种可以永远发展的语言听起来没问题,但是一个永远不会终止的语言听起来不够错,以为我会问是否有人知道这是否是语言要求。
答案 0 :(得分:12)
来自Formal Grammar Wikipedia page:
G的语言,表示为L(G),被定义为可以从起始符号S以有限步数导出的所有句子。
从S开始,将生产规则应用于S给出S.应用规则两次给出S.通过归纳,应用规则任何有限数仍然给出S.因为没有句子可以在有限数量的步骤中导出,语言是空的,所以你的教授是正确的。
定义接受空集的语法的其他方法是L(G) = {}
(语言为空)或P = {}
(生产规则集为空)。