收藏 分享(赏)

2012编译原理授课要点.ppt

上传人:无敌 文档编号:1107788 上传时间:2018-06-11 格式:PPT 页数:60 大小:723.52KB
下载 相关 举报
2012编译原理授课要点.ppt_第1页
第1页 / 共60页
2012编译原理授课要点.ppt_第2页
第2页 / 共60页
2012编译原理授课要点.ppt_第3页
第3页 / 共60页
2012编译原理授课要点.ppt_第4页
第4页 / 共60页
2012编译原理授课要点.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

1、编译原理授课要点,蓝鹰吉林师范大学计算机学院jlnu_,第一讲,翻译的两种方式:编译、解释一个典型的编译过程包括词法分析、语法分析、语义分析、中间代码生成、中间代码优化和目标代码生成六个阶段。编译程序分为单遍扫描和多遍扫描自展技术 L0 L1, L2, , Ln = L编译程序的移植,第二讲,字母表、字符、串、串的长度、串的连接、串的方幂、串集的乘积、串集的方幂、闭包(正闭包、星闭包)文法(grammar)G=(V,T,P,S)推导、归约句型、句子、语言的概念L(G1)=L(G2),第三讲,0n1n|n=0 anbncn|n=1 0n12n|n=1 R|a,b* (R表示的转置)|a,b*=R

2、 anbnambm|n,m=0 1n0m1m0n|n,m=0 |a,b*中a和b的个数相同,第三讲(续),乔姆斯基体系PSG (phrase structure grammar)CSG(context sensitive grammar)CFG(context free grammar)RG(regular grammar),第四讲,扩充CSL,CFL,RL,使其含有空语句CFG的语法树的定义二义性文法子树、简单子树、短语、简单短语、句柄,第五讲,Finite Automaton,FA M 及L(M)的定义02n|n=1L(M1)=L(M2) Determinisitic Finite Aut

3、omaton,DFA 的定义xoooy|x,y0,1*|a,b*中a和b的个数均为偶数个0n1m2k|n,m,k=1x|x0,1*当把x看成二进制数时,x模3与0同余,第六讲,|0,1*当把看成二进制数时,模5与3同余,要求当|1时,的首字符为1Non-deterministic Finite Automaton,NFA M及L(M)的定义NFA与DFA的区别构造一个NFA M,使得L(M)=|0,1*含有子串00或11上述M识别串01001的过程构造一个DFA N,使得L(N)=L(M),鸽舍定理,任意六个人,要么有三人互相通过电话,要么有三人未通过电话。,A,B1,B2,B3,B4,B5,

4、实线段,虚线段,第七讲,一个记号的引入利用造表法实现NFADFA的转换-NFA的定义(进一步放宽对FA的约束)消除空移(或空移环路),若从状态A有一条弧射出,到达状态B,而B没有弧射出,从它发出的均为非弧。 设状态B经弧ai到达状态Si,则可在状态A与Si间添加新弧ai,并消除A、B之间的弧。,注:若B为接受状态,则将A设置成接受状态;若从开始状态存在一条到达A的路径(路径上每条弧均为弧),则设置B为开始状态。,第八讲 DFA的化简,定义:如果DFA M既没有无关状态,也没有彼此等价的状态,则称M是规约的(化简了的),即最小的DFA。在FA中,从开始状态没有任何一条路径能到达的状态称为无关状态

5、(不可达状态、多余状态)如果由状态A导出的符号串集与由状态B导出的符号串集相等,则称A与B是等价状态。,第八讲 DFA的化简(续),DFA化简的方法:消除不可达状态,用划分法寻找及合并等价状态。划分法:P0=F,(Q-F) . Pn=Pn-1,为形成Pi,考察Pi-1的每个子集,进行再分解,分解后两个状态属于同一子集当且仅当它们对于任何一个输入字母,其映像均落入Pi-1中相同的子集。此过程一直执行到不能再分解为止。,第八讲 DFA的化简(续),第八讲 DFA的化简(续),-NFANFADFA最简DFA,第九讲,正则表达式(Regular Expression,RE)RE所描述的语言L(r) R

6、E的代数运算律RE的举例给RE判断其描述的语言;给语言构造对应的RE(字母表0,1上所有不含子串001的串)思考:字母表0,1上所有不含子串011的串,第九讲(续),RE和FA的等价性之FARE允许状态转换图中弧上可以用RE作标记引入两个新结点,一个唯一的初态S和一个唯一的终态Z。从S到原初态引弧,再从原终态到Z引弧。显然,这是一种等价转换。逐步消去结点,直到只剩下S和Z。,消结规则如下:,第九讲(续),RE和FA的等价性之REFA先构造一个FA M的广义转换图,其中只有结点S和Z,S是初态,Z是终态,弧上是已知的RE r。然后对r逐步分解,直到转换图中所有弧上都是上单个字符或为止。,分解规则

