当前位置首页 > 资格/认证考试 > 自考
搜柄,搜必应! 快速导航 | 使用教程  [会员中心]

二章语言的基本知识

文档格式:PPT| 50 页|大小 220.02KB|积分 10|2022-09-22 发布|文档ID:154897471
第1页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 50
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • 1第二章 语言的基本知识u学习本章的目的u2.1 符号串u2.2 文法和语言的定义u2.3 分析树和二义性u2.4 形式语言概观2学习本章的目的u构造编译程序的算法是从研究源程序及目标程序产生的,首先找到源语言的形式描述,根据这种描述,构造出相应的分析加工程序u语言分语法,语义和语用程序语言语法的形式描述是很好用的,语义的形式描述不那磨好用,但它推动语言理论的发展3 2.1 符号串u2.1.1 字母表u2.1.2 符号串 一.符号串的定义u 二.术语u 三.符号串的运算u 四.符号串集合的运算4 字母表是符号的非空有穷集合任何程序语言都有自己的字母表,例如:1.计算机语言:由符号“0”和“1”组成的字 母表,=0,1 2.ASCII字符集;3.Pascal字母表为:=AZ,az,09,+,-,*,/,:,;,.,,(,),2.1.1 字母表5一.符号串的定义(1)是上的一个符号串2)若x是上的符号串,而a是的元素,则xa是上的符号串3)y是上的符号串,当且仅当它由(1)和 (2)导出由字母表中的符号所组成的的任何有穷 序列被称之为该字母表上的符号串,也称作字2.1.2 符号串6 设s是符号串前缀:移走s的尾部的零个或多于零个符号后缀:删去s的头部的零个或多于零个符号子串:从s中删去一个前缀和一个后缀子序列:从s中删去零个或多于零个符号(这些符号不要求是连续的)逆转(用SR表示):将S中的符号按相反次序写出而得到的符号串。

    长度:是该符号串中的符号的数目例如|aab|=3,|=0二术语7 :符号串s=banana前缀:,b,ba,ban,bana,banan,banana后缀:banana,anana,nana,ana,na,a,子串:banana,anana,banan,anan,真前缀,真后缀,真子串:xsx 子序列:baa(这些符号不要求是连续的)逆转(用SR表示):ananab长度:banana=6例81.连接:设x和y是符号串,它们的连接 xy是把y的符号写在x的符号之后得到的符号串例如,x=ba,y=nana,xy=banana.2.方幂:x0=;x1=x;x2=xx;xn=xn-1x;例如,x=ba,x1=ba,x2=baba,x3=bababa,.三.符号串的运算9 设L和M是两个符号串集合,则 1.合并:LMs|sL or sM 2.连接:LM st|sL and tM 3.方幂:L0=,L1L,L2LL,.,LnLn-1L 4.语言L的Kleene闭包,记作L*,L*Li(i=0)=L0L1L2L3 5语言L的正闭包,记作L+(L+L L*)L+Li(i=1)=L1L2L3L4四.符号串集合(语言)的运算10 如:L=AZ,az D=09 1LD=AZ,az,09 2LD是由所有用一个字母后跟一个数字 组成的符号串所构成的集合。

    3L4是由所有的四个字母的符号串构的集合4L(LD)*是由所有的字母打头的字母和数字组成的符号串所构成的集合.5D+是由所有的长度大于等于1的数字串所构成的集合.例112.2 文法和语言的定义u2.2.1 引子u2.2.2 文法和语言的定义u一.文法和语言的定义u二.推导u三.语言u四.最左推导和最右推导u五短语,直接短语,句柄12 引子分析:The grey wolf will eat the goat谓语主语冠词形容词名词动词直接宾语助动词句子动原冠词名词The grey wolf will eat the goat13 为了进行机械分析,:“句子由主语后跟随谓语组成”表示为:句子 主语 谓语 (1)主语 冠词 形容词 名词 (2)冠词the 形容词 grey 谓语 动词 直接宾语 (5)动词 助动词 动词原形 (6)助动词will 动词原形 eat 直接宾语 冠词 名词 (9)名词wolf 名词 goat语法规则14 :终结符号集,非终结符号集,语法规则,开始符号终结符号集VT=the,grey,wolf,will,eat,goat非终结符号集VN=句子,主语,谓语,冠词,形容词,名词,动词,直接宾语,助动词,动词原形 语法规则集P=句子 主语谓语,开始符号S=句子句子的语法有四部分15句子主语 谓语 冠词 形容词 名词 谓语 the 形容词 名词 谓语 the grey名词 谓语 the grey wolf 谓语 the grey wolf 动词 直接宾语 .the grey wolf will eat the goat句子根据规则推导出来16句子 the grey wolf will eat the goat the grey wolf will eat the wolf the grey goat will eat the wolf the grey goat will eat the grey合符语法且合符语义的句子仅是:the grey wolf will eat the goat+句子既要合符语法又要合符语义17分析:The grey wolf will eat the goat句子主语谓语冠词形容词名词动词 直接宾语助动词动原冠词名词goat theeatwillThe greywolf句型分析一18分析:The grey wolf will eat the goat句子主语谓语冠词形容词名词动词 直接宾语助动词动原冠词名词goat theeatwillThe greywolf句型分析二19 一个上下文无关文法 G=(VT,VN S,P),其中:VT是一个非空有穷终结符号集合;VN是一个非空有穷的非终结符号集合,且VTVN;S VN,称为开始符号。

    P是一个产生式的非空有穷集合,每个产 生式的形式是A(或A:),其中 AVN,(VTVN)*开始符号S至必须在某个产生式的左部出现一次缩写形式:A 1|2一 文法的定义20G=(a,+,*,(,),,P)P:*()a E E+T T T T*F F F(E)a (2.1)例2.2 算术表达式的文法G:21令G=(VT,VN,S,P),若AP,且,(VTVN)*,则称A直接推出,表示成 A A直接推出 直接归约到A 如果存在一个直接推导序列:012 n(n0)表示成 0 n 0 n 或者0=n或者0 n+*二.定义2.3 直接推导和推导的定义22例:E E+T T+T F+T a+T a+F a+aA产生式EE+TEE+TE+TT+TET+TT+TF+TTF+TF+Ta+TFa+Ta+Ta+FTFa+a+Fa+aFaa+23设文法 G(VT,VN,S,P)如果S ,则称是一个句型仅含终结符号的句型是一个句子语言 L(G)是由文法G产生的所有句子所组成的集合:L(G)|S 且VT*例2.3 考虑一个文法 G(a,b,S,S,P)其中P:SaSb ab SaSb aaSbb a3Sb3 an-1Sbn-1 anbn*+三.定义2.4:语言的定义24 设G=(VT=a,b,VN=S,A,B,S,P P由下列产生式组成:SaB|bA Aa|aS|bAA Bb|bS|aBBL(G)=w|wa,b+,且w中有相同个数的a和b。

    用归纳法证明下面结论(对w的长度):(1)S w,当且仅当w中含有相同个数的a和b2)A w,当且仅当w中a的个数比b的个数多一个3)B w,当且仅当w中b的个数比a的个数多一个归纳基础归纳基础 当|w|=1,Aa,B b,不能从S导出长度 为1的终极行,则上述结论显然成立例2.425 设(1),(2)和(3)对于长度不超过k-1的所有w都成立那么,证明对|w|=k也成立对于(1),推导的第一步必是SaB或SbA,对于第一种情形,必有w=aw1且B w1,|w1|=k-1,它含的b个数比a多一个,因此,w中a,b的个数相等推导的第一步是SbA,证明完全类似反之,|w|=k,w中a,b的个数相等,要证S w考虑的S推导,推导出的开始符号,或为a或为b若SaB,B w1,|w1|=k-1,w1中b的个数比a多一个,w=aw1若S bA,证明和类SaB类似2)和(3)的证明留给同学们归纳步骤归纳步骤26 :对于w和G,wL(G)是否存在S w,如何构造例如,GE(例2.2)和w=a+a aEE+T T+T F+T a+T a+TF a+F F a+a F a+aa(最左)特点:A (A),VT*EE+T E+T F E+T a E+FaE+aa T+aa F+aa a+aa 特点:A (A),VT*(最右)+四.最左推导和最右推导27 令GS是一个文法,如果有 S A 且A 则称是一个关于非终结符号A的,句型的短语。

    其次如果有 S A 且 A则称是直接短语一个句型的最左直接短语称为该句型的句柄文法(21)的一个句型 a1*a2+a3,尽管有E a2a3,但是 a2a3 并不是该句型的一个短语,因为不存在 E a1*E短语:a1,a2,a3,a1*a2,a1*a2+a3 直接短语:a1,a2,a3 句柄:a1+*+定义2.5282.3 分析树和二义性u一.分析树的定义u二.如何画出分析树u三.子树u四.二义性文法的定义u五.在构造编译程序中如何处理 二义性文法29 设G=(VT,VN,S,P),G的一棵分析树满足如下条件:1.每一个结点有一个标记,此标记是VTVN中的符号2根的标记是S3如果一个结点是内部结点,且有标记A,那么A必在VN中4如果编号为n的结点有标记A,结点n1,n2,nk是点n的从左到右的儿子,并分别有标记X1,X2,Xk,则AX1X2Xk必须是P中的产生式5.如果结点n有标记,那么结点n是叶子,且是它父亲唯一的儿子一.分析树的定义30 G=(VT,VN,S,P),其中P:SaASa A SbA SS ba3124657891011SaASSbAaaba例2.531 根据推导序列,对每步推导画相应分枝ASaSbSAaaba aSbAS aabAS aabbaS aabbaa aAS S二.如何画出分析树 (1.自顶向下)32 根据归约序列,对每步归约画相应分枝ASaSbSAaaba aAa aSbAa aSbbaa aabbaa aAS S二.如何画出分析树 (2.自底向上)331.一个句型推导或分析用一棵树结构图示 出来,它反应了一个句子语法结构的层次。

    2.对于一个句子的多种推导(若文法是无二义性的),采用各种推导过程,画出的分析树是一样的分析树并未描述推导过程3.在书中,用画分析树的过程解释语法分析过程,用分析树图解语法结构分析树是推导的图形表示关于分析树的几点说明34一棵分析树中一个特有的结点连同它的全部后裔,连接这些后裔的边以及这些结点的标记例如:SAbSaSbaAaa三.子树35短语:一棵子树的所有叶子自左至右排列起来形成一个相对于子树根的短语直接短语:仅有父子两代的一棵子树,它的所有叶子自左至右排列起来所形成的符号串句柄:一个句型的分析树中最左那棵只有父子两代的子树的所有叶子的自左至右排列例如,对表达式文法GE和句子a1+a2*a3,挑选出推导过程中产生的句型中的短语,直接短语,句柄用子树解释短语,直接短语,句柄:36EE+TT+TF+T a1+T a1+T*F a1+F*F a1+a2*FE+T T,T+T F,F+T a1,a1+T a1,T*F,a1+T*Fa1,F,F*F,a1+F*F a1,a2,a1+a2*F,a2*F a1,a2,a3,a2*a3 a1+a2*a3EE+TTFa1T*FFa2a3a1+a2*a3短语 例(a)37EE+TE+T*FE+T*a3E+F*a3E+a2*a3 T+a2*a3 F+a2*a3 EE+TTFa1T*FFa2a3a1+a2*a3例(b)381.描述一个句子的文法不是唯一的;2.2.对于一个句子的分析应是唯一的。

    考虑表达式下面的文法 GE,其产生式如下:EE+EE*E(E)a 对于句子a+a*a,有如下两个最左推导:EE+E a+E a+E*E a+a*E a+a*a E E*E E+E*E a+E*E a+a*E a+a*a 四.文法的二义性的定义39 EE+E a+E a+E*E a+a*E a+a*a E E*EE+E*E a+E*Ea+a*E a+a*aEE+EE*EaaaEE*E+EEaaa最左推导例(1)40 EE+E E+E*E E+E*a E+a*a a+a*a E E*EE*a E+E*aE+a*a a+a*aEE+EE*EaaaEE*E+EEaaa最右推导例(2)41如果一个文法的句子存在两棵分析树,那磨,该句子是二义性的如果一个文法包含二义性的句子,则称这个文法是二义性的;否则,该文法是无二义性的几点说明:1.一般来说,程序语言存在无二义性文法,对于表达式来说,文法(2.1)是无二义性的对于条件语句,经常使用二义性文法描述它:S if expr then S if expr then S else S other二义性的句子:if e1 then if e2 then s1 else s2 四.二义性(歧义性,ambiquity)的定义:42 下面是 Smathed_s unmathed_s mathed_s if expr then mathed_s else mathed_s otherunmathed_s if expr then S if expr then mathed_s else unmathed_s 它显然比较复杂,因此:2.在能驾驭的情况下,使用二义性文法。

    描述if语句的无二义性文法的产生式:433.对于任意一个上下文无关文法,不存在 一个算法,判定它是无二义性的;但能给出一组充分条件,满足这组充分条件的文法是无二义性的4.存在先天二义性语言例如,aibicji,j1 aibjcji,j1存在一个二义性的句子akbkck压缩过的文法(化简了的文法):压缩过的文法(化简了的文法):1形式的产生式:AA P;2.每个非终结符号A必须都有用处即,S A 且 A ,VT*+定义之3,4442.4 形式语言概观u2.4.1 文法分类u2.4.2 非上下文无关文法的语言结构u2.4.3 上下文无关语言和正规语言的区别45 逐渐对产生式施加限制 四种类型:0型,1型,2型,3型0型:G=(VT,VN,S,P)规则形式:,(VTVN)*,推导:1型(上下文有关):规则形式:A A VN,.(VTVN)*,2型(上下文无关):规则形式:A A VN,(VTVN)*3型(右线性):A aB A a(左线性)A Ba A a a VT2.4.1 文法分类46在我们使用的程序语言中,有些语言结构并不是总能用上下文无关文法描述的例例2.9 L1=wcw|wa,b+。

    例如,aabcaab就是L1的一个句子这个语言是检查程序中标识符的声明应先于引用的抽象 例例2.10 L2=anbmcndm|n,m0,它是检查过程声明的形参个数和过程引用的参数个数一致问题的抽象2.4.2非上下文无关的语言结构非上下文无关的语言结构47 语言中过程定义和引用的语法并不涉及到参数个数,例如,Pascal的过程语句可描述为 s-callid(r-list)r-listr-list,r|r 实参和形参个数的一致性检查也是放在语义分析阶段完成的定义定义2.7 如果一个上下文无关文法G中存在具有下列特征的非终结符A:A A 其中,VTVN+,则称A为自嵌套的,+2.4.3 上下文无关语言和正则语言的区别上下文无关语言和正则语言的区别48包含自嵌套非终结符号的文法是 语言anbn|n0是上下文无关语言,原因是找不到一个非自嵌套的上下文无关文法描述它;语言anbm|n,m 0是正则语言,原因是存在一个正规文法描述它在程序语言中,与词法有关的规则属于正规文法;与局部语法有关的规则属于上 下文无关文法;而与全局语法和语义有关的部分往往要用上下文有关文法来描述上下文无关文法上下文无关文法。

    49 用上下文有关文法描述程序语言不仅相当困难,将使语法定义变得烦杂,难懂,而且一般不能构造有效的分析程序,因此,通常用上下文无关文法描述,而把与上下文有关的限制包含在非形式描述的全局语法与语义中把描述词法的正规文法从描述语法的上 下文无关文法中分离出来在分离出正则文法后的上下文无关文法中,这些单词符号是属于终结符号VT中的符号文法(2.1)中的表达式文法,a是终结符号为什么不用上下文有关文法描述程序语言?为什么不用上下文有关文法描述程序语言?50 :1.1 GS:(b),(c),(d),(e)1.2 GS:(a),(b),(c),(d)1.3 Gbexpr:(b)1.写出下面语言的三型文法:(a)ann0 (b)anbmn,m1 (c)anbmckn,m1 (d)Pascal的标识符 (e)Pascal的整数2.已知文法GS,其产生式如下:S(S)(a)L(GS)是什磨?(b)对于(a)的结果,试给出证明作业作业。

    点击阅读更多内容
    卖家[上传人]:痛苦女王
    资质:实名认证