接受规则S-> S的空集的语法

Lev*_*son 13 grammar context-free-grammar

这是一个家庭作业问题,我知道我没有错误地回答.我给了:

S -> ''
Run Code Online (Sandbox Code Playgroud)

意味着S产生空字符串.我知道空集和空字符串不一样.据我的教授说,答案是:

S -> S
Run Code Online (Sandbox Code Playgroud)

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

  1. 它永远不会终止.
  2. 它不是一种语言,而是缺少一种语言.

我从严格的数学角度理解,我不会得到第二个任何地方.但是,语言是否需要终止?拥有一种可以永远持续下去的语言听起来没问题,但是一个永远不会终止的语言听起来不够错,我以为我会问是否有人知道这是否是语言要求.

Mar*_*ers 12

来自Formal Grammar Wikipedia页面:

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

从S开始,将生产规则应用于S给出S.应用规则两次给出S.通过归纳,应用规则任何有限数仍然给出S.因为没有句子可以在有限数量的步骤中导出,语言是空了,所以你的教授是对的.

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