编译原理入门.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章 绪论 1.1 编译过程概述 1.2 编译程序的逻辑结构 1.3 编译程序的组织 第一章 绪论 程序设计语言分低级语言和高级语言两类。 低级语言:机器语言、汇编语言及其它面向机器的程序设计语言;其特点为对计算机的依赖性强、直观性差、编写程序的工作量大,对程序设计人员要求较高。 高级语言:有几百种之多,常用的有BASIC、FORTRAN、PASCAL、C、JAVA等,高级语言在算法描述能力、编写和调试效率上均比低级语言优越。 但高级语言与机器之间有一“鸿沟”:机器不能理解高级语言! 因此,要在计算机上实现高级语言,需使该语言能让计算机所理解。 方法:对程序进行翻译或进行解释。 翻译:在计算机中放置一能由计算机直接执行的翻译程序,它将某程序设计语言(源语言)所编写的程序(源程序)作为加工对象,将其翻译成为与之等价的另一种语言(目标语言)的程序(目标程序)。 可见,计算机执行某高级语言程序,需经两个阶段,即编译阶段和运行阶段。 在执行时,一般应有一些辅助子程序配合。 如:数据格式转换子程序、标准函数、动态存储分配子程序等等,由它们构成的子程序库称为运行系统。 编译系统=编译程序+运行系统 编译程序与解释程序 高级语言程序也可通过解释程序来执行。 解释程序:以源程序为输入,在执行过程中不再产生目标程序,而是边解释边执行。 解释程序运行效率不高。 目前,纯粹的解释程序已不多见,通常是将编译和解释作某种程度的结合。 本课程的目的 编译程序是现今任何计算机系统的最重要的系统程序。 本课程的目的,在于向大家介绍设计和构造编译程序的基本原理和基本方法,其中许多方法也适用于构造解释程序或汇编程序。 1.1 编译过程概述 翻译外文书刊与编译工作比较 编译程序的构成 编译程序主要由八个部分构成: 1.词法分析程序(扫描器 scanner) 2.语法分析程序(分析器 parser) 3.语义分析程序 4.中间代码生成程序 5.代码优化程序 6.目标代码生成程序 7.错误检查和处理程序 8.各种信息表格的管理程序 一个微型PASCAL语言的定义 为了便于说明,引入一个微型PASCAL语言(PASCAL/M)的定义。它只有如下四种语句: 1)PROGRAM语句; 2)说明语句; 3)BEGIN-END语句; 4)赋值语句; 每个PASCAL/M语句都以PROGRAM语句开头,后跟说明语句,再跟以一个BEGIN-END语句,在其内部可以有若干赋值语句。 程序1-1 一个PASCAL源程序source PROGRAM source;   {This little source program is used to illustrate compiling procedure } VAR  x,y,z:integer;   a:integer; BEGIN { This program has only 4 statement } x:=23+5; z:=x DIV -3; y:=z+18*3; a:=x+(y-2) DIV 4 END. 1.2.1 词法分析程序(扫描器) 词法分析程序的任务是: 1)识别出源程序的各个基本语法单位(单词或语法符号); 2)删除无用的空白字符及其它与输入介质相关的非实质性字符(空格、回车等); 3)删除注释; 4)进行词法检查,报告所发现的错误。 扫描器输出以单词为单位的单词流。 例如,以特殊符号“#”分隔的单词流: # PROGRAM # source # ; # VAR # x # , # y # , # z # : # integer # ; # a # : # integer # ; # BEGIN # x # := # 23 # + # 5 # ; # z # := # x # DIV # - # 3 # ; # y # := # z # + # 18 # * # 3 # ; # a # := # x # + # ( # y # - # 2 # ) # DIV # 4 # ; # END # . # 单词流的内部表示 注意,前面的单词流形式只是我们为说明原理便于阅读而假定的形式。 为了让计算机能够方便地识别和使用,在实际中的常用方法是将单词计算机内部表示为一个有序对( Class, Value )。 Class为一整型数,用于标识该单词的类别; Value用于存放单词的值。 单词流的内部表示 例如对于source程序,可将其单词分为四类: (1) 保留字 (2) 专用符号 (3) 标识符 (4) 整数 这样,source程序相应的单词流为: ( 1 , ’PAROGRAM’ )

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档