- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1章编译原理答案(主编张晶).ppt
为什么要学习编译原理 必修主干课程:操作系统和编译系统构成程序设计者与计算机之间的基本界面。 通过学习该课程,掌握编译的基本理论、常用的编译技术,了解编译过程及编译系统结构和机理。能运用所学技术解决实际问题,能独立编写一个小型编译系统。 此外,通过学习编译原理可以更好地理解程序语言的内部机制,从而更好地理解和运用程序设计语言。能运用编译程序构造的原理和技术完成相关软件工具的设计和开发工作。 补充:公共邮箱 wwjjsj@163.com 密码 编译原理与其它课程关系 第一章 引言 学习目标 了解和掌握高级程序设计语言与编译程序的关系 了解和掌握编译程序的功能 了解和掌握编译程序的体系结构 了解和掌握编译程序的工作过程 1.1 编译程序、汇编程序、解释程序 1.2 编译过程及结构 1.3 编译程序的组织及开发 低级语言(Low level Language) 字位码、机器语言、汇编语言 特点:与特定的机器有关,功效高,但使用复杂、繁 琐、费时、易出错 高级语言 -- Fortran、Pascal、C 语言等 特点:不依赖具体机器,移植性好、对用户要求低、易使用、易维护等。 源程序的编译和运行 编译或汇编阶段 运行阶段 工作过程 编译过程是指将高级语言程序翻译为等价的目标程序的过程。 翻译和编译工作的比较 概念 单词token:是语言的基本语法单位 保留字reserved word (有时也叫关键字) (如:if、else、while) 标识符identifier(如:max、min、str) 常数 (如:12、6.8) 分界符(有时也叫运算符)(如:+、-、*、/、;、(、) ) 如:This line is a longer sentence 语法分析 又例: position := initial + rate * 60 ; (Pascal)规则 赋值语句::=标识符“:=”表达式 表达式::=表达式“+”表达式 表达式::=表达式“*”表达式 表达式::=“(”表达式“)” 表达式::=标识符 表达式::=整数 表达式::=实数 id1:=id2+id3*N 进一步分析语法结构正确的程序是否符合源程序的上下文约束、运算相容性等规定。 审查静态语义 使用的变量声明了吗? 允许操作的运算对象吗? 类型正确吗? … 语义分析 句子的结构理解了,扑捉它的“含义” 如:杰克说杰瑞把他的作业落在了家里。 “他的”是谁的? 又:杰克说杰克把他的作业落在了家里。 几个杰克? 语义分析 杰克把她的作业落在了家里。 (杰克是男生)“杰克”和“她的”不一致。 “杰克”和“他的”才匹配 语义分析(语言的规定和实现) int arr[2], c; c = arr * 10; “中间代码”是一种含义明确、便于处理的记号系统。 如:三元式、四元式、逆波兰式。 例:四元式(运算符,第一运算量,第二运算量,结果) x:= a*b+c (*, a, b, T1) (+,T1, c, T2 ) (:=, T2 , -, x) 代码优化 1.3 编译程序的组织及开发 编译程序是一个非常复杂的软件系统,虽然编译理 论和技术不断发展,开发周期缩短,但研制仍需大量时 间。追求目标过程自动化。 1.2.4 中间代码 id1:= id2 + id3 * 60 (1) (inttoreal, 60 - t1 ) (2) (* , id3 t1 t2 ) (3) (+ , id2 t2 t3 ) (4) (:= , t3 - id1 ) 1.2.5 代码优化 任务 所做转换 依据 程序等价变换规则 主要理论基础 数据流方程 中间代码 中间代码(优化后) 对于代码(主要是中间代码)进行加工变换,以期能够产生更为高效(省时间和空间)的目标代码 。 id1:= id2 + id3 * 60 (1) (inttoreal 60 - t1 ) (2) ( * id3 t1 t2 ) (3) ( + id2 t2 t3 ) (4) (
文档评论(0)