编译原理-第3章文法和语言.ppt
《编译原理-第3章文法和语言.ppt》由会员分享,可在线阅读,更多相关《编译原理-第3章文法和语言.ppt(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章章:文法和语言的概念和表示文法和语言的概念和表示v 概述概述v 形式语言基础形式语言基础v3.2 文法的直观理解文法的直观理解v3.3 文法和语言的定义文法和语言的定义v 文法的类型文法的类型v 语法树与二义性语法树与二义性v 句型的分析句型的分析3.0 3.0 概述概述 用高级语言编程比用低级语言方便,但要解决两个问题:用高级语言编程比用低级语言方便,但要解决两个问题:(1)(1)计算机怎样懂得高级语言程序,这就需要一个翻译程序实现从源程序到目计算机怎样懂得高级语言程序,这就需要一个翻译程序实现从源程序到目 标程序的转换。标程序的转换。(2)(2)用什么方法来精确定义高级语言,即
2、怎样精确描述高级语言。用什么方法来精确定义高级语言,即怎样精确描述高级语言。要构造一个编译程序,应深刻理解被编译的源语言的结构(即词法和语法)要构造一个编译程序,应深刻理解被编译的源语言的结构(即词法和语法)及其含义(即语义),同时要弄清源语言的语法规则和语义规则是采用什么理及其含义(即语义),同时要弄清源语言的语法规则和语义规则是采用什么理论或什么方法来描述的。论或什么方法来描述的。本章目的本章目的 为语言的语法描述寻求工具,该工具要对程序设计语言给出精为语言的语法描述寻求工具,该工具要对程序设计语言给出精确无二义的语法描述。(严谨、简洁、易读)确无二义的语法描述。(严谨、简洁、易读)形式工
3、具形式工具-形式语言抽象地定义为一个数学系统。形式语言抽象地定义为一个数学系统。“形式形式”是指是指这样的事实:语言的所有规则只以什麽符号串能出现的方式来陈述。这样的事实:语言的所有规则只以什麽符号串能出现的方式来陈述。语言概述语言概述语言是由句子组成的集合,或说是由一组符号串所构成的集合。语言是由句子组成的集合,或说是由一组符号串所构成的集合。汉语汉语所有符合汉语语法的句子的全体所有符合汉语语法的句子的全体英语英语所有符合英语语法的句子的全体所有符合英语语法的句子的全体程序设计语言程序设计语言所有该语言的程序的全体所有该语言的程序的全体 每个句子构成的规律每个句子构成的规律研究语言研究语言
4、每个句子的含义每个句子的含义 每个句子和使用者的关系每个句子和使用者的关系研究程序设计语言研究程序设计语言 每个程序构成的规律每个程序构成的规律 每个程序的含义每个程序的含义 每个程序和使用者的关系每个程序和使用者的关系语言研究的三个方面语言研究的三个方面 语法语法 Syntax 语义语义 Semantics 语用语用 Pragmatics语法语法 表示构成语言句子的各个记号之间的组合规律。表示构成语言句子的各个记号之间的组合规律。语义语义 表示各个记号的特定含义。(各个记号和记号所表示的对象之间表示各个记号的特定含义。(各个记号和记号所表示的对象之间的关系)的关系)语用语用 表示在各个记号所
5、出现的行为中,它们的来源、使用和影响。表示在各个记号所出现的行为中,它们的来源、使用和影响。每每种种语语言言具具有有两两个个可可开开始始的的特特性性,即即语语言言的的形形式式和和该该形形式式相相关关联联的的意意义。义。语语言言的的实实例例若若在在语语法法上上是是正正确确的的,其其相相关关联联的的意意义义可可以以从从两两个个观观点点来来看看,其其一一是是该该句句子子的的创创立立者者所所想想要要表表示示的的意意义义,另另一一是是接接收收者者所所检检验验到到的的意意义义。这这两两个个意意义义并并非非总总是是一一样样的的,前前者者称称为为语语言言的的语语义义,后后者者是是其其语语用用意义。幽默、双关语
6、和谜语就是利用这两方面意义间的差异。意义。幽默、双关语和谜语就是利用这两方面意义间的差异。如果不考虑语义和语用,即只从语法这一侧面来看语言,这种意义下的如果不考虑语义和语用,即只从语法这一侧面来看语言,这种意义下的语言称作形式语言。形式语言抽象地定义为一个数学系统。语言称作形式语言。形式语言抽象地定义为一个数学系统。“形式形式”是指这是指这样的事实:语言的所有规则只以什麽符号串能出现的方式来陈述。形式语言样的事实:语言的所有规则只以什麽符号串能出现的方式来陈述。形式语言理论是对符号串集合的表示法、结构及其特性的研究。是程序设计语言语法理论是对符号串集合的表示法、结构及其特性的研究。是程序设计语
7、言语法分析研究的基础。分析研究的基础。任何语言均可看作一个集合。这个集合中的每个元素都是在任何语言均可看作一个集合。这个集合中的每个元素都是在一定符号集一定符号集(字母表)上的一个符号串(字母表)上的一个符号串。对于自然语言来说,它们是定义在某个字母表上的对于自然语言来说,它们是定义在某个字母表上的句子的集合句子的集合。对于程序语言来说,它们也是定义在某个字母表上的对于程序语言来说,它们也是定义在某个字母表上的句子句子的集合。的集合。这里这里的句子,就是一个源程序的句子,就是一个源程序。通常,源程序是由关键字、标识符、常数、运算符以及一些界限符组成。通常,源程序是由关键字、标识符、常数、运算符
8、以及一些界限符组成。这些语法成分统称为单词或单词符号。这些语法成分统称为单词或单词符号。单词符号是语言中具有独立意义的最基本单位。语言的单词符号是由词法单词符号是语言中具有独立意义的最基本单位。语言的单词符号是由词法规则所确定的,即词法规则规定了单词符号的形成规则。规则所确定的,即词法规则规定了单词符号的形成规则。当我们表述一种语言时,无非是要说明这种语言的句子,如果语言只含当我们表述一种语言时,无非是要说明这种语言的句子,如果语言只含有穷多个句子,则只需列出句子的有穷集就行了,但对于含有无穷句子的语有穷多个句子,则只需列出句子的有穷集就行了,但对于含有无穷句子的语言来讲,就存在着如何给出它的
9、有穷表示的问题。言来讲,就存在着如何给出它的有穷表示的问题。以自然语言为例,人们无法列出全部句子,但是人们可以给出一些规则,以自然语言为例,人们无法列出全部句子,但是人们可以给出一些规则,用这些规则来说明用这些规则来说明(或者定义或者定义)句子的组成结构,比如汉语句子可以是由主语句子的组成结构,比如汉语句子可以是由主语后随谓语而成,构成谓语的是动词和直接宾语。后随谓语而成,构成谓语的是动词和直接宾语。“我是大学生我是大学生”。是汉语的一个句子。是汉语的一个句子 用语法来描述:用语法来描述:句子句子=主语主语谓语谓语主语主语=代词代词名词名词代词代词=我我你你他他名词名词=王明王明大学生大学生工
10、人工人英语英语谓语谓语=动词动词直接宾语直接宾语动词动词=是是学习学习直接宾语直接宾语=代词代词名词名词 有了一组规则以后,按照如下方式用它们导出句子:开始去找有了一组规则以后,按照如下方式用它们导出句子:开始去找=左左端的带有端的带有句子句子的规则并把它由的规则并把它由=右端的符号串代替,这个动作表示右端的符号串代替,这个动作表示成:成:句子句子 主语主语谓语谓语,然后在得到的串,然后在得到的串主语主语谓语谓语中,选取中,选取主语主语或或谓语谓语,再用相应规则的,再用相应规则的=右端代替之。比如,右端代替之。比如,选取了选取了主语主语,并采用规则,并采用规则主语主语=代词代词,那么得到:那么
11、得到:主语主语谓语谓语 代词代词谓语谓语,重复做下去,重复做下去,句子:句子:“我是大学生我是大学生”的全部动作过程是:的全部动作过程是:句子句子 主语主语谓语谓语 代词代词谓语谓语 我我谓语谓语 我我动词动词直接宾语直接宾语 我是我是直接宾语直接宾语 我是我是名词名词 我是大学生我是大学生 “我是大学生我是大学生”的构成符合上述规则,而的构成符合上述规则,而“我大学生是我大学生是”不符合上不符合上述规则,我们说它不是句子。这些规则成为我们判别句子结构合法与否述规则,我们说它不是句子。这些规则成为我们判别句子结构合法与否的依据,换句话说,这些规则看成是一种元语言,用它描述汉语。这里的依据,换句
12、话说,这些规则看成是一种元语言,用它描述汉语。这里仅仅涉及汉语句子的结构描述。其中一种描述元语言称为文法。仅仅涉及汉语句子的结构描述。其中一种描述元语言称为文法。3.1 3.1 形式语言基础形式语言基础基本概念基本概念:一、字母表和符号串一、字母表和符号串1.1.字母表:字母表:符号的非空有限集合符号的非空有限集合 例:例:=aa,b b,cc2.2.符号:符号:字母表中的元素字母表中的元素 例:例:a a,b b,c c3.3.符号串:符号串:符号的有穷序列符号的有穷序列 例:例:a,aa,ac,abca,aa,ac,abc,.特别地特别地,空符号串:空符号串:无任何符号的符号串无任何符号的
13、符号串()符号串的形式定义符号串的形式定义 有字母表有字母表,定义:,定义:(1 1)是是 上的符号串;上的符号串;(2 2)若)若x x是是 上的符号串,且上的符号串,且a a ,则,则axax或或xaxa是是 上的符号串;上的符号串;(3 3)y y是是 上的符号串,上的符号串,iffiff(当且仅当)(当且仅当)y y可由(可由(1 1)和()和(2 2)产生。)产生。4.4.符号串集合:符号串集合:由符号串构成的集合。由符号串构成的集合。二、符号串和符号串集合的运算二、符号串和符号串集合的运算 5.5.符号串相等:符号串相等:若若x x、y y是集合上的两个符号串,则是集合上的两个符号
14、串,则x xy yiffiff(当且仅当)组成(当且仅当)组成x x的每一个符号和组成的每一个符号和组成y y的的每一个每一个符号符号依次相等。依次相等。6.6.符号串的长度:符号串的长度:x x为符号串,其长度为符号串,其长度|x|x|等于组成该符等于组成该符 号串的符号个数。号串的符号个数。例:例:x xSTV STV,|x|=3|x|=3 特别地特别地,|=0,|=0例:例:Aa,b,B=c,d,AB=?8.符号串集合的乘积运算符号串集合的乘积运算:令:令A、B为符号串集合,定义为符号串集合,定义 AB xy|xA,yB ac,ad,bc,bd 因为因为xxx,所以,所以A=A=A 7.
15、7.符号串的联接:符号串的联接:若若x x、y y是定义在是定义在是上的符号串,且是上的符号串,且x xXYXY,y yYXYX,则,则x x和和y y的联接的联接 xyxyXYYXXYYX也是也是上的符号串。上的符号串。注意:一般注意:一般xyyxxyyx,而,而xxxxx x 9.方幂运算方幂运算:符号串集合的方幂符号串集合的方幂 符号串的方幂符号串的方幂 有任一符号串集合有任一符号串集合A,定义,定义:有任一符号串有任一符号串X,定义,定义:A0=,X0=A1=A,X1=XA2=AA,X2=XXA3=AAA,X3=XXX AnAn-1A=AAn-1 Xn=XX X A A A n个个 n
16、个个其中其中:n010.10.符号串集合的闭包运算:符号串集合的闭包运算:设设A A是符号串集合,定义是符号串集合,定义 A=A1 A2 A3 An 称为集合称为集合A A的的正则闭包正则闭包。A*=A0 A1 A2 A3 An =A0 A 称为集合称为集合A A的的星闭包星闭包。例:例:A=x,y A?A*?x,y,xx,xy,yx,yy,xxx,xxy,xyx,xyy,A1 A2 A3,x,y,xx,xy,yx,yy,xxx,xxy,xyx,xyy,A0 A1 A2 A3 为什么对符号、符号串、符号串集合以及它们的运算感兴趣为什么对符号、符号串、符号串集合以及它们的运算感兴趣?若若A为某语
17、言的基本字符集为某语言的基本字符集 Aa,b,z,0,1,9,+,_/,(,),=B为单词集为单词集 B=begin,end,if,then,else,for,则则B A*。语言的句子是定义在语言的句子是定义在B上的符号串上的符号串。若令若令C为句子集合,则为句子集合,则C B*,程序程序 C文法的直观理解文法的直观理解1.1.什么是文法:什么是文法:文法是对语言结构的定义与描述。即从形式上用于描述文法是对语言结构的定义与描述。即从形式上用于描述和规定语言结构的称为和规定语言结构的称为“文法文法”(或称为(或称为“语法语法”)。)。例:有一句子:例:有一句子:“我是大学生我是大学生”。这是一个
18、在语法、这是一个在语法、语义上都正确定句子,该句子的结构(称为语法结构)是由语义上都正确定句子,该句子的结构(称为语法结构)是由它的语法决定的它的语法决定的。在本例中它为。在本例中它为“主谓结构主谓结构”。如何定义句子的合法性如何定义句子的合法性?有穷语言有穷语言无穷语言无穷语言 2.2.语法规则语法规则:我们通过建立一组规则(产生式),来描述句子我们通过建立一组规则(产生式),来描述句子的的语法结构语法结构。规定用。规定用“:=:=”表示表示“由由组成组成”。:=:=:=:=|:=:=你你|我我|他他:=:=王民王民|大学生大学生|工人工人|英语英语:=:=:=:=是是|学习学习:=:=|3
19、.3.由产生式推导句子:由产生式推导句子:=这种推导一直进行下去,直到所有带这种推导一直进行下去,直到所有带的符号都由终结符号的符号都由终结符号替代为止。替代为止。有了一组产生式之后,可以按照一定的方式用它们去推导或有了一组产生式之后,可以按照一定的方式用它们去推导或产生句子。产生句子。推导方法:推导方法:从一个要开始的符号开始推导,即用相应产生式从一个要开始的符号开始推导,即用相应产生式的的右部右部来替代产生式的来替代产生式的左部左部,每次仅用一条产生式去进行推导。,每次仅用一条产生式去进行推导。我我 我我 我我是是 我是我是 我是我是大学生大学生:=:=:=:=|:=:=你你|我我|他他:
20、=:=王民王民|大学生大学生|工人工人|英语英语:=:=:=:=是是|学习学习:=:=|推导方法:推导方法:从一个要开始的符号从一个要开始的符号开始推导,即用相应产生式的开始推导,即用相应产生式的右部右部来替代产生式的来替代产生式的左部左部,每,每次仅用一条产生式去进行推导。次仅用一条产生式去进行推导。例:例:给定给定一组语法规则,考一组语法规则,考察一个句子:察一个句子:“我是大学生我是大学生”的推导过程。的推导过程。例:有一英语句子:例:有一英语句子:The big elephant ate the peanut.:=:=:=:=:=:=the:=:=big:=:=elephant:=:=
21、:=:=ate:=:=:=:=peanut =the =the big =the big elephant =the big elephant =the big elephant ate =the big elephant ate =the big elephant ate the =the big elephant ate the peanut:=:=:=:=:=:=the:=:=big:=:=elephant|peanut:=:=:=:=ate:=:=The big elephant ate the peanut.上述推导可写成上述推导可写成=the big elephant ate th
22、e peanut+说明:说明:(1)有若干语法成分同时存在时,我们总是从最左的语法成有若干语法成分同时存在时,我们总是从最左的语法成 分进行推导,这称之为分进行推导,这称之为最左推导最左推导,类似的有,类似的有最右推导最右推导(一般推(一般推 导)。导)。(2)从一组产生式可推出不同的句子,如以上产生式还可推从一组产生式可推出不同的句子,如以上产生式还可推出出“大象吃象大象吃象”、“大花生吃象大花生吃象”、“大花生吃花生大花生吃花生”等句子,等句子,它们它们 在语法上都正确,但在语义上都不正确。在语法上都正确,但在语义上都不正确。所谓所谓文法文法是在是在形式上形式上对句子结构的定义与描述,而未
23、对句子结构的定义与描述,而未涉及涉及语义语义问题。问题。4.4.语法树语法树:我们用语法树来描述一个句子的语法结构。:我们用语法树来描述一个句子的语法结构。Thebigelephantatethepeanut语法成分(在形式语法成分(在形式语言中又称语言中又称“非终非终结符结符”)单词符号(在形单词符号(在形式语言中又称式语言中又称“终结符号终结符号”)文法的定义文法的定义3.3 3.3 文法和语言的形式定义文法和语言的形式定义 定义定义1:文法文法G=(VN,VT,P,Z)VN:非终结符号集:非终结符号集 VT:终结符号集:终结符号集 P:产生式或规则的集合:产生式或规则的集合 Z:开始符号
24、(识别符号):开始符号(识别符号)ZVNVVNVT称为文法的字汇表称为文法的字汇表产生式:产生式:U:xU VN,xV*其中其中:产生式:产生式:产生式是一个有序对产生式是一个有序对(U,x),通常写为通常写为:U:x 或或U x;|U|=1|x|0非终结符号:非终结符号:出现在产生式的左部出现在产生式的左部,且能推出符号或符号串的且能推出符号或符号串的那些符号。其全体构成非终结符号集,记为那些符号。其全体构成非终结符号集,记为VN。终结符号:终结符号:不出现在产生式的左部不出现在产生式的左部,且不能推出符号或符号串且不能推出符号或符号串的那些符号。其全体构成终结符号集,记为的那些符号。其全体
25、构成终结符号集,记为VT。P=;00;11;99;Z=;例:无符号整数的文法:例:无符号整数的文法:G=(VN,VT,P,Z)VN,VT =0,1,2,3,9几点说明几点说明:产生式左边符号构成集合产生式左边符号构成集合VN,且,且 Z VN有些产生式具有相同的左部,可以合在一起有些产生式具有相同的左部,可以合在一起例、例、;|;00|1|2|3|9 文法的文法的BNF表示表示给定一个给定一个 文法,实际只需给出产生式集合,并指定开始符号文法,实际只需给出产生式集合,并指定开始符号例、例、G ;|;00|1|2|3|93.3.2 推导与归约推导与归约 定义定义2:直接推导:文法直接推导:文法G
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 文法 语言
限制150内