编译原理:第二章高级语言及其语法描述.ppt

上传人:wuy****n92 文档编号:80514119 上传时间:2023-03-23 格式:PPT 页数:74 大小:629KB
返回 下载 相关 举报
编译原理:第二章高级语言及其语法描述.ppt_第1页
第1页 / 共74页
编译原理:第二章高级语言及其语法描述.ppt_第2页
第2页 / 共74页
点击查看更多>>
资源描述

《编译原理:第二章高级语言及其语法描述.ppt》由会员分享,可在线阅读,更多相关《编译原理:第二章高级语言及其语法描述.ppt(74页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所编译原理第二章第二章 高级语言及其语法描述高级语言及其语法描述 合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所第二章第二章 高级语言及其语法描述高级语言及其语法描述 o常用的高级语言常用的高级语言n FORTRANFORTRAN数值计算数值计算n COBOLCOBOL事务处理事务处理n PASCALPASCAL结构程序设计结构程序设计n ADAADA大型程序、嵌入式实时系统大型程序、嵌入式实时系统n PROLOGPROLOG逻辑程序设计逻辑程序设计n ALGOLALGOL算法语言算法语言n C/C+C/C+系

2、统程序设计系统程序设计n JavaJavaInternetInternet程序设计程序设计合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o与机器语言或汇编语言比较与机器语言或汇编语言比较,高级语言的高级语言的优点:优点:n较接近于数学语言和工程语言较接近于数学语言和工程语言,比较直观、比较直观、自然和易于理解自然和易于理解;n便于验证其正确性便于验证其正确性,易于改错易于改错;n编写效率高编写效率高;n易于移植易于移植.合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.12.1 程序语言的定义程序语言的定义o程序语言是一个记号系统程序语言是一个记号系统o

3、程序语言由两方面定义:程序语言由两方面定义:n语法语法n语义语义n语用语用合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所一一.语法语法o程序本质上是一定字符集上的字符串。程序本质上是一定字符集上的字符串。o语法语法:一组规则:一组规则,用它可以形成和产生一个用它可以形成和产生一个合式合式(well-formed)的程序(形式上正确的程的程序(形式上正确的程序)序)。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所语语 法法o词法规则词法规则:单词符号的形成规则:单词符号的形成规则。n单词符号是语言中具有独立意义的最基本结构单词符号是语言中具有独立意义的最基

4、本结构。一般包括:常数、标识符、基本字、算符、界一般包括:常数、标识符、基本字、算符、界符等。符等。n描述工具:有限自动机描述工具:有限自动机o语法规则语法规则:语法单位的形成规则:语法单位的形成规则。n规定了如何从单词符号形成语法单位;规定了如何从单词符号形成语法单位;n语法单位通常包括:表达式、语句、分程序、语法单位通常包括:表达式、语句、分程序、过程、函数、程序等过程、函数、程序等;n描述工具:上下文无关文法描述工具:上下文无关文法合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o Ei EiEE+EEE+EEE*EEE*EE(E)E(E)o语法规则和词法规则定义了程序

5、的的形式语法规则和词法规则定义了程序的的形式结构,是判断输入字符串是否构成一个形结构,是判断输入字符串是否构成一个形式上正确的程序的依据。式上正确的程序的依据。o定义语法单位的意义属于语义问题。定义语法单位的意义属于语义问题。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所二二.语义语义o对于语言来说,不仅要给出它的词法、语法规则,而且对于语言来说,不仅要给出它的词法、语法规则,而且要定义它的单词符号和语法符号的意义。离开了语义要定义它的单词符号和语法符号的意义。离开了语义的语言只是一堆符号的集合。各种语言中有形式上完的语言只是一堆符号的集合。各种语言中有形式上完全相同的语法

6、单位,含义却不相同。全相同的语法单位,含义却不相同。o语义语义:对某种语言,定义一组规则:对某种语言,定义一组规则,用它可以定义一个用它可以定义一个程序的意义,称为语义规则。程序的意义,称为语义规则。o描述方法:描述方法:n自然语言描述:隐藏错误、二义性和不完整性自然语言描述:隐藏错误、二义性和不完整性n形式描述:操作语义形式描述:操作语义(PL/1)(PL/1)、指称语义指称语义(ADA)(ADA)、代数语代数语义义(PASCAL)(PASCAL)。o目前大多数编译程序使用基于属性文法的语法制导翻译目前大多数编译程序使用基于属性文法的语法制导翻译方法来分析语义。方法来分析语义。合肥工业大学合

7、肥工业大学 计算机信息学院软件所计算机信息学院软件所三程序语言的基本功能和层次结构三程序语言的基本功能和层次结构o程序语言的基本功能:描述数据和对数据的程序语言的基本功能:描述数据和对数据的运算。运算。o所谓程序,本质上说是描述一定数据的处理所谓程序,本质上说是描述一定数据的处理过程。过程。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所程序的层次结构程序的层次结构程序程序|子程序或分程序、过程、函数子程序或分程序、过程、函数|语句语句|表达式表达式|数据引用数据引用 算符算符 函数调用函数调用合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所程序语言每个组成

8、成分的逻辑和实现意义程序语言每个组成成分的逻辑和实现意义 o抽象的逻辑的意义抽象的逻辑的意义n数学意义数学意义 o计算机实现的意义计算机实现的意义n具体实现具体实现合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.2 2.2 高级语言的一般特性(自学)高级语言的一般特性(自学)o高级语言的分类高级语言的分类 n强制式语言强制式语言(Imperative Languge)(Imperative Languge)也称过程式语也称过程式语言:命令驱动,面向语句言:命令驱动,面向语句oFORTRANFORTRAN、C C、PascalPascal,Ada Ada n应用式语言应用式

9、语言(Applicative LanguageApplicative Language):注重程序所):注重程序所表示的功能,而不是一个语句接一个语句地执行表示的功能,而不是一个语句接一个语句地执行oLISPLISP、ML ML 合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所n基于规则的语言基于规则的语言(Rule-based LanguageRule-based Language):检查):检查一定的条件,当它满足值,则执行适当的动作一定的条件,当它满足值,则执行适当的动作oProlog Prolog n面向对象语言面向对象语言(Object-Oriented Langu

10、ageObject-Oriented Language):):封封装性装性、继承性继承性和和多态性多态性oSmalltalkSmalltalk,C+C+,Java Java 2.2.1 2.2.1 高级语言的分类高级语言的分类 合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所FORTRANFORTRANn一个程序由一个主程序段和若干辅程序段组成。一个程序由一个主程序段和若干辅程序段组成。n辅程序段可以是子程序、函数段或数据块。辅程序段可以是子程序、函数段或数据块。n每个程序段有一系列的说明语句和执行语句组成。每个程序段有一系列的说明语句和执行语句组成。各段可以独立编译。各段可

