grammar - 构造生成 L = {a^p b^m c^n|n>=0, m>=0, p=m+n} 的文法

标签 grammar automata

构造生成L的文法:

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

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

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

我的语法正确吗?

最佳答案

我无法给出数学证明,但让我们尝试枚举您的语法可以生成的字符串:

ε, 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 实际上在您的语法中交换了。

关于grammar - 构造生成 L = {a^p b^m c^n|n>=0, m>=0, p=m+n} 的文法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401577/

相关文章:

f# - OCaml 函数少传入一个参数

javascript - JavaCC中如何实现JavaScript自动插入分号?

c++ - 如何在 C++ 中进行自动机/状态机编码?

parsing - 测试两种常规语言的交集

automata - 包含 1101 作为子字符串的 DFA

regular-language - RE : Odd length string over { 0, 1} 恰好包含两个 0

automata - 以下 CFL 和非 CFL 的并集是 CFL 本身吗?

grammar - 重新定义语法中的ws

line - 解析注释行

c++ - 如何使用 boost.Spirit 解析带有嵌套括号的表达式?