前后文无关文法和语言 .ppt
《前后文无关文法和语言 .ppt》由会员分享,可在线阅读,更多相关《前后文无关文法和语言 .ppt(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、前后文无关文法和语言 现在学习的是第1页,共67页重点:重点:本章中涉及的概念和术语的理解本章中涉及的概念和术语的理解文法和语言的形式定义文法和语言的形式定义难点:难点:短语和句柄的识别短语和句柄的识别二义性文法的判定二义性文法的判定现在学习的是第2页,共67页规定一种语言首先要规定它各种构造成分的形式,词规定一种语言首先要规定它各种构造成分的形式,词汇、句子等的构造规则及表示法。汇、句子等的构造规则及表示法。编译原理则应建立有关语言的数学化(形式化)编译原理则应建立有关语言的数学化(形式化)模型,以便对程序语言进行研究。模型,以便对程序语言进行研究。现在学习的是第3页,共67页定义定义1:相
2、当大的地区内公众所懂得并使用的相当大的地区内公众所懂得并使用的“话话”,以及组成这,以及组成这些些“话话”的方法的统一体。的方法的统一体。 缺点:不够形式化和精确化缺点:不够形式化和精确化定义定义2:某一个字母表上的符号串的(句子)的集合。某一个字母表上的符号串的(句子)的集合。 缺点:缺乏语言句子的结构性组成描述,缺点:缺乏语言句子的结构性组成描述, 缺乏判断任一符缺乏判断任一符号串是否为合法句子判断机制。号串是否为合法句子判断机制。因此,如果能刻画一个语言句子,就定义了该语言。因此,如果能刻画一个语言句子,就定义了该语言。现在学习的是第4页,共67页1956年,年,chomsky建立建立文
3、法文法的数学模型,对形式的数学模型,对形式化语言和自动机理论的研究取得较大的成果。化语言和自动机理论的研究取得较大的成果。1960年。年。P.Nuaur和和J.Boukas首先用首先用BNF成功对成功对ALGOL语言的文法进行了描述,虽然对语义形式化语言的文法进行了描述,虽然对语义形式化描述不理想,但在程序设计语言的语法描述上有足够描述不理想,但在程序设计语言的语法描述上有足够的能力。的能力。 至此,程序语言就有了形式化表述。至此,程序语言就有了形式化表述。现在学习的是第5页,共67页枚举枚举(句子有限)(句子有限)例:例:L=We are learning computer science,
4、it is interesting数学表示数学表示(句子无限句子无限)例例:1,1/2,1/3,1/n1/n|nN 制定有限条规则,用来产生所需描述语言中的句子全部,这些规制定有限条规则,用来产生所需描述语言中的句子全部,这些规则即则即文法。文法。建立一种算法能对于任给的符号串,判别是否为给定语言的合法句子建立一种算法能对于任给的符号串,判别是否为给定语言的合法句子。现在学习的是第6页,共67页现在学习的是第7页,共67页 “我是大学生” 是汉语的一个句子。句子句子 =主语谓语主语谓语主语主语 =代词名词代词名词代词代词 =我我你你他他名词名词 =王明王明大学生大学生工人工人英语英语谓语谓语
5、=动词直接宾语动词直接宾语动词动词 =是是学习学习直接宾语直接宾语 =代词名词代词名词 返回现在学习的是第8页,共67页 =左端的规则由左端的规则由 =右端的符号串代替:右端的符号串代替:句子句子 主语主语谓语谓语 代词代词谓语谓语 我我谓语谓语 我我动词动词直接宾语直接宾语 我是我是直接宾语直接宾语 我是我是名词名词 我是大学生我是大学生 按照如下方式用它们导出句子:现在学习的是第9页,共67页大学生句子主语 谓语代词动词直接宾语名词我是“我大学生是”是否为?现在学习的是第10页,共67页sentence subject This | Computers | Iverb-phrase | a
6、dverb neververb is | run | am | tellobject the | a | noun university | world | cheese | liesThis is a university.Computers run the world.I am the cheese.I never tell lies.英语句子英语句子现在学习的是第11页,共67页表示一个语法单位;表示一个语法单位; =( )表示)表示“定义为定义为”; | 表示为表示为“或或” 。描述语言的形式结构的规则。描述语言的形式结构的规则。 产生式,产生式, 产生式左部,产生式左部, 产生式右部
7、产生式右部现在学习的是第12页,共67页仅出现在产生式右部的符号仅出现在产生式右部的符号 VT;至少在产生式左部出现过一次的符号至少在产生式左部出现过一次的符号VN;特殊的非终结符,表示了定义语言中最特殊的非终结符,表示了定义语言中最感兴趣的语法范畴。感兴趣的语法范畴。 S;P G=VT,VN,S,P 例如例如 现在学习的是第13页,共67页q VN,VT和P是 非空有穷集;q VN和VT不含公共的元素,即VN VT = ;q 用V表示VNVT,称文法G的字母表或字汇表;q 产生式是形如或 =的( ,)有序对,其中是字母表V的一个非空符号串(V+),是V中的一个符号串,可为空串(V*)。 称为
8、产生式左部, 称作产生式右部。 现在学习的是第14页,共67页句子句子 主语主语谓语谓语 代词代词谓语谓语 我我谓语谓语 现在学习的是第15页,共67页l 文法的作用就是用有限条规则产生无限多句子。l 某一文法产生的全部句子所组成的集合 该文法产生的语言。现在学习的是第16页,共67页1、符号:符号:可以相互区别的记号(元素)。可以相互区别的记号(元素)。2、字母表字母表 :符号(元素)的非空有穷集合。符号(元素)的非空有穷集合。3、符号串:符号串:由字母表由字母表 中的符号组成的任何有穷序列。中的符号组成的任何有穷序列。(没有符号的符号串没有符号的符号串)是是 上的符号串。上的符号串。n若若
9、x是是 上的符号串,上的符号串,a是是 的元素,则的元素,则xa是是 上的符号串。上的符号串。n y是是 上的符号串,当且仅当它可以由上的符号串,当且仅当它可以由1和和2导出。导出。 例如:例如: =a,b ,a,b,aa,ab,aabba都是都是 上的符号串上的符号串现在学习的是第17页,共67页4、符号串s的头(前缀):移走符号串s尾部的零个或多于零个符号得到的符号串。 如: b是符号串banana的一个前缀. banana是 banana前缀。 5、符号串s的尾(后缀):删去符号串s头部的零个或多于零个符号得到的符号串。 如: nana是符号串banana的一个后缀. banana是 b
10、anana后缀。 现在学习的是第18页,共67页6、符号串s的子串:从s中删去一个前缀和一个后缀得到的符号串。 如:ana是符号串banana的一个子串。7、符号串s的真前缀,真后缀,真子串:任何非空符号串 x,是s的前缀,后缀或子串,并且 s x。8、符号串的长度:符号串中符号的个数。符号串s的长度记为|s|。 的长度为0。 对于每个符号串s,s和两者都是符号串s的前缀,后缀和子串。现在学习的是第19页,共67页1、连接:连接:符号串符号串x、y的连接,是把的连接,是把y的符号写在的符号写在x的符号之后得的符号之后得到的符号串到的符号串xy。 如:如: x=ba,y=ck 则则 xy=bac
11、k 有有a = a 2、方幂:方幂:符号串自身连接符号串自身连接n次得到的符号串。次得到的符号串。 an 定义为定义为 aaaa n个个a a1=a, a2=aa a0=现在学习的是第20页,共67页 若集合A中所有元素都是某字母表上的符号串,则称A为字母表上的符号串集合。 1、符号串集合乘积:两个符号串集合A和B的乘积定义为 AB =xy|xA且yB 例如:若 集合A=ab,cde B = 0,1 则 AB =ab1,ab0,cde0,cde12、的闭包:上的一切符号串(包括)组成的集合。记为.2*现在学习的是第21页,共67页.32*3、的正闭包:上的除外的所有符号串组成的集合。记为例:=
12、a,b ,求*和。*=,a,b,aa,ab,ba,bb,aaa,aab,+=a,b,aa,ab,ba,bb,aaa,aab,现在学习的是第22页,共67页现在学习的是第23页,共67页1、语言:由组成的集合,为一符号串集合。即:字母表上的一个语言是上的一些符号串的集合,是*的一个子集。 L=S|S* 、都是语言例如:字母表=a,b 集合 w|w*且w=anbn,n1为上的一个语言。 集合 w|w*且w=an,n1 为上的一个语言。现在学习的是第24页,共67页2、语言“并”运算:语言L和M的并为 LM,是一个语言: w|w is in L or is in M如: L1 =a,b,y,z ,M
13、1 =1,28,9 L1M1=a,b, y,z,1,28,9 设L是(上的)一个语言,M是(上的)一个语言, 语言L和M的“并”,“交”,“差”,“连接”运算结果是一个语言。现在学习的是第25页,共67页3、语言L和M的连接运算:记为 LM(可简记为LM)。 LM=st |sL且 tM 如: L =a,b,y,z ,M =1,28,9 LM =a1,b1,y1,z1,a2,b2a9z9 特别的:有L = L=L。 L的n次连接Ln= LL.L现在学习的是第26页,共67页4、语言L的 闭包:记为 L*, L*= L0 L1 L2 . L0= , Ln= L Ln-1=Ln-1 L(n1)5、语
14、言L的正 闭包:记为 L+, L+= L1 L2 L3 . L+= LL*= L*L L*= L+ 如: L1 =a,b,y,z M1 =1,28,9 (L1M1)=a,b, y,z,1,28,9 (L1M1)*=a,b, y,z,1,28,9,aa,1a,xyz, 6789st. L1(L1M1)*=所有字母打头的字母和数字符号串现在学习的是第27页,共67页练习1:L=A,B,C,Z,a,b,cz D=0,1,2,3,4,5,6,7,8,9计算:LD, LD, L4 , L*, L(L D)*, D+练习2:考虑一个文法G1: SbA AaA|a 它定义了一个什么语言呢?从开始符S出发,我
15、们可以推出如下句子: SbA ba SbA baA baa SbA baA baaa可以写为:L(G1)=ban|n1现在学习的是第28页,共67页一个一个上下文无关文法上下文无关文法G定义为四元组定义为四元组(VN,VT,P,S )其中:其中:非终结符号非终结符号(或语法实体,或变量或语法实体,或变量)集;集;终结符号集;终结符号集;产产生式生式(也称规则也称规则)的集合;的集合; A 其中,其中, (VN VT )* , A VN VN,VT和和P是是 非空有穷集。非空有穷集。 称作识别符号或开始符号的一个非终结符,它至少要在一条产生称作识别符号或开始符号的一个非终结符,它至少要在一条产生
16、式中作为左部出现。式中作为左部出现。S VN VN和和VT不含公共的元素,即不含公共的元素,即VN VT = 用用V表示表示VN VT ,称为文法,称为文法G的字母表或字汇表的字母表或字汇表现在学习的是第29页,共67页例例 文法文法G=(VN,VT,P,S)VN = S , VT = 0, 1 P= S0S1, S01 S为开始符号为开始符号对此产生式可进行推导产生句子。对此产生式可进行推导产生句子。现在学习的是第30页,共67页l直接推导直接推导“” 是文法是文法G G的产生式,若有的产生式,若有v,wv,w满足:满足:v=,w= , v=,w= , 其中其中VV* *,V,V* * 则称
17、则称v v到到w,w,记作记作 v v w w; 也称也称w w到到v v例:例:G G: S0S1, S01 0S1 00S11 00S11 000S111 000S111 00001111 S 0S1现在学习的是第31页,共67页例:例:G G: S0S1, S01 S 0S1 00S11 000S111 00001111*S S 00S11 00S11S 00001111 推导长度为4 若存在v =w0 w1 . wn=w (n0) 则记为v w,称作v推导出w,或w归约到v 若有v w 或 v=w, 则记为v w*l 推导的长度(长度为n的推导)现在学习的是第32页,共67页例:例:G
18、: S0S1, S01S 0S1 00S11 000S111 00001111G的句型的句型 S,0S1,00S11,000S111,00001111G的句子的句子 00001111,01*l 句型 有文法GS,若S x, xV*,则称x是文法G的句型。l 句子 有文法GS,若S x,且xVT*,则称x是文法G的句子。*现在学习的是第33页,共67页例:例:GE E: EE+T|TEE+T|T TT TT* *F|FF|F F(E)|a F(E)|a判断:判断:a+aa+a* *a a是否为该文法的句子是否为该文法的句子EE+T T+T F+T a+T a+T*F a+F*F a+a*F a+
19、a*a句子:用符号a,+,*,(和)构成的算术表达式现在学习的是第34页,共67页语言中的每个句子可以由上下文无关文法的开始符号产生。例:G=(0,1,S,S,P) P: S0S1, S01 L(G)=0n1n|n1*L(G)=x|S x,S为文法的开始符号,且x VT*现在学习的是第35页,共67页q G生成的每个串都在L(G)中,L(G)中的每个串确实能被G生成。q 文法所产生的语言L(G)是无限语言,原因是所定义的文法中含有递归。现在学习的是第36页,共67页l递归、直接递归:递归、直接递归:如果文法中有形如如果文法中有形如AAA的产生式,其中的产生式,其中,不同时为不同时为,则称产生式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 前后文无关文法和语言 前后文 无关 文法 语言
限制150内