11、以独立编译。n模块结构,没有嵌套和递归模块结构,没有嵌套和递归n各程序段中的名字相互独立各程序段中的名字相互独立,同一个标识符在不,同一个标识符在不同的程序段中代表不同的名字同的程序段中代表不同的名字。2.2.2 2.2.2 程序结构程序结构合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所主程序主程序 PROGRAM PROGRAM end end辅程序辅程序1 1 SUBROUTINE SUBROUTINE end end辅程序辅程序2 2 FUNCTION FUNCTION end end合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所oPASCALnP

12、ASCAL程序本身可以看成是一个操作系程序本身可以看成是一个操作系统所调用的过程,过程可以嵌套和递归。统所调用的过程,过程可以嵌套和递归。n一个一个PASCAL过程:过程:过程头;过程头;说明段(由一系列的说明语句组成);说明段(由一系列的说明语句组成);begin执行体(由一系列的执行语句组成);执行体(由一系列的执行语句组成);end合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所n作用域作用域:一个名字能被使用的区域范围:一个名字能被使用的区域范围称作这个名字的作用域。称作这个名字的作用域。n允许同一个标识符在不同的过程中代表允许同一个标识符在不同的过程中代表不同的名字

13、。不同的名字。n名字作用域规则名字作用域规则-最近嵌套原则最近嵌套原则 o一个在子程序一个在子程序B1中说明的名字中说明的名字X只在只在B1中中有效(局部于有效(局部于B1););o如果如果B2是是B1的一个内层子程序且的一个内层子程序且B2中对中对标识符标识符X没有新的说明,则原来的名字没有新的说明,则原来的名字X在在B2中仍然有效。如果中仍然有效。如果B2对对X重新作了说重新作了说明,那么,明,那么,B2对对X的任何引用都是指重新的任何引用都是指重新说明过的这个说明过的这个X。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所program main var A,B:rea

