证明下列文法有歧义
Show that the following grammar is ambiguous
这个语法在我的期中考试中出现,但我找不到它要求显示它有歧义的两个不同的解析树
K -> QK | ε
Q -> Qa | aQb | ab
如果我没有看到它已经递归,我打算写的是没有歧义的,
谢谢。
K -> QK -> QQK -> QQ
-> abQ -> abaQb -> abaQab
-> abaabab
K -> QK -> QQK -> QQQK -> QQQ
-> QaQQ -> abaQQ -> abaabQ
-> abaabab
编辑以添加一些评论:我不确定是否有解决这些问题的好方法。寻找可以 "do the same thing" 的规则(比如派生更长的字符串),然后从那里开始。在这种情况下,问题是我们可以通过多种方式添加 Q。您也可以尝试逆向工作:想象语言中的字符串以及它们在语法中的完成方式。如果您正在寻找可能的最短计数器示例,这将很有帮助,因为歧义通常会在这些字符串中出现得相当晚。
这个语法在我的期中考试中出现,但我找不到它要求显示它有歧义的两个不同的解析树
K -> QK | ε
Q -> Qa | aQb | ab
如果我没有看到它已经递归,我打算写的是没有歧义的, 谢谢。
K -> QK -> QQK -> QQ
-> abQ -> abaQb -> abaQab
-> abaabab
K -> QK -> QQK -> QQQK -> QQQ
-> QaQQ -> abaQQ -> abaabQ
-> abaabab
编辑以添加一些评论:我不确定是否有解决这些问题的好方法。寻找可以 "do the same thing" 的规则(比如派生更长的字符串),然后从那里开始。在这种情况下,问题是我们可以通过多种方式添加 Q。您也可以尝试逆向工作:想象语言中的字符串以及它们在语法中的完成方式。如果您正在寻找可能的最短计数器示例,这将很有帮助,因为歧义通常会在这些字符串中出现得相当晚。