收藏 分享(赏)

第三章 词法分析 习题讲解.ppt

上传人:hwpkd79526 文档编号:9932611 上传时间:2019-09-20 格式:PPT 页数:26 大小:601KB
下载 相关 举报
第三章 词法分析 习题讲解.ppt_第1页
第1页 / 共26页
第三章 词法分析 习题讲解.ppt_第2页
第2页 / 共26页
第三章 词法分析 习题讲解.ppt_第3页
第3页 / 共26页
第三章 词法分析 习题讲解.ppt_第4页
第4页 / 共26页
第三章 词法分析 习题讲解.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、自动机、正则文法、正则表达式 的相互转化,正则文法,NFA,正则式,1,2,3,4,5,6,DFA,最小化,复习,如何为正则文法构造状态转换图?,Q-a 或Q-Ba 步骤如下: 以S为开始状态作结点; 把文法中的每一个非终结符号作为状态结点; 对于形如Q-a的每个规则,引一条开始状态S到状态Q的弧,弧上标记为a;对于形如Q-Ba的规则引一条从状态B到Q的弧,弧上标记为a。 以识别符号为终止状态。,1,构造状态转换图举例,例如:对于正则文法GZ:Z-Za|Aa|Bb A-Ba|a B-Ab|b,S,A,B,a,b,S,A,B,a,Z,Z,a,S,A,B,a,b,Z,b,a,a,b,a,a,a,b

2、,a,(1),(2),(3),从状态转换图构造有穷状态自动机,例如:从下面状态图构造DFA DFA D=(S,Z,A,B,a,b,M,S,Z) 其中M定义为:M(S,a)=A M(S,b)=B M(A,a)=Z M(A,b)=B M(B,a)=A M(B,b)=Z M(Z,a)=Z,a,b,S,A,B,a,b,Z,b,a,a,已知DFA为M =(S,S0,F),求相应的正规文法(右线性) G=(,S,S0,P)的方法: 1. 终结符号: VT=字母表 2. 开始符号:S=初始状态S0 3. 非终结符号:VN = S 4. 产生式:对任何a,A,BS,若有:(A,a)=B,则:当BF, 令AaB

3、;当 BF, Aa|aB;若S0F,增加S0 ,有穷自动机正规文法,2,例:有穷自动机为:,正规式NFA方法,X,Y,|,1,2,1,2,3,3,1,3,2,1,2,2,1,*,1,2,3.3 有穷自动机,示例,a(a|b)*,X,Y,a(a|b)*,X,Y,a,1,(a|b)*,X,Y,a,1,(a|b),2,X,Y,a,1,a,2,b,NFA M到正规式R,我们把状态转换图的概念拓广,令每条弧可用一个正规式作标记。第一步,在M的状态转换图上加进两个结,一个为x结点,一个为y结点,从x结点用弧连接到M的所有初态结点,从M的所有终态结点用连接到y结点。形成一个与M等价的M,M只有一个初态x和一

4、个终态y。,4,第二步,逐步消去M中的所有结点,直至只剩下x和y结点。在消结过程中,逐步用正规式来标记弧。其消结的规则如下:,正规文法转换成正规式,将每条产生式改写为正规式 用代入法解正规式方程组,最后只剩下一个开始符号定义的正规式,其中不含非终结符 正规文法到正规式的转换规则:,5,例:将文法GS转换成正规式G:Sa A|aAdA|d 先由产生式得: S=aA|a A=d*d 将A代入S中得: S=ad*d|a 利用正规式变换得 S=a(d*d|)=ad*说明:d*d| =(|d|dd|)d|=d|dd|= d* 所求正规式为ad*,将上的一个正规式r转换成文法G=(VN,VT,S,P) V

5、T=,首先形成产生式Sr,S为G的开始符 不断利用下面的规则做变换,直到每个产生式最多含有一个终结符为止,其中B为一新非终结符,正规式转换成正规文法,6,例: 将R=a(a|d)*转换成相应的正则文法 令转换成文法G=(VN,VT,P,S) 其中VT=a,d, 文法开始符为S 首先形成Sa(a|d)*,然后变换 SaA A(a|d)*,A(a|d)A A,AaA AdA,最终有产生式: SaA , A , AaA,AdA,例: L(M)如右图: 求正规式R,使L(R)=L(M).,解:,因此: L(R)= (a|b)(a|b)*,书本例题讲解,例2.5 例2.7 例2.15 例2.16 例2.

6、17 习题 2.1,2.5 2.6 2.8 2.9 2.10 2.13,1 构造与正规式(a|b|c)*a等价的DFA: 答:(1)与此正规式对应的NFA为,(2)状态转换矩阵为:,状态空间重新命名,得到的状态转换矩阵为:,(3)所以此等价的DFA为:开始状态为0 ,终态集为1 ,状态集是为0,1,2 ,输入字母表是a,b,c状态转换矩阵如上。,2 构造与正规式构造与正规式 (a|ba)*等价的DFA: 答:(1)与此正规式对应的NFA为,(2)状态转换矩阵为:,状态空间重新命名,得到的状态转换矩阵为:,(3)所以此等价的DFA为:开始状态为0 ,终态集是为0,1状态是为0,1,2,字母表为a

7、,b状态转换矩阵如上。,3 请写出该字母表0,1中,接受以0开头,以1结尾的字符串集合的正规表达式?并构造与之等价的DFA。构造等价的最小化的DFA。 答:(一)相应的正规式为0(0|1)*1(二) 与此正规式对应的NFA为,状态转换矩阵为:,状态空间重新命名,得到的状态转换矩阵为:,将其最小化,首先得到两个子集1,2,3和4 由于状态2和3在输入0都到达状态3,输入1都到达状态4,所以2和3等价。 所以子集为1,2,3,4。,所以最小DFA的初态为1,终态集为3,状态集为 1,2,3,字母表为a,b,状态转换矩阵如上。,4 写出在字母表a,b上,不是a开头,但以aa结尾的字符串集合的正规表达

8、式?并构造与之等价的DFA。构造等价的最小化的DFA。 答:(一)相应的正规式为b(a|b)*aa (二) 与此正规式对应的NFA为,状态转换矩阵为:,状态空间重新命名,得到的状态转换矩阵为:,将其最小化,首先划分状态1,2,3,4,5两个 状态由于状态2和状态4输入a后都达到状态3,输入b 后都达到4,所以状态2和状态4等价。,所以最小DFA的初态集是0,终态集为4, 状态集为1,2,3,4,字母表为a,b , 状态转换矩阵如上。,5: 将R=a(a|b)*转换成相应的正则文法 令转换成文法G=(VN,VT,P,S) 其中VT=a,b, 文法开始符为S 首先形成Sa(a|b)*,然后变换 SaA A(a|b)*,A(a|b)A A,AaA AbA,最终有产生式: SaA , A , AaA,AbA,6:将文法GS转换成正规式G:Sa A|aAbA|b 先由产生式得: S=aA|a A=b*b 将A代入S中得: S=ab*b|a 利用正规式变换得 S=a(b*b|)=ab*说明:d*d| =(|b|bb|)b|=b|bb|= b* 所求正规式为ab*,

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

当前位置:首页 > 企业管理 > 管理学资料

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


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

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

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