14、l;procedure P1 var B:boolean;begin end procedure P2 var A:integer;begin endbegin endA(real)B(real)B(bool)A(integer)合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所nPASCAL提供了丰富的数据类型和运算提供了丰富的数据类型和运算方式,它允许用户动态地申请和退还存方式,它允许用户动态地申请和退还存贮空间。贮空间。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所oADAn程程序序包包(package):把把数数据据和和操操作作代代码码封封装装在在一

15、起,支持数据抽象。一起,支持数据抽象。n一个程序包分为两部分:一个程序包分为两部分:o可见的规范说明部分,它定义了程序包外面可以可见的规范说明部分,它定义了程序包外面可以访问的对象。访问的对象。o程序包体,它实际定义程序包的实现细节。程序包体,它实际定义程序包的实现细节。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所packageSTACKSistypeELEMisprivate;typeSTACKislimitedprivate;procedurepush(S:inoutSTACK;E:inELEM);procedurepop(S:inoutSTACK;E:outELEM

16、);endSTACK;packagebodySTACKSisprocedurepush(S:inoutSTACK;E:inELEM);begin实现细节实现细节endpush;procedurepop(S:inoutSTACK;E:outELEM);begin实现细节实现细节endpop;end;合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所oJAVAnJava是一种面向对象的高级语言是一种面向对象的高级语言o类(类(Class)o继承继承(Inheritance)o多态性多态性(Polymorphism)和动态绑定和动态绑定(Dynamic binding)合肥工业大学合

17、肥工业大学 计算机信息学院软件所计算机信息学院软件所classCarintcolor_number;intdoor_number;intspeed;push_break()add_oil()classTrash_Carextendscardoubleamount;fill_trash()合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.2.3 2.2.3 数据类型与操作数据类型与操作 o一个数据类型通常包括以下三种要素:一个数据类型通常包括以下三种要素:n用于区别这种类型数据对象的属性用于区别这种类型数据对象的属性n这种类型的数据对象可以具有的值这种类型的数据对象可以具有的

18、值n可以作用于这种类型的数据对象的操作可以作用于这种类型的数据对象的操作合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所一初等数据类型一初等数据类型n数值类型:整型、实型、复数、双精度,数值类型:整型、实型、复数、双精度,运运算:算:+,-,*,/等等n逻辑类型:布尔运算:逻辑类型:布尔运算:,n字符类型:符号处理字符类型:符号处理n指针类型指针类型合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所标识符与名字标识符与名字o标识符标识符:以字母开头的:以字母开头的,由字母数字组成的由字母数字组成的字符串字符串。o标识符标识符与与名字名字两者有本质区别:两者有本

19、质区别:n标识符标识符是语法概念是语法概念n名字名字有确切的意义和属性有确切的意义和属性合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所Jordan?标识符!?合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所标识符与名字标识符与名字o名字:名字:n值:单元中的内容值:单元中的内容n属性:类型和作用域属性:类型和作用域o名字的性质的说明方式:名字的性质的说明方式:n由说明语句来明确规定的由说明语句来明确规定的n隐含说明:隐含说明:FORTRAN FORTRAN 以以I,J,K,I,J,K,N N为首的名为首的名字代表整型,否则为实型。字代表整型,否则为实型。n

20、动态确定:走到哪里,是什么,算什么动态确定:走到哪里,是什么,算什么 合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所二二 数据结构数据结构1 1 数组数组o逻辑上,数组是由同一类型数据所组成的逻辑上,数组是由同一类型数据所组成的某种某种n n维矩形结构,沿着每一维的距离,称维矩形结构,沿着每一维的距离,称为为下标下标。n数组可变与不可变:编译时能否确定其存数组可变与不可变:编译时能否确定其存贮空间的大小。贮空间的大小。n访问:给出数组名和下标值访问:给出数组名和下标值n存放方式存放方式:按行存放按行存放,按列存放按列存放合肥工业大学合肥工业大学 计算机信息学院软件所计算机信

21、息学院软件所数组元素地址计算数组元素地址计算o数组数组A10,20A10,20的的A1A1,11为为a a,各维下标为各维下标为1 1,按行存放,那么按行存放,那么AiAi,jj地址为:地址为:a+(i-1)*20+(j-1)a+(i-1)*20+(j-1)o数组元素地址计算公式数组元素地址计算公式合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所内情向量内情向量o把数组的有关信息记录在一个把数组的有关信息记录在一个“内情向量内情向量”中,每个数组的内情向量必须包括:维中,每个数组的内情向量必须包括:维数,各维的

22、上、下限,首地址,以及数组数,各维的上、下限,首地址,以及数组(元素)的类型。(元素)的类型。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2 2 记录记录o逻辑上说,记录结构由已知类型的数据组逻辑上说,记录结构由已知类型的数据组合在一起的一种结构。合在一起的一种结构。recordcharNAME20;integerAGE;boolMARRIED;CARD1000o访问:复合名访问:复合名 CARDk.NAMECARDk.NAMEo存储:连续存放存储:连续存放o域的地址计算:相对于记录结构起点的相域的地址计算:相对于记录结构起点的相对数对数OFFSETOFFSET。合肥工业

23、大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所3 3 字符串、表格、栈字符串、表格、栈o字符串:符号处理、公式处理字符串:符号处理、公式处理o表格:本质上是一种记录结构表格:本质上是一种记录结构o线性表:一组顺序化的记录结构线性表:一组顺序化的记录结构o栈:一种线性表,后进先出,栈:一种线性表,后进先出,POP,PUSHPOP,PUSH合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所三三 抽象数据类型抽象数据类型 o一个抽象数据类型包括:一个抽象数据类型包括:n数据对象的一个集合;数据对象的一个集合;n作用于这些数据对象的抽象运算的集合;作用于这些数据对象的抽象运

24、算的集合;n这这种种类类型型对对象象的的封封装装,即即,除除了了使使用用类类型型中中所所定定义的运算外,用户不能对这些对象进行操作。义的运算外,用户不能对这些对象进行操作。o程序设计语言对抽象数据类型的支持程序设计语言对抽象数据类型的支持nAda语语言言通通过过程程序序包包(package)提提供供了了数数据据封封装装的的支持支持nSmalltalk、C+和和Java语语言言则则通通过过类类(Class)对对抽象数据类型提供支持。抽象数据类型提供支持。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.2.4 2.2.4 语句与控制结构语句与控制结构一表达式一表达式n表达式由

25、运算量(也称操作数,即数据引用或表达式由运算量(也称操作数,即数据引用或函数调用)和算符(操作符)组成。函数调用)和算符(操作符)组成。n形式:中缀、前缀、后缀形式:中缀、前缀、后缀 X*Y -A PX*Y -A Pn表达式形成规则表达式形成规则合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所算符的优先次序算符的优先次序o一般的规定一般的规定nPASCALPASCAL:左结合左结合A+B+C=(A+B)+CnFORTRANFORTRAN:对于满足左、右结合的算符可任:对于满足左、右结合的算符可任取一种,如取一种,如A+B+CA+B+C就可以处理成就可以处理成(A+B)+C(A

26、+B)+C,也可以处理成也可以处理成A+(B+C)A+(B+C)。o注意两点:注意两点:n代数性质能引用到什么程度视具体的语言代数性质能引用到什么程度视具体的语言不同而不同;不同而不同;n在数学上成立的代数性质在计算机上未必在数学上成立的代数性质在计算机上未必完全成立。完全成立。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所二语句二语句o赋值语句:赋值语句:A:=B A:=B n名字左值名字左值:该名字代表的那个单元(地址)称:该名字代表的那个单元(地址)称为该名字的左值。为该名字的左值。(所代表的存贮单元的地址所代表的存贮单元的地址)n右值右值:一个名字的值称为该名字的右

27、值。:一个名字的值称为该名字的右值。(所所代表的存贮单元的内容代表的存贮单元的内容)合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o控制语句:控制语句:l无条件转移语句无条件转移语句 goto Ll条件语句条件语句 if B then S if B then S1 else S2l循环语句循环语句 while B do S repeat S until B for i:=E1 step E2 until E3 do Sl过程调用语句过程调用语句 call P(X1,X2,.,Xn)l返回语句返回语句 return(E)合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息

28、学院软件所o说明语句:定义各种不同数据类型的变量或说明语句:定义各种不同数据类型的变量或运算,定义名字的性质。运算,定义名字的性质。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所简单句和复合句简单句和复合句o简单句:不包含其他语句成分的基本句简单句:不包含其他语句成分的基本句o复合句:句中有句的语句复合句:句中有句的语句合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所复习:程序语言的定义复习:程序语言的定义o程序语言由两方面定义:程序语言由两方面定义:n语法语法:一组规则:一组规则,用它可以形成和产生一个合式用它可以形成和产生一个合式(well-forme

29、d)的程序的程序o词法规则词法规则:单词符号的形成规则:单词符号的形成规则。n常数、标识符、基本字、算符、界符等。常数、标识符、基本字、算符、界符等。n有限自动机有限自动机o语法规则语法规则:语法单位的形成规则:语法单位的形成规则。n表达式、语句、分程序、过程、函数、程序等表达式、语句、分程序、过程、函数、程序等;n上下文无关文法上下文无关文法n语义语义:一组规则一组规则,用它可以定义一个程序的意义用它可以定义一个程序的意义合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所复习:程序语言的基本功能和层次结构复习:程序语言的基本功能和层次结构o程序语言的基本功能:描述数据和对数据

30、的运算。程序语言的基本功能:描述数据和对数据的运算。o所谓程序,本质上说是描述一定数据的处理过程。所谓程序,本质上说是描述一定数据的处理过程。程序程序|子程序或分程序、过程、函数子程序或分程序、过程、函数|语句语句|表达式表达式|数据引用数据引用 算符算符 函数调用函数调用合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所复习:复习:高级语言的一般特性高级语言的一般特性 o高级语言的分类高级语言的分类 o程序结构程序结构o数据类型与操作数据类型与操作n初等数据类型初等数据类型n数据结构数据结构n抽象数据类型抽象数据类型o语句与控制结构语句与控制结构合肥工业大学合肥工业大学 计算

31、机信息学院软件所计算机信息学院软件所2.3 2.3 程序语言的语法描述程序语言的语法描述 o几个概念几个概念:n考虑一个考虑一个有穷有穷 字母表字母表 字符集字符集n其中每一个元素称为一个其中每一个元素称为一个字符字符(符号:是语言中最基符号:是语言中最基本的不可再分的单位)本的不可再分的单位)n上的上的字字(也叫也叫字符串字符串、符号串符号串)是指由是指由中的字符中的字符所构成的一个有穷序列所构成的一个有穷序列n不包含任何字符的序列称为不包含任何字符的序列称为空字空字(空串)空串),记为,记为n用用*表示表示上的所有字的全体上的所有字的全体,包含空字包含空字例如例如:设设 =a=a,bb,则

