第4部分词法分析课件.ppt
《第4部分词法分析课件.ppt》由会员分享,可在线阅读,更多相关《第4部分词法分析课件.ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理编译原理第第4 4章章 词法分析词法分析词法分析程序的设计单词的描述工具有限自动机正规式和有穷自动机的等价性正规文法和有穷自动机间的转换词法分析程序的自动构造工具返回目录寇酣鄙炕绿胖荒靛帽泄传敬豁蔬喳瘁搏梢续陶导橇措踞喷鹃援泻害隙襄拘第4部分词法分析第4部分词法分析编译原理编译原理逐个读入逐个读入源程序字符并按照构词规则切分成一系列单词。4.1 4.1 词法分析程序的设计词法分析程序的设计词法分析(词法分析(lexical analysis)单词是语言中具有独立意义的最小单位,包括保留字、标识符、运算符、标点符号和常量等。词法分析是编译过程中的一个阶段,在语法分析前进行。也可以和语法分
2、析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。今谋藤哉路殿泞诚聋蛋壤硒幻鸿滴锨鸳肮怀著鸯监褒凸旨享却印持勇井傈第4部分词法分析第4部分词法分析编译原理编译原理词法分析程序词法分析程序源程序源程序词法分析程序词法分析程序语法分析程序语法分析程序Tokenget token.主要任务:读源程序,产生单词符号。滤掉空格,跳过注释、换行符。追踪换行标志,复制出错源程序。宏展开,其他任务:洛蕴帮阜妆届暴越绳叙它袖服躲稼轻坷富澈宫吃星营座手搪街晃猿虎市耘第4部分词法分析第4部分词法分析编译原理编译原理单词符号单词符号单词符号一般可分为下列五种:基本字基本字(关键字关键字
3、):begin,end,if,while,var等。标识符标识符:各种名称,如常量名、变量名、过程名等。常数常数(量):25,3.1415,TRUE,“ABC”等运算符运算符:如+-*/=等。界符界符:逗号,分号,括号等。容泪臆姑歪萎镀穴氨茬佣筋叉爵椎伦扇蟹思矗铰冗挟家敬滋帘媚回森毫垦第4部分词法分析第4部分词法分析编译原理编译原理输出表示输出表示(单词种别,单词自身的值单词种别,单词自身的值)。单词的种别可以用整数编码表示,假如标识符编码为1,常数为2,保留字为3,运算符为4,界符为5。如:程序段 if i=5 then x=y;在经词法分析器扫描后输出的单词符号和它们的表示如下:共逆琴垮菠
4、烙揉镑鲤拈果邓丈诈数牺砖邻芍砧泻燎晰乌倾倘汹还拨邪式钵第4部分词法分析第4部分词法分析编译原理编译原理程序段 if i=5 then x=y -保留字if(3,if)-标识符i(1,指向i的符号表入口)-等号=(4,=)-常数5(2,5)-保留字then(3,then)-标识符x(1,指向x的符号表入口)-赋值号=(4,=)-标识符 y(1,指向y的符号表入口)-分号;(5,;)迅燥秀汤看积答秽稽烃穷当消滇怨惕锭偏榆请陌寇祥顿奠诽萝弧寸别牵镰第4部分词法分析第4部分词法分析编译原理编译原理词法分析工作独立的原因词法分析工作独立的原因:简化设计 改进编译效率 增加编译系统的可移植性 坚柄戈鲤兹腐
5、浚混态径夕馆苗径釜塞乖缸衬摊针制眷屡亩碾学胃燎绿脸润第4部分词法分析第4部分词法分析编译原理编译原理单词的描述工具单词的描述工具 文法G=(VN,VT,P,S),P中每一产生式的形式都为:AaBAaB或AaAa,其中AVN,BVN,aVT。几类单词的描述几类单词的描述标识符标识符:标识符l|l字母数字字母数字l|d|l字母数字|d 字母数字4.2 4.2 正则表达式和正规集正则表达式和正规集正规文法正规文法磺埔蛊火澡蛀配她士柠豪睹斜浦伍囱嘎得慷颈莉魔士屠匡美溪喧钩抬唁钞第4部分词法分析第4部分词法分析编译原理编译原理无符号整数无符号整数:无符号整数d|d无符号整数运算符运算符:运算符+|-|*
6、|/|=|等号等号=界符界符:界符,|;|(|)|适捅强鞘至牌蝎涛恋辐魂同撇党募结厦赖钦桅攻渴徘淡梅邵虐殷疼绕菲辙第4部分词法分析第4部分词法分析编译原理编译原理无符号实数无符号实数:无符号实数 d 余留无符号数|.十进小数|e指数部分余留无符号数 d 余留无符号数|.十进小数|e指数部分|十进小数 d 余留十进小数余留十进小数 e指数部分|d 余留十进小数|指数部分 d 余留整指数|s整指数整指数 d 余留整指数余留整指数 d 余留整指数|其中s表示正或负号。如 25.55e+5 和 2.1榜人讼贼庐硕炕飘猖毯抒囤糜您章茵翠玲相窿界蹬密律餐匠诉谆刷织柞脂第4部分词法分析第4部分词法分析编译原
7、理编译原理正规式正规式(regular expression)(regular expression)正规式正规式正规式正规式和它所表示的和它所表示的正规集正规集设字母标为,辅助字母表=,。v 1。和都是上的正规式,它们所表示的正规集分别为和;v2。任何a,a是上的一个正规式,它所表示的正规集为a;v3。假定e1和e2都是上的正规式,它们所表示的正规集分别为L(e1)和L(e2),那么,(e1),e1e2,e1e2,e1也都是正规式,它们所表示的正规集分别为L(e1),L(e1)L(e2),L(e1)L(e2)和(L(e1)。伙脆洋灸沏征崎雕钵铀斑端铜族袒澳希崔碾潜贷升台网萤橱残蹿肃浙迂屎第4
8、部分词法分析第4部分词法分析编译原理编译原理v 4。仅由有限次使用上述三步骤而定义的表达式才是上的正规式,仅由这些正规式所表示的字集才是上的正规集。说明:说明:其中的“”读为“或”(也有使用“+”代替“”的);“”读为“连接”;“”读为“闭包”(即,任意有限次的自重复连接)。在不致混淆时,括号可省去,但规定算符的优先顺序为“”、“”、“”。连接符“”一般可省略不写。“”、“”和“”都是左结合的。讨匆释胶娩渐卑娃咖榆法技孕逐洋灰济划执呵雾亮鼎茄占柬蹋驰侯券南蕾第4部分词法分析第4部分词法分析编译原理编译原理例4.2 令=a,b,上的正规式和相应的正规集的例子有:正规式 正规集a aaba,bab
9、 ab(ab)(ab)aa,ab,ba,bba ,a,a,任意个a的串(ab),a,b,aa,ab 所有由a和b组成的串(ab)(aabb)(ab)上所有含有两个相继的a或两个相继的b组成的串理瓦迂顺贤幽牲凋蕴栽仆谢贿蝇全怨筐粤槛闪乾胺碘缀随攻求柄八看讨轻第4部分词法分析第4部分词法分析编译原理编译原理例 =l,d,r=l(l d)定义的正规集:l,ll,ld,ldd,,其中l代表字母,d代表数字,正规式,即是字母(字母|数字)*,它表示的正规集中的每个元素的模式是“字母打头的字母数字串”,就是Pascal和多数程序设计语言允许的的标识符的词法规则。例4.3 =d,.,e,+,-,则上的正规式
10、 d d (.dd(.dd )(e(+)(e(+-)dd)dd )表示的是无符号数的集合,其中d为09的数字。欺诅碴毗兄炙轮地素榴玉恃悬津湃桑爬艘坛棍贩涪宰蒙茧努靛秀胀吱拎缕第4部分词法分析第4部分词法分析编译原理编译原理两个正规式两个正规式等价等价若两个正规式e1和e2所表示的正规集相同,则说e1和e2等价,写作e1=e2。例如:e1=(ab),e2=ba又如:b(ab)=(ba)b(ab)=(ab)狰袁于游拘受蛇嵌明盆友屿劈贫汞醚享昌拭陪豫屋舶不益妊碘纳铂趋鞭撼第4部分词法分析第4部分词法分析编译原理编译原理正规式的运算律正规式的运算律设r,s,t为正规式,正规式服从的代数规律有:1。rs
11、=sr“或”服从交换律2。r(st)=(rs)t“或”的可结合律3。(rs)t=r(st)“连接”的可结合律4。r(st)=rsrt (st)r=srtr 分配律 5。r=r,r=r是“连接”的恒等元素6。rr=r r=rrr “或”的抽取律 爱杨勤偏筐绎头兔约疚泣咯驾赵馅矢兄慎几斯断祷燕隧慷扮艰嗓午涅耍借第4部分词法分析第4部分词法分析编译原理编译原理 对于对于 上的正规式上的正规式r,存在一个存在一个G=(VN,VT,P,S)使得使得L(G)=L(r),反之亦然。,反之亦然。1.1.将正规式转换成正规文法将正规式转换成正规文法 VT=,S VN,生成正规产生式 Sr正规文法到正规式正规文法
12、到正规式(1)对形如 Axy的正规产生式:AxB By BVN焚北软鞭签姬勋痕肢墩泅栅肇吨顽钳睹撤尚钢仿洞轮奋敏滓议逗漱梗晌诊第4部分词法分析第4部分词法分析编译原理编译原理(2)对形如Axy的正规产生式:AxB Ay BxB By BVN (3)对形如Axy的正规产生式:A x A y 不断应用上述规则做变换,直到每个产生式右不断应用上述规则做变换,直到每个产生式右端只含一个端只含一个VN。挺渝氖推泞满笨候史斩芹捣翌贼临播店辊讶耿栋换睛睁思而党脯辙意篷著第4部分词法分析第4部分词法分析编译原理编译原理例 r=a(ad)VT=a,d Sa(ad)Gs:SaA A VT=a,d AaBVN=S,
13、A,B AdB BaB BdB BSaAA(ad)A(ad)BAB(ad)BB规则一规则二陌酝阿咨载糠玩锹坑诧危慌割禽翰这量碳叔任砸屎盔砒荔色扩参已撼晾峰第4部分词法分析第4部分词法分析编译原理编译原理2.2.将正规文法转换成正规式将正规文法转换成正规式将正规文法转换成正规式将正规文法转换成正规式 S=aAa例Gs:SaA AaA AdA Sa Aa Ad A=aAdA a d =(ad)A(ad)=(ad)(ad)S=a(ad)(ad)a =a(ad)(ad)=a(ad)R=a(ad)(1)AxB,ByA=xy(2)AxA y A=x y(3)Ax yA=x y文法产生式文法产生式文法产生式
14、文法产生式正规式正规式正规式正规式枢腥奔诉宰辗劲赘惠古彭焕旱腊氯敝谨蠕椽蝇伏凤额瘩摹噪措佛客俄乙感第4部分词法分析第4部分词法分析编译原理编译原理4.34.3有穷自动机有穷自动机确定的有穷自动机(DFA)不确定的有穷自动机(NFA)NFA DFA 的转换DFA的化简怕铀篮挡为分人渡粗伤母略丸捷炸哼吾豁者粮忆薄勤根煎探隅缀恿梯招灌第4部分词法分析第4部分词法分析编译原理编译原理 DFA DFA定义定义定义定义:一个确定的有穷自动机(一个确定的有穷自动机(DFA)M是一个五元组:是一个五元组:M=(K,f,S,Z)其中)其中1 1。K K K K是一个有穷集,它的是一个有穷集,它的每个元素每个元素
15、每个元素每个元素称称为为为为一个一个状态状态状态状态;2 2。是是是是一个有穷字母表,它的每个元素称为一个输入一个有穷字母表,它的每个元素称为一个输入符号,所以也称符号,所以也称为为输入符号字母表输入符号字母表输入符号字母表输入符号字母表;3 3。f f f f是转换函数是转换函数是转换函数是转换函数,是在,是在KK上的映射,即,如上的映射,即,如 f(ki,a)=kj,(,(kiK,kjK)就意味着,当前状态就意味着,当前状态为为ki,输入符为,输入符为a时,将转换为下一个状态时,将转换为下一个状态kj,我们把,我们把kj称作称作kiki的一个后继状态;的一个后继状态;4。S S S SKK
16、是唯一是唯一是唯一是唯一的一个的一个初态初态初态初态;5 5。Z Z Z Z K是是是是一个一个终态集终态集终态集终态集,终态也称,终态也称可接受状态可接受状态或或结束状结束状态态。乙哮读檬磁汝柑汁排酱菌希刷载朱剂妹掸屑消购废荡采恐凑钉货伍巩刘戮第4部分词法分析第4部分词法分析编译原理编译原理DFA 例:DFA M=(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)=Q掣拣剪挤让知位酉障概绥肥哺激曹帕向吏拥葱候侦渤低隅给栓煽瞅惜苹伏第4部分词法分析第4部分词法分析编
17、译原理编译原理DFA DFA 的状态图表示的状态图表示f(S,a)=Uf(V,a)=Uf(S,b)=Vf(v,b)=Qf(U,a)=Qf(Q,a)=Qf(U,b)=Vf(Q,b)=QbSUVQaaaba,bb衍减隐清库殿心框达稻临射供肖隶拯它稚臃弱锻掐枕你闽皱刁欧渍书氛焕第4部分词法分析第4部分词法分析编译原理编译原理DFA DFA 的矩阵表示的矩阵表示f(S,a)=Uf(V,a)=Uf(S,b)=Vf(v,b)=Qf(U,a)=Qf(Q,a)=Qf(U,b)=Vf(Q,b)=Q字符状态0100伟碉历烛父耳陛稳偏埔炒鸯铃戮丘藤范龟梳挥诈聂拓防蟹抚伴拐嚼类眠荒第4部分词法分析第4部分词法分析编译
18、原理编译原理DFA的确定性表现在:的确定性表现在:转换函数转换函数f:KK是一个单值函数是一个单值函数,也就是说,对任何状态kK,和输入符号a,f(k,a)唯一地确定了下一个状态。从状态转换图来看从状态转换图来看,若字母表含有n个输入字符,那末任何一个状态结点最多有任何一个状态结点最多有n条条弧射出弧射出,而且每条弧以一个不同的输入字符标记。秩戏趁倍左睬捡译誉矾镰扎篇直圃镁该靳横锌瑚沾奠效熄性熟庙酿漱狂耸第4部分词法分析第4部分词法分析编译原理编译原理*上的符上的符号号串串t在在M上运行上运行一个输入符号串t,(我们将它表示成Tt1的形式,其中T,t1*)在DFA M上运行运行的定义为:f f
19、(Q Q,Tt1 Tt1)=f=f(f f(Q Q,T T),),t1t1)其中QK 扩充转换函数f,是K*K上的映射,且:f(Q,)=Q谆氛弱隘忿揖口稿效充眠瘩客杆懦姬挺磅步下讫芬橙昧氮蕴襟炭房董酥叁第4部分词法分析第4部分词法分析编译原理编译原理*上的符号串上的符号串 t t 被被 M M 接受接受对于*中的任何字符串t,若存在一条从初态结到某一终态结的道路,且这条路上所有弧的的标记符连接成的字符串等于t,则称t可为DFA M所接受,若M的初态结同时又是终态结,则空字可为M所接受接受(识别识别)。若t*,f(S,t)=P,其中S为DFA M的开始状态,P Z,Z为终态集。则称t为DFA M
20、所接受接受(识别识别)。旁雾例误孝渠塌筹努美赊乔纵晾慧被协颈心燥每糊犯夷褐的耳腕置彦徘浅第4部分词法分析第4部分词法分析编译原理编译原理例:证明例:证明t=baab被如下的被如下的DFA所接受。所接受。DFA M=(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)=QbSUVQaaaba,bb证明:证明: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
21、,b)=QQ属于终态。得证。属于终态。得证。疥抢瓤室讳断伦锡最际伙婉踞嚏递她砍肪询晚聊钝檀奄撇淀喊搜卞昨撒哭第4部分词法分析第4部分词法分析编译原理编译原理DFA M所能接受的符号串的全体记为L(M)结论:结论:上一个字符串集V是正规的,当且仅当存在一个上的确定有穷自动机M,使得V=L(M)。北椿捞娥迪蚌诗诞血氟尿痛眠憨俄酚孜怯痴藩苯淑蛾样丘逞淌当瘤湘乏示第4部分词法分析第4部分词法分析编译原理编译原理不确定的有穷自动机不确定的有穷自动机NFANFA定义定义N=K,f,S,Z,其中KK为状态为状态为状态为状态的有穷非空集集集集,为为为为有穷输入字母表字母表字母表字母表,f f为为为为K*到K的
22、子集的映像映像映像映像,S SK是是初始状态集初始状态集初始状态集初始状态集,Z Z K为终止状态集为终止状态集为终止状态集为终止状态集。由此定义可看出:由此定义可看出:DFA是是NFA的特例的特例DFA与与NFA的区别的区别:1)DFA的初态唯一初态唯一,NFA的初态不唯一初态不唯一。2)DFA的转换函数转换函数是单值单值,NFA的转换函数转换函数是多值多值。煌辕咆被元源俘便锌每袜性厩幢嗡狱陕骡裔馈响融镍咨舀泽屏芹赡犀抿氖第4部分词法分析第4部分词法分析编译原理编译原理例子例子NFA N=(S,P,Z,0,1,f,S,P,Z)其中 f(S,0)=Pf(S,1)=S,Zf(P,1)=Zf(Z,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 部分 词法 分析 课件
限制150内