【教学课件】第四章词法分析.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(90页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1盛威网:专业的计算机学习网站第四章词法分析v第一节第一节 词法分析程序的设计词法分析程序的设计v第二节第二节 单词的描述工具单词的描述工具v第三节第三节 有穷自动机有穷自动机v第四节第四节 正规式和有穷自动机的等价性正规式和有穷自动机的等价性v第五节第五节 正规文法和有穷自动机的等价性正规文法和有穷自动机的等价性v第六节第六节 词法分析程序的自动构造工具词法分析程序的自动构造工具v第七节典型例题及解答第七节典型例题及解答2盛威网:专业的计算机学习网站知知识识结结构构3盛威网:专业的计算机学习网站词法分析词法分析自动构造工具自动构造工具正规集正规集正规式正规式有穷自动机(有穷自动机(NFA D
2、FA)正规文法正规文法知识结构4盛威网:专业的计算机学习网站第四章 词法分析4.1词法分析程序的设计源程序词法分析程序语法分析程序Tokenget token.v主要任务:读源程序,产生单词符号主要任务:读源程序,产生单词符号v其他任务:其他任务:滤掉空格,跳过注释、换行符滤掉空格,跳过注释、换行符追踪换行标志,复制出错源程序,追踪换行标志,复制出错源程序,宏展开,宏展开,5盛威网:专业的计算机学习网站一.词法分析程序与语法分析程序的接口方式v词法分析工作可以是独立的一遍,把字符流的源程序词法分析工作可以是独立的一遍,把字符流的源程序变为变为单词序列单词序列,输出在一个,输出在一个中间文件中间
3、文件上,这个文件作上,这个文件作为语法分析程序的为语法分析程序的输入输入而继续编译过程而继续编译过程6盛威网:专业的计算机学习网站v更通常情况,常将词法分析程序设计成一个更通常情况,常将词法分析程序设计成一个子程序子程序,每当语法分析程序需要一个单词时,则调用该子程序。每当语法分析程序需要一个单词时,则调用该子程序。词法分析程序每得到一次调用,便从源程序文件中读词法分析程序每得到一次调用,便从源程序文件中读入一些字符,直到识别出一个单词,或说直到下一单入一些字符,直到识别出一个单词,或说直到下一单词的第一个字符为止词的第一个字符为止7盛威网:专业的计算机学习网站二.词法分析程序的输出1.单词符
4、号一般可分为下列五种:单词符号一般可分为下列五种:v基本字(关键字):基本字(关键字):begin、end、if、while、varv标识符:常量名、变量名、过程名标识符:常量名、变量名、过程名v常数(量):常数(量):25、3.1415、true、“ABC”v运算符:、运算符:、*、=v界符:逗点、分号、括号界符:逗点、分号、括号8盛威网:专业的计算机学习网站2.输出表示:输出表示:v(单词种别,单词自身的值)(单词种别,单词自身的值)单词种别:语法分析需要的信息单词种别:语法分析需要的信息单词自身的值:编译其他阶段需要的信息单词自身的值:编译其他阶段需要的信息9盛威网:专业的计算机学习网站
5、v(标识符,指向该标识符所在符号表中位置的指针)(标识符,指向该标识符所在符号表中位置的指针)单词的种别可以用整数编码表示,假如标识符编码为单词的种别可以用整数编码表示,假如标识符编码为1,常数为,常数为2,关键字为,关键字为3,运算符为,运算符为4,界符为,界符为510盛威网:专业的计算机学习网站if i=5 then x:=y关键字关键字if(3,if)标识符标识符i(1,指向指向i的符号表入口)的符号表入口)等号等号(4,=)常数常数5(2,5)关键字关键字then(3,then )标识符标识符x(4,指向指向x的符号表入口)的符号表入口)赋值号赋值号:=(4,:=)标识符标识符y(1,
6、指向指向y的符号表入口的符号表入口)分号分号;(5,;)11盛威网:专业的计算机学习网站三.将词法分析工作分离的考虑1.使整个编译程序的结构更简洁、清晰和条理化:使整个编译程序的结构更简洁、清晰和条理化:2.编译程序的效率会改进:编译程序的效率会改进:3.增强编译程序的可移植性:增强编译程序的可移植性:12盛威网:专业的计算机学习网站4.2单词的描述工具一.正规文法v程序设计语言中的几类单词可用下述规则描述:程序设计语言中的几类单词可用下述规则描述:l|ll|d|l|dd|d+|-|*|/|=|=,|;|(|)|其中其中l表示表示az中的任何一个英文字母,中的任何一个英文字母,d表示表示09中
7、中的任何一个数字的任何一个数字13盛威网:专业的计算机学习网站v例例4.1:d|.e d|.e|d e|d|d|s d d|其中,其中,s表示正或负号表示正或负号(+,-)14盛威网:专业的计算机学习网站二.正规式v正规表达式(正规表达式(regular expression)是说明单词的是说明单词的pattern的一种重要的表示法(记号),是定义正规集的一种重要的表示法(记号),是定义正规集的工具的工具15盛威网:专业的计算机学习网站v定义(正规式和它所表示的正规集):定义(正规式和它所表示的正规集):设字母表为设字母表为,辅助字母表,辅助字母表=,和和 都是都是 上的正规式,它们所表示的正
8、规集分别为上的正规式,它们所表示的正规集分别为 和和 任何任何a ,a是是 上的一个正规式,它所表示的正规集上的一个正规式,它所表示的正规集为为a16盛威网:专业的计算机学习网站假定假定e1和和e2都是都是 上的正规式,它们所表示的正规集分别上的正规式,它们所表示的正规集分别为为L(e1)和和L(e2),那么,那么,(e1),e1 e2,e1 e2,e1 也都是正也都是正规规式式,它们所表示的正规集分别为它们所表示的正规集分别为L(e1),L(e1)L(e2),L(e1)L(e2)和和(L(e1)仅由有限词使用上述三步骤而定义的表达式才是仅由有限词使用上述三步骤而定义的表达式才是 上的上的正规
9、式,仅由这些正规式所表示的字集才是正规式,仅由这些正规式所表示的字集才是 上的正规上的正规集集17盛威网:专业的计算机学习网站其中的其中的“”读为读为“或或”(也有使用也有使用“+”代替代替“”的的););“”读为读为“连接连接”;“”读为读为“闭包闭包”(即,(即,任任意有限次的自重复连接)。在不致混淆时,括号可省去,意有限次的自重复连接)。在不致混淆时,括号可省去,但规定算符的优先顺序为但规定算符的优先顺序为“”、“”、“”、“”、“”。连接符。连接符“”一般可省略不写。一般可省略不写。“”、“”和和“”都是左结合的都是左结合的18盛威网:专业的计算机学习网站v例例4.2 令令=a,b,上
10、的正规式和相应的正规集的例子有:上的正规式和相应的正规集的例子有:正规式正规式 正规集正规集a aa b a,bab ab(a b)(a b)aa,ab,ba,bba ,a,a,任意个任意个a的串的串(a b),a,b,aa,ab 所有由所有由a和和b组成的串组成的串(a b)(aa bb)(a b)上所有含有两个相继的上所有含有两个相继的a或两或两个个相继的相继的b组成的串组成的串19盛威网:专业的计算机学习网站v例例4.3=d,e,+,-,则则 上的正规式上的正规式d(dd )(e(+-)dd )其中其中d为为09的数字的数字表示的是:表示的是:无符号数的集合无符号数的集合20盛威网:专业
11、的计算机学习网站v若两个正规式若两个正规式e1和和e2所表示的正规集相同所表示的正规集相同,则说则说e1和和e2等价等价,写写作作e1=e2例如:例如:e1=(a b),e2=b a又如:又如:e1=b(ab),e2=(ba)be1=(a b),e2=(a b)21盛威网:专业的计算机学习网站v设设r,s,t为正规式,正规式服从的代数规律有:为正规式,正规式服从的代数规律有:r s=s r“或或”服从交换律服从交换律r(s t)=(r s)t“或或”的可结合律的可结合律(rs)t=r(st)“连接连接”的可结合律的可结合律r(s t)=rs rt (s t)r=sr tr分配律分配律 r=rr
12、=r 是是“连接连接”的恒等元素(零一律)的恒等元素(零一律)r r=rr=r rr“或或”的抽取律的抽取律22盛威网:专业的计算机学习网站三.正规文法和正规式的等价性1.将将 上的一个正规式上的一个正规式r转换成文法转换成文法G=(VN,VT,P,S):令令VT,确定产生式和,确定产生式和VN的元素用如下办法的元素用如下办法:23盛威网:专业的计算机学习网站选择一个非终结符选择一个非终结符S生成产生式生成产生式Sr,并将并将S定为定为G的的识别符号。若识别符号。若x和和y都是正规式都是正规式,B VN,则:则:(R1)对形如对形如 Axy的的正规产生式正规产生式,重写为,重写为:AxB,By
13、 (R2)对形如对形如Ax*y的的正规产生式正规产生式,重写为:,重写为:AxB,Ay,BxB,By (R3)对形如对形如Ax y的的正规产生式正规产生式,重写为,重写为:Ax,Ay不断应用不断应用R做变换,直到每个产生式右端只含一个做变换,直到每个产生式右端只含一个VN24盛威网:专业的计算机学习网站例例4.4将将 r=a(a|d)*转换成相应的正规文法转换成相应的正规文法令令S是文法的开始符号,形成是文法的开始符号,形成Sa(a|d)*:R1 SaA A(a|d)*R2S aA A(a|d)B A B(a|d)B B R3 SaA A AaB AdB BaB BdB B 25盛威网:专业的
14、计算机学习网站2.将正规文法转换成正规式:将正规文法转换成正规式:基本上是上述过程的逆过程,最后只剩下一个开始符基本上是上述过程的逆过程,最后只剩下一个开始符号定义的正规式,其转换规则如表号定义的正规式,其转换规则如表4.1所示:所示:26盛威网:专业的计算机学习网站v例例4.5Gs:SaA Sa AaAAdA Aa Ad SaA|a AaA|a|dA|d(a|d)A|(a|d)(a|d)*(a|d)s=a(a|d)*(a|d)|a=a(a|d)*(a|d)|)=a(a|d)*|)r=a(a|d)*27盛威网:专业的计算机学习网站4.3有穷自动机一.确定的有穷自动机(DFA)(有限自动机)vD
15、FA:能准确地识别正规集能准确地识别正规集v一个确定的一个确定的DFA:M=(K,f,S,Z)K K是一个有穷集,它的每个元素称为一个状态是一个有穷集,它的每个元素称为一个状态是一个有穷字母表,它的每个元素称为一个输入符是一个有穷字母表,它的每个元素称为一个输入符号,所以也称号,所以也称为输入符号字母表为输入符号字母表28盛威网:专业的计算机学习网站f是转换函数,是在是转换函数,是在KK上的映射,即,如上的映射,即,如f(ki,a)=kj,(,(kiK,kjK)就意味着,当前状就意味着,当前状态为态为ki,输入符为输入符为a时,将转换为下一个状态时,将转换为下一个状态kj,我们我们把把kj称作
16、称作k ki的一个后继状态的一个后继状态SK是唯一的一个初态是唯一的一个初态Z K是一个终态集,终态也称可接受状态或结束状态是一个终态集,终态也称可接受状态或结束状态29盛威网:专业的计算机学习网站例例4.6:DFA M=(S,U,V,Q,a,b,f,S,Q)其中其中f定义为:定义为:f(S,a)=U f(V,a)=Uf(S,b)=Vf(v,b)=Qf(U,a)=Qf(Q,a)=Qf(U,b)=Vf(Q,b)=Q30盛威网:专业的计算机学习网站v一个一个DFA可以表示成一个可以表示成一个状态图状态图(状态转换图)(状态转换图)v假定假定DFAM含有含有m个状态,个状态,n个输入符号,那么这个个
17、输入符号,那么这个状态图含有状态图含有m个结点,每个结点最多有个结点,每个结点最多有n个弧射出,整个弧射出,整个图含有唯一一个初态结点个图含有唯一一个初态结点(、)和若干个终态结和若干个终态结点点(双圈、双圈、+),若,若f(ki,a)=kj,则从状态结点则从状态结点ki到状态结到状态结点点kj画标记为画标记为a的弧的弧31盛威网:专业的计算机学习网站图图4.1状态图表示状态图表示例例4.6中的中的DFA的状态图表示如图的状态图表示如图4.1所示:所示:32盛威网:专业的计算机学习网站v一个一个DFA可以表示成一个可以表示成一个矩阵表示矩阵表示,该矩阵的行表示状,该矩阵的行表示状态,列表示输入
18、符号,矩阵元素表示相应状态和输入符态,列表示输入符号,矩阵元素表示相应状态和输入符号将转换成的新状态,即号将转换成的新状态,即k行行a列为列为f(k,a)的值。用的值。用标明初态;否则第一行即是初态,相应终态行在表的右标明初态;否则第一行即是初态,相应终态行在表的右端标以端标以1,非终态标以,非终态标以033盛威网:专业的计算机学习网站图图4.2矩阵表示矩阵表示v例例4.5中的中的DFA的矩阵表示如图的矩阵表示如图4.2所示:所示:34盛威网:专业的计算机学习网站v若若t *,f(S,t)=P,其中其中S为为 M的开始状态,的开始状态,P Z,Z为终态集,则称为终态集,则称t为为DFA M所接
19、受所接受(识别)(识别)v设设QK,函数函数f(Q,)=Q,一个一个输输入符号串入符号串t(t1tx,t1,tx*),在),在DFAM上运行的定义为:上运行的定义为:f(Q,t1tx)=f(f(Q,t1),tx)35盛威网:专业的计算机学习网站v例如,证明例如,证明t=baab被例被例4.6的的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属于终态属于终态得证得证36盛威网:专业的计算机学习网站vDFA M所能接受的符所能接受的符号号串的全体记为串的全体记为L(
20、M)v结论:结论:上一个符上一个符号号串集串集V 是正规的,当且仅当存是正规的,当且仅当存在一个在一个 上的确定有穷自动机上的确定有穷自动机M,使得使得V=L(M)vDFA的确定性表现在转换函数的确定性表现在转换函数f:KK是一个单值是一个单值函数,也就是说函数,也就是说,对任何状态对任何状态kK和输入符号和输入符号a,f(k,a)唯一地确定了下一个状态唯一地确定了下一个状态37盛威网:专业的计算机学习网站二.不确定的有穷自动机NFAv一个一个NFA:M=(K,f,S,Z)K是一个有穷集,它的每个元素称为一个状态是一个有穷集,它的每个元素称为一个状态 是一个有穷字母表,它的每个元素称为一个输入
21、符号是一个有穷字母表,它的每个元素称为一个输入符号f是一个从是一个从K *到到K的子集的映像,即:的子集的映像,即:K*2 KS K是一个非空初态集是一个非空初态集Z K是一个终态集是一个终态集38盛威网:专业的计算机学习网站v例例4.7:一个:一个NFA M=(0,1,2,3,4,a,b,f,0,2,4)其中其中f(0,a)=0,3 f(2,b)=2f(0,b)=0,1 f(3,a)=4f(1,b)=2 f(4,a)=4f(2,a)=2 f(4,b)=4它的状态图表示如图它的状态图表示如图4.3所示:所示:39盛威网:专业的计算机学习网站40盛威网:专业的计算机学习网站v一个一个NFA也可以
22、用一个矩阵表示也可以用一个矩阵表示.v*上的符上的符号号串串t在在NFA N上运行上运行.v*上的符上的符号号串串t被被NFA N识别(读出、接受)识别(读出、接受).vDFA是是NFA的特例的特例v对每个对每个NFA N存在一个存在一个DFA,使得使得L(M)=L(N)v对于任何两个有穷自动机对于任何两个有穷自动机M和和N,如果如果L(M)=L(N),则称则称M与与N是等价的是等价的41盛威网:专业的计算机学习网站三.NFA转换为等价的DFAv定理:定理:设设L为一个由不确定的有穷自动机接受的集合,则为一个由不确定的有穷自动机接受的集合,则存在一个接受存在一个接受L的确定的有穷自动机的确定的
23、有穷自动机v将将NFA转换成接受同样语言的转换成接受同样语言的DFA,这种算法称为这种算法称为子集法子集法42盛威网:专业的计算机学习网站v定义对状态集合定义对状态集合I的几个有关运算:的几个有关运算:1.状态集合状态集合I的的-闭包,表示为闭包,表示为-closure(I),定义为一状态定义为一状态集,是状态集集,是状态集I中的任何状态中的任何状态S经任意条经任意条 弧而能到达的状弧而能到达的状态的集合。态的集合。状态集合状态集合I的任何状态的任何状态S都属于都属于-closure(I)2.状态集合状态集合I的的a弧转换,表示为弧转换,表示为move(I,a)定义为状态集合定义为状态集合J,
24、其中其中J是所有那些可从是所有那些可从I的某一状态经过一条的某一状态经过一条a弧而到达弧而到达的状态的全体的状态的全体43盛威网:专业的计算机学习网站v使用图4.4的NFAN的状态集合来理解上述两个运算:-closure(0)=0,1,2,4,7令令A=0,1,2,4,7,move(A,a)=3,8-closure(3,8)=1,2,3,4,6,7,8图图4.4NFAN44盛威网:专业的计算机学习网站v对于一个对于一个NFAN=(K,f,K0,Kt)来说,若来说,若I是是K的一个子集,设的一个子集,设Is1,s2,s sj,a是是中的一个元素,中的一个元素,则则move(I,a)=f(s1,a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第四 词法 分析
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内