如何确定无上下文语法是否描述了常规语言?

时间:2015-07-27 00:24:25

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

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

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

如果有帮助,这里是我作为输入可能会收到的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:

1 个答案:

答案 0 :(得分:2)

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

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