【问题标题】:Construct a grammar that generates L = {a^p b^m c^n|n>=0, m>=0, p=m+n}构造一个生成 L = {a^p b^m c^n|n>=0, m>=0, p=m+n} 的文法
【发布时间】:2016-02-15 04:38:07
【问题描述】:

构造一个生成L的文法:

L = {a^p b^m c^n|n>=0, m>=0, p=m+n}

到目前为止,我已经尝试了这么多:

S->A
A->aAb|B
B->aBc|epsilon

我的语法对吗?

【问题讨论】:

    标签: grammar automata


    【解决方案1】:

    我不能给出数学证明,但让我们试着列举一下你的语法可以产生的字符串:

    ε, ac, aacc, aaaccc, ... (a 和 c 的 # 更相同),ab, aabb, aaabbb, ... (a 和 b 的 # 更相同), aacb, aaaccb, aaacbb, aaaaccbb , ...(更多#a与#b+c相同)

    现在可以:

    a^p b^m c^n
    

    表示必须严格履行订单?即先a然后b然后c。如果是,您可以自己看到 b 和 c 在您的语法中实际上是交换的。

    【讨论】:

    • 是的,必须保持顺序(a后跟b然后c)如何修复错误的交换?
    • 好的,现在知道了 S->A A->aAc|B B->aBb|epsilon 我想这是正确的语法。谢谢@LeleDumbo
    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 2018-10-21
    • 2021-08-30
    • 2021-08-31
    • 2021-12-11
    • 1970-01-01
    • 2022-01-13
    • 2018-08-18
    相关资源
    最近更新 更多