32、,则 *=,a,b,aa,ab,ba,bb,aaa,.=,a,b,aa,ab,ba,bb,aaa,.合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o*的子集的子集U和和V的的连接连接(积积)定义为)定义为UV|U&V o设:设:U a,aa V b,bb o那么:那么:UV=ab,abb,aab,aabb 合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o*的子集的子集U和和V的的连接连接(积积)定义为)定义为UV|U&V oV自身的自身的 n次积记为次积记为Vn=VVVo规定规定V0=,令,令 V*=V0V1V2V3 称称V*是是V的的闭包闭包;o记记

33、VVV*,称,称V+是是V的正规闭包。的正规闭包。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o设:设:U a,aa o那么:那么:U*=,a,aa,aaa,aaaa,U=a,aa,aaa,aaaa,合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.3.1 2.3.1 上下文无关文法上下文无关文法o文法文法:描述语言的语法结构的形式规则描述语言的语法结构的形式规则oHegavemeabook.He He me me book book a a gave gave合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所 He me book a

34、 gave He He He gave He gave He gave me He gave me He gave me a He gave me a book合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o上下文无关文法的定义:上下文无关文法的定义:一个上下文无关文法一个上下文无关文法G G是一个四元式是一个四元式 G=(VG=(VT T,V VN N,S S,P)P),其中,其中nV VT T:终结符集合:终结符集合(非空非空)nV VN N:非终结符集合:非终结符集合(非空非空),且,且V VT T V VN N=nS S:文法的开始符号,:文法的开始符号,S S V

