哈工大编译原理第2章

上传人:kms****20 文档编号:51438759 上传时间:2018-08-14 格式:PPT 页数:57 大小:667.50KB
返回 下载 相关 举报
哈工大编译原理第2章_第1页
第1页 / 共57页
哈工大编译原理第2章_第2页
第2页 / 共57页
哈工大编译原理第2章_第3页
第3页 / 共57页
哈工大编译原理第2章_第4页
第4页 / 共57页
哈工大编译原理第2章_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《哈工大编译原理第2章》由会员分享,可在线阅读,更多相关《哈工大编译原理第2章(57页珍藏版)》请在金锄头文库上搜索。

1、第二章 高级语言及其语法描述计算机学院 辛明影1内容简介:本章概述程序设计语言的结构2.1 程序语言的定义 任何语言实现的基础是语言定义。 语言的定义决定了该语言 具有什么样 的语言功能、 什么样的数据结构、 什么 样的程序结构、 以及具体的使用形式 等细节问题。和主 要的共同特征, 并介绍程序设计语言主要 语句的文法描述与形式定义。 计算机学院 辛明影2对于编译程序设计者来说:语言 定义就是具体实现的理论依据。对于语言用户来说:语言定义就 是一本用户手册。2.1.1语法语言的语法是指这样一组规则, 用它可产生一个程序。 规则:词法规则语法规则 计算机学院 辛明影3词法规则是指单词符号的形成规

2、则字母表就是一个有穷字符集。 C语言的字母表为:=a-z 、 AZ 、 09 、(、) 、 、 、 、.、! 、 、+ 、- 、* 、/ 、 C语言的标识符的构成规则:字母、下划线打头的字母、数字和下 划线构成的符号串。如:a1、ave 、_day一 .词法规则计算机学院 辛明影4上述的定义是用文字来描述的,当 设计编译程序时,就要把它用形式的 方式描述出来,就要用到形式语言。各类型的常数、标识符、基本字、算符和界符等正规式和有穷自动机是描述词法 结构和进行词法分析的有效工具在现今多数程序设计语言中,单词 符号一般包括:计算机学院 辛明影5C语言的标识符的文法和自动机描述:例:C语言标识符的文

3、法描述L(G)=w/w为字母或-打头的字母数字 串解:P:I aB I -B I a B aB B dB Ba B d识别L(G)的自动机IBTa-a,d其它计算机学院 辛明影6SACDFEB7 ddddd dd ee+T*例:C语言实常数的文法描述文法:S dA A dA A eD A .B B dCC dC C eD D -E D +E D dFE dF F dF F d其它其它其它10003.1410e+3 3.14e-512e5计算机学院 辛明影7二.语法规则语法规则规定了如何从单词符号形 成更大的结构(即语法单位),换言之 ,语法规则是语法单位的形成规则 一般的程序设计语言的语法单位

4、有: 表达式 、 语句 、 分程序 、 函数 、 过程和程序等下推自动机理论和上 下文无关文法是我们讨论 语法分析的理论基础计算机学院 辛明影8表达式:EE+TEE-TETTT*FTT/F TFF(E)F id主要语句的形式描述:计算机学院 辛明影9布尔表达式:B B or BB B and BB not BB(E)B id relop idB trueB false 计算机学院 辛明影10赋值、分支、循环语句:S id=ES if B then SS if B then S else S S while B do SS L L L ;SL S计算机学院 辛明影11调用语句:Scall id(

5、Elist)Elist Elist,EElist E|计算机学院 辛明影12类型说明和过程说明语句:P DD D;DD id:TDid(Elist) D ; ST intT float计算机学院 辛明影13数组说明语句:L idElistElist Elist,EElist E计算机学院 辛明影142.1.2 语义例:a=b+c*d 例do 999 I=1,10对于一个语言来说,不仅要给出它的 词法、语法规则,而且要定义它的单词符 号和语法单位的意义,这就是语义问题对于编译程序来说,只有了解程序的语义 ,才知道应把它翻译成什么样的目标指令 代码计算机学院 辛明影152.2 构造基础 2.2.1

6、 程序结构简介一个高级语言程序通常由若干子程序 段(过程、函数等)组成, 许多语言 还引入了类、程序包等更高级的结构计算机学院 辛明影16一.FORTRAN一个FORTRAN 程序由一个主 程序和若干个辅助程序段组成PROGRAM MAIN . END SUBROUTINE SUB1 . .END FUNCTION FUN1 . END它的定义是 并列的计算机学院 辛明影17FORTRAN 的构成特点:同一名字在不同的程序段中一般 都代表不同的对象,也就是说代表不 同的存贮单元PROGRAM MAIN .integer xEND SUBROUTINE SUB1 Integer x.ENDInt

