ch4 词法分析.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)
《ch4 词法分析.ppt》由会员分享,可在线阅读,更多相关《ch4 词法分析.ppt(86页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、词法分析程序的设计单词的描述工具单词的识别系统实现词法分析程序的自动构造第4章 词法分析4.1词法分析(lexical analysis)程序设计逐个读入源程序字符并按照构词规则切分成一系列单词。单词是语言中具有独立意义的最小单位,包括保留关键字、标识符、常量、运算符、标点符号、分界符等。词法分析是编译过程中的一个阶段,在语法分析前进行。也可和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。4.1.1词法分析程序和语法分析程序的关系源程序词法分析程序语法分析程序Tokenget token.4.1.2词法分析程序的主要任务及输出词法分析程序的主要任务及输
2、出读源程序,产生用二元组表示的单词符号读源程序,产生用二元组表示的单词符号(单词种类,单词自身的值单词种类,单词自身的值)。单词种类是语法分析需要的信息,单词自身的值是语义分析和代码生成阶段需要的信息。如 const i=25,yes=1;两个单词种类是常数,常数值分别为25,1.滤掉空格,跳过注释、换行符滤掉空格,跳过注释、换行符记录源程序的行号,以便出错处理程序准确记录源程序的行号,以便出错处理程序准确定位源程序的错误定位源程序的错误宏展开等宏展开等 词法分析程序的主要任务词法分析程序的主要任务读源程序,产生用二元组表示的单词符号读源程序,产生用二元组表示的单词符号(单词种别,单词自身的值
3、单词种别,单词自身的值)。对某些单词来说,不仅仅需要它的值,还需要其它信息以方便代码生成。如标识符还需要记载它的层次,类别如标识符还需要记载它的层次,类别(整形、实整形、实形、布尔等形、布尔等),这些属性都收集到一个符号表中。,这些属性都收集到一个符号表中。可以将此法分析输出的单词二元表示设计成可以将此法分析输出的单词二元表示设计成(标标识符识符,指向该标示符所在符号表中位置指针指向该标示符所在符号表中位置指针)。6界符和运算符界符和运算符:关键字可分成一类关键字可分成一类,也可以一个关键字,也可以一个关键字分成一类。分成一类。常数可统归一类常数可统归一类,也可按类型(整型、,也可按类型(整型
4、、实型、布尔型等),每个类型的常数实型、布尔型等),每个类型的常数划分成一类。划分成一类。所有的标识符分为一类。所有的标识符分为一类。词类编码原则词类编码原则:一字一码。一字一码。一类型一码。一类型一码。一类一码。一类一码。一字一码。一字一码。词法分析器的输出:词法分析器的输出:(词类编码,单词自身的属性值词类编码,单词自身的属性值)7 表表1 1 单词词类编码单词词类编码8对于关键字、界符、运算符来说,它们的词对于关键字、界符、运算符来说,它们的词类编码就可以表示其完整的信息,故对于这类编码就可以表示其完整的信息,故对于这类单词,其类单词,其单词自身的属性单词自身的属性值通常为空值通常为空对
5、于标识符,词类编码所反映的信息不够充对于标识符,词类编码所反映的信息不够充分,标识符的具体特性还要通过分,标识符的具体特性还要通过单词自身的单词自身的属性属性进行互相区分。标识符的单词自身的属进行互相区分。标识符的单词自身的属性常用其性常用其在符号表中的入口指针来表示在符号表中的入口指针来表示对于常数,对于常数,其其单词自身的属性单词自身的属性常用其在常常用其在常数表中的入口指针来表示数表中的入口指针来表示4.1.3词法分析工作分离的考虑词法分析工作分离的考虑 简化设计简化设计改进编译效率改进编译效率增加编译系统的可移植性增加编译系统的可移植性 10词法分析的设计形式词法分析的设计形式 (1
6、1)设计成一个独立程序,完成词法设计成一个独立程序,完成词法分析的任务,结果以文件的形式组织,分析的任务,结果以文件的形式组织,做为语法分析的输入做为语法分析的输入源程序源程序词法词法分析分析符号表符号表TOKENTOKEN字字错误信息错误信息11词法词法分析分析语法分析语法分析语义分析和语义分析和中间代码生成中间代码生成源源程程序序中中间间代代码码 符符 号号 表表 管管 理理 错错 误误 的的 诊诊 查查 处处 理理(2 2)作为语法分析和语义分析的子程序作为语法分析和语义分析的子程序用正规文法或者正则表达式描述单词符号的语法构成用正规文法或者正则表达式描述单词符号的语法构成 4.2.1
7、正规文法正规文法正规正规(3型型)文法文法G=(VN,VT,P,S),其中其中P中的产生式的形式中的产生式的形式为为A B或者或者A,其中,其中A和和B是非终结符号,是非终结符号,VT*。高级语言中几类单词的高级语言中几类单词的3型文法描述:型文法描述:标识符、无符号整数、运算符、标点符号、关键词、无符号标识符、无符号整数、运算符、标点符号、关键词、无符号实数等。教科书实数等。教科书p52。4.2 单词的描述工具单词的描述工具124.2.2 正规式正规式 正规式也称正则表达式,是描述单词的构成语法的有效工具,是定义正规集的数学工具。正规表达式(regular expression)是说明单词的
8、模式(pattern)的一种重要的表示法(记号),我们用以描述单词符号。程序设计语言的单词都能用正规式程序设计语言的单词都能用正规式 来定义来定义.正规式的递归定义正规式的递归定义4设字母表为,辅助字母表=,|,.,*,(,)。4(1)和都是上的正规式,表示的正规集分别为和;4(2)任何a,a是上的一个正规式,表示的正规集分别为a;4(3)假设e1和e2都是上的正规式,表示的正规集分别为L(e1)和L(e2),则(e1),e1|e2,e1.e2,e1*都是上的正规式,它们表示的正规集分别为L(e1),L(e1)L(e2),L(e1)L(e2),(L(e1)*;4(4)仅由有限次使用上述三步骤定
9、义的表达式才是上的正规式,仅有这些正规式表示的子集才是上的正规集。4*.|三个符号的优先级一次降低,都是左结合的4正规式等价:如果它们所表示的正规集相同4正规式服从的代数规律:或交换律或的可结合律连接的可结合律分配律或的抽取律存在连接的恒等元素教科书p53例1.=a,b,上的正规式和相应的正规集 a ab ab (ab)(ab)a (ab)(ab)(aabb)(ab)aa,babaa,ab,ba,bb,a,aa,任意个a的串 ,a,b,aa,ab,bb 所有由 a和b组成的串 上所有含有两个相继的a或两个相继的b组成的串 例例2.令令=l,d,则则 上的正规式上的正规式 r=l(l d)定义的
10、正规集为定义的正规集为:l,ll,ld,ldd,其中其中l代表字母代表字母,d代表数字代表数字,正规正规式式 即是即是 字母字母(字母字母|数字数字),它表示的正规集中的每个元它表示的正规集中的每个元素的模式是素的模式是“字母打头的字母数字串字母打头的字母数字串”,就是程序设计就是程序设计语言允许的标识符词法规则语言允许的标识符词法规则.例例3.=d,.,e,+,-,则则 上的正规式上的正规式 d(.dd )(e(+-)dd )表示的表示的是无符号数的集合。其中是无符号数的集合。其中d为为09的数字。的数字。4.2.3正规文法和正规式的等价性正规文法和正规式的等价性4一个正规语言可以由正规文法
11、定义,也可以由正规式定义,对于一个任一个正规式,存在一个生成同一个语言的正规文法;反之亦然。两者可以互相转换。4(1)正规式转换成正规文法p544(2)正规文法转换成正规式p54(1)正规式转换成正规文法将上的一个正规式r转换成文法G=(VN,VT,S,P)令令VT=,然后确定,然后确定P和和VN。选定一个非终结符选定一个非终结符S定为识别符号,生成规则定为识别符号,生成规则Sr;对于对于xy是正则式,定义一个规则是正则式,定义一个规则Axy,然后改写然后改写成:成:AxB,By,A,B VN对于对于x*y正则式,定义一个规则正则式,定义一个规则Ax*y,然后改写然后改写成:成:,AxB|y,
12、BxB|y,A,B VN对于对于x|y正则式,定义一个规则正则式,定义一个规则Ax|y,A,B VN例子例子:r=a(a|d)*对应的正规文法对应的正规文法SaA AaB|dB|BaB|dB|(2)正规文法转换成正规式正规文法转换成正规式将上的一个文法G=(VN,VT,S,P)转换成正规式r令令VT=S=r;对于对于AxB,By规则规则,定义一个正则式,定义一个正则式A=xy,对于对于AxA|y规则,定义规则,定义A=x*y正则式正则式对于规则对于规则Ax|y,定义定义A=x|y正则式正则式例子例子:对于文法对于文法GSSaA|a AaA|dA|a|d对应的的正则式为正则式为r=a(a|d)*
13、4.3有穷自动机有穷自动机 有穷自动机作为一种单词识别器,能准确地识别正规集,即识别正规式所表示的集合.应用有穷自动机这个理论,为词法分析程序的自动构造寻找有效的方法和工具。有穷自动机分为两类:确定的有穷自动机(Deterministic Finite Automata)和不确定的有 穷自动机(Nondeterministic Finite Automata)。关于有穷自动机有穷自动机我们将讨论如下题目确定的有穷自动机DFA不确定的有穷自动机NFANFA转换为DFADFA的最小化4.3.1确定的有穷自动机确定的有穷自动机DFADFA定义:一个确定的有穷自动机(DFA)M是一个五元组:M=(K,
14、f,S,Z)其中1.K是一个有穷状态的集,它的每个元素称为一个状态;2.是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号表;DFA定义:M=(K,f,S,Z)3.f是转换函数,是在KK上的映射,即,如 f(ki,a)=kj,(kiK,kjK)就意味着,当前状态为ki,输入符为a时,将转换为下一个状态kj,我们把kj称作ki的一个后继状态;4.SK是唯一的一个初态;5.Z K是一个终态集,终态也称可接受状态或结束状态。一个DFA 的例子: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)
15、=Qf(Q,a)=Qf(U,b)=Vf(Q,b)=Q DFA 的状态图表示bSUVQaaaba,bb若存在一条从初态结点到某一终态结点的道路,且这条路若存在一条从初态结点到某一终态结点的道路,且这条路径上所有弧的标记符号链接成的符号串等于径上所有弧的标记符号链接成的符号串等于t t被被DFADFA 接受接受,则称则称t t。若初态结点又是终态结点,则空字被。若初态结点又是终态结点,则空字被DFADFA 接受接受DFA 的矩阵表示的矩阵表示字符字符状态状态0001*上的符号串上的符号串t t被被DFADFA M M接受接受例例:证明证明t=baab被下图的被下图的DFA所接受所接受。f(S,ba
16、ab)=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属于终态。属于终态。得证。得证。bSUVQabba,baaDFA M所能接受的符号串的全体记为L(M).结论:上一个符号串集V是正规的,当且仅当存在一个上的确定有穷自动机M,使得V=L(M)。DFA的确定性表现在转换函数f:K K是单值函数DFA的行为很容易用程序来模拟.DFA M=(K,f,S,Z)的行为的模拟程序K:=S;c:=getchar;while ceof do K:=f(K,c);c:=getchar;if K is in Z th
17、en return(yes)else return(no)4.3.2 不确定有穷自动机不确定有穷自动机NFA定义NFA M=K,f,S,Z,其中K为状态的有穷非空集,为有穷输入字母表,f为K*到K的子集(2 K)的一种映射,SK是初始状态集,Z K为终止状态集.NFA不确定性表现在转换函数f:K*2 K是多值函数.例子 NFA M=(S,P,Z,0,1,f,S,P,Z)其中 f(S,0)=Pf(S,1)=S,Z f(P,1)=Zf(Z,0)=Pf(Z,1)=P状态图表示SPZ00,1111矩阵表示矩阵表示简化为具有转移的不确定的有穷自动机 在NFA中f为K*到K的子集(2 K)的一种映射 12
18、3abc有如下定理:对任何一个具有转移的不确定的有穷自动机NFA N,一定存在一个不具有转移的不确定的有穷自动机NFA,使得L(M)=L(N)。与上例等价的一个NFA.2acbb31acacbb123acb对对NFA M=K,f,S,Z 有如下定义有如下定义*上的符号串t在NFA M上运行.一个输入符号串t,(我们将它表示成Tt1的形式,其中T,t1*)在NFA M上运行运行的定义为:f(Q,Tt1)=f(f(Q,T),t1)其中QK.*上的符号串t被NFA M接受若t*,f(S0,t)=P,其中S0 S,P Z,则称t为NFA M所接受接受(识别识别)*上的符号串t被NFA M接受理解:对于
19、对于 中的任何一个串中的任何一个串t,若存在一条若存在一条从某从某一初态结到某一终态结的道路一初态结到某一终态结的道路,且,且这条道路上所有弧的标记字依序连接成这条道路上所有弧的标记字依序连接成的串的串(不理采那些标记为不理采那些标记为的弧的弧)等于等于t,则则称称t可为可为NFA M所识别所识别(读出或接受读出或接受)。若若M的某些结既是初态结又是终态结,的某些结既是初态结又是终态结,或者存在一条从某个初态结到某个终态或者存在一条从某个初态结到某个终态结的道路结的道路,其上所有弧的标记均为其上所有弧的标记均为,那,那么空字可为么空字可为M所接受。所接受。0001111010001110000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ch4 词法分析 词法 分析
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内