第1课 第1章_编译原理概述.ppt

第1课 第1章_编译原理概述.ppt

ID:61906688

大小:471.00 KB

页数:25页

时间:2020-02-07

第1课 第1章_编译原理概述.ppt_第1页
第1课 第1章_编译原理概述.ppt_第2页
第1课 第1章_编译原理概述.ppt_第3页
第1课 第1章_编译原理概述.ppt_第4页
第1课 第1章_编译原理概述.ppt_第5页
资源描述:

《第1课 第1章_编译原理概述.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理湖南师范大学数学与计算机科学学院什么是编译把一种语言等价翻译成另外一种语言源语言Sourcelanguage目标语言Objectlanguage编译就是翻译编译编译程序compiler面向人的语言Human-orientedlanguage面向机器的语言Computer-orientedlanguage23编译的过程词法分析语法分析语义分析中间代码生成代码优化目标代码生成4词法分析从左到右以字符为单位扫描源程序,从而识别出每个单词符号单词是指逻辑上机密相连的一组字符,具有集体的含义,比如标识符。

2、5词法分析单词种类:一类是特殊的单词,如保留字、运算符、分界符等,这些都是源语言所提供的;另一类是普通单词,如用户在源程序中定义的标识符、常数等。6词法分析例如:程序段intx,a,b;x=a+b*50;词法分析后的结果为(1)保留字int(2)标识符x    (3)界限符,    (4)标识符a   (5)界限符,  (6)标识符b     (7)界限符;(8)标识符x    (9)运算符=   (10)标识符a   (11)运算符+    (12)标识符b   (13)运算符*(14)整常数50 (

3、15)界限符;7语法分析在词法分析的基础上,按照源语言的规则将单词序列组合成语法短语依据是语言的语法规则,即描述程序结构的规则,通常采用递归结构【如何描述语法规则呢?一般形式化,使用如语法树等工具;根据应用不同,可以有不同工具】词法分析与语法分析:分析源程序的结构;词法分析采用线性扫描,但是线性扫描不适合递归语法8语法分析语法分析有两种方法:推导(Derive)和归约(Reduce)语法分析对说明语句填写符号表,一般语句构造语法树例如:赋值语句a=b+c*10经语法分析生成语法树9语义分析进行语义审查以

4、判断是否有语义错误。例如:上下文相关性,类型匹配,类型转换10中间代码生成源程序的内部(中间)表示结构简单、含义明确的记号系统,介于高级语言与低级语言之间,与目标机无关,便于优化、移植并容易生成目标代码。通常的中间代码有三元式、四元式、树结构或适合相应语言的中间代码。11代码优化对中间代码进行变换或进行改造,目的使生成目标代码更为高效,即省时间/省空间如删除公共子表达式、合并已知量、删除无用赋值、循环优化、算符规约等等12目标代码生成把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令

5、代码。是编译的最后阶段,与硬件系统结构、指令含义等有关13出错处理程序语法分析程序语义分析程序目标代码生成程序词法分析程序中间代码生成程序代码优化程序表格管理程序编译程序的结构14表格管理什么是表记录源程序中使用的名字收集每个名字的各种属性信息—类型、作用域、分配存储信息符号表Symboltable15出错处理(errorhandling)检查错误、报告出错信息、排错、恢复编译工作检查词法、语法和语义中的错误(静态)。编译程序的处理能力,如存储空间越界(动态)报告出错信息和位置处理和恢复16编译阶段的组

6、合编译的前端(frontend):主要依赖源语言、与目标机器无关;包括词法分析、语法分析、语义分析、中间代码生成以及代码优化(部分)编译的后端(backend):依赖目标机、不依赖于源语言,只与中间代码有关的那些阶段17源代码中间代码目标代码前端后端仅依赖于源语言仅依赖于目标机器18源程序第一遍输出文件遍第二遍输入文件遍第(N-1)遍输出文件第N遍输入文件遍目标代码遍(趟)对源程序或其等价的中间语言程序从头道尾扫视并完成规定任务的过程19Compiler与interpreter解释程序:不生成可执行文件

7、,不能独立执行;接受某个语言的程序并立即运行的过程。一个个地获取、分析并执行源程序的语句。编译程序:生成可执行文件,可以独立执行;编译和运行是两个独立分开的阶段。著名的解释程序Basic、Lisp、Unix命令、SQL、JAVA20处理源程序的软件工具语言结构化编辑器语言程序调试工具程序格式化工具语言程序测试工具高级语言之间的转换工具21程序设计语言范型1.强制(命令)式语言——过程语言C、Pascal:面向动作,一个计算过程看作一系列动作2.函数式语言ML、Lisp:注重程序表示的功能3.基于规则(逻

8、辑)的语言Prolog:检查一定的使能条件,满足时执行动作4.面向对象语言Ada、C++、Java22编译技术在计算机学科中的地位编译技术的复杂性直接使用离散数学关于集合论、图论、形式语言自动机等理论知识,编写编译程序时必然要使用到多种算法和数据结构编译技术与计算机其他学科的交叉性系统结构、人工智能、离散数学、高级语言、数据结构、汇编语言等课程编译技术的成熟性编译技术是计算机科学中发展最迅速、最成熟的分枝之一23学习编译原理的意义编译器可能

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

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

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