我可以在维基百科上阅读Production的正式定义,但是当你开始阅读那篇文章时,它会对先验知识做出假设。
维基百科将其定义如下:
计算机科学中的生产或生产规则是一种重写规则,指定可以递归执行以生成新符号序列的符号替换。
这假设我知道并了解重写规则是什么。我没有,如果我点击链接,我会进入另一个相当技术性的解释。
有人能用简单的英语向我解释生产实际上是什么吗?
注意:我已经多次尝试理解这一点,但我认为我没有成功。从我可以告诉它根据语法规则重写给定的字符串。不确定我是否正确。
答案 0 :(得分:4)
为了解释制作是什么,我想先介绍一下背景。
龙书指出,无上下文语法有4个组成部分:
还有人说,解析是获取一串终端(源代码)的问题,并确定从语法的起始符号派生这个终端串所需的步骤。
现在已经说过,生产本质上是一个可能的(中间)步骤。我说可能因为某些符号可以导出不同的序列。
例如,让我们用一个简单的语法来表示以b结尾的任意长序列。这个语法的4个组成部分是:
根据我上面给出的描述,“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
至于您要问的问题,您可以说:“生产规则是使用递归创建新序列的公式的替换规则”。