- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理第二章 前后文无关文法和语言
主讲教师: 王慧娇
E-mail: whj@guet.edu.cn
手机: 三类:
(1)无用符号和无用产生式的删除
(2) -产生式的消除
(3)单产生式的消除
2.4 文法的化简与改造
2.4 文法的化简与改造
2.4.1 无用符号和无用产生式的删除
设G=(VN,VT,P,S)是一文法,XVNVT,X称为是有用的,若X至少出现在一个句子的推导过程中,即X满足:
(1) 存在, V* ,有 S* X (2.12)
(2)存在w VT*,使 X * w (2.13)
否则,称X是无用的.若一产生式含有无用符号,则此产生式称为无用产生式.
无用产生式给语法分析带来了许多麻烦,应予以删除.
消除无用产生式的算法
算法2.1 将文法G = (VN,VT,P,S),改造为G1=(V’N,VT,P’,S),使得对于每个X V’N,存在w VT*,满足 X* w.
(1)置V’N,P’为空;
(2)对于P中每个产生式A,若 (V’NVT)*,则将A加入V’N中;
(3)重复(2),直到V’N不再增大;
(4)对于每个A P,若 (V’NVT)*,则置A 于P’中.
算法2.2 任给文法G= (VN,VT,P,S),构造G’=(V’N,V’T,P’,S’), 使x (V’NV’T), , (V’N V’T)*, 有 S * x
(1)置V’T为空,V’N={S};
(2)对于 A P,若 A V’N则置中所有非终结符入V’N ,所有终结符入V’T ;
(3)重复(2),直到V’不再增大;
(4)令P’={A | A P, (V’N V’T)*,A V’N}
消除无用产生式的例子
例 G=({S,U,V,W},{a,b,c},P,S),其中,P:
SaS | W | U Ua V bV |ac W aW
现对G执行算法2.1:
1.由Ua 和Vac右部都是终结符,V‘N={U,V};
2.对于SU,由U V’N 有V’N={S,U,V};
此外再无可放入V’N的符号;P1为
S aS | U Ua V bV |ac
现对G1执行算法2.2:
1.置V’N ={S};
2.由SU及U a将U及a分别放入V’N (={S,U})和V’T (={a})中;
3.此外, V’N 和V’T不再增大;
4.最后结果为:
S aS | U Ua
注意,在删除无用符和无用产生式时,应先执行算法2.1再执行算法2.2,就可得到“干净”的文法;若先执行算法2.2,再执行算法2.1所得文法不一定“干净”
2.4.2 -产生式的消除
-产生式是指右部为一空符号串的产生式。因为某些语法分析算法要求不含~,此时应消除之
若一语言不含(即L(G)),则可将其完全消除;
若L(G),则可将文法改造为只有开始符S可推导出(即S P),而且,S不出现在任何产生式的右部,此外再无其它-产生式.
本节中的算法2.3可用于找出所有可推导出的非终结符 W={A| A* , AVN}
执行完算法2.3,通过检验SW与否可知L(G)与否;
算法2.4可消除L(G)情况时的-产生式;
算法2.5可消除L(G)情况时的-产生式.
2.4.3 单产生式的消除 (略)
2.5 文法和语言的Chomsky分类
文法的四元组表示是由N.Chomsky于1956年描述形式语言时给出的。他还对产生式的形式给予不同的限制而定义了四类基本文法。
0型文法, 1型文法, 2型文法, 3型文法
0型文法和语言
0型文法:若P中任一产生式都有一般形式
V+ V* 且对, 不加任何限制,
则称G为0型文法(短语结构文法,记为PSG: Phrase Structure Grammar)。由0型文法生成(或者说:定义)的语言称为0型(递归可枚举)语言。它可由图灵(Turing)机识别。
例如:SACaB CaaaC CBDB CBE aDDa ADAC aEEa AE 就是一个0型文法,它所产生的语言
对于程序设计语言来,0型文法有很大的随意性,还须加以限制
1型文法和语言
若一0型文法所有产生式具有形式 1A2 12 其中, 1,2V* V+ AVN,则称G 为1型(前后文有关)文法,记为CSG ( Context Sensitiv
文档评论(0)