7、如下:,随堂测试,请构造与正则表达式r=(a*|b*)b(ba)*等价的状态最少的DFA(上海交通大学 1997)已知DFA M1、M2的状态转换图如下:试构造DFA M12和M12,使得L(M12)=L(M1)L(M2) L(M12)=L(M1)-L(M2)(吉林大学 2001),随堂测试(续),已知语言L=|0,1+,并且中至少有两个1,而任何两个1之间有偶数个0,试给出描述该语言的正则表达式。试给出第一讲至今的知识结构。,第十讲,正则文法的产生式可以简化为AaB,Aa(其中A,BV,aT或a=)的形式。Aa1a2an(aiT,1in)引入新变量B1、B2、Bn-1 ,则上述产生式与以下一

8、组产生式等价A a1B1B1a2B2 Bn-1an,第十讲(续),Aa1a2anB(aiT,1in)引入新变量B1、B2、Bn-1 ,则上述产生式与以下一组产生式等价A a1B1B1a2B2 Bn-1anB这样,我们可以把正规文法都写成这种简化形式,即AaB,Aa(A,BV,aT或a=),RG与FA等价之RGFA,令RG G的终极符集作为FA M的输入字母表G的每一个变量作为M的一个状态,特别的,文法的开始符作为M的初态新增一个状态Z,作为接受态对于G中形如AaB的产生式,在FA M中构造形如(A,a)=B的映射对于G中形如Aa的产生式,在FA M中构造形如(A,a)=Z的映射,已知RG G:

9、SaS|aA|bBAbA|cCBaB|dDCcC|cDdD|d,S,A,C,Z,D,B,a,a,b,c,c,c,b,a,d,d,d,RG与FA等价之FARG,FA M的每个状态标记,均作为RG G的语法变量,其中M的初态S作为G的开始符FA M的输入字母表中所有字符,作为RG G的终极符对于FA M中的映射(A,a)=B,构造G的一条产生式(A,B为状态标记,a为输入符号)AaB对于FA M的接受态Z,在RG G中构造一条产生式Z,已知FA M:,y,S xA|yBA yA|yC|xBB xC|yC|yA|C ,描述RL的五种等价模型,RG,DFA,-NFA,NFA,RE,FA,随堂测试解答,

10、随堂测试解答(续),随堂测试解答(续),随堂测试解答(续),P0=3,4,5,7,1,2,6P1=3,4,7,5,1,2,6P2=3,4,7,5,1,2,6P3=P2,随堂测试解答(续),0*1(00)*1(1+00)*0*,第十一讲 正则语言的泵引理,该定理指出所有正则语言都有一种特殊的性质。如果能够证明一个语言没有这种性质,则保证它不是正则的。泵引理:设A是一个正则语言,则存在一个数p(泵长度),使得,如果是A中任一长度不小于p的字符串,那么可以被分成3段,=xyz,满足下述条件:对于每一个i0,xyizA|y|0|xy|p,这条性质的含义,语言中的所有字符串只要它的长度不小于某个特定的值

11、泵长度,就可以被“抽取”。它的意思是每一个这样的字符串都包括一段子串,把这段子串重复任意次,得到的字符串仍在这个语言中。,证明:设M=(Q,q1,F)是一台识别A的DFA,p是M的状态数。设=a1a2an是A中长度为n的字符串,这里np;又设S1,Sn+1是M在处理的过程中经历的状态序列,即Si+1=(Si,ai),1in,此序列的长度为n+1,大于p(至少有p+1个)根据鸽舍定理,在该序列的前p+1个元素中,必有两个是相同的状态。设第一个是Sj,第二个是Sk由于Sk出现在序列的前p+1个位置中,而且序列从S1开始的,故有kp+1令x=a1aj-1,y=ajak-1以及z=akan,x将M从S

12、1状态带到Sj状态,y将M从Sj状态带到Sk状态z将M从Sk状态带到Sn+1状态,而Sn+1是一个接受态。,故对于i0,M接受xyiz;已知jk,故|y|0;又kp+1,故|xy|p。于是满足泵引理的三个条件。证毕。,注:S1即q1,Sj即Sk,试证以下语言为非正则的,B=0n1n|n0假设B是正则的,令p是泵长度,选择一个字符串=0p1p,因为是B的一个成员且其长度大于p,根据泵引理可以分成三段=xyz,使得对于i0,xyiz在B中,但是:若y只含有0,xyyz中的0比1多,从而矛盾;若y只含有1,这种情况同样矛盾;若y既含有0,也含有1,则xyyz中0和1的个数可能相等,但它们的顺序势必乱

13、了,也矛盾。故,如果假设B是正则的,则矛盾不可避免,可见B是非正则的,证毕。,试证以下语言为非正则的,C=|中0和1的个数相同假设C是正则的,令p是泵长度,选择一个字符串=0p1p,因为是C的一个成员且其长度大于p,根据泵引理可以分成三段=xyz,使得对于i0,xyiz在C中。由|xy|p可知y只含有0,那么,xyyz中的0比1多,从而不是C的成员,这与假设矛盾;故C是非正则的,证毕。,试证以下语言为非正则的,D=|0,1*=0p10p1E=0i1j|ij=0p+11p抽出F=1n2|n0步长,第十二讲 文法构造ABC,A=1n2|n11,1111,111111111,B=12n|n111,1

