第三章编译原理精选文档.ppt
《第三章编译原理精选文档.ppt》由会员分享,可在线阅读,更多相关《第三章编译原理精选文档.ppt(100页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章编译原理本讲稿第一页,共一百页本章重点单词的描述工具单词的识别系统设计和实现词法分析程序首先需要描述和刻画程序设计语言中的原子单位单词,其次需要识别单词和执行某些相关的动作。描述程序设计语言的词法的机制是正则表达式,识别机制是有穷状态自动机。本讲稿第二页,共一百页回顾回顾什麽是词法分析程序4实现词法分析(lexicalanalysis)的程序逐个读入源程序字符并按照构词规则切分成一系列单词。单词是语言中具有独立意义的最小单位,包括保留字、标识符、运算符、标点符号和常量等。词法分析是编译过程中的一个阶段,在语法分析前进行。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来
2、获得当前单词供语法分析使用。本讲稿第三页,共一百页词法分析程序和语法分析程序的关系源程序词法分析程序语法分析程序Tokengettoken.本讲稿第四页,共一百页词法分析程序的主要任务:读源程序,产生单词符号词法分析程序的其他任务:滤掉空格,跳过注释、换行符追踪换行标志,复制出错源程序,宏展开,本讲稿第五页,共一百页常常遇到的术语Token单词,词标,符号lexeme词素,词位pattern模式,式样本讲稿第六页,共一百页帮助理解术语Ingeneral,thereisasetofstringsintheinputforwhichthesametokenisproducedasoutput.Th
3、issetofstringsisdescribedbyarulecalledapatternassociatedwiththetoken.Thepatternissaidtomatcheachstringintheset.A lexemeisasequenceofcharactersinthesourceprogramthatismatchedbythepatternforatoken.e.g.Constpi=3.14159;中的pi是token“identifier”的lexeme,其pattern为letterfollowedbylettersand/ordigit.本讲稿第七页,共一百页
4、词法分析工作从语法分析工作独立出来的原因:简化设计改进编译效率增加编译系统的可移植性本讲稿第八页,共一百页正规表达式与正规集(正规语言)程序设计语言中的单词是基本语法成分.单词符号的语法可以用有效的工具加以描述,并且基于这类描述工具,实现词法分析程序的自动构造.首先表述一些基本术语和概念.符号符号一个抽象实体,我们不再形式地定义它(就象几何中的”点”一样).例如字母是符号,数字也是符号。字母表字母表字母表是元素的非空有穷集合,我们把字母表中的元素称为符号,因此字母表也称为符号集。不同的语言可以有不同的字母表,例如汉语的字母表中包括汉字、数字及标点符号等。PASCAL语言的字母表是由字母、数字、
5、若干专用符号及BEGIN、IF之类的保留字组成。本讲稿第九页,共一百页符号串符号串 由字母表中的符号组成的任何有穷序列称为符号串,例如001110是字母表=0,1上的符号串.字母表A=a,b,c上的一些符号串有:a,b,c,ab,aaca。在符号串中,符号的顺序是很重要的,符号串ab就不同于ba,abca和aabc也不同。可以使用字母表示符号串,如x=STR表示“x是由符号S、T和R,并按此顺序组成的符号串”。符号串的长度符号串的长度 如果某符号串x中有m个符号,则称其长度为m,表示为x=m,如001110的长度是6。空符号串空符号串,即不包含任何符号的符号串,用表示,其长度为0,即=0。本讲
6、稿第十页,共一百页介绍有关符号串的一些运算。符号串的头符号串的头,尾,固有头和固有尾尾,固有头和固有尾:如果z=xy是一符号串,那么x是z的头,y是z的尾,如果x是非空的,那么y是固有尾;同样如果y非空,那么x是固有头。举个例子:设z=abc,那么z的头是,a,ab,abc,除abc外,其它都是固有头;z的尾是,c,bc,abc,z的固有尾是,c,bc。当对符号串z=xy的头感兴趣而对其余部分不感兴趣时,采用省略写法:z=x;如果只是为了强调x在符号串z中的某处出现,则可表示为:z=x;符号t是符号串z的第一个符号,则表示为z=t。本讲稿第十一页,共一百页符号串的连接符号串的连接:设x和y是符
7、号串,它们的连接xy是把y的符号写在x的符号之后得到的符号串.由于的含义,显然有x=x =x。例如x=ST,y=abu,则它们的连接xy=STabu,看出x=2,y=3,xy=5符号串的符号串的方幂方幂:符号串自身连接n次得到的符号串 an 定义为 aaaa n个a a1=a,a2=aa且a0=例;若x=AB则:x0=x1=ABx2=ABABx3=ABABABxn=xxn-1=xn-1x(n0)本讲稿第十二页,共一百页 符号串集合符号串集合:若集合A中所有元素都是某字母表上的符号串,则称A为字母表上的符号串集合。两个符号串集合两个符号串集合A A和和B B的乘积的乘积 定义为AB=xy|xA且
8、yB 若集合A=ab,cde 集合B=0,1 则AB=ab1,ab0,cde0,cde1使用*表示上的一切符号串(包括)组成的集合。*称为称为的闭包的闭包。上的除外的所有符号串组成的集合记为+。+称为称为的正闭包的正闭包。本讲稿第十三页,共一百页例:例:=a,b=a,b *=,a,b,aa,ab,ba,bb,aaa,aab,=,a,b,aa,ab,ba,bb,aaa,aab,+=a,b,aa,ab,ba,bb,aaa,aab,=a,b,aa,ab,ba,bb,aaa,aab,本讲稿第十四页,共一百页正规式正规式也称正则表达式,正规表达式(regularexpression)是说明单词的模式(p
9、attern)的一种重要的表示法(记号),是定义正规集的数学工具。我们用以描述单词符号。下面是正规式和它所表示的正规集的递归定义。本讲稿第十五页,共一百页定义(正规式和它所表示的正规集):设字母表为,辅助字母表=,。1。和都是上的正规式,它们所表示的正规集分别为和;本讲稿第十六页,共一百页2。任何a,a是上的一个正规式,它所表示的正规集为a;3。假定e1和e2都是上的正规式,它们所表示的正规集分别为L(e1)和L(e2),那么,(e1),e1e2,e1e2,e1也都是正规式,它们所表示的正规集分别为L(e1),L(e1)L(e2),L(e1)L(e2)和(L(e1)。4。仅由有限次使用上述三步
10、骤而定义的表达式才是上的正规式,仅由这些正规式所表示的集合才是上的正规集。本讲稿第十七页,共一百页正规式中的符号其中的“”读为“或”(也有使用“+”代替“”的);“”读为“连接”;“”读为“闭包”(即,任意有限次的自重复连接)。在不致混淆时,括号可省去,但规定算符的优先顺序为“”、“”、“”。连接符“”一般可省略不写。“”、“”和“”都是左结合的。本讲稿第十八页,共一百页例子令=a,b,上的正规式和相应的正规集的例子有:正规式正规集aaaba,babab(ab)(ab)aa,ab,ba,bba,a,a,任意个a的串本讲稿第十九页,共一百页正规式正规集(ab),a,b,aa,ab所有由a和b组成
11、的串(ab)(aabb)(ab)上所有含有两个相继的a或两个相继的b组成的串本讲稿第二十页,共一百页讨论下面两个例子例3.1令=l,d,则上的正规式r=l(ld)定义的正规集为:l,ll,ld,ldd,其中l代表字母,d代表数字,正规式即是字母(字母|数字),它表示的正规集中的每个元素的模式是“字母打头的字母数字串”,就是Pascal和多数程序设计语言允许的的标识符的词法规则.例3.2=d,e,+,-,则上的正规式d(dd)(e(+-)dd)表示的是无符号数的集合。其中d为09的数字。程序设计语言的单词都能用正规式程序设计语言的单词都能用正规式 来定义来定义.本讲稿第二十一页,共一百页4若两个
12、正规式e1和e2所表示的正规集相同,则说e1和e2等价,写作e1=e2。例如:e1=(ab),e2=ba又如:e1=b(ab),e2=(ba)be1=(ab),e2=(ab)本讲稿第二十二页,共一百页4设r,s,t为正规式,正规式服从的代数规律有:1。rs=sr“或”服从交换律2。r(st)=(rs)t“或”的可结合律3。(rs)t=r(st)“连接”的可结合律4。r(st)=rsrt(st)r=srtr分配律本讲稿第二十三页,共一百页5。r=r,r=r是“连接”的恒等元素零一律6。rr=rr=rrr“或”的抽取律本讲稿第二十四页,共一百页有穷自动机有穷自动机有穷自动机(也称有限自动机)作为一
13、种识别装置,它能准确地识别正规集,即识别正规文法所定义的语言和正规式所表示的集合,引入有穷自动机这个理论,正是为词法分析程序的自动构造寻找特殊的方法和工具。有穷自动机分为两类:确定的有穷自动机(DeterministicFiniteAutomata)和不确定的有穷自动机(NondeterministicFiniteAutomata)。本讲稿第二十五页,共一百页关于有穷自动机有穷自动机我们将讨论如下题目确定的有穷自动机DFA不确定的有穷自动机NFANFA的确定化DFA的最小化本讲稿第二十六页,共一百页确定的有穷自动机DFADFA定义:一个确定的有穷自动机(DFA)M是一个五元组:M=(K,f,S
14、,Z)其中1.K是一个有穷集,它的每个元素称为一个状态;2.是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号表;本讲稿第二十七页,共一百页DFA定义3.f是转换函数,是在KK上的映射,即,如 f(ki,a)=kj,(kiK,kjK)就意味着,当前状态为ki,输入符为a时,将转换为下一个状态kj,我们把kj称作ki的一个后继状态;4.SK是唯一的一个初态;5.ZK是一个终态集,终态也称可接受状态或结束状态。本讲稿第二十八页,共一百页一个DFA的例子:DFAM=(S,U,V,Q,a,b,f,S,Q)其中f定义为:f(S,a)=Uf(V,a)=Uf(S,b)=Vf(V,b)=Qf(
15、U,a)=Qf(Q,a)=Qf(U,b)=Vf(Q,b)=Q本讲稿第二十九页,共一百页一个DFA可以表示成一个状态图(或称状态转换图)。假定DFAM含有m个状态,n个输入字符,那么这个状态图含有m个结点,每个结点最多有n个弧射出,整个图含有唯一一个初态结点和若干个终态结点,初态结点冠以双箭头“=”或标以“-”,终态结点用双圈表示或标以“+”,若f(ki,a)=kj,则从状态结点ki到状态结点kj画标记为a的弧;本讲稿第三十页,共一百页DFA的状态图表示bSUVQaaaba,b本讲稿第三十一页,共一百页一个DFA还可以用一个矩阵表示,该矩阵的行表示状态,列表示输入字符,矩阵元素表示相应状态行和输
16、入字符列下的新状态,即k行a列为f(k,a)的值。用双箭头“=”标明初态;否则第一行即是初态,相应终态行在表的右端标以1,非终态标以0。本讲稿第三十二页,共一百页DFA 的矩阵表示的矩阵表示字符字符状态状态0001本讲稿第三十三页,共一百页为了说明DFA如何作为一种识别机制,我们还要理解下面的定义*上的符号串上的符号串t t在在DFA MDFA M上运行上运行一个输入符号串t,(将它表示成Tt1的形式,其中T,t1*)在DFAM=(K,f,S,Z)上运行运行的定义为:f(Q,Tt1)=f(f(Q,T),t1)其中QK扩充转换函数f为 K*K上的映射,且:f(ki,)=ki本讲稿第三十四页,共一
17、百页*上的符号串上的符号串t t被被DFADFA M M接受接受M=(K,f,S,Z)若t*,f(S,t)=P,其中S为M的开始状态,PZ,Z为终态集。则称t为DFAM所接受接受(识别识别).本讲稿第三十五页,共一百页例例:证明证明t=baab被下图的被下图的DFA所接受所接受。f(S,baab)=f(f(S,b),),aab)=f(V,aab)=f(f(V,a),),ab)=f(U,ab)=f(f(U,a),),b)=f(Q,b)=QQ属于终态。属于终态。得证。得证。bSUVQabba,baa本讲稿第三十六页,共一百页DFAM所能接受的符号串的全体记为L(M).对于任何两个有穷自动机M和M,
18、如果L(M)=L(M),则称M与M是等价的.结论:上一个符号串集V是正规的,当且仅当存在一个上的确定有穷自动机M,使得V=L(M)。本讲稿第三十七页,共一百页DFA的确定性表现在转换函数f:KK是一个单值函数,也就是说,对任何状态kK,和输入符号a,f(k,a)唯一地确定了下一个状态。从状态转换图来看,若字母表含有n个输入字符,那末任何一个状态结点最多有n条弧射出,而且每条弧以一个不同的输入字符标记。本讲稿第三十八页,共一百页DFA的行为很容易用程序来模拟.DFAM=(K,f,S,Z)的行为的模拟程序K:=S;c:=getchar;whileceofdoK:=f(K,c);c:=getchar
19、;ifKisinZthenreturn(yes)elsereturn(no)本讲稿第三十九页,共一百页reviewRegularexpressionsonthealphabetaredefinedbythefollowingrecursiverules:1)Everysymbolof isaregularexpression2)and f isaregularexpression3)ifr1 andr2 areregularexpressions,soare(r1)r1 r2 r1|r2 r1*4)Nothingelseisaregularexpression.=0,1,2,3,4,5,6,7
20、,8,9(1|2|3|4|5|6|7|8|9|0)*is a regular expression(1|2|3|4|.8|9|0)(1|2|3.|8|9|0)*is a regular expression(1|2|3.|8|9|0)+本讲稿第四十页,共一百页reviewDFAM=(K,f,S,Z)1)A finite set of states,one of which is designated the initial state or start state,and some of which are designated as final states.2)An alphabet of
21、 possible input symbols.3)A finite set of transitions that specifies for each state and for each symbol of the input alphabet,which state to go to next.本讲稿第四十一页,共一百页DFA本讲稿第四十二页,共一百页DFA =digit,not digit本讲稿第四十三页,共一百页DFAM所能接受的符号串的全体记为L(M).对于任何两个有穷自动机M和M,如果L(M)=L(M),则称M与M是等价的.结论:上一个符号串集V是正规的,当且仅当存在一个上的确
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 编译 原理 精选 文档
限制150内