资源描述:
《1_编译原理绪论(1)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、教学安排与要求一.课程任务和目的程序设计语言编译程序构造的基本原理和实现方法是软件的核心技术之一。具有分析和实现编译程序的能力提高对高级程序设计语言的理解和应用能力。通过正则式、自动机和形式语言的学习,培养形式化的能力。1二、教学介绍1。作业;2。上机实验;3。课堂和实验教学与第2章和附录A的PL/0编译程序紧密结合,要求读懂源程序,完成扩充编译器的实验,为期末课程设计打好基础。2三、教学要求课前预习按时完成作业认真阅读分析PL/0编译器重视实验,交实验报告3第1章绪论1.1编译程序1.2解释程
2、序1.3编译程序的结构1.4编译程序的设计41.1编译程序机器语言:能够被计算机的硬件系统直接执行的指令程序。汇编语言:将硬件指令用一些助记符表示。如ADD表示加法操作,SUB表示减法操作等等高级语言:使用便于理解的自然语言。51.1编译程序翻译程序:将一种语言(源语言)翻译成另一种逻辑上等价的语言(目标语言)的程序。汇编程序:将汇编语言翻译成机器语言的翻译程序。编译程序:将高级语言翻译成汇编语言或机器语言的翻译程序。编译程序低级语言程序(目标程序)高级语言程序(源程序)6机器语言──计算机指令
3、系统低级语言语言 汇编语言──符号化的指令系统高级语言──算法语言,不依赖具体机器,面向问题源程序翻译程序目标程序汇编语言程序 汇编程序 机器语言程序 计算机高级语言程序 编译程序 连接程序7什么是编译程序分类软件系统软件语言处理系统操作系统编译系统裸机8分类软件:计算机系统中的程序及其文档系统软件:居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。和具体的应用领域无关,如编译系统和操作系统等。语言处理系统:把软件语言书写的各种程序处理成可在计算机上执行的
4、程序。软件语言:用于书写软件的语言。它主要包括需求定义语言,功能性语言,设计性语言,程序设计语言以及文档语言。9预处理器编译器汇编器装配连接编辑框架程序源程序目标汇编程序可重定位机器代码绝对机器码可重定位目标文件库语言处理过程.c.cpp.java.pas.asm.obj.exe.dll.lib10什么是编译程序语言转(变)换系统C++翻译器C++CJavaBytecodeJava编译器11源语言 实现语言 目标语言汇编语言 汇编程序 机器语言高级语言 编译程序 低
5、级语言高级语言 预处理程序 高级语言翻译对象 翻译程序 翻译结果12编 译(笔译)解 释(口译)产生目标程序,可多次执行,边解释边执行,不产生目标程序,优化较充分,执行效率高。 优化不充分,总体效率较低。但编译器本身较大, 但解释器本身较小,较复杂,不便人机对话 较简单,便于人机对话源语言:Pascal,C,源语言:BASIC,LISP,Java等FORTRAN等源 编结源程序 解 结程 译目标程序释序 器果初始数据 器 果运行库初始数据编译程序和解释程序比较13
6、术语编译程序(compiler)编译程序的源语言(源程序)(sourcelanguage/program)编译程序的目标语言(目标程序)(objectortargetlanguage/program)编译程序的实现语言(implementationlanguage)语言处理程序(languageprocessor)语言转(变)换(languagetransformation)141.3编译程序的结构词法分析语法分析语义分析中间代码生成代码优化目标代码生成源程序目标程序151.3编译程序的结构词法
7、分析(扫描器,Scanner)扫描、分解源程序,识别单词(基本字标识符、常数、运算符、界限符),并给予种别(属性)和内部形式(值)构成单词的内部表示。16例:源程序PROGRAMm;VARa,b,c:real;BEGINread(b,c);a:=b+c*60;write(a);END.1.3编译程序的结构<保留字,PROGRAM><标识符,m><分隔符,;><保留字,VAR><标识符,a><标识符,b><标识符,c><分隔符,:><标识符,real><分隔符,;><保留字,BEGIN>…...<
8、标识符,a><算符,:=><标识符,b><算符,+><标识符,c><算符,*><整数,60>……<保留字,END><分隔符,.>源程序被分析成字符流17语法分析(分析器,Analyzer)语法检查,分析源程序的语法结构,并用明确的结构(如语法树)表示。1.3编译程序的结构对于前一个例子的单词序列:a:=b+c*60可表示为:18a:=b+c*60经语法分析得到的语法树表达式3赋值语句标识符∶=表达式1表达式2+表达式5ab标识符表达式4*60整数c标识符1.3编译程序的结构19语义分析检查程序有