编译原理重点精选文档.ppt
《编译原理重点精选文档.ppt》由会员分享,可在线阅读,更多相关《编译原理重点精选文档.ppt(117页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理重点本讲稿第一页,共一百一十七页有穷自动机有穷自动机 有穷自动机(或有限自动机)作为一种识别工具,有穷自动机(或有限自动机)作为一种识别工具,它能正确地识别正规集,即识别正规文法所定义的语它能正确地识别正规集,即识别正规文法所定义的语言和正规式所表示的集合。引入有穷自动机这个理论,言和正规式所表示的集合。引入有穷自动机这个理论,正是为词法分析程序的自动构造寻找特殊的方法和工正是为词法分析程序的自动构造寻找特殊的方法和工具。具。分类:确定的有穷自动机(分类:确定的有穷自动机(DFA)不确定的有穷自动机(不确定的有穷自动机(NFA)本讲稿第二页,共一百一十七页3.1 概述概述 有穷自动机(
2、有穷自动机(FA)有穷自动机(有穷自动机(FA,Finite Automata)是一种有限离散数字系统)是一种有限离散数字系统的抽象数学模型。的抽象数学模型。这个系统具有有限数目的内部这个系统具有有限数目的内部“状态状态”。所谓状态,是可以将事物区分开的一种标识。例如:数字电路(所谓状态,是可以将事物区分开的一种标识。例如:数字电路(0,1),十字路口的红绿灯等都是离散状态系统,其状态数目是有),十字路口的红绿灯等都是离散状态系统,其状态数目是有限的。连续状态系统则如水库的水位、室内温度变化等。限的。连续状态系统则如水库的水位、室内温度变化等。电梯的控制机制,不需要保存所有以前的服务要求,仅需
3、记电梯的控制机制,不需要保存所有以前的服务要求,仅需记住当前的层次、运动的方向以及未满足的服务要求。住当前的层次、运动的方向以及未满足的服务要求。文本编辑程序和词法分析程序是有限状态系统,计算机本身和文本编辑程序和词法分析程序是有限状态系统,计算机本身和人的大脑也可看成有限状态系统。人的大脑也可看成有限状态系统。本讲稿第三页,共一百一十七页例例 过河问题过河问题 题目题目 一个人带着一头狼、一头羊以及一棵青菜,处于河的左岸,需一个人带着一头狼、一头羊以及一棵青菜,处于河的左岸,需要渡到河的右岸。有一条小船,每次只能携带人和其余的三者之一。要渡到河的右岸。有一条小船,每次只能携带人和其余的三者之
4、一。不能让狼和羊单独在一起,无论在左岸还是右岸,否则狼会吃掉羊。不能让狼和羊单独在一起,无论在左岸还是右岸,否则狼会吃掉羊。同样,也不能让羊和青菜单独一起。同样,也不能让羊和青菜单独一起。如何才能安全渡过河呢?如何才能安全渡过河呢?本讲稿第四页,共一百一十七页例例 过河问题过河问题 分析分析 观察每次摆渡后河两岸的局势,使问题模型化。观察每次摆渡后河两岸的局势,使问题模型化。人(人(M),狼(),狼(W),羊(),羊(G),菜(),菜(C)。存在有)。存在有16种种子集,用连字号子集,用连字号”-”连接子集的对偶表示状态,例如:连接子集的对偶表示状态,例如:MG-WC,表示:人和羊在左岸,狼和
5、菜在右岸。,表示:人和羊在左岸,狼和菜在右岸。16种状态中的某些状态,是不应该引入系统的,例如种状态中的某些状态,是不应该引入系统的,例如GC-MW,有关死活。,有关死活。人所进行的摆渡活动,可作为系统的输入。人可单独过河人所进行的摆渡活动,可作为系统的输入。人可单独过河(输入为(输入为M),带着狼过河(输入为),带着狼过河(输入为W),带着羊过河(输入为),带着羊过河(输入为G)或者是带着菜过河(输入为)或者是带着菜过河(输入为C)。)。问题问题:初始状态应该是什么?终止状态应该是什么?:初始状态应该是什么?终止状态应该是什么?本讲稿第五页,共一百一十七页例例 过河问题过河问题 分析(续)分
6、析(续)初始状态:初始状态:MWGC-;终止状态:;终止状态:-MWGC。MWGC-WC-MGg 问题:问题:本讲稿第六页,共一百一十七页例例 过河问题过河问题 状态转换图状态转换图MWGC-WC-MGC-MWGMWG-CMGC-WG-MWCMG-WC-MWGCW-MGCMWC-Gggggmggggmmmccccwwww起始起始本讲稿第七页,共一百一十七页有穷自动机(有穷自动机(FA)数字系统:可以从一个状态移动到另一个状态;每次状态转数字系统:可以从一个状态移动到另一个状态;每次状态转换,都上由当前状态及一组输入符号确定的;可以输出某些离散换,都上由当前状态及一组输入符号确定的;可以输出某些
7、离散的值集。的值集。FA:一个状态集合;状态间的转换规则;通过读头来扫描的一:一个状态集合;状态间的转换规则;通过读头来扫描的一个输入符号串。个输入符号串。读头:从左到右扫描符号串。移动(扫描)是由状态转读头:从左到右扫描符号串。移动(扫描)是由状态转换规则来决定的。换规则来决定的。本讲稿第八页,共一百一十七页ddd;.dd+;输入符号串一个FA的例子读头数字A数字+-.SGBH数字数字.数字接收:若扫描完输入串,接收:若扫描完输入串,且在一个终止状态上结束。且在一个终止状态上结束。阻塞:若扫描结束但未停止阻塞:若扫描结束但未停止在终止状态上;或者为能扫在终止状态上;或者为能扫描完输入串(如遇
8、不合法符描完输入串(如遇不合法符号)。号)。不完全描述:某些状态对于不完全描述:某些状态对于某些输入符号不存在转换。某些输入符号不存在转换。练习练习:+34.567 .123 3.4.5本讲稿第九页,共一百一十七页=80;0134256eniL字母字母字母字母数字数字数字=;0124563Line=80;id,Line=,num,80;,数字数字字母字母1 1=0003;1输入符号串输出有限控制器读头本讲稿第十页,共一百一十七页3.2 有穷自动机的形式定义有穷自动机的形式定义DFA:Deterministic Finite AutomataNFA:Nondeterministic Finite
9、 AutomataDFA的定义的定义定义定义3.1 一个确定的有穷自动机一个确定的有穷自动机(DFA)M是一个五元组:是一个五元组:M=(K,f,S,Z)(1)K是一个非空有穷集合,它的每一个元素称为一个状态;是一个非空有穷集合,它的每一个元素称为一个状态;(2)是一个有穷字母表,它的每一个元素称为一个输入字符;是一个有穷字母表,它的每一个元素称为一个输入字符;也也称为输入符号字母表称为输入符号字母表本讲稿第十一页,共一百一十七页确定的有穷自动机确定的有穷自动机DFA的定义(续)的定义(续)(3)f是从是从K到到K的单值部分映射;的单值部分映射;f(ki,a)=kj,其中其中ki K,kj K
10、说明:当前状态为说明:当前状态为ki,输入字符,输入字符a时,将转换到下一个状态时,将转换到下一个状态kj,把,把kj称为称为ki的一个后继状态。的一个后继状态。DFA的确定性就表现在的确定性就表现在f是单值函数,即对任意状态是单值函数,即对任意状态k K,输入符,输入符号号a,f(k,a)唯一确定一个状态。唯一确定一个状态。(4)S K,是唯一的初态;,是唯一的初态;(5)Z是是K的子集,是一个终态集,终态也称为可接收状态或结束状态的子集,是一个终态集,终态也称为可接收状态或结束状态。本讲稿第十二页,共一百一十七页确定的有穷自动机确定的有穷自动机DFA的表示的表示 3.2.1 状态转换图状态
11、转换图 设设DFA有有m个状态,个状态,n个输入字符,那么这个图含有个输入字符,那么这个图含有m个状态个状态结,每个结点最多有结,每个结点最多有n条箭弧射出和别的结点相连接,每条弧用条箭弧射出和别的结点相连接,每条弧用中的一个不同输入符号作记号。整个图含有唯一的一个初态和若中的一个不同输入符号作记号。整个图含有唯一的一个初态和若干个(可以干个(可以0个)终态结。个)终态结。习惯上,初态结可以用习惯上,初态结可以用“=”或或“”表示,终态结用双圆表示,终态结用双圆圈表示或标以圈表示或标以“+”。对。对f(ki,a)=kj指从状态结指从状态结ki到状态结到状态结kj画标记画标记a的弧。的弧。本讲稿
12、第十三页,共一百一十七页 例例题:题:DFA M=(0,1,2,3,a,b,f,0,3),其中,其中f定义为:定义为:f(0,a)=1,f(0,b)=2,f(1,a)=3,f(1,b)=2,f(2,a)=1,f(2,b)=3,f(3,a)=3,f(3,b)=3解:该解:该DFA M的状态图:的状态图:0123abbaaba,b本讲稿第十四页,共一百一十七页确定的有穷自动机确定的有穷自动机DFA的表示(续)的表示(续)3.2.2 状态转换矩阵状态转换矩阵 矩阵的行表示状态,列表示输入字符,矩阵矩阵的行表示状态,列表示输入字符,矩阵元素表示相应的状态行在输入字符列下的新的状元素表示相应的状态行在输
13、入字符列下的新的状态,即态,即f(k,a)的值。的值。本讲稿第十五页,共一百一十七页例(题同)例(题同)解:该解:该DFA M的矩阵表示的矩阵表示状态状态 字符字符ab0121322133330123abbaaba,b0 0 0 1 本讲稿第十六页,共一百一十七页3.2.3 有关自动机术语有关自动机术语(1)道路:对于道路:对于*中的任何字中的任何字,若存在一条从初态到某终态的,若存在一条从初态到某终态的路径。路径。(2)识别:道路上所有弧的标记连接成的字等于识别:道路上所有弧的标记连接成的字等于,则称,则称可为可为DFA M所识别(所接受)。所识别(所接受)。即若即若t*,f(S,t)=P,
14、其中,其中S为为DFA M的初始状态,的初始状态,P Z(终态(终态集)。集)。若若M的初态结同时也是终态结,则空字的初态结同时也是终态结,则空字可为可为M所识别,即所识别,即Q K,f(Q,)=Q(3)运行:运行:f(Q,t1t2)=f(f(Q,t1),t2),其中,其中QK,t1t2为输入字符串,且为输入字符串,且t1,t1t2*本讲稿第十七页,共一百一十七页例例解:解:f(0,abba)=f(f(0,a),bba)=f(1,bba)=f(f(1,b),ba)=f(2,ba)=f(f(2,b),a)=f(3,a)=3 得证得证题:试证题:试证abba可为例可为例1的的DFA M所识别(所接
15、受)。所识别(所接受)。0123abbaaba,b本讲稿第十八页,共一百一十七页 3.2.4 有关确定有穷自动机的结论有关确定有穷自动机的结论 把把DFA M所能接受的所有字(字的全体)记为所能接受的所有字(字的全体)记为L(M)。上的一个字集上的一个字集V*是正规的,当且仅当存在一个是正规的,当且仅当存在一个上的确定有穷自动机上的确定有穷自动机M,使得,使得L(M)=V。本讲稿第十九页,共一百一十七页有限自动机识别的语言有限自动机识别的语言 例子例子 例:下图中的自动机所能识别的语言是什么?例:下图中的自动机所能识别的语言是什么?q0q2q1q3abbaba本讲稿第二十页,共一百一十七页 定
16、义定义3.4 一个不确定的有穷自动机一个不确定的有穷自动机NFA N也是一个五元组:也是一个五元组:M=(K,f,S,Z)(1)K是一个有穷集合,它的每一个元素称为一个状态;是一个有穷集合,它的每一个元素称为一个状态;(2)是一个有穷字母表,它的每一个元素称为一个输入字符;是一个有穷字母表,它的每一个元素称为一个输入字符;也称为也称为输入符号字母表输入符号字母表(3)f是一个是一个K*到到K的子集的映射:的子集的映射:f:K*2k(4)S是是K的子集,是非空的初态集;的子集,是非空的初态集;(5)Z是是K的子集,是一个终态集,也称可接收状态或结束状态。的子集,是一个终态集,也称可接收状态或结束
17、状态。3.2.5 不确定的有穷自动机不确定的有穷自动机(NFA)的定义的定义本讲稿第二十一页,共一百一十七页NFA的表示用状态转换图(用状态转换图(f是多值函数)是多值函数)由由NFA的定义,可把一个含有的定义,可把一个含有m个状态和个状态和n个输入字符的个输入字符的NFA表表示如下:示如下:图中有图中有m个状态结,对每个状态结可射出若干条弧和别的状个状态结,对每个状态结可射出若干条弧和别的状态结相连,且每条弧用态结相连,且每条弧用*中的一个字(不一定要不同的字且中的一个字(不一定要不同的字且可以是空字可以是空字)作标记(或称输入字)。整个图中至少含有一个初)作标记(或称输入字)。整个图中至少
18、含有一个初态结以及若干个(可以是态结以及若干个(可以是0个)终态结。个)终态结。某些结既可以是初态结也可以是终态结。某些结既可以是初态结也可以是终态结。本讲稿第二十二页,共一百一十七页例例题:一个题:一个NFA M(s,t,0,1,f,s,t),其中,其中 f(s,0)=s,t,f(s,1)=t,f(t,0)=,f(t,1)=s,t,解:其状态图如下:解:其状态图如下:s0t0111本讲稿第二十三页,共一百一十七页例例如下状态图也是一个如下状态图也是一个NFA0a,b1aabba,b2a,b本讲稿第二十四页,共一百一十七页有关非确定有穷自动机的术语有关非确定有穷自动机的术语对于对于*中的任何一
19、个串中的任何一个串t可被可被NFA M识别是指:若对识别是指:若对这个字(串)这个字(串)t存在一条从某个初态结到某一个终态结存在一条从某个初态结到某一个终态结的道路,且这条道路上所有弧的标记字依序连接起来的道路,且这条道路上所有弧的标记字依序连接起来的字(不理睬那些标记为的字(不理睬那些标记为的弧)等于的弧)等于t,则,则t可识别可识别(或可接受)(或可接受)若若M的某些结点既是初态结也是终态结,或存在一的某些结点既是初态结也是终态结,或存在一条从某个初态结到某个终态结的条从某个初态结到某个终态结的道路,则空字道路,则空字可为可为M所识别(所接受)。所识别(所接受)。本讲稿第二十五页,共一百
20、一十七页补充:递归思想构造文法补充:递归思想构造文法 在某些复杂的语言中,字符串可能包含一种结构,它递在某些复杂的语言中,字符串可能包含一种结构,它递归地作为另一种(或者同一种)结构的一部分而出现,可利归地作为另一种(或者同一种)结构的一部分而出现,可利用递归思想来构造对应的文法。用递归思想来构造对应的文法。例例1:定义语言:定义语言L=|中中a和和b的个数相同的个数相同的文法。的文法。解:先构造出基础情况的文法:解:先构造出基础情况的文法:S-ab|ba|再递归地构造出归纳情况的文法(新的生成式不能改变再递归地构造出归纳情况的文法(新的生成式不能改变a和和b的个数的个数关系):关系):S-S
21、ab|aSb|abS|Sba|bSa|baS本讲稿第二十六页,共一百一十七页递归思想构造文法递归思想构造文法(续)(续)例例1:求一个文法求一个文法G,使得,使得(G)即该文法的语言是奇数个和奇数即该文法的语言是奇数个和奇数个的组合个的组合。解:解:因为语言是奇数个和奇数个的组合,所以打头的最小语言因为语言是奇数个和奇数个的组合,所以打头的最小语言有四种组合:有四种组合:aa bb ab ba定义定义S和和A,S是表示奇数个是表示奇数个 a和奇数个和奇数个b的组合,而的组合,而A是表示是表示偶数个偶数个a和偶数个和偶数个b的组合。的组合。开始递归构造文法:开始递归构造文法:S-aaS|bbS|
22、abA|baA A-aaA|bbA|abS|baS|本讲稿第二十七页,共一百一十七页补充:如何设计有限自动机补充:如何设计有限自动机 如同文法的设计,自动机的设计也是一个创造过程。如同文法的设计,自动机的设计也是一个创造过程。有一种做法,在设计各种类型的自动机时都很有帮助,即有一种做法,在设计各种类型的自动机时都很有帮助,即采用一种心理上的技巧,采用一种心理上的技巧,把自己放在要设计的机器的位置把自己放在要设计的机器的位置上,考虑自己该如何实现自动机的任务上,考虑自己该如何实现自动机的任务。假定自己是一台有限自动机,接受到一个输入符号串时,假定自己是一台有限自动机,接受到一个输入符号串时,必须
23、确定到目前为止所看到的字符串是否可为该自动机所识必须确定到目前为止所看到的字符串是否可为该自动机所识别。为了能够判断这一点,必须估算出识别时需要记住哪些别。为了能够判断这一点,必须估算出识别时需要记住哪些关键的东西。关键的东西。为什么不记住所有看到的东西呢?因为你是一台有限自动机,为什么不记住所有看到的东西呢?因为你是一台有限自动机,只有有限个状态,而这些状态是你记住事情的唯一办法。输入串可只有有限个状态,而这些状态是你记住事情的唯一办法。输入串可能很长,而你不可能记住所有的事情。能很长,而你不可能记住所有的事情。幸运的是,许多语言只需要记住某些关键的信息就可幸运的是,许多语言只需要记住某些关
24、键的信息就可以了。以了。本讲稿第二十八页,共一百一十七页设计有限自动机(续设计有限自动机(续1)例例1:构造一台有限自动机,识别所有由奇数个:构造一台有限自动机,识别所有由奇数个a和奇数个和奇数个b组成的字符串。组成的字符串。解:为了确定解:为了确定a和和b的个数是否是奇数,不需要记住所看的个数是否是奇数,不需要记住所看到的整个字符串,而只需要记住至此所看到的到的整个字符串,而只需要记住至此所看到的a、b个个数是偶数还是奇数即可。一旦确定了关键信息,就可数是偶数还是奇数即可。一旦确定了关键信息,就可以开始设计状态了。以开始设计状态了。这些信息有如下四种可能性:这些信息有如下四种可能性:本讲稿第
25、二十九页,共一百一十七页设计有限自动机(续设计有限自动机(续2)例例1:(1)到此为止是偶数个到此为止是偶数个a和偶数个和偶数个b;(2)到此为止是奇数个到此为止是奇数个a和偶数个和偶数个b;(3)到此为止是偶数个到此为止是偶数个a和奇数个和奇数个b;(4)到此为止是奇数个到此为止是奇数个a和奇数个和奇数个b。根据每种可能性设计一个状态,并根据可能的输入符号来设根据每种可能性设计一个状态,并根据可能的输入符号来设计状态之间的转移条件。计状态之间的转移条件。1324aaaabbbb本讲稿第三十页,共一百一十七页设计有限自动机(续设计有限自动机(续3)例例2:设计有限自动机:设计有限自动机M,识别
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 重点 精选 文档
限制150内