我无法找到有限自动机识别的语言的常规语法。我面临的关键问题是常规语法和无上下文语法之间的混淆。我似乎无法区分它们之间的差异,我发现它们在某些方面非常相似,例如歧义。
有人可以解释如何为FA识别的语言推导出常规语法吗?
答案 0 :(得分:2)
当我们谈到常规语法时,我们可能会谈论(严格)常规语法或(扩展)常规语法。这些不同的概念或多或少精确地对应于DFA和具有空转移的广义NFA。
此外,常规语法是右 - 常规或左 - 常规。我发现正确的常规语法更容易思考,但你的里程可能会有所不同。
鉴于DFA,可以按如下方式生成(严格)正确的常规语法:
上述结构试图避免添加不必要的空制作。如果我们不介意有很多空制作,另一种方法是省略步骤4,在步骤5中,添加过渡X:= e当且仅当X是接受状态时。这具有相同的效果。
给定具有空转换的广义NFA,可以按如下方式生成(扩展的)右对齐语法:
基本上,正如在rici的链接答案中,常规语法只是有限自动机中存在的相同基础信息的替代符号。这与正则表达式根本不同,正则表达式是表示常规语言的根本不同(但却等效)的表示法。
答案 1 :(得分:-1)
我理解的方式是CFL是以有限的方式描述无限集的好方法,也是描述语言语法的好方法。
CFL和常规语言...... 所有常规语言都没有上下文,但反之亦然。为什么?
我们可以通过使用抽取引理来证明这一点,并且使用{a ^ n b ^ n |描述的上下文自由语言。 n≥0}表示不规则,但它是CFL ,因为它是由语法G =(V,Σ,R,Start)生成的,其中:
请注意,字符串w在无上下文语法 G 中是歧义,如果它有两个或更多不同的最左边推导即可。语法 G 如果它模糊地生成一些字符串是不明确的,有时,当我们有一个模糊的语法时,我们可以找到一个生成相同语言的明确语法。请注意,某些无上下文语言只能由 生成
此外,任何无上下文的语言都是由 Chomsky Normal Form 中的无上下文语法生成的。要检查字符串是否是CFL的一部分,我们可以使用 Cocke-Younger-Kasami算法。
好读是 Sipser,M。(2006)。计算理论导论(第2卷)。波士顿:汤姆森球场技术。