版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章
高级语言及其语法描述
常用的高级语言
FORTRAN 数值计算COBOL 事务处理PASCAL 结构程序设计ADA 大型程序、嵌入式实时系统PROLOG 逻辑程序设计ALGOL 算法语言C/C++ 系统程序设计Java Internet程序设计与机器语言或汇编语言比较,高级语言的优点:较接近于数学语言和工程语言,比较直观、自然和易于理解;便于验证其正确性,易于改错;编写效率高;易于移植.2.1 程序语言的定义程序语言由两方面定义:语法语义语用一.语法程序本质上是一定字符集上的字符串。语法:一组规则,用它可以形成和产生一个合式(well-formed)的程序。语法词法规则:单词符号的形成规则。单词符号是语言中具有独立意义的最基本结构。一般包括:常数、标识符、基本字、算符、界符等。描述工具:有限自动机语法规则:语法单位的形成规则。语法单位通常包括:表达式、语句、分程序、过程、函数、程序等;描述工具:上下文无关文法E→i E→E+E E→E*E E→(E)语法规则和词法规则定义了程序的的形式结构。定义语法单位的意义属于语义问题。二.语义语义:一组规则,用它可以定义一个程序的意义。描述方法:自然语言描述:隐藏错误、二义性和不完整性形式描述:操作语义(PL/1)指称语义(ADA)代数语义(PASCAL)三.程序语言的基本功能和层次结构程序语言的基本功能:描述数据和对数据的运算。所谓程序,本质上说是描述一定数据的处理过程。程序的层次结构程序|子程序或分程序、过程、函数|语句|表达式|数据引用算符函数调用程序语言每个组成成分的逻辑和实现意义
抽象的逻辑的意义数学意义计算机实现的意义具体实现2.2高级语言的一般特性
高级语言的分类
强制式语言(ImperativeLanguge)也称过程式语言:命令驱动,面向语句FORTRAN、C、Pascal,Ada应用式语言(ApplicativeLanguage):注重程序所表示的功能,而不是一个语句接一个语句地执行LISP、ML基于规则的语言(Rule-basedLanguage):检查一定的条件,当它满足值,则执行适当的动作Prolog面向对象语言(Object-OrientedLanguage):封装性、继承性和多态性Smalltalk,C++,Java
2.3程序语言的语法描述2.2高级语言的一般特性2.2.2程序结构FORTRAN一个程序由一个主程序段和若干辅程序段组成。辅程序段可以是子程序、函数段或数据块。每个程序段有一系列的说明语句和执行语句组成。各段可以独立编译。模块结构,没有嵌套和递归各程序段中的名字相互独立,同一个标识符在不同的程序段中代表不同的名字。主程序PROGRAM…
…end辅程序1SUBROUTINE…
…end辅程序2FUNCTION…
…endPASCALPASCAL程序本身可以看成是一个操作系统所调用的过程,过程可以嵌套和递归。一个PASCAL过程:过程头;说明段(由一系列的说明语句组成);begin执行体(由一系列的执行语句组成);end作用域:一个名字能被使用的区域范围称作这个名字的作用域。允许同一个标识符在不同的过程中代表不同的名字。名字作用域规则--"最近嵌套原则"一个在子程序B1中说明的名字X只在B1中有效(局部于B1);如果B2是B1的一个内层子程序且B2中对标识符X没有新的说明,则原来的名字X在B2中仍然有效。如果B2对X重新作了说明,那么,B2对X的任何引用都是指重新说明过的这个X。programmain
varA,B:real;
…
procedureP1varB:boolean;
…
begin
…end
procedureP2varA:integer;
…begin
…endbegin
…endA(real)B(real)B(bool)A(integer)PASCAL提供了丰富的数据类型和运算方式,它允许用户动态地申请和退还存贮空间。ADA程序包(package):把数据和操作代码封装在一起,支持数据抽象。一个程序包分为两部分:可见的规范说明部分,它定义了程序包外面可以访问的对象。程序包体,它实际定义程序包的实现细节。packageSTACKSistypeELEMisprivate;typeSTACKislimitedprivate;procedurepush(S:inoutSTACK;E:inELEM);procedurepop(S:inoutSTACK;E:outELEM);…endSTACK;packagebodySTACKSisprocedurepush(S:inoutSTACK;E:inELEM);begin……实现细节endpush;procedurepop(S:inoutSTACK;E:outELEM);begin……实现细节endpop;end;JAVAJava是一种面向对象的高级语言类(Class)继承(Inheritance)多态性(Polymorphism)和动态绑定(Dynamicbinding)classCar{intcolor_number;intdoor_number;intspeed;
…push_break(){
…}add_oil(){
…}}
classTrash_Carextendscar{doubleamount;fill_trash(){
…}}2.2.3数据类型与操作一个数据类型通常包括以下三种要素:用于区别这种类型数据对象的属性这种类型的数据对象可以具有的值可以作用于这种类型的数据对象的操作2.2.3数据类型与操作一.初等数据类型数值类型:整型、实型、复数、双精度,运算:+,-,*,/等逻辑类型:布尔运算:∨,∧,┑字符类型:符号处理指针类型标识符与名字标识符:以字母开头的,由字母数字组成的字符串。标识符与名字两者有本质区别:标识符是语法概念名字有确切的意义和属性Jordan?标识符!??标识符与名字名字:值:单元中的内容属性:类型和作用域名字的性质的说明方式:由说明语句来明确规定的隐含说明:FORTRAN以I,J,K,…N为首的名字代表整型,否则为实型。动态确定:走到哪里,是什么,算什么二数据结构1数组逻辑上,数组是由同一类型数据所组成的某种n维矩形结构,沿着每一维的距离,称为下标。数组可变与不可变:编译时能否确定其存贮空间的大小。访问:给出数组名和下标值存放方式:按行存放,按列存放数组元素地址计算数组A[10,20]的A[1,1]为a,各维下标为1,按行存放,那么A[i,j]地址为:a+(i-1)*20+(j-1)数组元素地址计算公式内情向量把数组的有关信息记录在一个“内情向量”中,每个数组的内情向量必须包括:维数,各维的上、下限,首地址,以及数组(元素)的类型。2记录逻辑上说,记录结构由已知类型的数据组合在一起的一种结构。 record{charNAME[20]; integerAGE; boolMARRIED; }CARD[1000]访问:复合名CARD[k].NAME存储:连续存放域的地址计算:相对于记录结构起点的相对数OFFSET。3字符串、表格、栈字符串:符号处理、公式处理表格:本质上是一种记录结构线性表:一组顺序化的记录结构栈:一种线性表,后进先出,POP,PUSH三抽象数据类型一个抽象数据类型包括:数据对象的一个集合;作用于这些数据对象的抽象运算的集合;这种类型对象的封装,即,除了使用类型中所定义的运算外,用户不能对这些对象进行操作。程序设计语言对抽象数据类型的支持Ada语言通过程序包(package)提供了数据封装的支持Smalltalk、C++和Java语言则通过类(Class)对抽象数据类型提供支持。2.2.4语句与控制结构一.表达式表达式由运算量(也称操作数,即数据引用或函数调用)和算符(操作符)组成。形式:中缀、前缀、后缀X*Y-AP↑表达式形成规则算符的优先次序一般的规定PASCAL:左结合A+B+C=(A+B)+CFORTRAN:对于满足左、右结合的算符可任取一种,如A+B+C就可以处理成(A+B)+C,也可以处理成A+(B+C)。注意两点:代数性质能引用到什么程度视具体的语言不同而不同;在数学上成立的代数性质在计算机上未必完全成立。二.语句赋值语句:A:=B名字左值:该名字代表的那个单元(地址)称为该名字的左值。(所代表的存贮单元的地址)右值:一个名字的值称为该名字的右值。(所代表的存贮单元的内容)控制语句:无条件转移语句gotoL条件语句ifBthenSifB
thenS1elseS2循环语句whileBdoSrepeatSuntilBfori:=E1stepE2untilE3doS过程调用语句callP(X1,X2,...,Xn)返回语句
return(E)说明语句:定义各种不同数据类型的变量或运算,定义名字的性质。简单句和复合句简单句:不包含其他语句成分的基本句复合句:句中有句的语句复习:程序语言的定义程序语言由两方面定义:语法:一组规则,用它可以形成和产生一个合式(well-formed)的程序词法规则:单词符号的形成规则。常数、标识符、基本字、算符、界符等。有限自动机语法规则:语法单位的形成规则。表达式、语句、分程序、过程、函数、程序等;上下文无关文法语义:一组规则,用它可以定义一个程序的意义复习:程序语言的基本功能和层次结构程序语言的基本功能:描述数据和对数据的运算。所谓程序,本质上说是描述一定数据的处理过程。程序|子程序或分程序、过程、函数|语句|表达式|数据引用算符函数调用复习:高级语言的一般特性
高级语言的分类
程序结构数据类型与操作初等数据类型数据结构抽象数据类型语句与控制结构2.3
程序语言的语法描述
基本概念(一、术语)元素的非空有穷集合。例如,∑={a,b,c}1.字母表
根据字母表的定义,Σ是字母表,它由a、b、c三个元素组成。基本概念(一、术语)
是一个字母表,由0、1两个元素组成。注意:例如,∑'={0,1}
(2)字母表中的元素,可以是字母、数字或其他符号。(1)字母表中至少包含一个元素。基本概念(一、术语)
字母表中的元素称为符号或称为字符。例如,前述例子中2.符号(字符)a、b、c是字母表Σ中的符号;0、1是字母表Σ'中的符号。基本概念(一、术语)
例如,设有字母表∑={a,b,c}
符号的有穷序列称为符号串。
符号串总是建立在某个特定字母表上的且只由字母表上的有穷多个符号组成。
则有符号串a,b,ab,ba,cba,abc…
3.符号串(字)基本概念(一、术语)说明:不包含任何符号的符号串,称为空符号串,用ε表示。符号串中符号的顺序是很重要的。ab和ba是字母表Σ上的两个不同的符号串。空符号串由0个符号组成,其长度|ε|=0基本概念(二、运算)
设x和y是符号串,则串xy称为它们的连结。则XY=ABC10A,YX=10AABC。注意:对任意一个符号串x,1.符号串的连结例如,设X=ABC,Y=10A我们有εx=xε=x。基本概念(二、运算)2.集合的乘积
设A和B是符号串的集合,则A和B的乘积定义为:
集合的乘积是满足于x∈A,y∈B的所有符号串xy所构成的集合。AB={xy|x∈A,y∈B}{}A=A{}=A基本概念(二、运算)例如:设A={a,b},B={c,d}则AB={ac,ad,bc,bd}由于对任意的符号串x,总有x=x=x所以,对任意集合A,我们有:基本概念(二、运算)
特别指出的是,是符号串,不是集合,而{}表示由空符号串所组成的集合,但这样的集合不是空集合Φ={}
。基本概念(二、运算)
3.符号串的幂运算
设x是符号串,则x的幂运算定义为:
x0=
x1=x
x2=xx
x3=xxx
…
xn=xx…x=xxn-1(n>0)n注意:x0≠1基本概念(二、运算)例如,设x=abc则x0=x1=abcx2=xx=abcabc
…基本概念(二、运算)
4.集合的幂运算
设A是符号串的集合,则集合A的幂运算定义为:A0={}A1=AA2=AA
…
An=AA…A=AAn-1(n>0)n基本概念(二、运算)例如,设A={a,b},则A0={}A1=A={a,b}A2=AA={aa,ab,ba,bb}
…A3=AAA=A2A={aaa,aab,aba,abb,baa,bab,bba,bbb}基本概念(二、运算)5.集合A的正则闭包A+与自反闭包A*
设A是符号串的集合,则A的正则闭包A+和A的自反闭包A*的定义为:A+=A1∪A2∪…∪AnA*=A0∪A1∪A2∪…
∪An={ε}∪A+基本概念(二、运算)
可见,集合A的正则闭包表示A上元素a,b构成的所有符号串的集合,集合A的自反闭包比集合A的正则闭包多含一个空符号串。例如,设A={a,b},则:A+={a,b,aa,ab,ba,bb,aaa,aab,…}A*={ε,a,b,aa,ab,ba,bb,aaa,aab,…}∑*的子集U和V的连接(积)定义为UV={|U&V}
例:设:U={a,aa}V={b,bb}那么:
UV={ab,abb,aab,aabb}∑*的子集U和V的连接(积)定义为UV={|U&V}
V自身的n次积记为 Vn=VV…V规定V0={},令V*=V0∪V1∪V2∪V3∪…称V*是V的闭包;记V+=VV*,称V+是V的正规闭包。设:U={a,aa}那么:
U*
={,a,aa,aaa,aaaa,…}U+
={a,aa,aaa,aaaa,…}2.3.1上下文无关文法文法:描述语言的语法结构的形式规则Hegavemeabook.<句子><主语><谓语><间接宾语><直接宾语><主语><代词><谓语><动词><间接宾语><代词><直接宾语><冠词><名词><代词>He<代词>me<名词>book<冠词>a<动词>gave<句子><主语><谓语><间接宾语><直接宾语><主语><代词><谓语><动词><间接宾语><代词><直接宾语><冠词><名词><代词>He<代词>me<名词>book<冠词>a<动词>gave<句子><主语><谓语><间接宾语><直接宾语><代词><谓语><间接宾语><直接宾语>He<谓语><间接宾语><直接宾语>He<动词><间接宾语><直接宾语>Hegave<间接宾语><直接宾语>Hegave<代词><直接宾语>Hegaveme<直接宾语>Hegaveme<冠词><名词>Hegavemea<名词>Hegavemeabook终结符号【VT】:从语法角度看,终结符是一个语言的不可再分的基本符号。如:基本
字、标识符、常数、算符和界符等。非终结符号(语法变量)【VN】:用来代表语法单位。如“算术表达式”、“布尔表达式”、“赋值句”、“子程序”、“函数”等。一个非终结符代表一个一定的语法概念,是一个类(集合)记号,而不是一个个体记号。上下文无关文法的定义:一个上下文无关文法G是一个四元式G=(VT,VN,S,P),其中VT:终结符集合(非空)VN:非终结符集合(非空),且VT
VN=S:文法的开始符号,SVNP:产生式集合(有限),每个产生式形式为P,PVN,(VT
VN)*开始符S至少必须在某个产生式的左部出现一次。几点规定:“”也可以用“::="表示,这种表示称为巴科斯范式(BNF)P1
P2可缩写为P1|2||n
Pn其中,“|”读成“或”,称为P的一个候选式。表示一个文法时,通常只给出开始符号和产生式,如上例,可表示为:G(E):Ei|E+E|E*E|(E)例,定义只含+,*的算术表达式的文法G=<{i,+,*,(,)},{E},E,P>,其中,P由下列产生式组成:EiEE+EEE*EE(E)定义:称A直接推出,即A仅当A是一个产生式,且,(VT
VN)*。如果1
2
n,则我们称这个序列是从1到n的一个推导。若存在一个从1到n的推导,则称1可以推导出n。对文法G(E):Ei|E+E|E*E|(E)E(E)(E+E)(i+E)(i+i)用表示:从1出发,经过0步或若干步,可以推出n。
所以:即或定义:假定G是一个文法,S是它的开始符号。如果,则称是一个句型。仅含终结符号的句型是一个句子。文法G所产生的句子的全体是一个语言,将它记为L(G)。通常,用
表示:从1出发,经过一步或若干步,可以推出n。例:(i*i+i)是文法G(E):Ei|E+E|E*E|(E)的一个句子。证明:
E(E)(E+E)(E*E+E)(i*E+E)(i*i+E)(i*i+i)E,(E),(E*E+E),…,(i*i+i)是句型。例:文法G1(A):Ac|AbG1(A)的语言?L(G1)={c,cb,cbb,}以c开头,后继若干个b例:文法G2(S):SABAaA|aBbB|bG2(S)的语言?L(G2)={ambn|m,n>0}例:给出产生语言为{anbn|n1}的文法。G3(S):SaSbSab例:给出产生语言为{ambn|1≤n≤m≤2n}的文法。G4(S):SaSb|aaSbSab|aab从一个句型到另一个句型的推导往往不唯一。E+Ei+Ei+iE+EE+ii+i最左推导:任何一步都是对中的最左非终结符进行替换。
最右推导:任何一步都是对中的最右非终结符进行替换。递归规则与递归文法递归规则是指那些在规则的右部含有与规则左部相同符号的规则。例如:U→xUy,右部含有与规则左部相同符号U,那么就是递归规则。如果这个相同的符号出现在右部的最左端,则为左递归规则。如U→Uy如果这个相同的符号出现在右部的最右端,则为右递归规则。如U→xU若文法中至少包含一条递归规则,则称文法是直接递归的。若文法中不含递归规则,但有推导过程
U
xUy,所以该文法为间接递归文法。
递归文法使我们能用有穷的文法刻画无穷的语言。
2.3.2语法树与二义性用一张图来表示一个句型的推导,有助于理解句子语法结构的层次。定义:设文法G=(VN,VT,P,S),对于文法G的任意一个句型都存在一棵相应的语法树:结点由符号组成。根结点对应于开始符号。只有非终结符号对应的结点有子结点。一个结点和它的子结点分别对应于文法中的一个规则的左部和右部。用一张图表示一个句型的推导,称为语法树。(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):Ei|E+E|E*E|(E)(i*i+i)如果使用最左(右)推导,则一个最左(右)推导与语法树一一对应。一个句型是否只对应唯一一棵语法树?定义:如果一个文法存在某个句子对应两颗不同的语法树,则说这个文法是二义的。G(E):Ei|E+E|E*E|(E)是二义文法。语言的二义性:一个语言是二义性的,如果对它不存在无二义性的文法。可能存在G和G’,一个为二义的,一个为无二义的。但L(G)=L(G’)二义性问题是不可判定问题,即不存在一个算法,它能在有限步骤内,确切地判定一个文法是否是二义的。可以找到一组无二义文法的充分条件。二义文法:G(E):Ei|E+E|E*E|(E)表达式项|表达式+项项因子|项*因子因子
(表达式)|i无二义文法:G(E):ET|E+TTF|T*FF(E)|i)EEEFFTTTTi+*(EFiiET
F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年03月恒丰银行合肥分行2024年社会招考笔试历年参考题库附带答案详解
- 2025年度环保大数据分析与处理技术外包服务合同3篇
- 2024年中国砖茶市场调查研究报告
- 天津2025年天津医科大学第二医院招聘98人笔试历年典型考点(频考版试卷)附带答案详解
- 2024年03月中国工商银行湖北省分行2024年度春季校园招考170名工作人员笔试历年参考题库附带答案详解
- 2024年03月中国工商银行远程银行中心数字化运营社会招考笔试历年参考题库附带答案详解
- 2025版房地产经纪实务第二十六讲房地产经纪行业自律公约签订合同2篇
- 2025年度大米种植户联合社合作协议3篇
- 2024年中国梅花香市场调查研究报告
- 2024年企业团建活动广告服务代理合同范本6篇
- 小学赣美版六年级美术上册第二十课向往和平课件(16张)ppt课件
- 中药饮片购进验收记录表格模板
- TCM远红外发展初析
- 滑坡稳定性计算及滑坡推力计算
- 继教脉图分析 0
- 房地产开发企业土地增值税清算政策与实务操作(成都市)解读
- 房地产估计第九章假设开发法练习题参考答案
- [爆笑小品校园剧本7人]爆笑小品校园剧本
- 第五章 逆向选择
- 高速铁路电气化系统概论PPT优秀课件
- 农村祠堂上梁说辞
评论
0/150
提交评论