我知道要证明一种语言是非常规的,就可以使用抽取引理。我想我理解它是如何工作的,但是当谈到表明无上下文语法(或不是常规)时,我遇到了很大的问题。
以下是我无法理解如何展示常规(或非常规)的CFG示例:
i) S → NP VP
ii) NP → DET N
iii) VP → TV NP
iv) N → N N
v) N → A N
vi) NP → Mary |John
vii) DET → a |the |her |his
viii) TV → bought |loves |misses
ix) N → bike |jersey |mountain |sleeve |brake |
x) A → long |hydraulic |knitted |expensive |steep
我最初的猜测是,由于第四条规则,它不常规,但我不知道如何使用抽水引理来显示它。如果第四条规则被删除,那么它会不会是正规的?
所以,我的问题是: 1.上述语法是否有规律?当试图表明这样的CFG是常规的还是非常规的时,有什么方法? 2.如果移除了递归规则,那么它是否是常规的?
我希望有人有一些工具在给出如上所述的CFG时非常有用,当一个人想表明它是否有规律时。
答案 0 :(得分:0)
想要指出有两点需要注意:
答案 1 :(得分:0)
这里的其他答案指的是我认为你可能会遗漏的细微差别。无上下文语法是一组描述语言的规则,但它本身不是一种语言。因此,询问无上下文语法是否是常规的并不是一个有意义的问题 - 它就像询问所有自然数的集合是否可被17整除一样。
另一方面,问题"是这个CFG描述的语言一种常规语言?"是一个有意义的问题,在这种情况下答案是肯定的。为了表明这一点,你需要弄清楚所描述的语言实际上是什么样的,然后可以为它构建DFA / NFA,为它编写正则表达式,或者为它编写常规语法。在这种特殊情况下,我们可以看到语法等同于以下正则表达式:
(MJ | DET (A* N)*) TV (MJ | DET (A* N)*)
其中MJ,DET,A,N和TV是您提供的无上下文语法中表示的列表所给出的选项的缩写(MJ表示" Mary或John。")你可以为语法的语言写一个正则表达式,你有什么