7、eger xXX=9999100Integer x9999X=100XPROGRAM MAIN . END SUBROUTINE SUB1.END一个名字对应多个对象 计算机学院 辛明影18但是不同程序段里的同名公用块 却代表同一个存贮区域PROGRAM MAIN . Common a,bEND SUBROUTINE SUB1common x,y.ENDPROGRAM MAIN . END SUBROUTINE SUB1. ENDCommon a,babA=100 B=50100 50Common x,yx yY=x+100200共享存贮 单元多个名字对 应一个对象计算机学院 辛明影19二。P

8、ascalPascal 允许 子程序嵌套 定义 Program main说明部分Begin可执行部分endPascal的程序结构Program mainBeginendProcedure P1Begin endProcedure P11 Begin endProcedure P2 Begin end也允许并列 定义计算机学院 辛明影20关于名字的作用域的规定:标识符X的任意一次出现(除去说明 语句中)都意味着对某个说明语句中说明 的这个变量X的引用此时,说明语句同标识符X应共处一 个最小程序中,即: P1中说明的X只在P1中有效P11是P1的内层子程序,P11中没有再 对X作新的说明,则在P1

9、1中对X的引用,实 际上引用的就是P1中说明的X, 即内部 过程可以引用外部过程中定义的量 计算机学院 辛明影21三.java Java语言是 一种面向对 象的高级语 言,它很重 要的方面是 类和继承的 概念,同时 支持多态性 和动态绑定 等特性Class car Int color_num; Int door_num; Int speed; .Void push_break()Void add_oil() Class benz extends carDouble price;Void ABS( ) 计算机学院 辛明影22一个类把有关的数据及其操作封装 在一起构成一个抽象数据类型一个子类继承其

10、父类的所有数据和 方法,并且可以加入自己新的定义在java中,变量和方法的定义之前 可以加上public、private、pretected 等修饰词,以限制其它类的对象对于这 些变量和方法的使用计算机学院 辛明影232.2.2 构造基础程序设计语言的数据对象:数据、 函数、 过程常用能反映其本质的、有助于记 忆的名字来表示一.名字特性: 一个名字对应一个对象 ,普通变量 多个名字对应一个对象 一个名字对应多个对象,common , 数组、重载、 局部变量、 重写、计算机学院 辛明影24每个对象可以看做是一个存贮单元 , 可能是一个字,也可能是多个字名字具有属性,通常由说明语句给出一个名字的属

11、性,包括:类型和作用域 类型决定了它有什么样的值,作用域规定了值的存在范围值在计算 机内的表示, 以及对它能施加什么样 的运算计算机学院 辛明影25二.数据类型 1.初等数据类型 数值数据:整形、实型、双精度等 ,可施行算术运算 逻辑数据:可施行逻辑运算 字符数据: 指针类型:计算机学院 辛明影26三。数据结构 1。数组从逻辑上讲,一个数组是由同类 型数据所组成的n 维矩形结构一个数组所需的存贮空间大小在 编译时就已知道的,则称此数组是一 个确定的数组;否则称为可变数组设int Al1u1,l2u2 lnun 为n 维数组各维的长度:di=ui-li+1 (1in) 计算机学院 辛明影27任一

12、数组元素Ai1,i2, in的地址为:D=a+(i1-l1) d2d3 dn +(i2-l2) d2 d2 dn+ (in-1-ln-1) dn + (in-ln) 整理后C= ( (l1 d2 +l2) d3+ l3) d4+ + ln-1) dn+ ln C是数组计算中不 变的部分计算机学院 辛明影28变量部分:v= ( (i1 d2 +i2) d3+ i3) d4+ + in-1) dn+ in 任一数组元素Ai1,i2, in的地址:addr=a-c+v计算机学院 辛明影29在编译时,当遇到说明时,必须把 数组的有关信息记录在一个“内情向量 ”之中,用于数组元素的地址计算。数组的内情向

13、量包括: 维数,各维的上、下限,首地址及数组 的类型 lnundn l2l1unund1d2N维数C常数T类型A首地址计算机学院 辛明影30对于确定数组来说,内情向量可 登记在符号表中;对于可变数组,内情向量的信息 在编译时无法全部知道,只有到运行 阶段才能全部确定下来,存贮分配也 要等到运行时方能进行计算机学院 辛明影312.记录(结构)从逻辑上讲,记录是由已知的数据 组合起来的一种结构Struct studentchar name20;boolean partmember; int age; stu; 计算机学院 辛明影32记录结构最简单的存贮方式是连续存放 上述的变量stu共占7个字,共28个字节Stu.nameStu.partmemberStu.age3.字符串、表格和队列kK+1.K+20.K+24.计算机学院 辛明影33四.抽象数据类型一个抽象数据类型包括:这种类型对象的封装作用于这些数据对象的抽象运 算的集合数据对象的一个集合C+、Java语言通过类对抽象类型 提供支持计算机学院 辛明影34五.语句与控制结构 1.表达式 要解决的问题:优先级 结合率 2.语句 语句可分为: 说明语句:可执行语句:定义各种不同数据类 型的变量和运算 描述语句的动作 执行

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号