欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    【软件技术基础】编译技术.ppt

    • 资源ID:11887321       资源大小:345KB        全文页数:58页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【软件技术基础】编译技术.ppt

    第6章 编译技术,6.1 编译程序的工作过程 6.2 状态矩阵法的编译过程 6.3 词法分析 6.4 中间语言表示 6.5 语法的分析与加工,编译程序是一种将高级语言编写的源程序编译成机器语言程序(称为目标程序)的实用程序。,6.1 编译程序的工作过程,为了将源程序翻译成目标程序,一般都要包括以下几个步骤。 输入源程序。 对以机内码表示的源程序进行词法分析,辨认出一个个单词符号。, 根据源语言的语法规则进行语法分析。 在实际运行之前,通常还要对目标程序的各部分进行连接装配 。 对于块结构的语言(如C语言和FORTRAN语言等),通常是进行分块编译,分别得到半目标程序,最后可用装配程序组装成一个完整的程序。,编译程序一般要包含以下几个程序模块。 (1)词法分析程序 (2)语法分析程序 (3)加工程序 (4)优化修饰部分 (5)装配程序或连接编辑程序,6.2 状态矩阵法的编译过程,6.2.1 状态矩阵法的基本原理 所谓“状态”,粗略地说,是表示过去已经扫描了什么语法成分,以便当遇到新的语法符号时,在不同的状态下对该语法符号作出不同的处理。 状态矩阵法的核心是状态矩阵(也称状态表),如表6.1所示。,6.2.2 状态矩阵的压缩 在具体实现状态矩阵法时,为了节省存储空间,通常要对状态矩阵进行压缩。,各列的意义如下: 状态 指状态栈栈顶项中所包含的可能状态。 符号 指当前扫描到的可能符号。 加工子程序 指当前遇到的相应状态符号配对时编译程序应做的工作。, 状态改变 指出在做完相应的编译工作后其状态栈如何改变。 综上所述,状态矩阵法的编译过程是按照存放在内存中的状态表不断地进行解释执行的。,6.3 词法分析,6.3.1 词法分析的任务 词法分析是编译过程各阶段的基础和必要的准备。 词法分析的主要任务是从源程序语句中识别出具有独立意义的语法单位(即语法符号),并且建立一个符号表,用以保存各语法符号的属性。,表6.4中的符号最后都变成二进制形式的代码串。 可以将这些通用符号建立一个通用符号表,这些符号的代码可用较大的编号来表示,如表6.5所示。 在这种情况下,上述赋值语句经词法分析后可以得到一张符号表如表6.6所示 。,6.3.2 读字符程序 读字符程序的任务是从源程序字符串中顺序读出基本符号,并作一些简单的处理后提供给词法分析程序。 6.3.3 状态矩阵法的词法分析过程 词法分析程序可以用状态矩阵法来实现。,由图6.4可以看出,每执行一次这个程序,就顺序从源程序中读出一个语法符号,并且将有关的信息存放在一些工作单元中。,下面以FORTRAN语言为例来说明用状态矩阵法实现词法分析的过程。为简单起见,作如下一些假设: 不考虑格式语句。 不考虑数的翻译。 不考虑以E开头的运算符,且运算符只有两个字母。,6.3.4 算术常数的识别和翻译 在词法分析的过程中,不仅要识别出常数,还需要将常数翻译成统一的格式。 经过词法分析后,所有的实数都分解成两部分:一部分是有效数字的所有位组成的正整数;另一部分是以10为底的整数指数部分。,6.4 中间语言表示,“中间语言”,为能用来表述源程序并与之等效的一种编码方式。 6.4.1 波兰表示 一个表达式的波兰表示就是后缀表示,即表达式中的运算对象写在前面,运算符写在后面。,(1)赋值语句 X=e 其中e为表达式。若将赋值号“=”看作是一种双目运算符,则此赋值语句的波兰表示定义为: Xe=,(2)无条件转向语句 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 DEFF,6.4.2 三元组表示 波兰表示有一个缺点,就是不便于作代码的优化。 三元组表示的一般形式为: k,( o1 o2),6.5 语法的分析与加工,语法分析和加工的主要任务有以下几项。 识别出各种类型的语句,并进行语法检查。 语法的加工处理。 编译程序工作的最后结果是产生目标程序或半目标程序。,6.5.1 优先矩阵法 优先矩阵法的基本思想如下。 将程序设计语言中的所有算符(广义运算符,包括算术运算符、分隔符、拼写定义符及界限符和等)设置一个优先关系,而这种优先关系用一张优先矩阵表来表示。,6.5.2 优先数法 基于算符的优先数进行编译的方法称为优先数法。,6.5.3 状态矩阵法 状态矩阵法用表格形式来描述编译过程,因此条理十分清楚,这是其他方法所不及的。,6.5.4 递归子程序法 递归子程序法的基本思想是:从整个源程序开始,根据各种语法成分的形成规则从大到小逐层往细分析处理,而对于每个递归定义的语法成分,都用一个相应的递归子程序来进行处理。,

    注意事项

    本文(【软件技术基础】编译技术.ppt)为本站会员(scccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开