编译原理第一章pt.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理第一章pt

编译原理;本课程的地位:;作用:;内容∶;学习任务∶;学习方法∶;学习要求∶;第一章 引论;课前思考;学习目标;学习指南;知识结构;程序设计语言与编译;翻译程序:就是把一种语言(称作源语言)书写的程序,在不改变语义的条件下,翻译成另一种语言(称作目标语言)的等价的程序。 ;编译 专指由高级语言转换为低级语言 解释 接受某高级语言的一个语句输入,进行解释便控制计算机执行,马上得到这句的执行结果,然后再接受下一句;编译程序和解释程序的区别:;… b:=2; a:=b+2; write a; …;夸稀妙叶撂埔系态啊引权棕辙锁亩挚骸政锗充顺铁伯孵窄堕服蔷捅差碟痰编译原理第一章pt编译原理第一章pt;枚弘汇房援既茎旗码酌吵岛儡虹雀清眯骂优鹊疹谣吮粥裙玖志导除哭潦踢编译原理第一章pt编译原理第一章pt;编译的转换过程 两阶段转换:编译——运行;三个阶段转换:编译——汇编——运行;解释执行;什么是编译程序;编译程序作为一个语言翻译程序,也要在翻译过程中检查源程序的语法和语义,报告一些出错和警告信息,帮助程序员更正源程序。;有关编译程序的术语 编译程序的源语言(源程序) 编译程序的目标语言(目标程序) 编译程序的实现语言 给出这些术语的英文: -编译程序---compiler -源语言---source language -源程序---source program -目标语言---target or object language -目标程序---target or object program -实现语言---implementation language ;编译程序在计算机系统中的所在层;来自计算机百科全书的定义 ;高级语言程序的处理过程;先看自然语言的翻译 1.识别出句子中的一个个单词 2.分析句子的语法结构 3.根据句子的含义进行初步翻译 4.对译文进行修饰 5.写出最后译文;编译过程概述;① 词法分析Scanner;例: int a; a=a+2;;识别右边程序中的单词;语法分析依照词法规则,识别出正确的单词,转换成统一规格,备用 转换 对基本字、运算符、界限符的转换 标识符的转换 常数的转换 转换完成后的格式:(类号、内码) 描述词法规则的有效工具是正规式和有限自动机;② 语法分析Parser;赋值语句的语法规则 A::=V=E E::=T|E+T T::=F|T*F F::=V|(E)|C V::=标识符 C::=常数;语法分析的方法 推导(derive)和归约(reduce) 推导 最左推导、最右推导 归约 最左归约、最右归约;语句id1:=id2+id3*10的语法树;id1:=id2+id3*10 ;例如: (1) 任何标识符是表达式。 (2) 任何常数(整常数、实常数)是表达式。 (3) 若表达式1和表达式2都是表达式, 那么表达式1+表达式2以及表达式1 * 表达式2都是表达式。;③ 语义分析Semantic Analyzer;例: Program p(); Var rate:real; procedure initial; … position := initial + rate * 10 /* error */ /* error */ /* warning */; …;10;④ 中间代码生成 Intermediate Code Generator;比如:源程序id1 := id2 + id3 * 10可生成四元式序列 ;四元式(运算符,运算对象1,运算对象2,结果)常写成赋值语句的形式 结果=运算对象1 运算符 运算对象2 比如c语言的源程序a = b * c + b * d 的四元式序列为 (1) t1 = b * c (2) t2 = b * d (3) t3 = t1 + t2 (4) a = t3;⑤ 代码优化; id1:= id2 + id3 * 10 (1) (inttoreal 10 - t1 ) (2) ( * id3 t1 t2 ) (3) ( + id2 t2 t3 ) (4) ( := t3 - id1 ) 变换 ? (1) ( * id3 10.0 t1 ) ( 2)( + id2 t1 id1 );主要方面 公共子表达式的提取、合并已知量、删除无用语句、循环优化等;例如将下面的语句转换成中??代码 for(k=1; k=100;k++) {m=i+10*k; n=j+10*k; }; k=1; 10 if k=100 then { m=i+10*k;

文档评论(0)

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

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

1亿VIP精品文档

相关文档