总结
这是根据《编译原理教程(第四版)》胡元义 整理的
(我看过其他老师上的,讲的有点不同,不同的地方我放在注意点里说明)
4类文法的区别
0型
唯一的限制:产生式左部必须有一个非终结符
1型
与0型唯一的区别:产生式右部不能为空(为了保证右部长度不短于左边长度)
2型
唯一的限制:产生式左部有且仅有一个非终结符
3型
与2型的唯一区别:产生式右部至多有一个非终结符
注意点
关于2型
必须在、的上下文环境中才能被所替换,这是确定的
然后书上是说,产生式右部必须至少有一个非终结符,,即1型文法不可能出现形式的产生式。
还有一种说法是:
(1)若有,那么不得出现在产生式右部
(2)一般不允许替换成,除非开始符号产生
那么这种说法,产生式右部就允许没有非终结符的情况
【两者本质没差: 】
如果按照这种说法,那么文法之间的关系就是:
否则,如总结表格所说,2、3型文法不一定属于1型文法,因为2、3型文法可能有
具体是哪种说法,以大家老师教的为主。