斯基类型3和类型斯基2语法之间的差(The difference between Chomsky t

2019-06-26 09:17发布

我无法阐明斯基2型(上下文无关语言)和乔姆斯基3型(正规语言)之间的差异。

有人在那里可以给我用简单的英语回答? 我无法理解整个层次的东西。

Answer 1:

甲II型语法是III型语法用栈

第II类的语法基本上是一个类型III语法筑巢。

III型语法(常规):

用例 - CSV(逗号分隔值)

特点:

  • 可以用使用读取的FSM(有限状态机)
  • 不需要中间存储
  • 可以用正则表达式来读
  • 通常使用一维或二维数据结构表示
  • 是平坦的,这意味着没有嵌套或递归性质

例如:

this,is,,"an "" example",\r\n
"of, a",type,"III\n",grammar\r\n

只要你能找出所有的规则和边缘的情况下你可以解析CSV上面的文字。

II型文法(上下文无关):

用例 - HTML(超文本标记语言)或SGML一般

特点:

  • 可以使用DPDA被读取(确定下推自动机)
  • 将需要中间存储堆叠
  • 可以被表示为一个AST(抽象语法树)
  • 可以包含嵌套和/或递归性质

HTML可以表示为一个普通的语法:

<h1>Useless Example</h1>
<p>Some stuff written here</p>
<p>Isn't this fun</p>

但它的解析尝试这种使用FSM:

<body>
  <div id=titlebar>
    <h1>XHTML 1.0</h1>
    <h2>W3C's failed attempt to enforce HTML as a context-free language</h2>
  </div>
  <p>Back when the web was still pretty boring, the W3C attempted to standardize away the quirkiness of HTML by introducing a strict specification</p
  <p>Unfortunately, everybody ignored it.</p>
</body>

看到不同? 想象一下你正在写一个解析器,你可以开始在一个开放的标签,并完成在关闭标签,但是当你到达结束标记之前遇到的第二开口标签会发生什么?

这很简单,你把第一开口标签入栈,并开始解析第二个标签。 重复此过程中存在,并且如果语法结构良好,叠层可以是在相反的电平的时间的未轧制一层,它建嵌套为多个层级

由于“纯”上下文无关语言的严格性质,他们是比较少见的,除非他们由程序产生。 JSON,就是一个典型的例子。

上下文无关语言的好处是,尽管非常富有表现力,他们还是比较简单的解析。


别急,没我只是说HTML是上下文无关。 是的,如果它是良好的形成(即XHTML)。

虽然XHTML可以被认为是上下文,较为宽松的定义HTML实际上认为I型(即上下文敏感)。 是的原因,当解析器达到结构不好的代码,它实际上使有关如何解释基于上下文内容的代码的决定。 例如,如果一个元素是缺少了结束标记,就需要确定在层次结构中存在该元素才可以决定的关闭标签应放置。

其他功能,可以使一个上下文无关语言上下文敏感的包括模板,进口,预处理器,宏等。

总之,上下文敏感的语言看上去很像上下文无关语言,但一个上下文敏感的语言的要素可以根据程序状态不同的解释。

免责声明:我不是正式CompSci培训,使这个答案可能包含错误或假设。 如果你问我一个终端和非终端之间的区别,你会赚自己两眼发直。 我通过实际建设III型(普通)解析器和大约剩下的广泛阅读学到这么多。



Answer 2:

在维基百科页面具有良好的图像和要点。

粗略地说,可以描述一个普通的语言底层机器并不需要的内存。 它运行为对输入的statemachine(DFA / NFA)。 正规语言也可以用正则表达式来表示。

与添加到它的复杂性的“下一个” A级语言是一种上下文无关语言。 描述这种语言的底层机器需要一些内存能够代表都是免费的情况下,没有规律的语言。 请注意,添加内存到您的计算机,使之更厉害一点,所以它仍然可以表达语言(例如正规语言)是没有必要开始与记忆。 底层机器通常是下推自动机 。



Answer 3:

类型3语法包括一系列状态的。 他们无法表达嵌入。 例如,3型文法不能要求匹配括号,因为它没有办法显示,括号应该是“缠”的内容。 这是因为,德里克指出,3型语法并不“记住”对以前的状态,它穿过去的当前状态什么。

2型文法由一组“制作”(你可以把它们想象成图案),可以有嵌入他们的其他作品的。 因此,它们是递归定义。 一个生产只能在它所包含的内容来定义,而不能“看到”的本身之外; 这是什么使得语法上下文。



文章来源: The difference between Chomsky type 3 and Chomsky type 2 grammar