第三章 词法分析器.ppt
《第三章 词法分析器.ppt》由会员分享,可在线阅读,更多相关《第三章 词法分析器.ppt(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、词法分析程序的设计原则,单词的描述技术,识别机制及词法分析程序的自动构造原理。第三章词法分析及其自动构造单词的描述工具单词的识别系统设计词法分析程序,实现词法分析程序的自动构造回顾回顾什麽是词法分析程序4实现词法分析(lexicalanalysis)的程序逐个读入源程序字符并按照构词规则切分成一系列单词。单词是语言中具有独立意义的最小单位,包括保留字、标识符、运算符、标点符号和常量等。词法分析是编译过程中的一个阶段,在语法分析前进行。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。词法分析程序和语法分析程序的关系源程序词法分析程序语法分析程序To
2、kengettoken.源程序词法分析程序语法分析程序源程序词法分析程序语法分析程序源程序词法分析程序的主要任务:读源程序,产生单词符号词法分析程序的其他任务:滤掉空格,跳过注释、换行符追踪换行标志,复制出错源程序,宏展开,词法分析工作从语法分析工作独立出来的原因:简化设计改进编译效率增加编译系统的可移植性单词的描述工具-正规表达式正规表达式单词的识别系统-有穷自动机有穷自动机设计词法分析程序,实现词法分析程序的自动构造令=a,b,上的正规式和相应的正规集的例子aabab(ab)(ab)a(ab)(ab)(aabb)(ab)正规式正规式也称正则表达式,是定义正规集的数学工具。正规表达式(reg
3、ularexpression)是说明单词的模式(pattern)的一种重要的表示法(记号),我们用以描述单词符号。令=a,b,上的正规式和相应的正规集的例子aabab(ab)(ab)a(ab)(ab)(aabb)(ab)aa,babaa,ab,ba,bb,a,aa,任意个a的串,a,b,aa,ab,bb所有由a和b组成的串上所有含有两个相继的a或两个相继的b组成的串讨论两个例子例3.1令=l,d,则上的正规式r=l(ld)定义的正规集为:l,ll,ld,ldd,其中l代表字母,d代表数字,正规式即是字母(字母|数字),它表示的正规集中的每个元素的模式是“字母打头的字母数字串”,就是Pascal
4、和多数程序设计语言允许的的标识符的词法规则.例3.2=d,e,+,-,则上的正规式d(dd)(e(+-)dd)表示的是无符号数的集合。其中d为09的数字。程序设计语言的单词都能用正规式程序设计语言的单词都能用正规式 来定义来定义.有穷自动机有穷自动机有穷自动机(也称有限自动机)作为一种识别装置,它能准确地识别正规集,即识别正规式所表示的集合.应用有穷自动机这个理论,为词法分析程序的自动构造寻找有效的方法和工具。有穷自动机分为两类:确定的有穷自动机(DeterministicFiniteAutomata)和不确定的有穷自动机(NondeterministicFiniteAutomata)。关于有
5、穷自动机有穷自动机我们将讨论如下题目确定的有穷自动机DFA不确定的有穷自动机NFANFA的确定化DFA的最小化确定的有穷自动机DFADFA定义:一个确定的有穷自动机(DFA)M是一个五元组:M=(K,f,S,Z)其中1.K是一个有穷集,它的每个元素称为一个状态;2.是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号表;DFA定义3.f是转换函数,是在KK上的映射,即,如 f(ki,a)=kj,(kiK,kjK)就意味着,当前状态为ki,输入符为a时,将转换为下一个状态kj,我们把kj称作ki的一个后继状态;4.SK是唯一的一个初态;5.ZK是一个终态集,终态也称可接受状态或结束
6、状态。一个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(U,a)=Qf(Q,a)=Qf(U,b)=Vf(Q,b)=QDFA的状态图表示bSUVQaaaba,bbDFA 的矩阵表示的矩阵表示字符字符状态状态0001*上的符号串上的符号串t t被被DFADFA M M接受接受例例:证明证明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属于终
7、态。属于终态。得证。得证。bSUVQabba,baaDFAM所能接受的符号串的全体记为L(M).结论:上一个符号串集V是正规的,当且仅当存在一个上的确定有穷自动机M,使得V=L(M)。DFA的行为很容易用程序来模拟.DFAM=(K,f,S,Z)的行为的模拟程序K:=S;c:=getchar;whileceofdoK:=f(K,c);c:=getchar;ifKisinZthenreturn(yes)elsereturn(no)DFA =digit,not digit不确定的有穷自动机NFA定义NFAM=K,f,S,Z,其中K为状态的有穷非空集,为有穷输入字母表,f为K*到K的子集(2K)的一种
8、映射,SK是初始状态集,ZK为终止状态集.例子NFAM=(S,P,Z,0,1,f,S,P,Z)其中f(S,0)=Pf(S,1)=S,Zf(P,1)=Zf(Z,0)=Pf(Z,1)=P状态图表示SPZ00,1111矩阵表示矩阵表示简化为具有转移的不确定的有穷自动机f为K*到K的子集(2K)的一种映射123abc有如下定理:对任何一个具有转移的不确定的有穷自动机NFAN,一定存在一个不具有转移的不确定的有穷自动机NFA,使得L(M)=L(N)。与上例等价的一个NFA.2acbb31acacbb类似DFA,对NFAM=K,f,S,Z也有如下定义*上的符号串t在NFAM上运行.一个输入符号串t,(我们
9、将它表示成Tt1的形式,其中T,t1*)在NFAM上运行运行的定义为:f(Q,Tt1)=f(f(Q,T),t1)其中QK.*上的符号串t被NFAM接受若t*,f(S0,t)=P,其中S0S,PZ,则称t为NFAM所接受接受(识别识别)*上的符号串t被NFA M接受也可以这样理解对于中的任何一个串t,若存在一条从某一初态结到某一终态结的道路,且这条道路上所有弧的标记字依序连接成的串(不理采那些标记为的弧)等于t,则称t可为NFAM所识别(读出或接受)。若M的某些结既是初态结又是终态结,或者存在一条从某个初态结到某个终态结的道路,其上所有弧的标记均为,那么空字可为M所接受。000111101000
10、11100000010001100NFAM所能接受的符号串的全体记为L(M)结论:上一个符号串集V是正规的,当且仅当存在一个上的不确定的有穷自动机M,使得V=L(M)。(0|1)*(000|111)(0|1)*确定有限自动机和不确定有限自动机确定有限自动机和不确定有限自动机DFA是NFA的特例.对每个NFAN一定存在一个DFA,使得L(M)=L(N)。对每个NFAN存在着与之等价的DFAM。有一种算法,将NFA转换成接受同样语言的DFA.这种算法称为子集法子集法.与某一与某一NFA等价的等价的DFA不唯一不唯一.NFA确定化算法:假设NFAN=(K,f,K0,Kt)按如下办法构造一个DFAM=
11、(S,d,S0,St),使得L(M)=L(N):1.M的状态集S由K K的一些子集的一些子集组成。用S1S2.Sj表示S的元素,其中S1,S2,.Sj是K的状态。并且约定,状态S1,S2,.Sj是按某种规则排列的,即对于子集S1,S2=S2,S1,来说,S的状态就是S1S2;2M和N的输入字母表是相同的,即是;3转换函数是这样定义的:d(S1S2,.Sj,a)=R1R2.Rt 其中R1,R2,.,Rt=-closure(move(S1,S2,.Sj,a)4S0=-closure(K0)为M的开始状态;5St=SiSk.Se,其中SiSk.SeS且Si,Sk,.SeKt定义对状态集合I的几个有关
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 词法分析器 第三 词法 分析器
限制150内