【问题标题】:Resolving ambiguous grammar解决不明确的语法
【发布时间】:2015-02-12 02:09:58
【问题描述】:

我已经尝试解决这个问题好几个小时了,这只是一个无休止的反复试验循环。我需要使这个语法明确:

S -> Sa | Sb | aS | bS | aa

据我了解,这可以生成 a 和 b 的任意组合,“aa”出现在某处。主要问题是它可以从两边生成,所以有几个解析树。到目前为止,我最好的尝试是这样的:

S -> aS | bS | aT
T -> aU | a
U -> bU | b

生成任何 a 和 b...然后强制第二个 a,并允许添加更多 b。虽然这不允许每个字符串......不能做“abaaba”。我无法弄清楚如何使这个明确。

【问题讨论】:

    标签: context-free-grammar ambiguity ambiguous


    【解决方案1】:

    尝试生成不包含两个连续 as 的语言 (P)。 (这意味着每个a 后面必须跟一个b)。还有另一种语言(S),它可以包含as 和bs 的任意序列。然后您可以明确地将您的语言解析为PaaS。 (这是明确的,因为该产生式中的aa 必须是要产生的字符串中的第一个。)

    (我分别从前缀和后缀中选择了PS。有时数学太简洁了。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      相关资源
      最近更新 更多