第2-3文法的化简和分类.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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)是一文法,XVNVT,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’NVT)*,则将A加入V’N中; (3)重复(2),直到V’N不再增大; (4)对于每个A P,若   (V’NVT)*,则置A 于P’中. 算法2.2 任给文法G= (VN,VT,P,S),构造G’=(V’N,V’T,P’,S’), 使x (V’NV’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: SaS | W | U Ua V bV |ac W aW 现对G执行算法2.1: 1.由Ua 和Vac右部都是终结符,V‘N={U,V}; 2.对于SU,由U  V’N 有V’N={S,U,V}; 此外再无可放入V’N的符号;P1为 S aS | U Ua V bV |ac 现对G1执行算法2.2: 1.置V’N ={S}; 2.由SU及U a将U及a分别放入V’N (={S,U})和V’T (={a})中; 3.此外, V’N 和V’T不再增大; 4.最后结果为: S aS | U Ua 注意,在删除无用符和无用产生式时,应先执行算法2.1再执行算法2.2,就可得到“干净”的文法;若先执行算法2.2,再执行算法2.1所得文法不一定“干净” 2.4.2 -产生式的消除 -产生式是指右部为一空符号串的产生式。因为某些语法分析算法要求不含~,此时应消除之 若一语言不含(即L(G)),则可将其完全消除; 若L(G),则可将文法改造为只有开始符S可推导出(即S P),而且,S不出现在任何产生式的右部,此外再无其它-产生式. 本节中的算法2.3可用于找出所有可推导出的非终结符 W={A| A* , AVN} 执行完算法2.3,通过检验SW与否可知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)机识别。 例如:SACaB CaaaC CBDB CBE aDDa ADAC aEEa AE 就是一个0型文法,它所产生的语言 对于程序设计语言来,0型文法有很大的随意性,还须加以限制 1型文法和语言 若一0型文法所有产生式具有形式 1A2 12 其中, 1,2V* V+ AVN,则称G 为1型(前后文有关)文法,记为CSG ( Context Sensitiv

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档