35、 VN NnP P:产生式集合:产生式集合(有限有限),每个产生式形式为,每个产生式形式为P P,P P V VN N,(V VT T V VN N)*n开始符开始符S S至少必须在某个产生式的左部出现一至少必须在某个产生式的左部出现一次。次。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o例,定义只含例,定义只含+,*的算术表达式的文法的算术表达式的文法 G=,其中,其中,P由下列产生式组成:由下列产生式组成:E iE E+EE E*EE (E)合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o几点规定:几点规定:n“”也可以用也可以用“:=表示,表示,

36、这种表示称为巴这种表示称为巴科斯范式科斯范式(BNF)n P 1 P 2 可缩写为可缩写为 P 1|2|n P n 其中,其中,“|”读成读成“或或”,称为,称为P的一个候选式。的一个候选式。n表示一个文法时,通常只给出开始符号和产生表示一个文法时,通常只给出开始符号和产生式,如上例,可表示为:式,如上例,可表示为:G(E):E i|E+E|E*E|(E)n例,定义只含例,定义只含+,*的算术表达式的文法的算术表达式的文法 G=,其中,其中,P由下列产生式组成:由下列产生式组成:E iE E+EE E*EE (E)合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o定义:称定义

37、:称 A 直接推出直接推出,即,即 A 仅当仅当A 是一个产生式,是一个产生式,且且,(VT VN)*。o如果如果 1 2 n,则我们称这个序列,则我们称这个序列是从是从 1到到 n的一个的一个推导推导。若存在一个从。若存在一个从 1到到 n的推导,则称的推导,则称 1可以可以推导推导出出 n。o对文法对文法G(E):E i|E+E|E*E|(E)E (E)(E+E)(i+E)(i+i)合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所n通常,用通常,用 表示:从表示:从 1 1出发,经过出发,经过一步或若干步,可以推出一步或若干步,可以推出 n n。用用 表示:从表示:从 1

