中国传媒大学《编译原理》课件-第1章引论.pptVIP

中国传媒大学《编译原理》课件-第1章引论.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大学,本科,专科,硕士,笔记,课件,期中试卷答案,期末试卷答案,教材答案,知识点,经济法,材料科学基础,材料力学,电路,电子技术基础,高频电子线路,宏观经济学,模拟电路基础,模拟电子技术,数字电路,数字电子技术,数字信号处理,通信原理,信号与系统,化工原理,机械设计基础,机械原理,机械制图,微机原理与接口技术,C++程序设计,JAVA技术与应用,MATLAB基础与应用,计算机网络,计算机组成原理,软件工程数据结构,工程力学,工程热力学,结构力学,力学,流体力学,水力学,工程测量,工程经济学,工程

CompilerPrinciples * 2.关于文法等价变换的几个定理 (1)对任一文法G1都可以构造文法G2,使得L(G1)=L(G2),但G2的开始符号不出现在任何产生式的右部。 例1: G1: E→E+E∣E*E∣(E)∣i G2: S→E E→E+E∣E*E∣(E)∣i 具体做法:加一条单个非产生式S→E即可。 (2)对任一文法G1都可以构造文法G2,使得L(G1)=L(G2),但G2的每个非终结符都能导出一个终结符号串。 可给出如下证明: CompilerPrinciples * 证明: ①令β={A∣A→t∈G1A∈VT+}; ②递归扩充:β=β∪{W∣W→xx∈(VT∪β)+} 由于G1的非终结符号是有穷的,上述过程一定是收敛的; ③从G1的VN中删除不包含在β中的非终结符,并从其产生式集中删除其左部或右部中包含不属于β中的符号的产生式,这样得到的文法即为所要的G2。 CompilerPrinciples * 例:G1[A]: A→Bed∣dD B→b D→Ea∣AD∣DB E→Da∣Eb ①β={B} ②β={B}∪{A}={A,B},到此为止; 于是D,E及相关D,E的产生式均可删除,得到: G2[A]: A→Bed B→b 可以证明L(G1)=L(G2)。 类似还可以给出如下定理: (3)对任一文法G1都可以构造文法G2,使得L(G1)=L(G2),但G2的每个非终结符都出现在某一句型中。 CompilerPrinciples * (4)对任一文法G1都可以构造文法G2,使得L(G1)=L(G2),但G2中不含单个非产生式。如:G1[A]: A→B∣dD G2[A]: A→dD∣b∣c B→A∣C∣b D→d∣Da C→B∣c D→d∣Da (5)对任一文法G1都可以构造文法G2,使得L(G1)=L(G2),但G2中不含空产生式。 形如 E→ε的产生式称为空产生式。 (6)对任一文法G1都可以构造文法G2,使得L(G1)=L(G2),但G2中不含有左递归。 形如 E→E+T的产生式称为左递归的。 CompilerPrinciples * 四、语法树和文法二义性 1.语法树: 语法树是了解句子语法结构的一种辅助工具。树根即为开始符号所标记的结点。随着推导的展开,某个非终结符被它的产生式右部所替换时,则产生出下一代新结点。每个新结点和其父结点间都有一条连线。 于是,可给出如下的定义: CompilerPrinciples * 设G=( VN,VT, S, P)为一cfg,若一棵树满足下列4个条件,则此树称作G的语法树(推导树)(派生树): 1. 每个结点都有一个标记,此标记是V的一个符号 2. 根的标记是S 3. 若一结点n至少有一个它自己除外的子孙,并且有标记A,则肯定A∈VN 4. 如果结点n有标记A,其直接子孙结点从左到右的次序是n1,n2,…,nk,其标记分别为A1,A2,…,Ak,那么A→A1A2,…,Ak一定是P中的一个产生式 语法树的结果: 从左到右读出叶子的标记而构成的行谓之句型。 CompilerPrinciples * 给定文法G=(VN,VT,P,S),对于G的任何句型都能构造与之关联的语法树(推导树)。 定理: G为上下文无关文法, 对于α≠ε,有S ? * α,当且仅当 文法G有以α为结果的一棵语法树(推导树) 这里对该定理不作证明。 CompilerPrinciples * 例如:文法G[E]: E→E+E∣E*E∣(E)∣i 显然(i+i)*i是该文法产生的一个句子,它的推导过程可以用右边的语法树来描述。 子树与简单子树 只有单层分支的子树 代次 2 1 3 4 5 E E * E ( E ) E + E i i i CompilerPrinciples * 在一棵语法树生长过程中的任何时刻,所有叶结点从左到右依次排列起来就是一个句型。这就是说,一棵语法树表示了一个句型种种可能的(但未必是所有的)不同推导过程,包括最左(最右)推导。如果我们坚持使用最左(最右)推导,那么一棵语法树就完全等价于一个最左(最右)推导。 CompilerPrinciples * 文法G[E]: E → i E → E+E E → E*E E → (E) E E + E E * E i i i E E * E i

文档评论(0)

翰林大当家 + 关注
实名认证
服务提供商

文案个性定制,计划书、方案、策划书专业撰写。

1亿VIP精品文档

相关文档