编译原理课程设计之第三章上下文无关文法及分析.ppt
《编译原理课程设计之第三章上下文无关文法及分析.ppt》由会员分享,可在线阅读,更多相关《编译原理课程设计之第三章上下文无关文法及分析.ppt(81页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、w课程内容课程内容第一章第一章 概论概论第二章第二章 词法分析词法分析第三章第三章上下文无关文法及分析上下文无关文法及分析第四章第四章自上而下的语法分析自上而下的语法分析第五章第五章自下而上的语法分析自下而上的语法分析第六章第六章语义分析语义分析第七章第七章运行时环境运行时环境第八章第八章代码生成代码生成mcy1第三章第三章 上下文无关文法及分析上下文无关文法及分析本章的目的是为语言的语法本章的目的是为语言的语法描述寻求形式工具,要求该描述寻求形式工具,要求该工具对程序设计语言给出精工具对程序设计语言给出精确无二义的语法描述。确无二义的语法描述。mcy23.1 3.1 语法分析过程语法分析过程
2、3.2 3.2 上下文无关文法的形式定义上下文无关文法的形式定义3.3.3 3 二义性文法二义性文法形式形式工工具具作业作业第三章第三章 上下文无关文法及分析上下文无关文法及分析mcy3语法分析以词法分析程序输出的单词序列为输语法分析以词法分析程序输出的单词序列为输入,分析源程序的语法结构,判断它是否为相入,分析源程序的语法结构,判断它是否为相应程序设计语言的合法程序。应程序设计语言的合法程序。通常通常语法分析的结果是语法分析的结果是构造出表示该语法结构构造出表示该语法结构的的分析树(分析树(parsetree)或语法树或语法树(syntaxtree)。语法分析阶段可以确定单词流中违反源语言语
3、语法分析阶段可以确定单词流中违反源语言语法结构规则的错误。法结构规则的错误。语法分析程序的任务语法分析程序的任务:3.1 3.1 语法分析过程语法分析过程mcy4如何来描述一种语言如何来描述一种语言(符号串的集合符号串的集合)?如果语言是有穷的如果语言是有穷的(只含有有穷个句子只含有有穷个句子),可以将句子逐一列出来表示。可以将句子逐一列出来表示。如果语言是无穷的,找出语言的有穷表示。如果语言是无穷的,找出语言的有穷表示。mcy5语言的有穷表示有两个途经:语言的有穷表示有两个途经:w生成方式生成方式(文法文法):语言中的每个句子可以用:语言中的每个句子可以用严格定义的规则来构造。严格定义的规则
4、来构造。w识别方式识别方式(自动机自动机):用一个过程,当输入的:用一个过程,当输入的一任意串属于语言时,该过程经有限次计一任意串属于语言时,该过程经有限次计算后就会停止并回答算后就会停止并回答“是是”,若不属于,若不属于,要么能停止并回答要么能停止并回答“不是不是”,要么永远继,要么永远继续下去续下去。mcy6Number=digitdigit*Digit=0|1|2|3|4|5|6|7|8|9正规表达式:?正规表达式:?有穷自动机:?有穷自动机:?寻求程序设计语言语法结构的形式化描述:寻求程序设计语言语法结构的形式化描述:mcy7Noam Chomsky研究了自然语言的结构,研究了自然语言
5、的结构,提出了一种用来描述语言的提出了一种用来描述语言的数学系统数学系统(Chomsky文法文法),并以此定义了四类性质,并以此定义了四类性质不同的语言,称为不同的语言,称为语言(文法)的语言(文法)的Chomsky分类分类。mcy8wChomsky文法分为四个层次文法分为四个层次:0型,型,1型,型,2型和型和3型文法。型文法。其中其中2型型文法(或文法(或上下文无关文法上下文无关文法)被证明是程)被证明是程序设计语言中最有用的。序设计语言中最有用的。今天今天2型语言已代表着程序设计语言语法结构的型语言已代表着程序设计语言语法结构的标准方式。标准方式。mcy9Chomsky文法文法就是用就是
6、用生成方式来生成方式来描述语言的:语言描述语言的:语言中的每个句子可以用严格定义的规则来构造。中的每个句子可以用严格定义的规则来构造。文法示例:文法示例:简单句子的语法结构可有以下规则表示简单句子的语法结构可有以下规则表示:mcy10w问问:下面的语句是否是一个符合上述语法结构的简单句下面的语句是否是一个符合上述语法结构的简单句子?子?The big elephant ate the peanut.冠词冠词 形容词形容词 名词名词 动词动词 冠词冠词 名词名词w我们把上述两个字符串中间用一箭头分隔构成的有序我们把上述两个字符串中间用一箭头分隔构成的有序对称为对称为产生式产生式。其中,。其中,“
7、”表示表示“由由组成组成”,“”也可以用也可以用=,:=,:来代替。来代替。mcy11例如:包含加法、减法和乘法的简单整型算例如:包含加法、减法和乘法的简单整型算术表达式的语法结构可由下面的术表达式的语法结构可由下面的上下文无关上下文无关文法文法(2(2型文法型文法)给出:给出:exp exp exp op exp exp op expexp exp(expexp)exp exp numbernumberop op +|-|*mcy123.1 3.1 语法分析过程语法分析过程3.2 3.2 上下文无关文法的形式定义上下文无关文法的形式定义3.3.3 3 二义性文法二义性文法形式形式工工具具作业
8、作业第三章第三章 上下文无关文法及分析上下文无关文法及分析mcy133.2 3.2 上下文无关文法的形式定义上下文无关文法的形式定义1.1.上下文无关文法上下文无关文法(即即2 2型文法型文法)的形式定义的形式定义2.2.chomskychomsky文法的分类文法的分类3.3.推导和规约的定义推导和规约的定义4.4.句型和句子的定义句型和句子的定义5.5.最左和最右推导最左和最右推导6.6.文法定义的语言文法定义的语言7.7.递归产生式和递归文法递归产生式和递归文法8.8.文法和语言文法和语言mcy14终结符集合终结符集合VT非终结符集合非终结符集合VN(与与VT不相交不相交)产生式或文法规则
9、产生式或文法规则A形成的形成的集合集合P,其中其中AVN,(VTVN)*4)4)开始符号开始符号S,其中,其中SVN令令G G是一个如上所定义的文法,则是一个如上所定义的文法,则G=(VT,VN,P,S)产生式产生式的左部的左部产生式产生式的右部的右部1.1.上下文无关文法上下文无关文法(即即2 2型文法型文法)的形式定义的形式定义:上下文无关上下文无关文法是一个四元组文法是一个四元组(VT,VN,P,S):mcy15例例 G1=(N,0,1,其中其中:非终结符集合:非终结符集合:VN=N终结符集合:终结符集合:VT=0,1产生式的集合:产生式的集合:P=N0N,N1N,N0,N1开始符号为:
10、开始符号为:N文法举例文法举例N0N,N1N,N0,N1,N)mcy16通常情况下,通常情况下,文法只用产生式的集合文法只用产生式的集合表示:表示:G1N:N0NN1NN0N1G1N:N0N|1N|0|1也可写成:也可写成:mcy17文法文法Gexpexp exp op expexp(exp)exp numberop+|-|*的终结符、非终结符、开始符号分别为?的终结符、非终结符、开始符号分别为?mcy183.2 3.2 上下文无关文法的形式定义上下文无关文法的形式定义1.1.上下文无关文法上下文无关文法(即即2 2型文法型文法)的形式定义的形式定义2.2.chomskychomsky文法的分
11、类文法的分类3.3.推导和规约的定义推导和规约的定义4.4.句型和句子的定义句型和句子的定义5.5.最左和最右推导最左和最右推导6.6.文法定义的语言文法定义的语言7.7.递归产生式和递归文法递归产生式和递归文法8.8.文法和语言文法和语言mcy192.chomsky文法的分类文法的分类通过对产生式施加不同的限制,通过对产生式施加不同的限制,chomsky将文法分为四种类型:将文法分为四种类型:0 0型文法:若文法型文法:若文法G中任一产生式中任一产生式,都有都有(V(VN NVVT T)+,(V(VN NVVT T)*,则称则称G G为为0 0型文法型文法1 1型文法型文法:若文法若文法G中
12、任一产生式中任一产生式,都有都有(V(VN NVVT T)+,(V(VN NVVT T)*|,仅仅仅仅 SS除外,则称除外,则称G G为为1 1型文法型文法2 2型文法型文法:若文法若文法G中任一产生式中任一产生式,都有都有VVN N,(V(VN NVVT T)*,则称则称G G为为2 2型文法,也称为型文法,也称为上下文无关文法上下文无关文法mcy20w3型文法:型文法:通常,我们把右线性文法及左线性文法通常,我们把右线性文法及左线性文法统称为统称为3型文法型文法或或正规文法正规文法。若文法若文法G中任一产生式中任一产生式的形式都为的形式都为AaB 或或 Aa,其中其中 A VN,B VN,
13、a VT,则称,则称G为右线性文法为右线性文法;类似地,如果类似地,如果G中仅含有形如中仅含有形如ABa 或或 Aa的的产生式,则称产生式,则称G为左线性文法为左线性文法;mcy21例:例:1 1型(上下文有关)文法型(上下文有关)文法 文法文法GSGS:SCD SCD AbbA AbbA CaCA CaCA BaaB BaaB CbCB CbCB BbbB BbbB ADaD ADaD C C BDbD BDbD D D AabD AabDmcy22例:例:2 2型(上下文无关)文法型(上下文无关)文法 文法文法GSGS:SABSAB ABS|0 ABS|0 BSA|1 BSA|1mcy23
14、GSGS:S0A|1B|0S0A|1B|0 A0A|1B|0SA0A|1B|0S B1B|1|0B1B|1|0例:例:3 3型(上下文无关)文法型(上下文无关)文法mcy24文法文法Gexp:exp exp op expexp(exp)exp numberop+|-|*下面的下面的2 2型文法描述了包含加法、减法和乘法的简型文法描述了包含加法、减法和乘法的简单整型算术表达式的语法结构。单整型算术表达式的语法结构。34-3 34-3 是符合该是符合该语法结构的简单语法结构的简单整型算术表达式整型算术表达式(句子句子)吗?吗?mcy253.2 3.2 上下文无关文法的形式定义上下文无关文法的形式定
15、义1.1.上下文无关文法上下文无关文法(即即2 2型文法型文法)的形式定义的形式定义2.2.chomskychomsky文法的分类文法的分类3.3.推导和规约的定义推导和规约的定义4.4.句型和句子的定义句型和句子的定义5.5.最左和最右推导最左和最右推导6.6.文法定义的语言文法定义的语言7.7.递归产生式和递归文法递归产生式和递归文法8.8.文法和语言文法和语言mcy263.3.推导和规约的定义推导和规约的定义用产生式用产生式(规则规则)按一定方式产生句子的过程:按一定方式产生句子的过程:exp exp op exp numberop exp number-exp number-numbe
16、r expnumber-numbermcy27直接推导直接推导“”或或一步推导一步推导w若有若有v,w满足:满足:v=,w=其中:其中:是文法是文法G的产生式,的产生式,(VT VN)*,(VT VN)*则称则称v直接推导到直接推导到w,记作记作 v w,称称w直接归直接归约到约到v。w注:直接推导就是产生式规则的一次运用,注:直接推导就是产生式规则的一次运用,即用产生式的右部替换左部。即用产生式的右部替换左部。mcy28例:例:GSGS:S0S1S0S1,S01S01 直接推导:直接推导:S S 0S10S10 0S S1 1 0 00S10S11 10000S S11 11 00 000S
17、10S11111000000S S111 111 000 0000101111111mcy29推导的定义推导的定义w若存在若存在v=w0w1.wn=w(n0),我们用我们用v=+w表示表示一步或多步推导一步或多步推导,称,称v v推导出推导出w w,或或w归约到归约到v;w若有若有v=+w,或或v=w,则记为则记为v=*w,表示表示零步或多步推导零步或多步推导。mcy30例:例:GSGS:S0S1 S0S1,S01 S01 S S 0S10S100S1100S11000S111000S11100001111 00001111 S S +00001111+00001111给出字符串给出字符串00
18、001111的一个推导:的一个推导:mcy313.2 3.2 上下文无关文法的形式定义上下文无关文法的形式定义1.1.上下文无关文法上下文无关文法(即即2 2型文法型文法)的形式定义的形式定义2.2.chomskychomsky文法的分类文法的分类3.3.推导和规约的定义推导和规约的定义4.4.句型和句子的定义句型和句子的定义5.5.最左和最右推导最左和最右推导6.6.文法定义的语言文法定义的语言7.7.递归产生式和递归文法递归产生式和递归文法8.8.文法和语言文法和语言mcy32定义定义4 4 句型和句子句型和句子:设设G=(VN,VT,P,S)是一文是一文法法,且且 V=VNVT若若S=*
19、,V*,则称则称为文法为文法G的句型;的句型;若若S=+,VT*,则称则称为文法为文法G的句子;的句子;4.4.句型和句子的定义句型和句子的定义mcy33w简单整型算术表达式文法:简单整型算术表达式文法:exp exp op exp|(exp)|numberop +|-|*w给出算术表达式(给出算术表达式(34-3)*42的一个推导,请的一个推导,请列出推导过程中出现的句型和句子。列出推导过程中出现的句型和句子。mcy34 算术表达式(算术表达式(34-334-3)*42*42的推导:的推导:exp exp exp op expexp op exp exp op exp op numbernu
20、mber exp*exp*number number (expexp)*numbernumber (exp op expexp op exp)*numbernumber (exp op exp op number)number)*numbernumber (exp-exp-number)number)*numbernumber (number(number-number)*number)*numbernumbermcy353.2 3.2 上下文无关文法的形式定义上下文无关文法的形式定义1.1.上下文无关文法上下文无关文法(即即2 2型文法型文法)的形式定义的形式定义2.2.chomskycho
21、msky文法的分类文法的分类3.3.推导和规约的定义推导和规约的定义4.4.句型和句子的定义句型和句子的定义5.5.最左和最右推导最左和最右推导6.6.文法定义的语言文法定义的语言7.7.递归产生式和递归文法递归产生式和递归文法8.8.文法和语言文法和语言mcy365.5.最左和最右推导最左和最右推导最左推导最左推导对于文法对于文法GS:S S 是一个最左推导是一个最左推导是指:是指:在推导过程中的任何一步直接推导在推导过程中的任何一步直接推导,都是对字符串都是对字符串中的最左非终结符进行替换,中的最左非终结符进行替换,其中其中、是句型。是句型。简单整型算术表达式文法:简单整型算术表达式文法:
22、exp exp exp op exp exp op exp|(|(expexp)|)|numbernumber op op +|-|*mcy37 exp exp exp exp op expop exp (expexp)op exp)op exp (expexp op exp op exp)op exp op exp (number(number op op expexp)op exp op exp (number(number-expexp)op exp op exp (number(number-number)number)opop exp exp (number(number-numbe
23、r)*number)*expexp (number(number-number)*number)*numbernumber算术表达式(算术表达式(34-3)*42的的最左推导最左推导:mcy38最右推导最右推导:S S 是一个最右推导是指:是一个最右推导是指:在在推导过程中的任何一步直接推导推导过程中的任何一步直接推导,都是对都是对字符串字符串中的最右非终结符进行替换中的最右非终结符进行替换,其中,其中、是句型是句型。最右推导也被称为最右推导也被称为规范推导规范推导。由规范推导所得。由规范推导所得的句型称为的句型称为规范句型。规范句型。mcy39 算术表达式(算术表达式(34-334-3)*4
24、2*42的的最右推导最右推导:exp exp exp op exp op expexp exp exp opop numbernumber expexp*number number (expexp)*numbernumber (exp op exp op expexp)*numbernumber (exp exp opop number)number)*numbernumber (expexp-number)number)*numbernumber (number(number-number)*number)*numbernumbermcy40expexpexp op expexp op ex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 课程设计 第三 上下文 无关 文法 分析
限制150内