Grammar 形式语言-语法

Grammar 形式语言-语法,grammar,formal-languages,Grammar,Formal Languages,我正在上一门正式语言和可计算性课程,在理解语法概念方面有点困难。我的作业问题之一是: 接受∑ = {a,b},让na(w)和nb(w)分别表示字符串w中a和b的个数。然后是语法G和结果: S -> SS S -> λ S -> aSb S -> bSa S -> ab S -> ba 生成语言L={w:na(w)=nb(w)} 1) 示例中的语言包含一个空字符串。修改给定语法,使其生成L-{λ} 我想我应该修改L的条件,比如: L={w:na(w)=nb

我正在上一门正式语言和可计算性课程,在理解语法概念方面有点困难。我的作业问题之一是:

接受∑ = {a,b},让na(w)和nb(w)分别表示字符串w中a和b的个数。然后是语法G和结果:

S -> SS
S -> λ
S -> aSb
S -> bSa
S -> ab
S -> ba
生成语言L={w:na(w)=nb(w)}

1) 示例中的语言包含一个空字符串。修改给定语法,使其生成L-{λ}

  • 我想我应该修改L的条件,比如:

    L={w:na(w)=nb(w),na,nb>0}

    这样,我们表示字符串永远不会为空

2) 修改示例中的语法,使其生成L∪ {anbn+1:n>=0}

  • 我不知道该怎么做。这是否意味着我在语法中增加了一个条件,比如S->aSbb
如果您对这两个问题有任何解释,我们将不胜感激。我仍在努力找出这些语法材料,所以我不确定我的答案。

1)问题是修改语法以获得一种新的语言;所以不要直接修改语言

您的语法由于生成而生成空单词:

S -> λ
因此,您可以考虑将此产品全部删除。这将产生以下语法:

S -> SS
S -> aSb
S -> bSa
不幸的是,这种语法并没有生成一种语言(有点像归纳法,它遗漏了一个首字母:没有只包含终端的产品)。要解决此问题,请添加以下产品:

S -> SS
S -> λ
S -> aSb
S -> bSa
S -> ab
S -> ba
2) 不要随意尝试添加生产规则,希望它能起作用。这里需要
a
,后面跟着
b
。那么生产规则呢

S -> bSa
肯定会消失。还有,规则

S -> SS
将产生,例如,
abab
(试着看看这是如何获得的)。所以我们也得把它移走。我们只剩下:

S -> λ
S -> aSb
现在,该语法生成:

λ
ab
aabb
aaabbb
等等,这一点都不坏!为了获得一个额外的尾随
b
,我们可以创建一个新的非终端,比如
T
,用
T
替换当前的
S
,并在
S
中添加尾随
b

T -> λ
T -> aTb
S -> Tb

我知道这是家庭作业;我给了你家庭作业的答案:那是因为,从你提问的方式来看,你似乎完全迷路了。我希望这个答案能帮助你走上正确的道路

1)问题是修改语法以获得新的语言;所以不要直接修改语言

您的语法由于生成而生成空单词:

S -> λ
因此,您可以考虑将此产品全部删除。这将产生以下语法:

S -> SS
S -> aSb
S -> bSa
不幸的是,这种语法并没有生成一种语言(有点像归纳法,它遗漏了一个首字母:没有只包含终端的产品)。要解决此问题,请添加以下产品:

S -> SS
S -> λ
S -> aSb
S -> bSa
S -> ab
S -> ba
2) 不要随意尝试添加生产规则,希望它能起作用。这里需要
a
,后面跟着
b
。那么生产规则呢

S -> bSa
肯定会消失。还有,规则

S -> SS
将产生,例如,
abab
(试着看看这是如何获得的)。所以我们也得把它移走。我们只剩下:

S -> λ
S -> aSb
现在,该语法生成:

λ
ab
aabb
aaabbb
等等,这一点都不坏!为了获得一个额外的尾随
b
,我们可以创建一个新的非终端,比如
T
,用
T
替换当前的
S
,并在
S
中添加尾随
b

T -> λ
T -> aTb
S -> Tb

我知道这是家庭作业;我给了你家庭作业的答案:那是因为,从你提问的方式来看,你似乎完全迷路了。我希望这个答案能帮助你走上正确的道路

语言是一组“可接受”或“有效”或“真实”的单词/短语/字符串。语法是可以生成单词/短语/字符串的东西。在问题1中,您正在修改语言
L
,但这不会改变
G
生成空字符串的情况(这是要求您更改的内容)。在你对问题2的解答中,你的新语法将生成{w:n_a(w),这可能更适合。一种语言是一组“可接受的”或“有效的”或“真的”单词/短语/字符串。语法可以生成单词/短语/字符串。在问题1中,您正在修改语言
L
,但这不会改变
G
生成空字符串的情况(这是要求您更改的)。在问题2的解决方案中,您的新语法将生成{w:n\u A(w)这可能更适合你。