编译原理(清华)第一章编译程序概论课件.ppt

编译原理(清华)第一章编译程序概论课件.ppt

ID:57031222

大小:210.50 KB

页数:26页

时间:2020-07-27

编译原理(清华)第一章编译程序概论课件.ppt_第1页
编译原理(清华)第一章编译程序概论课件.ppt_第2页
编译原理(清华)第一章编译程序概论课件.ppt_第3页
编译原理(清华)第一章编译程序概论课件.ppt_第4页
编译原理(清华)第一章编译程序概论课件.ppt_第5页
资源描述:

《编译原理(清华)第一章编译程序概论课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第一章编译程序概论学习目标:掌握:编译的各个阶段理解:编译程序的概念了解:解释器,编译程序的结构和组合1.1什么是编译程序1.2编译过程概述1.3编译程序的结构1.4编译阶段的组合1.5编译技术和软件工具1.1什么是编译程序编译程序(compiler)将用高级语言(如FORTRAN,PASCAL或C)书写的程序翻译成等价的低级语言程序(如汇编语言或机器语言),这种翻译程序称为编译程序(compiler)。编译程序的输入对象称为源程序(Sourceprogram)输出对象称为目标程序(Targero

2、rObjectprogram)高级语言程序编译程序低级语言程序出错和警告信息解释器(interpreter)与编译器共同点:都是语言的一个实现系统不同点:解释器是源程序的一个执行系统,工作结果得到源程序的执行结果;编译器是源程序的转换系统,工作结果得到等价于源程序的某种目标程序解释程序解释器和编译器编译程序源程序源程序数据计算结果目标程序需预处理的源程序预处理程序源程序编译程序目标汇编程序汇编程序可再装配的机器代码装配/连接--编辑程序绝对机器代码可再装配目标文件高级语言程序的处理过程编译程序的基

3、本任务:将源语言程序翻译成等价的目标语言程序编译程序的发展第一个编译程序的出现:20世纪50年代早期,主要将算术公式翻译成机器代码20世纪50年代中期,一批编译系统程序开发成功20世纪50年代末,开始研究编译程序的自动生成工具20世纪60年代,研究使用自展技术并行编译技术1.2编译程序概述一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序从一种表示形式转换成另一种表示形式。典型的划分方法:目标程序源程序词法分析语法分析语义分析中间代码生成代码优化目标代码生成表格管理出错处理编译的各个阶

4、段1.词法分析(lexicalanalysisorscanning)任务:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(Token)。逻辑上紧密相连的一组字符,这些字符具有集体含义。单词:标识符,基本字,算符,界符等例:源程序片断beginvarsum,first,count:real; sum:=first+count*10 end.r0u;;stliafe,rt:nmuus△acro△v,nigebs*1tnuoct+sirf=:m.nde

5、源程序在文件中的表示(基本字,real)(标识符,first)(冒号,:)(逗号,,)(标识符,count)(分号,;)(基本字,var)(逗号,,)(标识符,sum)(基本字,begin)(赋值号,:=)(乘号,*)(加号,+)(标识符,count)(标识符,first)(标识符,sum)(界符,.)(整数,10)(基本字,end)词法分析后程序的图形表示空格换行字符的内部表示即ASC码单词表示成二元式(单词的种别,单词自身值)2.语法分析(syntaxanalysisorparsing)任务单

6、词符号串(Token串)语法分析语法短语识别规则:语法规则(描述程序结构的规则,通常是由递归规则表示的)注:语法短语又称语法单位,如“表达式”、“语句”、“分程序”、“程序”等结果:判断输入串是否构成一个语法上正确的程序,并生成语法树例:赋值语句sum:=first+count*10赋值语句规则<赋值语句>::=<标识符>“:=”<表达式><表达式>::=<表达式>“+”<表达式><表达式>::=<表达式>“*”<表达式><表达式>::=“(”<表达式>“)”<表达式>::=<标识符><表达式>:

7、:=<整数><表达式>::=<实数>sum赋值语句标识符:=表达式表达式+表达式标识符first表达式*表达式标识符count整数10语法树为:3.语义分析(semanticanalysis)任务:审查源程序是否有语义错误,为代码生成阶段收集类型信息类型审查(静态语义):上下文相关性类型匹配:每个算符是否具有语言规范允许的运算对象类型转换例:programp()varrate:real;procedureinitial;…position:=initial+rate*60/*error*//*er

8、ror*//*warnning*/例源程序:Sum:=first+count*10 count是实型,10是整型,语义分析后得到新语法树为:赋值语句标识符:=表达式sum表达式+表达式标识符first表达式*表达式标识符count实数10inttoreal4.中间代码生成(intermediatecodegeneration)任务:将源程序生成一种内部表示形式,这种内部表示形式叫中间代码。四元式中间代码:(运算符,运算对象1,运算对象2,结果)例如:将Sum:=first+coun

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。