《形式语言基础》PPT课件.ppt
《《形式语言基础》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《形式语言基础》PPT课件.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译程序的设计原理与实现编译程序的设计原理与实现如何让计算机如何让计算机认识、理解认识、理解和和执行执行高级程序设计语言?高级程序设计语言?第第2章章形式语言基础形式语言基础 计算机处理语言,首先应考虑语言的形式化、规范化,使其具有可计算性和可操作性;这就是形式语言理论研究的问题。形式语言诞生于1956年,由Chomsky创立。通常,语言研究至少涉及三个方面:语法、语义和语用;形式语言的基本观点是:语言是符号串之集合!形式语言理论研究的形式语言理论研究的基本问题基本问题是:是:研究符号串集合的表示方法、结构特性研究符号串集合的表示方法、结构特性以及运算规律。以及运算规律。因此:因此:【内容提要
2、】2.1 形式语言是符号串集合 2.2 形式语言是由文法定义的 2.3 各种语法成分的定义 2.4 两类特性文法 2.5 文法变换方法 2.6 形式语言的分类第第2章章形式语言基础形式语言基础 字母表-元素(符号)的非空有限集合;符号串-符号的有限序列;符号串集合-有限个或者无限个符号串组成的集合;规 则-以某种形式表达的在一定范围内共同遵守的章程和制度;这里,指符号串的组成规则。2.1形式语言是符号串集合形式语言是符号串集合 【形式语言】是字母表上的符号按一定的规则组成的所有符号串集合;其中的每个符号串称为一个句子。【名词解释】:【名词解释】:三要素!三要素!【例【例2.1】L1=00,01
3、,10,11;字母表字母表1=0,1,句子有:句子有:00,01,10,11【注】【注】(1)b0=(空符号串)(空符号串),b1=b,b2=bb,b3=bbb,(2)L1为有限语言为有限语言;L2为无限语言。为无限语言。形式语言概念示例:形式语言概念示例:【例【例2.2】L2=abmc,bn|m0,n0字母表字母表2=a,b,c,句型句型1:abmc有句子:有句子:abc,abbc,abbbc,句型句型2:bn有句子:有句子:,b,bb,bbb,两个语言两个语言!1.1.连接连接:.=如:a.b=ab 2.1.1符号串符号串(集合集合)的运算的运算3.3.方幂方幂:n n=n-1n-1=n-
4、1n-1 4.4.闭包:闭包:n n个个.符号串的运算符号串的运算 设设,为两个符号串,则为两个符号串,则:的正闭包:的正闭包:+=1 1|2 2|n n|的星闭包:的星闭包:*=0 0|1 1|2 2|n n|0 0=(空符号串空符号串)什么符号也没有的符号串什么符号也没有的符号串 !1 1=;2 2=;2.2.或或:|=或者或者 这是一种这是一种泛指泛指!【例【例2.3】:】:(2)abc.=.abc=abc(1)abc.de=abcde(4)(a|b)1=(a|b)=a|b(a|b)*=(a|b)0|(a|b)1|(a|b)2|(a|b)2=(a|b)(a|b)=aa|ab|ba|bb
5、即:即:(a|b)*=(a|b)n,n0同理:同理:(a|b)+=(a|b)n,n0 符号串运算示例符号串运算示例泛指:泛指:由由a,b组成的组成的任意符号串!任意符号串!(包括空串)(包括空串)(3)ab|cd=ab或者或者cd1.乘积乘积:AB=xy|x A且且y B4.闭包闭包:A的正闭包的正闭包:A+=A1A2AnA的星闭包的星闭包:A*=A0A1A2An设设A和和B为两个符号串集合,则:为两个符号串集合,则:2.和和:AB=A+B=x|x A或或x B3.方幂方幂:An=AAA=AAn-1=An-1An个个A0=;A1=A;A2=AA;A3=AAA;.符号串集合的运算符号串集合的运算
6、 2.1.1符号串符号串(集合集合)的运算的运算 符号串集合运算示例符号串集合运算示例【例【例2.4】设设A=a,b,B=c,d则则A+B=a,b,c,d则则AB=xy|x A,y B=ac,ad,bc,bd【例【例2.5】设设A=a则则A*=A0A1A2An=+a+aa+aaa+=,a,aa,aaa,=an|n0【例【例2.6】设设A=a,b,A*=?A*=A0A1A2AnA0=;A1=A=a,b;A2=AA=a,ba,b=aa,ab,ba,bb;A3=AA2=a,baa,ab,ba,bb=aaa,aab,aba,abb,baa,bab,bba,bbb;A*=x|x=(a|b)n,n0 符号
7、串集合运算示例符号串集合运算示例(续续):推论推论:若:若A为任一字母表,则为任一字母表,则A*就是该字母就是该字母表表 上上的所有符号串的所有符号串(包括空串包括空串)的集合。的集合。2.2形式语言是由文法定义的形式语言是由文法定义的 形式语言是符号串的集合,对形式语言的描述形式语言是符号串的集合,对形式语言的描述有两种方式:有两种方式:(1)枚举方式枚举方式:语言为有穷集合时:语言为有穷集合时设有字母表设有字母表A=a,b,c,有有L1=a,aa,ab,ac,L2=c,cc(2)使用文法使用文法:语言为无穷集合时,无法枚举:语言为无穷集合时,无法枚举 设有字母表设有字母表B=0,1,B+=
8、0,1,00,10,11,01,000,用用A表示表示B+,可以表示为,可以表示为A-0A-1A-A0A-A1文法:用有穷的集合刻画无穷的集合的工具。文法:用有穷的集合刻画无穷的集合的工具。【定义】【定义】文法文法(grammar)是是规则规则的有限集,通常可的有限集,通常可以表示为四元组:以表示为四元组:G(Z)=(VN,VT,Z,P)VN:非终结符集非终结符集(定义的对象集,如:语法成分等定义的对象集,如:语法成分等);VT:终结符集终结符集(字母表字母表);Z:开始符号开始符号(研究范畴中最大的定义对象研究范畴中最大的定义对象);P:规则集规则集(又称产生式集又称产生式集);2.2形式语
9、言是由文法定义的形式语言是由文法定义的每个元素每个元素2.2.1什么是文法什么是文法?Z-或者或者A-|注:此文法实际称为上下文无关文法注:此文法实际称为上下文无关文法描述符号描述符号:-(定义为定义为/生成生成),|(或者是或者是)文法符号文法符号:Z,AVN,,(VN+VT)*每个规则每个规则 【注意】提供了规则集,就相当给出了一个文法:S-aAcA-bA|G(S):VT=a,b,c;Z=S;P:VN=S,A;G(Z)=(VN,VT,Z,P)2.2.1什么是文法什么是文法?【例【例2.7】L=abnc|n0,字母表:,字母表:=a,b,c;展开:展开:L=ac,abc,abbc,abbbc
10、,可以用右图给出的可以用右图给出的S-aAcA-bA|文法规则文法规则来表示来表示:2.2.2文法是怎样定义语言的?文法是怎样定义语言的?则则L(G)=x|Zx,xVT*即:一个文法所定义的即:一个文法所定义的语言语言,就是由该文法,就是由该文法开始开始设有文法设有文法G(Z),L(G)为为G所定义的语言;所定义的语言;利用利用推导算符推导算符 =进行连续推导进行连续推导符号推导出符号推导出的所有的所有仅含终结符仅含终结符的所有的所有符号串符号串之之集合集合。其中的每个符号串皆称为其中的每个符号串皆称为句子句子。=+2.1使用文法的使用文法的规则进行规则进行 形式语言是字母表上的符号按一定的形
11、式语言是字母表上的符号按一定的规则规则组成的组成的 所有符号串集合。所有符号串集合。从从开始符号出发,对符号串中的出发,对符号串中的定义对象定义对象,采,采用用推导的方法(的方法(用其规则右部替换左部用其规则右部替换左部)产生新的)产生新的符号串,如此进行,直到新符号串中不再出现定义符号串,如此进行,直到新符号串中不再出现定义的对象为止,则最终的符号串就是一个的对象为止,则最终的符号串就是一个句子。S-aAcA-bA|利用利用文法规则文法规则表示语言表示语言 【句子产生过程】(=推导算符)S S=aAcaAc=ac=ac=ac=ac S S=aAc=aAc=abAc=abAc=abc=abc=
12、abc=abc S S=aAc=aAc=bAc=bAc=abbAc=abbAc=abbc=abbc 一个句子一个句子!又一个句子又一个句子!S abS abn nc,n0 c,n0 =+再一个句子再一个句子!非终结符号非终结符号【例【例2.8】标识符标识符的文法的文法 【标识符标识符】指字母开头的字母、数字序列。】指字母开头的字母、数字序列。令令G(Z)=(VN,VT,Z,P)则则VN=I(标识符标识符),A(标识符尾标识符尾);VT=(字母字母),d(数字数字);Z=I;P:I-A|A-A|dA|同理,同理,【无符号整数无符号整数】文法可写成:】文法可写成:G(N):N-dN|d其其四元组四
13、元组也可写成:也可写成:G(N)=(N,d,N,P)得:得:I=(|d)n,n0令:令:I=A|A=A|dA|求解求解文法文法所定义的语言所定义的语言(1)上面构造的标识符文法 属于正规文法I-A|A-A|dA|先求解先求解A:A=(|d)A,A=(|d)2A,A=(|d)nA代入代入A=得:得:A=(|d)n,n0I=A|代入代入A=(|d)n,n0正规方程式正规方程式标识符:字母开头的字母、数字序列标识符:字母开头的字母、数字序列求解求解文法文法所定义的语言所定义的语言(2)则则L(G)的求解过程的求解过程代代入法入法:Z-aAcA-bA|【例【例2.9】G(Z):所以所以:L(G)=ab
14、nc|n0A=bA=bbA=bn,n0Z=aAcabnc,n0 =+Ab bn n =+即:即:Abn =+,n0即:即:Zabnc,n0 =+则则VN=E(算术表达式算术表达式),T(项项),F(因式因式);VT=i(变量或常数变量或常数),+,-,*,/,(,);Z=E;P:【例【例2.10】简单算术表达式文法】简单算术表达式文法【注】此文法定义了算术表达式的层次嵌套结构【注】此文法定义了算术表达式的层次嵌套结构:E-T|E+T|E-TT-F|T*F|T/FF-i|(E)令令G(Z)=(VN,VT,Z,P)(表达式表达式)表达式表达式项项因式因式文法文法E-E+E|EE|E*E|E/E|i
15、|(E)?算术表达式文法应用示例:算术表达式文法应用示例:根据根据 语言定义式语言定义式2.1,G(E):E-T|E+T|E-TT-F|T*F|T/FF-i|(E)证明证明i*(i+i-i)是文法是文法G(E)的一个的一个句子句子(即合法的即合法的算术表达式算术表达式):=+Ei*(i+i-i)成立吗?成立吗?E =+Ei*(i+i-i)=T=T*F=T*(E)=T*(E-T)=T*(E+T-T)=F*(E+T-T)=i*(E+T-T)=观察推导过程,可以看观察推导过程,可以看到:一旦产生式选择错到:一旦产生式选择错了,会导致失败!了,会导致失败!=i*(i+i-i)L(G)=x|Zx,xVT
16、*=+合法的算术表达式是指:合法的算术表达式是指:文法有两种基本运算:文法有两种基本运算:推导推导和和归约归约v星推导星推导():2.3各种语法成分的定义各种语法成分的定义1.直接推导直接推导(=):xAy=x y即:指用产生式的右部符号串即:指用产生式的右部符号串替换替换左部非终结符。左部非终结符。加推导加推导算符算符v加推导():设设x,y(VN+VT)*,A-P =*=*(当且仅当(当且仅当=1=2=)即:指一步或一步以上的直接推导运算。即:指一步或一步以上的直接推导运算。(当且仅当当且仅当=或或=1=2=)即:指零步或零步以上的直接推导运算。即:指零步或零步以上的直接推导运算。直接推导
17、直接推导算符算符星推导星推导算符算符 =+=+2.3.1文法的运算文法的运算 =.+=.+2.直接归约直接归约():x yxAy =.=.(当且仅当(当且仅当 1 1 2 2 )=.=.=.=.v星归约星归约():=.*=.*(当且仅当(当且仅当 =或或 1 1 2 2 )=.=.=.=.即:直接归约是直接推导的即:直接归约是直接推导的逆运算逆运算,用产生式的左,用产生式的左 部非终结符替换右部符号串。部非终结符替换右部符号串。即:指零步或零步以上的直接归约运算。即:指零步或零步以上的直接归约运算。即:指一步或一步以上的直接归约运算。即:指一步或一步以上的直接归约运算。直接归约直接归约算符算符
18、加归约加归约算符算符星归约星归约算符算符v加归约加归约():2.3.1文法的运算文法的运算规范推导和规范归约规范推导和规范归约 实用中最常见的两种运算:l最左推导()每次推导皆最左非终结符优先;l最左归约()每次归约皆最左可归约串优先。=+=.+l最右推导也称为规范推导l最左归约也称为规范归约同一个句子可以通过不同的推导序列推导出来同一个句子可以通过不同的推导序列推导出来通常只考虑两种特殊推导,即通常只考虑两种特殊推导,即最左推导和最右推导最左推导和最右推导N1=N=ND=N2=D2=1212D2N2NDNN1N1-NN-ND|DD-0|1|2 =.=.=.=.=.最左归约是最右推导的逆过程!
19、最左归约是最右推导的逆过程!i+i*il给定一个符号串给定一个符号串i+i*i:T-F|T*F|T/FF-i|(E)G(E):E-T|E+T|E-T文法运算示例:文法运算示例:【例【例2.11】算术表达式文法:算术表达式文法:=.=.=.=.=.=.=.=.2.最左归约最左归约(从从符号串出发符号串出发)过程:过程:E=E+T=T+T=F+T=i+T=i+T*F=i+F*F=i+i*F=i+i*iE =+i+i*iF+i*iT+i*iE+i*iE+F*iE+T*iE+T*FE+TEi+i*i =.+E1.最左推导最左推导(从从开始符号出发开始符号出发)过程:过程:最左非终结符最左非终结符最左可
20、归约串最左可归约串即:句型是由文法开始符号加推导出的任一符号串。即:句型是由文法开始符号加推导出的任一符号串。2.3.2句型、句子和语法树句型、句子和语法树若有若有且且 VT*,则,则 是句子;是句子;Z=+若有若有,则则 是句型;是句型;Z=+2.句子句子即:句子是由开始符号加推导出的任一即:句子是由开始符号加推导出的任一终结终结符号串。符号串。1.句型句型设有文法设有文法G(Z)=(VN,VT,Z,P),则:,则:3.语法树语法树句型句型(句子句子)产生过程的一种树结构表示;产生过程的一种树结构表示;树根树根开始符号开始符号;树叶树叶给定的给定的句型句型(句子句子)。A x1 x2xn 重
21、复步骤重复步骤,直到推导过程结束为止。,直到推导过程结束为止。置树根为开始符号;置树根为开始符号;【语法树的构造算法】【语法树的构造算法】若若推导推导采用了采用了产生式产生式:A-x1x2xn,则有,则有子树:子树:如此构造的语法树,其如此构造的语法树,其全体树叶全体树叶(自左至右自左至右)恰好是给定的句型恰好是给定的句型(句子句子)。E=T=T*F=F*F=(E)*F=(E+T)*F=(T+T)*F=(T/F+T)*F=(T/F+F)*F=(T/F+F)*i 句型、句子和语法树示例句型、句子和语法树示例【例2.12】算术表达式文法:(1)证明证明(T/F+F)*i是一个句型是一个句型(表达式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 形式语言基础 形式语言 基础 PPT 课件
限制150内