《软件技术基础教程》(徐士良版)全套PPT电子课件教案-第6章 编译技术

上传人:aa****6 文档编号:48798440 上传时间:2018-07-20 格式:PPT 页数:58 大小:345KB
返回 下载 相关 举报
《软件技术基础教程》(徐士良版)全套PPT电子课件教案-第6章  编译技术_第1页
第1页 / 共58页
《软件技术基础教程》(徐士良版)全套PPT电子课件教案-第6章  编译技术_第2页
第2页 / 共58页
《软件技术基础教程》(徐士良版)全套PPT电子课件教案-第6章  编译技术_第3页
第3页 / 共58页
《软件技术基础教程》(徐士良版)全套PPT电子课件教案-第6章  编译技术_第4页
第4页 / 共58页
《软件技术基础教程》(徐士良版)全套PPT电子课件教案-第6章  编译技术_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《《软件技术基础教程》(徐士良版)全套PPT电子课件教案-第6章 编译技术》由会员分享,可在线阅读,更多相关《《软件技术基础教程》(徐士良版)全套PPT电子课件教案-第6章 编译技术(58页珍藏版)》请在金锄头文库上搜索。

1、第6章 编译技术6.1 6.1 编译程序的工作过程编译程序的工作过程6.2 6.2 状态矩阵法的编译过程状态矩阵法的编译过程6.3 6.3 词法分析词法分析6.4 6.4 中间语言表示中间语言表示6.5 6.5 语法的分析与加工语法的分析与加工编译程序是一种将高级语言编写的源程序编译成机器语言程序(称为目标程序)的实用程序。 6.1 编译程序的工作过程 为了将源程序翻译成目标程序,一般 都要包括以下几个步骤。 输入源程序。 对以机内码表示的源程序进行词法分析,辨认出一个个单词符号。 根据源语言的语法规则进行语法 分析。 在实际运行之前,通常还要对目 标程序的各部分进行连接装配 。 对于块结构的

2、语言(如C语言和 FORTRAN语言等),通常是进行分块 编译,分别得到半目标程序,最后可用 装配程序组装成一个完整的程序。 编译程序一般要包含以下几个程序模块。 (1)词法分析程序 (2)语法分析程序 (3)加工程序 (4)优化修饰部分 (5)装配程序或连 接编辑程序6.2 状态矩阵法的编译过程6.2.1 状态矩阵法的基本 原理 所谓“状态”,粗略地说,是表示过去 已经扫描了什么语法成分,以便当遇到新 的语法符号时,在不同的状态下对该语法 符号作出不同的处理。 状态矩阵法的核心是状态矩阵(也称 状态表),如表6.1所示。 6.2.2 状态矩阵的压缩在具体实现状态矩阵法时,为了节省存储空间,通

3、常要对状态矩阵进行压缩。 各列的意义如下: 状态 指状态栈栈顶项中所包含的可能状态。 符号 指当前扫描到的可能符号。 加工子程序 指当前遇到的相应状态符号配对时编译程序应做的工作。 状态改变 指出在做完相应的编译工作后其状态栈如何改变。 综上所述,状态矩阵法的编译过程是按照存放在内存中的状态表不断地进行解释执行的。 6.3 词法分析6.3.1 词法分析的任务词法分析是编译过程各阶段的基础和 必要的准备。 词法分析的主要任务是从源程序语句 中识别出具有独立意义的语法单位(即语 法符号),并且建立一个符号表,用以保 存各语法符号的属性。 表6.4中的符号最后都变成二进制 形式的代码串。 可以将这些

4、通用符号建立一个通 用符号表,这些符号的代码可用较大 的编号来表示,如表6.5所示。在这种情况下,上述赋值语句经 词法分析后可以得到一张符号表如表 6.6所示 。6.3.2 读字符程序读字符程序的任务是从源程序字符串中 顺序读出基本符号,并作一些简单的处理后提 供给词法分析程序。 6.3.3 状态矩阵法的词法分析 过程 词法分析程序可以用状态矩阵法来实现 。 由图6.4可以看出,每执行一次这个程序,就顺序从源程序中读出一个语法符号,并且将有关的信息存放在一些工作单元中。下面以FORTRAN语言为例来说明用状态矩阵法实现词法分析的过程。为简单 起见,作如下一些假设: 不考虑格式语句。 不考虑数的

5、翻译。 不考虑以E开头的运算符,且运算符只有两个字母。6.3.4 算术常数的识别和翻译在词法分析的过程中,不仅要识别出 常数,还需要将常数翻译成统一的格式。 经过词法分析后,所有的实数都分解 成两部分:一部分是有效数字的所有位组 成的正整数;另一部分是以10为底的整数指数部分。 6.4 中间语言表示 “中间语言”,为能用来表述源程序并 与之等效的一种编码方式。 6.4.1 波兰表示一个表达式的波兰表示就是后缀表示 ,即表达式中的运算对象写在前面,运算 符写在后面。 (1)赋值语 句X=e 其中e为表达式。若将赋值号“=” 看作是一种双目运算符,则此赋值语 句的波兰表示定义为: Xe=(2)无条

6、件转向语句GOTO n的波兰表示为:n GOTO(3)逻辑条件语句 IF C S的波兰表示为:C S LIF(4)子程序调用语句CALL S(y1,y2,yn)的波兰表示为:y1,y2,yn S SUB(5)维数说明语句DIMENSION A(N,M)的波兰表示为:N M A DIM(6)函数子程序段头语句FUNCTION F(X1,X2,XN)的波兰表示为:X1,X2,XN F DEFF6.4.2 三元组表示波兰表示有一个缺点,就是不便于作代码的优化。 三元组表示的一般形式为:k,( o1 o2)6.5 语法的分析与加工 语法分析和加工的主要任务有 以下几项。 识别出各种类型的语句,并 进行

7、语法检查。 语法的加工处理。 编译程序工作的最后结果是 产生目标程序或半目标程序。6.5.1 优先矩阵法优先矩阵法的基本思想如下。将程序设计语言中的所有算符(广 义运算符,包括算术运算符、分隔符、 拼写定义符及界限符和等)设置一个优先关系,而这种优先关系用一张优先 矩阵表来表示。 6.5.2 优先数法基于算符的优先数进行编译的方法称 为优先数法。6.5.3 状态矩阵法状态矩阵法用表格形式来描述编译过程,因此条理十分清楚,这是其他方法所不及的。 6.5.4 递归子程序法递归子程序法的基本思想是:从整个源程序开始,根据各种语法成分的形成规则从大到小逐层往细分析处理,而对于每个递归定义的语法成分,都用一个相应的递归子程序来进行处理。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号