第02章_文法和语言的基本知识(2)精.ppt





《第02章_文法和语言的基本知识(2)精.ppt》由会员分享,可在线阅读,更多相关《第02章_文法和语言的基本知识(2)精.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第02章_文法和语言的基本知识(2)第1页,本讲稿共71页 2.2.4 4 语法树语法树例如设有文法GE:构造句型i*i+i的语法树。首先给出句型的推导过程(最左推导):EE+T|ET|TTT*F|T/F|FF(E)|iEE+TT+TT*F+TF*F+Ti*F+Ti*i+Ti*i+Fi*i+i第2页,本讲稿共71页2.2.4 4 语法树语法树根据推导过程构造句型i*i+i的语法树如下:EE+TEE+TT+TTT*F+TT*FF*F+TFi*F+Tii*i+Tii*i+FFi*i+ii第3页,本讲稿共71页2.2.4 4 语法树语法树 由例可知,语法树的构造过程是从文法的开始符号出发,构造一个推
2、导的过程。因为文法的每一个句型(句子)都存在一 个推导,所以文法的每个句型(句子)都存在一棵对应的语法树。第4页,本讲稿共71页EE+TE+FE+iT+iT*F+iT*i+iF*i+ii*i+i2.2.4 4 语法树语法树 对句型i*i+i,还可给出最右推导:EE+TTT*FFiiFi第5页,本讲稿共71页2.2.4 4 语法树语法树 这也就是说,一棵语法树表示了一个句型的种种可能的(但未必是所有的)不同推导过程,包括最左(最右)推导。第6页,本讲稿共71页2.4 2.4 语法树语法树 2.子树语法树的子树是由某一结点连同所有分枝组成的部分。EE+TTT*FFiiFi第7页,本讲稿共71页2.
3、4 2.4 语法树语法树 3.简单子树语法树的简单子树是指只有单层分枝的子树。(即一步推导)EE+TTT*FFiiFi第8页,本讲稿共71页2.2.4 4 语法树语法树 句型的短语、直接短语和句柄的直观解释是:短语:子树的末端结点形成的符号串是相对于子树根的短语。直接短语:简单子树的末端结点形成的符号串是相对于简单子树根的直接短语。或者:某子树根经过1步推导而获得的短语。句柄:句型中最左直接短语。第9页,本讲稿共71页2.2.4 4 语法树语法树短语:ni*i+ini*in第一个in第二个in第三个in三个i都是直接短语n第一个i是句柄注意:i+i不是句型的短语句子i*i+iEE+TTT*FF
4、iiFi第10页,本讲稿共71页2.2.4 4 语法树语法树 前例对文法GS=(S,A,B,a,b,P,S)其中P为:可用语法树非常直观地求出句型baSb的全部短语,直接短语和句柄。SABAAa|bBBa|Sb第11页,本讲稿共71页2.2.4 4 语法树语法树 分析首先根据句型baSb的推导过程画出对 应的语法树如下:Sb为句型的相对于B的短语、直接短语baSb为句型的相对于S的短语ba为句型的相对于A的短语a句型的相对于B的短语、直接短语和句柄SABbBBbaBbaSbSABASbbBSbbaSbSABbB Sba由语法树可知第12页,本讲稿共71页2.5.2.5.1 1 文法的二义性文法
5、的二义性从前面的讨论可以看出,对于文法G中任一句型的推导序列,我们总能为它构造一棵语法树,现在我们提出一个问题:文法的某个句型是否只对应唯一的一棵语法树呢?也就是,它是否只有唯一的一个最左(最右)推导呢?第13页,本讲稿共71页2.5.2.5.1 1 文法的二义性文法的二义性 例如设有文法GE:句子i*i+i有两个不同的最左推导,对应两棵不同的语法树。EE+E|E*E|(E)|i第14页,本讲稿共71页2.5.2.5.1 1 文法的二义性文法的二义性 最左推导1EE+EE*E+Ei*E+Ei*i+Ei*i+i最左推导2EE*Ei*Ei*E+Ei*i+Ei*i+iEE*EE+EiiiEE+EE*
6、Eiii第15页,本讲稿共71页2.5.2.5.1 1 文法的二义性文法的二义性 如果一个文法存在某个句子对应两棵不同的语法树,则说这个文法是二义性的。或者说,若一个文法中存在某个句子,它有两个不同的最左(最右)推导,则这个文法是二义性的。EE+E|E*E|(E)|i第16页,本讲稿共71页2.5.2.5.2 2 文法二义性的消除文法二义性的消除 1.不改变文法中原有的语法规则,仅加进一些非形式的语法规定。EE+EE*Eiii第17页,本讲稿共71页2.5.2.5.2 2 文法二义性的消除文法二义性的消除2.构造一个等价的无二义性文法。即 把排除二义性的规则合并到原有文法中,改写原有的文法。例
7、如,对于上例文法GE,将运算符的优先顺序和结合规则:*优先于;、*左结合加到原有文法中,可构造出无二义性文法如下:第18页,本讲稿共71页2.5.2.5.2 2 文法二义性的消除文法二义性的消除则句子i*i+i只有唯一一棵语法树:EE+T|TTT*F|FF(E)|iEE+TTT*FFiiFi第19页,本讲稿共71页2.5.2.5.2 2 文法二义性的消除文法二义性的消除 例2定义某程序语言条件语句的文法G为:试证明该文法是二义性的并消除之。分析该文法的句子ifbifbAelseA对应下面两棵不同的语法树:SifbS|ifbSelseS|A(其它语句)第20页,本讲稿共71页2.5.2.5.2
8、2 文法二义性的消除文法二义性的消除 所以该文法是二义的。SifbSbSSifAelseASbSSifAelseAifbSSifbS|ifbSelseS|A句子ifbifbAelseA第21页,本讲稿共71页2.5.2.5.2 2 文法二义性的消除文法二义性的消除 消除文法的二义性可采用下面两种方法:1.不改变已有规则,仅加进一非形式的语法规定:else与前面最接近的不带else的if相对。SifbSbSSifAelseA文法G的句子ifbifbAelse只对应唯一的一棵语法树,消除了二义。第22页,本讲稿共71页2.5.2.5.2 2 文法二义性的消除文法二义性的消除2.改写文法G为GSS1
9、|S2S1ifbS1elseS1|AS2ifbS|ifbS1elseS2G:SifbS|ifbSelseS|A(其它语句)G:第23页,本讲稿共71页2.5.2.5.2 2 文法二义性的消除文法二义性的消除这是因为通过分析,得知引起二义性的原因是:ifelse 语句的 if 后可是if型,因此改写文法时规定:if else之间只能是ifelse语句或其他语句。第24页,本讲稿共71页2.5.2.5.2 2 文法二义性的消除文法二义性的消除SS1|S2S1ifbS1elseS1|AS2ifbS|ifbS1elseS2ifbSbifAelseASS2S1S1S1对改写后的文法,句子ifbifbAe
10、lseA只对应唯一的一棵语法树。第25页,本讲稿共71页通常我们只说文法的二义性,而不说语言的二义性,这是因为可能有两个不同的文法G和G,而且其中一个是二义性的,另一个是无二义性的,但却有L(G)=L(G),即这两个文法所产生的语言是相同的。2.5.2.5.2 2 文法二义性的消除文法二义性的消除 应该指出的是文法的二义性和语言的二义性是两个不同的概念。第26页,本讲稿共71页2.5.2.5.2 2 文法二义性的消除文法二义性的消除 将一个语言说成是二义性的,是指对它不存在无二义性的文法,这样的语言称为先天二义性的语言。例如L=aibjck|i=j或j=k且i,j,k1便是这种语言。第27页,
11、本讲稿共71页2.6 2.6 文法和语言的分类文法和语言的分类 著名的语言学家乔姆斯基(Chomsky)将文法和语言分为四大类,即0型、1型、2型、3型。划分的依据是对文法中的规则施加不同的限制。第28页,本讲稿共71页2.6 2.6 文法和语言的分类文法和语言的分类 0型文法(无限制文法)若文法G=(VN,VT,P,S)中的每条规则是这样一种结构:而且中至少含一个非终结符,则称G是0型文法。(VNVT)+,(VNVT)*0型文法描述的语言是0型语言。0型文法没有加任何限制条件,又称为无限制性文法,相应的语言称为无限制性语言。0型语言由图灵机识别。第29页,本讲稿共71页2.6 2.6 文法和
12、语言的分类文法和语言的分类 例如,有0型文法G=(VN,VT,P,S)其中:VN=A,B,S,VT=0,1其描述的0型语言为L0(GS)=P:S0AB1B0BSA|01A1SB1A0S0B第30页,本讲稿共71页2.6 2.6 文法和语言的分类文法和语言的分类 1型文法(上下文有关文法)1型文法也称为上下文有关文法,相应的语言又称为上下文有关语言。若文法G=(VN,VT,P,S)中的每一条规则的形式为A,其中:,(VNVT)*,AVN,则称G是1型文法。1型文法描述的语言是1型语言。1型语言由线性界限自动机识别。(VNVT)+第31页,本讲稿共71页2.6 2.6 文法和语言的分类文法和语言的
13、分类 例如,有1型文法G=(VN,VT,P,S)其中:VN=S,A,B,VT=a,b,cP:SaSAB|abBBABABAAAAAABbAbbbBbccBcc其描述的1型语言为L1(GS)=anbncn|n1第32页,本讲稿共71页2.6 2.6 文法和语言的分类文法和语言的分类 2型文法(上下文无关文法)2型文法又称上下文无关文法,其产生的 语言又称为上下文无关的语言。若文法G=(VN,VT,P,S)中的每一条规则的形式为A,其中:AVN,(VNVT)*则称G是2型文法。2型文法描述的语言是2型语言。2型语言由下推自动机识别。第33页,本讲稿共71页例如前面描述算术表达式的文法GE:EE+E
14、|E*E|(E)|i2.6 2.6 文法和语言的分类文法和语言的分类 第34页,本讲稿共71页其描述的语言为L2(GS)=x|xa,b+且x中a和b的个数相同例如,有2型文法G=(VN,VT,P,S)其中:VN=S,A,B,VT=a,bP=SaB|bAAa|aS|bAABb|bS|aBB2.6 2.6 文法和语言的分类文法和语言的分类 第35页,本讲稿共71页2.6 2.6 文法和语言的分类文法和语言的分类 3型文法(正规文法)右线性文法和左线性文法都称为3型文法。若文法G=(VN,VT,P,S)中的每一条规则的形式为AaB或Aa,其中:A,BVN,aVT*,则称G是右线性文法。若文法G=(V
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 02 文法 语言 基本知识

限制150内