欢迎来到天天文库
浏览记录
ID:33393872
大小:365.01 KB
页数:102页
时间:2018-05-22
《编译原理教学ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理清华大学计算机科学与技术系吕映芝2003.9.9第1章编译程序概论1.1什么是编译程序1.2翻译和解释1.3编译过程和编译程序的结构*1.4编译程序的实现途径1.5编译技术在其它软件中的应用有关学习问题参考书1.1什么是编译程序语言和翻译:语言是人类交流思想和信息的工具。从自然语言来说,世界上存在着许多种语言,各国之间要交流信息,就要有各种语言之间的翻译。编译程序:编译程序就是一个语言的翻译程序,是把一种语言(称源语言)书写的程序翻译成另一种等价功能语言(称目标语言)的程序。换句话说,编译是
2、指把一种用源语言表示的算法转换到另一种等价的用目标语言表示的算法。1.1什么是编译程序编译程序的必要性:计算机是当代科学发展的重要工具,已渗入到各行各业乃至家庭生活中。所以如何让他为人类工作服务,就必须建立人与计算机之间的信息交流。但计算机只认识由“0”和“1”构成的机器语言,并不认识C、C++、Java、Pascal等高级程序设计语言。每台计算机都有自己独特的指令系统,即机器语言,最早的程序就是用8进制和16进制码的机器语言书写的。1.1什么是编译程序用机器语言书写程序,不仅不易学,而且可调试性、
3、可读性、可维护性和结构性都很差,开发时间也很长。因此,编译程序最初的定义是把一种高级程序设计语言的源程序(面向人的)翻译成另一种等价的低级程序设计语言(面向硬件的)即机器语言或汇编语言。所以,编译程序是人用某种语言书写的某个翻译程序。1.1什么是编译程序编译程序的功能编译程序高级程序设计语言(源语言)机器语言(目标语言)S:源语言(程序)O:目标语言(程序)I:实现语言SOI用T型图表示1.1什么是编译程序随着计算机及其应用的发展,出现了各种应用更方便的高级语言,如:FORTRAN、PL/1、ALG
4、OL60、COBOL、PASCAL、Ada、LISP、C、C++、JAVA等。早期开发的软件需转换,因此,编译程序不仅是高级语言翻译成机器语言,广泛地讲:编译程序高级语言低级语言高级语言高级语言高级语言中间语言中间语言低级语言1.1什么是编译程序例:高级语言高级语言FORTRANPASCALCJAVAPL/1C++COBOLCAdaJAVA1.1什么是编译程序逆向工程低级语言高级语言例:IBM/4700(汇编语言)C交叉编译在一个机器上对某种高级语言进行编译,产生的目标语言是另一个机器
5、的汇编语言或机器语言。例:在WAX机上编译Ada语言,产生PC机的汇编语言,这样的目标语言只能在PC机上运行,如嵌入式系统对交叉编译的应用。当功能相同时,不同语言之间的区别,只是语言的词法、语法和语义规则形式不同。运行环境也可能不同。例:计算园面积C程序:functioncircle();{intr;floats;scanf(“%d”,&r);s=3.1416*r*r;printf(“%d”,s);}Pascal程序:procedurecircle;varr:integer;s:real;beg
6、inread(r);s:=3.1416*r*r;write(s);end;1.2翻译和解释翻译:按源程序的实际输入顺序,处理程序语句,得到可执行的目标程序。解释:按源语言的定义边解释边执行。解释执行是按照被解释的源程序的逻辑流程进行处理的,不产生目标程序。解释程序源程序输入输出解释解释执行优点:交互方便,节省空间。缺点:效率低。因对源程序的循环语句部分要反复解释执行。共同点:都需进行词法、语法、语义分析。可比喻为:翻译(编译)---笔译(产生目标程序)解释---口译(不产生目标程序)1.3编译过程和
7、编译程序结构编译过程编译程序结构编译的趟(遍)(pass)编译过程词法分析语法分析语义分析中间代码生成代码优化目标代码生成词法分析读字符流的源程序、识别单词例:position:=initial+rate*60;(转换为内部表示,拼标识符、数和复合单词等)单词类型单词值标识符(1)position算符(赋值号):=(复合单词)词法分析单词类型单词值标识符(2)initial算符(加号)+标识符(3)rate算符(乘号)*整数60界符(分号);语法分析功能:层次分析,把源程序的单词组成语法短语(表示成
8、语法树或其它内部码)。现用“巴科斯-瑙尔范式”(EBNF)描述。例:<赋值语句>::=<标识符>:=<表达式><表达式>::=<表达式>+<表达式><表达式>::=<表达式>*<表达式><表达式>::=“(”<表达式>“)”<表达式>::=<标识符><表达式>::=<常数>语法分析(语法树):=+60*positioninitialrate语义分析语义审查静态语义检查上下文相关性如:类型匹配和类型转换例:Programp();varrate:real;procedur
此文档下载收益归作者所有