【问题标题】:Show that the following grammar is ambiguous证明以下文法不明确
【发布时间】:2017-10-29 22:47:29
【问题描述】:

这个语法在我的期中考试中,但我找不到两个不同的解析树,它要求表明它是模棱两可的

K -> QK | ε
Q -> Qa | aQb | ab

如果我没有看到它已经离开递归,我会写的不是模棱两可的, 谢谢。

【问题讨论】:

  • 左递归 != 不明确
  • 我认为自上而下的方法无法处理左递归并导致模棱两可,我们必须消除它
  • 自顶向下解析无法处理左递归,因为它是左递归的,无论是否有歧义。自底向上解析可以处理明确的左递归语法。

标签: syntax compiler-construction context-free-grammar ambiguous parse-tree


【解决方案1】:
K -> QK -> QQK -> QQ
  -> abQ -> abaQb -> abaQab
  -> abaabab

K -> QK -> QQK -> QQQK -> QQQ
  -> QaQQ -> abaQQ -> abaabQ
  -> abaabab

编辑以添加一些评论:我不确定是否有解决这些问题的好方法。寻找可以“做同样事情”的规则(比如派生更长的字符串),然后从那里开始。在这种情况下,问题在于我们可以通过多种方式添加 Q。您也可以尝试向后工作:想象语言中的字符串以及它们在语法中的完成方式。如果您正在寻找可能的最短反例,这将很有帮助,因为歧义通常会在这些字符串中发生相当晚的时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多