Compiler construction 给定一种语言,定义它的CFG
给定 定义一个CFG,使LG=L1 在我看来,这些作品应该是正确的答案Compiler construction 给定一种语言,定义它的CFG,compiler-construction,grammar,Compiler Construction,Grammar,给定 定义一个CFG,使LG=L1 在我看来,这些作品应该是正确的答案 L1 = {w belongs to {a,b}* | has as many a as b} 我的理由是: L1包含像{ab,aabb,aaabbb 现在我有一个疑问:如果我应用上述成果,简而言之: → aSa 我应用1得到S→ aSa→ aaSaa我选择了2个,我得到了S→ aSa→ aaSaa→ aabSbaa,然后使用空字符串得到最后的字符串S→ aSa→ aaSaa→ aabSbaa→ AAAAA 现在,也许我错
L1 = {w belongs to {a,b}* | has as many a as b}
我的理由是:
L1包含像{ab,aabb,aaabbb
现在我有一个疑问:如果我应用上述成果,简而言之:
→ aSa
我应用1得到S→ aSa→ aaSaa我选择了2个,我得到了S→ aSa→ aaSaa→ aabSbaa,然后使用空字符串得到最后的字符串S→ aSa→ aaSaa→ aabSbaa→ AAAAA
现在,也许我错了,但是在字符串aabbaa中,a的数量不等于b的数量
任何帮助都将不胜感激
约阿希姆假设L1实际上是{a^nb^n | n≥ 0},您提供的语法无法完全生成L1。为了满足这样一个要求,即一个单词左侧的a的数量必须等于其右侧的b的数量,您的目标是找到一种语法,在其每一个结果之后强制执行该要求 考虑这一点的另一种方式是:不允许在语法中使用不能生成相等数量的a和b的结果
V = {A}, Σ = {a, b}, S = A, and R the set of rules:
(1) A -> aAbA | bAaA
(2) A -> ε
编辑:既然这不是家庭作业,我就继续回答:
1) S → aSa
2) S → bSb
3) S → ε
对不起,也许我错了,但迈克尔·福卡拉基斯的解决方案不起作用 基本上,这两个规则不提供具有相同数量的a和b的字符串
V = {A}, Σ = {a, b}, S = A, and R the set of rules:
(1) A -> aAbA | bAaA
(2) A -> ε
取A->aAb,然后应用1规则,你有A->aAb->aaAb,然后???
如果你应用2,你最终会得到A->aAb->aaAb->aAb
我认为正确的答案是:
(1) A -> aAb
(2) A -> ε
即使我得到的字符串是:abab或aababb
实际上,它们都满足了初始要求,即:
1)S->aSbS
2)S->bSaS
3) S->ε
元素的排列方式无关紧要
当然,欢迎并鼓励发表评论 这是一个标准的课堂练习,还没有正确答案
the string must contain the same number of a and b.
任意顺序的任意数量的a和b,包括空字符串
有相当多的在线课堂笔记和答案和证明。示例:
无论如何,考虑这个不匹配的输入:ABAB。因此,发布的产品不可能是正确的答案。如果你认为我的文章应该被贴上家庭作业的标签,我真的希望有人能向我解释我犯错误的地方和原因,在每次制作之后,as和bs的数量应该相等。您当前的解决方案取决于选择正确的产品,但正如您已经注意到的,这无法保证。你必须确保每一个生产都产生一个有效的词。考虑这个不匹配的输入:abb.…我应该如何解决这个问题?但是如果我开始应用2规则,我得到ABSBA,然后通过3我得到ABBA,A和B在数量上是相等的。我说的对吗?ABAB呢?你的语法生成了一些a和b数量相同的字符串,但不是全部。我仍然认为你的解决方案没有得到所有可能的单词。例如,据我所知,一个词可以以a开头,也可以以a结尾,例如abba,这在你的规则中是不可能的。@Howard aAbA=>aAbbAaA=>*abbaYou说a->aAb->aaAb-怎么说?有没有一条规则可以用a代替a?