编译原理:第二章高级语言及其语法描述.ppt
《编译原理:第二章高级语言及其语法描述.ppt》由会员分享,可在线阅读,更多相关《编译原理:第二章高级语言及其语法描述.ppt(74页珍藏版)》请在三一办公上搜索。
1、编译原理,第二章 高级语言及其语法描述,第二章 高级语言及其语法描述,常用的高级语言 FORTRAN数值计算 COBOL事务处理 PASCAL结构程序设计 ADA大型程序、嵌入式实时系统 PROLOG逻辑程序设计 ALGOL算法语言 C/C+系统程序设计 JavaInternet程序设计,与机器语言或汇编语言比较,高级语言的优点:较接近于数学语言和工程语言,比较直观、自然和易于理解;便于验证其正确性,易于改错;编写效率高;易于移植.,2.1 程序语言的定义,程序语言是一个记号系统程序语言由两方面定义:语法语义语用,一.语法,程序本质上是一定字符集上的字符串。语法:一组规则,用它可以形成和产生一
2、个合式(well-formed)的程序(形式上正确的程序)。,语 法,词法规则:单词符号的形成规则。单词符号是语言中具有独立意义的最基本结构。一般包括:常数、标识符、基本字、算符、界符等。描述工具:有限自动机语法规则:语法单位的形成规则。规定了如何从单词符号形成语法单位;语法单位通常包括:表达式、语句、分程序、过程、函数、程序等;描述工具:上下文无关文法,EiEE+EEE*EE(E)语法规则和词法规则定义了程序的的形式结构,是判断输入字符串是否构成一个形式上正确的程序的依据。定义语法单位的意义属于语义问题。,二.语义,对于语言来说,不仅要给出它的词法、语法规则,而且要定义它的单词符号和语法符号
3、的意义。离开了语义的语言只是一堆符号的集合。各种语言中有形式上完全相同的语法单位,含义却不相同。语义:对某种语言,定义一组规则,用它可以定义一个程序的意义,称为语义规则。描述方法:自然语言描述:隐藏错误、二义性和不完整性形式描述:操作语义(PL/1)、指称语义(ADA)、代数语义(PASCAL)。目前大多数编译程序使用基于属性文法的语法制导翻译方法来分析语义。,三程序语言的基本功能和层次结构,程序语言的基本功能:描述数据和对数据的运算。所谓程序,本质上说是描述一定数据的处理过程。,程序的层次结构,程序|子程序或分程序、过程、函数|语句|表达式|数据引用 算符 函数调用,程序语言每个组成成分的逻
4、辑和实现意义,抽象的逻辑的意义数学意义 计算机实现的意义具体实现,2.2 高级语言的一般特性(自学),高级语言的分类 强制式语言(Imperative Languge)也称过程式语言:命令驱动,面向语句FORTRAN、C、Pascal,Ada 应用式语言(Applicative Language):注重程序所表示的功能,而不是一个语句接一个语句地执行LISP、ML,基于规则的语言(Rule-based Language):检查一定的条件,当它满足值,则执行适当的动作Prolog 面向对象语言(Object-Oriented Language):封装性、继承性和多态性Smalltalk,C+,J
5、ava,2.2.1 高级语言的分类,FORTRAN一个程序由一个主程序段和若干辅程序段组成。辅程序段可以是子程序、函数段或数据块。每个程序段有一系列的说明语句和执行语句组成。各段可以独立编译。模块结构,没有嵌套和递归各程序段中的名字相互独立,同一个标识符在不同的程序段中代表不同的名字。,2.2.2 程序结构,主程序 PROGRAM end辅程序1 SUBROUTINE end辅程序2 FUNCTION end,PASCALPASCAL程序本身可以看成是一个操作系统所调用的过程,过程可以嵌套和递归。一个PASCAL过程:过程头;说明段(由一系列的说明语句组成);begin执行体(由一系列的执行语
6、句组成);end,作用域:一个名字能被使用的区域范围称作这个名字的作用域。允许同一个标识符在不同的过程中代表不同的名字。名字作用域规则-最近嵌套原则一个在子程序B1中说明的名字X只在B1中有效(局部于B1);如果B2是B1的一个内层子程序且B2中对标识符X没有新的说明,则原来的名字X在B2中仍然有效。如果B2对X重新作了说明,那么,B2对X的任何引用都是指重新说明过的这个X。,program main var A,B:real;procedure P1 var B:boolean;begin end procedure P2 var A:integer;begin endbegin end,A
7、(real),B(real),B(bool),A(integer),PASCAL提供了丰富的数据类型和运算方式,它允许用户动态地申请和退还存贮空间。,ADA程序包(package):把数据和操作代码封装在一起,支持数据抽象。一个程序包分为两部分:可见的规范说明部分,它定义了程序包外面可以访问的对象。程序包体,它实际定义程序包的实现细节。,package STACKS is type ELEM is private;type STACK is limited private;procedure push(S:in out STACK;E:in ELEM);procedure pop(S:in o
8、ut STACK;E:out ELEM);end STACK;package body STACKS is procedure push(S:in out STACK;E:in ELEM);begin 实现细节 end push;procedure pop(S:in out STACK;E:out ELEM);begin 实现细节 end pop;end;,JAVAJava是一种面向对象的高级语言类(Class)继承(Inheritance)多态性(Polymorphism)和动态绑定(Dynamic binding),class Car int color_number;int door_n
9、umber;int speed;push_break()add_oil()class Trash_Car extends car double amount;fill_trash(),2.2.3 数据类型与操作,一个数据类型通常包括以下三种要素:用于区别这种类型数据对象的属性这种类型的数据对象可以具有的值可以作用于这种类型的数据对象的操作,一初等数据类型数值类型:整型、实型、复数、双精度,运算:+,-,*,/等逻辑类型:布尔运算:,字符类型:符号处理指针类型,标识符与名字,标识符:以字母开头的,由字母数字组成的字符串。标识符与名字两者有本质区别:标识符是语法概念名字有确切的意义和属性,Jord
10、an?,标识符!,?,?,标识符与名字,名字:值:单元中的内容属性:类型和作用域名字的性质的说明方式:由说明语句来明确规定的隐含说明:FORTRAN 以I,J,K,N为首的名字代表整型,否则为实型。动态确定:走到哪里,是什么,算什么,二 数据结构,1 数组逻辑上,数组是由同一类型数据所组成的某种n维矩形结构,沿着每一维的距离,称为下标。数组可变与不可变:编译时能否确定其存贮空间的大小。访问:给出数组名和下标值存放方式:按行存放,按列存放,数组元素地址计算,数组A10,20的A1,1为a,各维下标为1,按行存放,那么Ai,j地址为:a+(i-1)*20+(j-1)数组元素地址计算公式,内情向量,
11、把数组的有关信息记录在一个“内情向量”中,每个数组的内情向量必须包括:维数,各维的上、下限,首地址,以及数组(元素)的类型。,2 记录,逻辑上说,记录结构由已知类型的数据组合在一起的一种结构。record char NAME20;integer AGE;bool MARRIED;CARD1000访问:复合名 CARDk.NAME存储:连续存放域的地址计算:相对于记录结构起点的相对数OFFSET。,3 字符串、表格、栈,字符串:符号处理、公式处理表格:本质上是一种记录结构线性表:一组顺序化的记录结构栈:一种线性表,后进先出,POP,PUSH,三 抽象数据类型,一个抽象数据类型包括:数据对象的一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 第二 高级 语言 及其 语法 描述

链接地址:https://www.31ppt.com/p-6016587.html