14、111,11111111,C=1n3|n11,11111111,,描述A的文法,SL1BCRB1BC1BD,L代表左边界,R代表右边界输入n,共有n个1和n个C结束n的输入,然后每次删除一个1并增加与C的个数相同的E,即n个E,描述A的文法(续),DCCEDDEEDDRFREFFECFFC1FD,D右移,每遇C则增加一个ED右移,每遇E则跳过D到达右边界,以F替换并左移F左移,每遇E则跳过F左移,每遇C则跳过如果还有1,则删除最右边的一个1,并以D替换F,然后进行下一轮循环,描述A的文法(续),LFGGCGGE1GGR,若1皆被删除,以G替换F并删除LG右移,遇C则删除之G右移,遇E则以1替换

15、之最后删除G及右边界符R得A的句子1n2,描述B的文法,SL1FR1FF11LFLDD11DDRFRLFEE11EER,L为左边界符,R为右边界符F左移,遇1使之翻倍到达左边界,若继续则以D替换FD右移,遇1跳过到达右边界,以F替换R,循环若结束则以E替换F并删除左边界E右移,遇1跳过最后删除E及右边界得B句子12n,描述C的文法,SL1BCRB1BC1BD,L代表左边界,R代表右边界输入n,共有n个1和n个C结束n的输入,然后每次删除一个1并增加与C的个数相同的E,即n个E,同时植入一个T,描述C的文法(续),DCCEDDEEDDTTDDRFTRTFFTEFFECFFC1FD,D右移,每遇C

16、则增加一个ED右移,每遇E则跳过D右移,每遇T则跳过D到达右边界,以F替换并植入TF左移,每遇T则跳过F左移,每遇E则跳过F左移,每遇C则跳过删除一个1,以D替换F,循环,描述C的文法(续),LFLGGCGGE1G1GTNT,若1皆被删除,以G替换FG右移,遇C则删除之G右移,遇E则以1替换之遇T以N替换之,然后每删除一个1增加与T的个数相同的X,即n个X,描述C的文法(续),NTTXNNXXNNRMRXMMXTMMT1MN,N右移,每遇T则增加一个XN右移,每遇X则跳过N到达右边界,以M替换并左移M左移,每遇X则跳过M左移,每遇T则跳过如果还有1,则删除最右边的一个1,并以N替换M,然后进行

17、下一轮循环,描述C的文法(续),LMQQTQQX1QQR,若1皆被删除,以Q替换M并删除LQ右移,遇T则删除之Q右移,遇X则以1替换之最后删除Q及右边界符R得C的句子1n3,第十三讲 中间代码形式,为了方便移植和优化,引入中间代码。其形式多样,常见的有逆波兰式、三元式、四元式和树形表示。逆波兰式:早在编译程序出现之前,他就用于表示算术表达式,是波兰逻辑学家JLukasiewicz(卢卡西维奇)首先提出的。此法将运算对象写在前面,把运算符号写在后面,比如:a+b 写成 ab+,逆波兰式(续),ab 写成 ab(a+b)c 写成 ab+ca:=bc+dd 写成 abcbd+:=我们平时习惯使用的方

18、法称为中缀表示法,逆波兰式是后缀表示法(波兰式就是相应的前缀表示法)逆波兰式表示法有两个明显的优点:无括号,形式简洁运算符号的顺序与运算的次序完全相同。这两点使得它易于计算机处理。,逆波兰式(续),利用一个栈,自左向右扫描逆波兰表达式。每遇到运算对象,则将其压入栈中;遇到运算符,若其为二目运算符,则从栈顶弹出两个元素实施运算,将结果压入栈中,若其为一目运算符,则从栈顶弹出一个元素,实施运算,结果入栈。最后的结果留在栈顶。,三元式,三元式的一般形式(,)operator:运算符;argument:变元、参数例如 a:=bc+bd(,b,c)(,b,d)(+,)(:=,a)与后缀式不同,三元式含有

19、对中间计算结果的显式引用。对于一目运算,可规定只用arg1。,树形表示,树形表示是三元式的翻版。前述三元式可用下面的树形表示:,四元式,四元式的一般形式(,)例如 a:=bc+bd(,b,c,t1)(,b,d,t2)(+,t1,t2,t3)(:=,t3, ,a)四元式和三元式的主要不同在于,对中间结果的引用,四元式通过临时变量,三元式通过产生中间结果的三元式的编码。,思考题,给定文法G,其产生式如下(北大,1984)EE+T|TTTF|FFi|(E)则L(G)中的句子i+i+(ii)i的逆波兰表示为,若文法变为ET+E|TTFT|FFi|(E)则句子i+i+(ii)i的逆波兰表示为,可选项有:,思考题(续),A. iiiii+B. ii+iii+C. ii+iii+D. 皆非,答案, C A,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报