- 1、本文档共55页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.三元式
《编译原理》学习资料
第一章 引论
教学要求
掌握:编译的概念,编译的过程
理解:编译的各个阶段
了解:编译的组合
1.1什麽是编译程序
什么是编译程序(compiler)
编译程序是现代计算机系统的基本组成部分.从功能上看,一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序.
1.2编译过程和编译程序的结构
1.编译程序的结构
(1)词法分析
从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。
(2)语法分析
在词法分析的基础上将单词系列分解成各类语法短语,如“程序”,“语句”,“表达式”等。语法分析的依据是语言的语法规则,即描述程序结构的规则,通过语法分析确定整个输入串是否构成一个语法上正确的程序。程序的结构通常是由递归规则表示的。
语法树(推导树)(parse tree or derivation tree)
(3)语义分析
是审查源程序有无语义错误,为代码生成阶段收集类型信息。
语义分析进行类型审查,审查每个算符是否具有语言规范允许的运算对象,如有的编译程序对实数用作数组下标的情况报告错误,二目运算施于一整型和一实型时,强制转换,并不认为是源程序的错误。
语义分析(semantic analysis)
(4)中间代码生成
将源程序生成一种内部表示形式,这种内部表示形式叫中间代码。
中间代码生成(intermediate code generation)
(5)代码优化
此阶段的任务是对前阶段产生的中间代码进行变换和改造,目的是使生成的目标代码更为高效,即省时间省空间。
(6)目标代码生成
把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码,它的工作与硬件系统和指令含义有关。
(7)符号表管理
记录源程序中使用的名字,收集每个名字的各种属性信息。
(8)出错处理
检查错误、报告出错信息、排错、恢复编译工作。
2.编译阶段的组合
编译的过程分为前端和后端。
前端:由主要依赖于源语言而与目标机无关的阶段组成。词法分析,语法分析,语义分析,中间代码,相关的出错和表格管理程序。
后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段。目标代码,相关的出错和表格管理程序。
遍(趟)从头到尾扫描源程序(各种形式)一遍(pass)
1.3解释程序
功能 让计算机执行高级语言(例如:basic,lisp,prolog)
与编译程序的不同 1)不生成目标代码
第三章 文法和语言
教学要求
掌握:文法的概念,语言的定义,符号串,文法的形式定义,0型文法,1型文法,2型文法,3型文法,短语,直接短语,句柄
理解:自上而下与自下而上的分析方法
了解:上下文无关文法中的规则
3.1 文法的直观概念和语言概述
当我们表述一种语言时,无非是说明这种语言的句子,如果语言只含有有穷多个句子,则只需列出句子的有穷集就行了,但对于含有无穷句子的语言来讲,存在着如何给出它的有穷表示的问题。
1.语言概述
语言是由句子组成的集合,是由一组符号所构成的集合。
汉语--所有符合汉语语法的句子的全体
英语--所有符合英语语法的句子的全体
程序设计语言--所有该语言的程序的全体
每个句子构成的规律
2.研究语言 每个句子的含义
每个句子和使用者的关系
3.研究程序设计语言
每个程序构成的规律
每个程序的含义
每个程序和使用者的关系
4.语言研究的三个方面
语法 Syntax
语义 Semantics
语用 Pragmatics
语法 -- 表示构成语言句子的各个记号之间的组合规律
语义 -- 表示各个记号的特定含义。(各个记号和记号所表示的对象之间的关系)
语用 --表示在各个记号所出现的行为中,它们的来源、使用和影响。
每种语言具有两个可识别的特性,即语言的形式和该形式相关联的意义。
语言的实例若在语法上是正确的,其相关联的意义可以从两个观点来看,其一是该句子的创立者所想要表示的意义,另一是接收者所检验到的意义。这两个意义并非总是一样的,前者称为语言的语义,后者是其语用意义。幽默、双关语和谜语就是利用这两方面意义间的差异。
如果不考虑语义和语用,即只从语法这一侧面来看语言,这种意义下的语言称作形式语言。形式语言抽象地定义为一个数学系统。“形式”是指这样的事实:语言的所有规则只以什麽符号串能出现的方式来陈述。形式语言理论是对符号串集合的表示法、结构及其特性的研究。是程序设计语言语法分析研究的基础。
3.2符号
文档评论(0)