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