38、 1出发,经过出发,经过0 0步或步或若干步,可以推出若干步,可以推出 n n。所以所以 :即即 或或q定义:假定定义:假定G G是一个文法,是一个文法,S S 是它的开始符号。是它的开始符号。如果如果 ,则,则 称是一个称是一个句型句型。仅含终结符。仅含终结符号的句型是一个号的句型是一个句子句子。文法。文法G G所产生的句子的全体所产生的句子的全体是一个是一个语言语言,将它记为,将它记为 L(G)L(G)。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o例:例:(i*i+i)是文法是文法G(E):E i|E+E|E*E|(E)的一个句子。的一个句子。证明:证明:E (E)

39、(E+E)(E*E+E)(i*E+E)(i*i+E)(i*i+i)E,(E),(E*E+E),(i*i+i)是句型。是句型。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所q例:文法例:文法G1(A):A c|AbG1(A)的语言的语言?L(G1)=c,cb,cbb,以以c开头,后继若干个开头,后继若干个b合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o例:文法例:文法G2(S):S ABA aA|aB bB|bG2(S)的语言的语言?L(G2)=ambn|m,n0合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所q例:给出产生语言为例:给

40、出产生语言为anbn|n 1的文法。的文法。G3(S):S aSb S ab合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所q例:给出产生语言为例:给出产生语言为ambn|1 n m 2n的文法。的文法。G4(S):S aSb|aaSb S ab|aab 合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o从一个句型到另一个句型的推导往往不唯一。从一个句型到另一个句型的推导往往不唯一。E+Ei+Ei+i E+EE+ii+io最左推导最左推导:任何一步:任何一步 都是对都是对 中的最左中的最左非终结符进行替换。非终结符进行替换。最右推导最右推导:任何一步:任何一

41、步 都是对都是对 中的最右中的最右非终结符进行替换。非终结符进行替换。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.3.2 2.3.2 语法树与二义性语法树与二义性o用一张图表示一个句型的推导用一张图表示一个句型的推导,称为语法树。称为语法树。o(i*i+i)(i*i+i)的语法树的语法树E(E)(E+E)(E*E+E)(i*E+E)(i*i+E)(i*i+i)E(E)(E+E)(E+i)(E*E+i)(E*i+i)(i*i+i)一棵语法树是不同推导过程的共性抽象。一棵语法树是不同推导过程的共性抽象。G(E):E i|E+E|E*E|(E)(i*i+i)合肥工业大学合肥

