版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件技术基础第一页,共五十八页,2022年,8月28日编译程序是一种将高级语言编写的源程序编译成机器语言程序(称为目标程序)的实用程序。第二页,共五十八页,2022年,8月28日6.1编译程序的工作过程
为了将源程序翻译成目标程序,一般都要包括以下几个步骤。①输入源程序。②对以机内码表示的源程序进行词法分析,辨认出一个个单词符号。第三页,共五十八页,2022年,8月28日③根据源语言的语法规则进行语法分析。④在实际运行之前,通常还要对目标程序的各部分进行连接装配。对于块结构的语言(如C语言和FORTRAN语言等),通常是进行分块编译,分别得到半目标程序,最后可用装配程序组装成一个完整的程序。第四页,共五十八页,2022年,8月28日第五页,共五十八页,2022年,8月28日第六页,共五十八页,2022年,8月28日编译程序一般要包含以下几个程序模块。(1)词法分析程序(2)语法分析程序(3)加工程序(4)优化修饰部分(5)装配程序或连接编辑程序第七页,共五十八页,2022年,8月28日6.2状态矩阵法的编译过程6.2.1状态矩阵法的基本原理所谓“状态”,粗略地说,是表示过去已经扫描了什么语法成分,以便当遇到新的语法符号时,在不同的状态下对该语法符号作出不同的处理。状态矩阵法的核心是状态矩阵(也称状态表),如表6.1所示。第八页,共五十八页,2022年,8月28日第九页,共五十八页,2022年,8月28日6.2.2状态矩阵的压缩在具体实现状态矩阵法时,为了节省存储空间,通常要对状态矩阵进行压缩。第十页,共五十八页,2022年,8月28日第十一页,共五十八页,2022年,8月28日第十二页,共五十八页,2022年,8月28日各列的意义如下:①状态指状态栈栈顶项中所包含的可能状态。②符号指当前扫描到的可能符号。③加工子程序指当前遇到的相应状态符号配对时编译程序应做的工作。第十三页,共五十八页,2022年,8月28日④状态改变指出在做完相应的编译工作后其状态栈如何改变。综上所述,状态矩阵法的编译过程是按照存放在内存中的状态表不断地进行解释执行的。第十四页,共五十八页,2022年,8月28日第十五页,共五十八页,2022年,8月28日6.3词法分析6.3.1词法分析的任务词法分析是编译过程各阶段的基础和必要的准备。词法分析的主要任务是从源程序语句中识别出具有独立意义的语法单位(即语法符号),并且建立一个符号表,用以保存各语法符号的属性。第十六页,共五十八页,2022年,8月28日第十七页,共五十八页,2022年,8月28日表6.4中的符号最后都变成二进制形式的代码串。可以将这些通用符号建立一个通用符号表,这些符号的代码可用较大的编号来表示,如表6.5所示。在这种情况下,上述赋值语句经词法分析后可以得到一张符号表如表6.6所示。第十八页,共五十八页,2022年,8月28日第十九页,共五十八页,2022年,8月28日第二十页,共五十八页,2022年,8月28日6.3.2读字符程序读字符程序的任务是从源程序字符串中顺序读出基本符号,并作一些简单的处理后提供给词法分析程序。6.3.3状态矩阵法的词法分析过程词法分析程序可以用状态矩阵法来实现。第二十一页,共五十八页,2022年,8月28日由图6.4可以看出,每执行一次这个程序,就顺序从源程序中读出一个语法符号,并且将有关的信息存放在一些工作单元中。第二十二页,共五十八页,2022年,8月28日第二十三页,共五十八页,2022年,8月28日下面以FORTRAN语言为例来说明用状态矩阵法实现词法分析的过程。为简单起见,作如下一些假设:①不考虑格式语句。②不考虑数的翻译。③不考虑以E开头的运算符,且运算符只有两个字母。第二十四页,共五十八页,2022年,8月28日第二十五页,共五十八页,2022年,8月28日第二十六页,共五十八页,2022年,8月28日第二十七页,共五十八页,2022年,8月28日第二十八页,共五十八页,2022年,8月28日第二十九页,共五十八页,2022年,8月28日第三十页,共五十八页,2022年,8月28日第三十一页,共五十八页,2022年,8月28日6.3.4算术常数的识别和翻译在词法分析的过程中,不仅要识别出常数,还需要将常数翻译成统一的格式。经过词法分析后,所有的实数都分解成两部分:一部分是有效数字的所有位组成的正整数;另一部分是以10为底的整数指数部分。第三十二页,共五十八页,2022年,8月28日第三十三页,共五十八页,2022年,8月28日第三十四页,共五十八页,2022年,8月28日第三十五页,共五十八页,2022年,8月28日第三十六页,共五十八页,2022年,8月28日6.4中间语言表示“中间语言”,为能用来表述源程序并与之等效的一种编码方式。6.4.1波兰表示一个表达式的波兰表示就是后缀表示,即表达式中的运算对象写在前面,运算符写在后面。第三十七页,共五十八页,2022年,8月28日(1)赋值语句
X=e其中e为表达式。若将赋值号“=”看作是一种双目运算符,则此赋值语句的波兰表示定义为:Xe=第三十八页,共五十八页,2022年,8月28日(2)无条件转向语句
GOTOn
的波兰表示为:
nGOTO第三十九页,共五十八页,2022年,8月28日(3)逻辑条件语句
IFCS
的波兰表示为:
CSLIF第四十页,共五十八页,2022年,8月28日(4)子程序调用语句
CALLS(y1,y2,…,yn)
的波兰表示为:
y1,y2,…,ynSSUB第四十一页,共五十八页,2022年,8月28日(5)维数说明语句
DIMENSIONA(N,M)
的波兰表示为:
NMADIM第四十二页,共五十八页,2022年,8月28日(6)函数子程序段头语句
FUNCTIONF(X1,X2,…,XN)
的波兰表示为:
X1,X2,…,XNFDEFF第四十三页,共五十八页,2022年,8月28日6.4.2三元组表示波兰表示有一个缺点,就是不便于作代码的优化。三元组表示的一般形式为:k,(θo1o2)第四十四页,共五十八页,2022年,8月28日第四十五页,共五十八页,2022年,8月28日第四十六页,共五十八页,2022年,8月28日第四十七页,共五十八页,2022年,8月28日第四十八页,共五十八页,2022年,8月28日第四十九页,共五十八页,2022年,8月28日第五十页,共五十八页,2022年,8月28日6.5语法的分析与加工语法分析和加工的主要任务有以下几项。①识别出各种类型的语句,并进行语法检查。②语法的加工处理。③编译程序工作的最后结果是产生目标程序或半目标程序。第五十一页,共五十八页,2022年,8月28日6.5.1优先矩阵法优先矩阵法的基本思想如下。将程序设计语言中的所有算符(广义运算符,包括算术运算符、分隔符、拼写定义符及界限符├和┤等)设置一个优先关系,而这种优先关系用一张优先矩阵表来表示。第五十二页,共五十八页,2022年,8月28日第五十三页,共五十八页,2022年,8月28日第五十四页,共五十八页,2022年,8月28日第五十五页,共五十八页,2022年,8月28日6.5.2优先数法基于算符的优先数进行编译的方法称为优先数法。第五十六页,共五十八页,2022年,8月28日6.5.3状态矩阵法状态
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026初级社会工作者《(初级)社会工作综合能力》真题及答案完整版
- 2026年企业人力资源管理师(四级)实操能力试卷含答案
- 叉车安全培训考试试题及答案
- 2026年手术安全核查相关试题(附答案)
- 2026食堂从业人员培训考试试题及参考答案
- 2026年电气设备安装工程施工组织设计安全知识考核试题及答案
- 中医药治未病服务中心建设方案
- 钻孔灌注桩施工方案
- 污水处理厂泵站安全运行规程
- 智慧高速公路建设工程实施方案
- 2026年医学-中国结直肠癌诊疗规范(2026版)-新版
- 2026年秋季开学初三学困生转化主题班会课件
- 广东省广州市番禺区铁一中学2024-2025学年八年级上学期期中测试物理试卷(含答案)
- 2026导游证考试高频考点试题汇编
- 2025年一级消防工程师继续教育考题及答案
- 2025海南国际经济发展局事业单位笔试试题
- 《传感器技术与应用》课件-12.2热电偶
- 2026和历年国企中层副职竞聘面试题专业题25问及答案
- 2025浙江宁波文旅会展集团有限公司招聘4人笔试历年备考题库附带答案详解
- 2026航天科工十院校园招聘笔试历年参考题库附带答案详解
- 2025年临夏州中小学教师招聘考试真题及答案
评论
0/150
提交评论