什么是简单英语的“制作”?

时间:2013-08-20 08:37:33

标签: parsing grammar

我可以在维基百科上阅读Production的正式定义,但是当你开始阅读那篇文章时,它会对先验知识做出假设。

维基百科将其定义如下:

  

计算机科学中的生产或生产规则是一种重写规则,指定可以递归执行以生成新符号序列的符号替换。

这假设我知道并了解重写规则是什么。我没有,如果我点击链接,我会进入另一个相当技术性的解释。

有人能用简单的英语向我解释生产实际上是什么吗?

注意:我已经多次尝试理解这一点,但我认为我没有成功。从我可以告诉它根据语法规则重写给定的字符串。不确定我是否正确。

2 个答案:

答案 0 :(得分:4)

为了解释制作是什么,我想先介绍一下背景。

龙书指出,无上下文语法有4个组成部分:

  • 一组终端符号(令牌)
  • 一组非终端符号(句法变量)
  • 一组形式的作品:非术语 - >终端和非终端序列
  • 指定为起始符号的非终端符号

还有人说,解析是获取一串终端(源代码)的问题,并确定从语法的起始符号派生这个终端串所需的步骤。

现在已经说过,生产本质上是一个可能的(中间)步骤。我说可能因为某些符号可以导出不同的序列。

例如,让我们用一个简单的语法来表示以b结尾的任意长序列。这个语法的4个组成部分是:

  • 终端:a,b
  • 非终端:S,X
  • 规则:S - > X,X - > aX,X - > AB
  • 开始符号:S

根据我上面给出的描述,“aaaab”应该来自这个语法。让我们看看这是否成立。我们从起始符号开始,然后应用产品直到a)我们得到最终序列,b)我们耗尽所有可能性而没有成功(意味着序列不是“语法正确”)。

S
X (after applying S --> X)
aX (after applying X --> aX)
aaX (after applying X --> aX)
aaaX (after applying X --> aX)
aaaab (after applying X --> ab)

我们完成了,我们得到了原始序列。因此,您可以看到我们通过应用规则(其中一个我们递归应用)重新编写了非终端符号,这些规则在每一步都将序列转换为新的符号序列,我们这样做直到我们得到最终序列。 / p>

答案 1 :(得分:1)

重写规则是一种用其他术语替换公式的子项的方法。在它们最基本的形式中,它们由一组对象组成,以及如何转换这些对象的关系。

重写规则的示例如下:

A → B

现在关于这实际上是做什么的!你是对的,例如一个事物列表(和2个重写规则):

X, Y, Z
X → Y
Y → Z

哪会导致:

Z, Z, Z

生产规则是重写规则,因为它是替换公式的子项的方法(在您的情况下可能是字符串)。生产规则可能如下所示:

X, Y, Z
X → aX

通过以这种方式使用规则,可以应用递归(创建新序列),因为它将继续替换自己:

aX, Y, Z
aaX, Y, Z
aaaX, Y, Z

至于您要问的问题,您可以说:“生产规则是使用递归创建新序列的公式的替换规则”。