18 上下文无关的语法可以包含自动机的“死态”吗? G = ( { a ,b ,c } ,{ A ,B ,C} ,{ A → a B ,B → b ,B → C,C→ c C} ,A )?G=({一种,b,C},{一种,乙,C},{一种→一种乙,乙→b,乙→C,C→CC},一种)? 生产规则和C → c C将永远循环,并且永远不会生成单词。这是允许的还是必须在某些时候以终端结束生产规则?B → C乙→CC→ c CC→CC context-free automata formal-grammars — 3 source
24 上下文无关的语法允许包含无效规则。之所以被接受是因为每个CFG都会生成与某种适当的CFG相同的语言,其中不包含任何非生产性规则,没有空字符串产生,也没有循环。因此可以安全地假设CFG是适当的而不会失去一般性。 — ilke444 source 不完全是:适当的CFG必须满足另外两个要求。因此,我将重新制定这一点。 — reinierpost @reinierpost:我想您的意思是说,存在某些CFG类别禁止非生产性规则,但仍然包括不正确的CFG类别?我想重新制定 — 公式 我的意思是,并非每个没有无效规则的CFG都是正确的,这与您的陈述相矛盾;但是通过明确地排除非生产性规则来定义适当的CFG,这清楚地表明,在任意CFG中这些都是可能的,这就是我要写的。 — reinierpost 感谢您的改进。我的意思是说,有些CFG的子类不允许它们包含此类规则。 — ilke444 是否有一个适当的CFG,其中没有无效规则,没有空字符串产生,也没有与({a},{A},{A-> epsilon},A)生成相同语言的循环?我喜欢第一句话。也许第二句话应该是“这是因为CFG的定义允许将任何有限的终端和非终端字符串作为产品的左侧”。 — 西奥多·诺维尔
3 当然是。每个NFA都可以写为CFG。而且,构建具有“死状态”(我曾教过的术语是“沉没”)的DFA并不容易。 G = ({ a } ,{ A } ,{ A → A } ,A )G=({一种},{一种},{一种→一种},一种){ a }{一种} ϵϵ — 大卫 source