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