42、工业大学 计算机信息学院软件所计算机信息学院软件所o如果使用最左如果使用最左(右右)推导,则一个最左推导,则一个最左(右右)推导与语法树一一对应。推导与语法树一一对应。o一个句型是否只对应唯一一棵语法树?一个句型是否只对应唯一一棵语法树?合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o定义定义:如果一个文法存在某个句子对应两颗如果一个文法存在某个句子对应两颗不同的语法树不同的语法树,则说这个则说这个文法是二义的文法是二义的。G(E):E i|E+E|E*E|(E)是二义文法。是二义文法。o语言的二义性:一个语言的二义性:一个语言是二义性的语言是二义性的,如果,如果对它不存在

43、无二义性的文法。对它不存在无二义性的文法。n可能存在可能存在G和和G,一个为二义的,一个为无,一个为二义的,一个为无二义的。但二义的。但L(G)=L(G)o二义性问题是不可判定问题,即不存在一个二义性问题是不可判定问题,即不存在一个算法,它能在有限步骤内,确切地判定一个算法,它能在有限步骤内,确切地判定一个文法是否是二义的。文法是否是二义的。o可以找到一组无二义文法的充分条件。可以找到一组无二义文法的充分条件。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所二义文法:二义文法:G(E):E i|E+E|E*E|(E)表达式表达式 项项|表达式表达式+项项项项 因子因子|项项*

44、因子因子因子因子 (表达式表达式)|i无二义文法:无二义文法:G(E):E T|E+T T F|T*F F (E)|i合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所)EEEFFTTTTi+*(EFiiE T F (E)(E+T)(T+T)(T*F+T)(F*F+T)(i*F+T)(i*i+T)(i*i+F)(i*i+i)考虑句子考虑句子(i*i+i)合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o描述程序设计语言时,对于上下文无关文法描述程序设计语言时,对于上下文无关文法的限制的限制 :1 1 不含不含P PP P形式的产生式形式的产生式2 2 每个非终

45、结符每个非终结符P P必须有用处必须有用处即:即:合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.3.3 2.3.3 形式语言鸟瞰形式语言鸟瞰oChomsky于于1956年建立形式语言体系,年建立形式语言体系,他把文法分成四种类型:他把文法分成四种类型:0,1,2,3型。型。o与上下文无关文法一样,它们都由四部分与上下文无关文法一样,它们都由四部分组成,但对产生式的限制有所不同。组成,但对产生式的限制有所不同。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所0型型(短语文法,图灵机短语文法,图灵机):产生式形如:产生式形如:其中:其中:(VT VN)*且

46、至少含有一个非终结且至少含有一个非终结符;符;(VT VN)*1型型(上下文有关文法,线性界限自动机上下文有关文法,线性界限自动机):产生式形如:产生式形如:其中:其中:|,仅,仅 S 例外。例外。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2型型(上下文无关文法,非确定下推自动机上下文无关文法,非确定下推自动机):产生式形如:产生式形如:A 其中:其中:A VN;(VT VN)*。3型型(正规文法,有限自动机正规文法,有限自动机):产生式形如:产生式形如:A B 或或 A 其中:其中:VT*;A,B VN 产生式形如:产生式形如:A B 或或 A 其中:其中:VT*;A

47、,B VN右线性文法右线性文法左线性文法左线性文法合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所四种类型描述能力比较四种类型描述能力比较0型型1型型2型型3型型合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所oL5=anbn|n 1 不能由正规文法产生,但可不能由正规文法产生,但可由上下文无关文法产生:由上下文无关文法产生:G5(S):S aSb|aboL6=anbncn|n 1不能由上下文无关文法产生,不能由上下文无关文法产生,但可由上下文有关文法产生:但可由上下文有关文法产生:G6(S):S aSBC|aBC CB BC aB ab bB bb bC

48、bc cC cc合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所o程序设计语言不是上下文无关语言,甚至不程序设计语言不是上下文无关语言,甚至不是上下文有关语言是上下文有关语言。oL7=c|(a|b)*不能由上下文无关文法不能由上下文无关文法产生,甚至连上下文有关文法也不能产生,产生,甚至连上下文有关文法也不能产生,只能由只能由0 0型文法产生。型文法产生。n标识符引用标识符引用n过程调用过程中,过程调用过程中,形形-实参数地对应性实参数地对应性(如如个数,顺序和类型一致性个数,顺序和类型一致性)o现今程序设计语言的语言结构,用上下文无现今程序设计语言的语言结构,用上下文无关文法描述就足够了。关文法描述就足够了。合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所作业oP36-6,7,8,9,10,11

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com