编译原理 第二章词法分析优秀课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《编译原理 第二章词法分析优秀课件.ppt》由会员分享,可在线阅读,更多相关《编译原理 第二章词法分析优秀课件.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理编译原理 第二章词法分析第二章词法分析第1页,本讲稿共44页这不是一个这不是一个DFA。如果不使用系统化的方法将所有。如果不使用系统化的方法将所有的记号都合并为一个巨大的的记号都合并为一个巨大的DFA,将非常复杂。,将非常复杂。13letterletter,digit2other5digitdigit4other76=910 S的子集的子集4.S0 S 初始状态初始状态 5.A S 接受状态集合接受状态集合第4页,本讲稿共44页NFA 类似于类似于 DFA,除了,除了扩展扩展 包括包括 NFA 可以包含可以包含-转换转换无需考虑输入串就无需考虑输入串就有可能发生的转换有可能发生的转换1
2、2扩展扩展T的定义的定义每一个字符都可以导致多个状态。因此每一个字符都可以导致多个状态。因此T的值是的值是状态的一个集合而不是单独的状态状态的一个集合而不是单独的状态第5页,本讲稿共44页例例 NFA M=NFA M=(SS,P P,Z,0Z,0,1,f,S,Z1,f,S,Z)其中其中 f f(S S,0 0)=P =P f f(S S,1 1)=S=S,ZZ f f(Z Z,0 0)=P=P f f(Z Z,1 1)=P=P f f(P P,1 1)=Z=Z矩阵表示矩阵表示:01SPS,ZPZZPP001状态图表示状态图表示:SPZ00,1111Z第6页,本讲稿共44页L(M):由自动机由自
3、动机 M 所接受(识别)的语所接受(识别)的语言言L(M):is the set of strings of character字符字符c1c2cn,每一个,每一个ci 都都属于属于,且存在关系:且存在关系:s1 在在T(S0,c1)中中,s2在在T(S1,c2)中中,Sn 在在T(Sn-1,cn)中,中,s0 是初始状态,是初始状态,Sn 是是A的元素的元素c1c2cn 中的任一中的任一 ci 都可能是都可能是真正被接受的串是删除了真正被接受的串是删除了的串的串 c1c2cn第7页,本讲稿共44页非确定性非确定性接受特定串的转换序列并不由状态和下接受特定串的转换序列并不由状态和下一个输入字符
4、在每一步确定下来一个输入字符在每一步确定下来第8页,本讲稿共44页例如例如1234aab下面两个转换序列都可接受串下面两个转换序列都可接受串“abb”:12424abb134242ab4b第9页,本讲稿共44页2.3.3 用代码实现有穷自动机用代码实现有穷自动机构建扫描程序(词法分析程序)的过程构建扫描程序(词法分析程序)的过程:正则表达式正则表达式DFA扫描程序扫描程序正则表达式表示一种模式,用来描述记号正则表达式表示一种模式,用来描述记号DFAs 表示按照正则表达式描述的模式接受符号串表示按照正则表达式描述的模式接受符号串的算法的算法第10页,本讲稿共44页从正则表达式到从正则表达式到DF
5、A(2.4节节)有穷自动机构造词法分析程序有穷自动机构造词法分析程序第11页,本讲稿共44页1 用代码实现用代码实现 DFA用代码实现用代码实现DFA的一般算法的一般算法用一个变量保持当前的状态用一个变量保持当前的状态将转换写成一个双层嵌套的将转换写成一个双层嵌套的case语句而语句而不是一个循环不是一个循环第一个第一个case语句测试当前的状态语句测试当前的状态嵌套着的第嵌套着的第2层测试输入字符及所给的状层测试输入字符及所给的状态态第12页,本讲稿共44页state:=1;startwhile state=1 or 2 docase state of1:case input charact
6、er of letter:advance the input;state:=2;else state:=error or other;end case例如例如:接受标识符的接受标识符的DFA13letterletterdigit2other第13页,本讲稿共44页2:case input character of letter,digit:advance the input;state:=2;else state:=3;end case;end case;end while;if state=3 then accept else error;13letterletterdigit2other第
7、14页,本讲稿共44页2 用代码实现用代码实现DFA的状态转换表的状态转换表使用转换表,可以用代码实现任一使用转换表,可以用代码实现任一DFA第15页,本讲稿共44页代码图解中用到的变量代码图解中用到的变量转换被保存在一个转换数组转换被保存在一个转换数组“T”中,中,T由由状态和输入字符索引;状态和输入字符索引;先行输入的转换是由布尔数组先行输入的转换是由布尔数组“Advance”给出给出,它们也由状态和输入字符索引;它们也由状态和输入字符索引;由布尔数组由布尔数组“Accept”给出的接受状态由给出的接受状态由状态索引状态索引第16页,本讲稿共44页代码图解代码图解 state:=1;ch:
8、=next input character;while not Acceptstate and not error(state)donewstate:=Tstate,ch;if Advancestate,ch then ch:=next input char;state:=newstate;end while;if Acceptstate then accept;第17页,本讲稿共44页表驱动的优点表驱动的优点代码的长度缩短了代码的长度缩短了相同的代码可以解决许多不同的问题相同的代码可以解决许多不同的问题代码较易改变(维护)代码较易改变(维护)缺点缺点表格会变得非常大,使得程序要求使用的表格会
9、变得非常大,使得程序要求使用的空间也变得非常大空间也变得非常大第18页,本讲稿共44页3 代码的动作代码的动作进行转换时发生的典型动作是:将字符进行转换时发生的典型动作是:将字符从输入串中移到属于单个记号累积字符从输入串中移到属于单个记号累积字符的字符串中的字符串中在达到某个接受状态时的典型动作是:在达到某个接受状态时的典型动作是:将刚被识别的记号及相关属性返回将刚被识别的记号及相关属性返回遇到出错状态的典型动作是:在输入中遇到出错状态的典型动作是:在输入中备份(回溯)或生成错误记号备份(回溯)或生成错误记号第19页,本讲稿共44页2.4 从正则表达式到从正则表达式到 DFAs正则表达式与正则
10、表达式与 DFA的等价性的等价性从正则表达式到从正则表达式到DFA从正则表达式到从正则表达式到 NFA(2.4.1)从从 NFA 到到 DFA(2.4.2)DFA的最小化的最小化(2.4.3)第20页,本讲稿共44页2.4.1 从正则表达式到从正则表达式到 NFA“语法制导语法制导”法法:按正则表达式的语法结构指引构造过程按正则表达式的语法结构指引构造过程 第21页,本讲稿共44页正则表达正则表达式构造式构造NFANFA的基本语法结构的构的基本语法结构的构造规则造规则2对于正则表达式对于正则表达式 ,构造的构造的NFA为为:3对于正则表达式对于正则表达式a,a ,构造的,构造的NFA为为1对于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理 第二章词法分析优秀课件 编译 原理 第二 词法 分析 优秀 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内