【问题标题】:How to determine if a context-free grammar describes a regular language?如何确定上下文无关语法是否描述了常规语言?
【发布时间】:2015-07-27 00:24:25
【问题描述】:

给定一个任意上下文无关文法,我如何检查它是否描述了正则语言?

我不是在寻找考试“技巧”。我正在寻找我可以编码的万无一失的机械测试。

如果有帮助,这里有一个我可能会收到作为输入的 CFG 示例。 具体来说,请注意答案肯定比仅仅寻找左递归或右递归要复杂得多,因为存在另一种类型的递归并不会自动暗示语法不规则。

S: A B C D X
A: A a
A:
B: b B
B:
C: c C c
C: c
D: D d D
D: d
X: x Y
X:
Y: y X
Y:

【问题讨论】:

    标签: grammar context-free-grammar regular-language finite-automata formal-languages


    【解决方案1】:

    没有这样的机械程序,因为确定 CFG 是否定义常规语言的问题是不可判定的。

    这个结果是Greibach's Thereom的简单应用。

    【讨论】:

    • 读起来很痛苦 :) 我绝对没有看到它的到来。不过谢谢!
    • 顺便说一句,如果您知道是否存在可以确定正则性的更受限制的正则语法超集,那么添加到答案中可能会很好。
    猜你喜欢
    • 1970-01-01
    • 2012-12-18
    • 2014-11-07
    • 1970-01-01
    • 2015-03-09
    • 2019-04-12
    • 2015-08-13
    • 2011-03-31
    • 2016-02-04
    相关资源
    最近更新 更多