41词法分析程序的设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《41词法分析程序的设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 41 词法 分析 程序 设计 课件
- 资源描述:
-
1、源程序词法分析程序语法分析程序Tokenget token.扫描器二.u单词符号一般可分为下列五种l基本字(关键字、保留字):具有特殊含义的标识符,不作他用,有分隔语法的作用。l标识符:表示各种名字,如常量名、变量名、过程名。l常数(量):包括整型、实型、布尔型、字符型常常量,如25、3.1415、true、“ABC”。l运算符:包括算术、逻辑、关系运算符,如:、*、=。l界符:包括.,;,(,),:,,等,有时也把运算符称作界符。u扫描器的输出表示l扫描器从初态出发,当识别一个单词后便进入终态,同时输出二元组形式的单词序列。l二元组:(单词种别,单词自身值或指针)l单词种别:语法分析需要的信
2、息,可以用整数编码表示,假如标识符编码为1,常数为2,关键字为3,运算符为4,界符为5。l单词自身的值或指针:编译其他阶段需要的信息。对于标识符,其值为指向该标识符所在符号表中位置的指针。例:if i=5 then x:=y,词法分析后输出的二元组形式的单词序列如下:l关键字if(3,if)l标识符i(1,指向i的符号表入口)l等号(4,=)l常数5(2,5)l关键字then(3,then )l标识符x(1,指向x的符号表入口)l赋值号:=(4,:=)l标识符y(1,指向y的符号表入口)l分号;(5,;)u使整个编译程序的结构更简洁、清晰和条理化;u编译程序的效率会改进;u增强编译程序的可移植
3、性。VN,aVT*VT*u程序设计语言中的几类单词可用下述规则描述ll|lll|d|l|dld|dl+|-|*|/|=|l=l,|;|(|)|其中l表示az中的任何一个英文字母,d表示09中的任何一个数字。u例:ld|.|el d|.|e|l d le|d|l d|sl d ld|其中,s表示正或负号(+,-)。即:s+|-判断:4+10e 和 4.2e+10 是否为有效的无符号数。u正规式,即正规/则表达式是描述单词符号的方便工具,也是定义正规集的工具。u递归定义(正规式和它所表示的正规集):l设字母表为,辅助字母表=,;l和都是上的正规式,所表示的正规集分别为:和;l任何a,a都是上的一个
4、正规式,它所表示的正规集为a;l假定e1和e2都是上的正规式,它们所表示的正规集分别为L(e1)和L(e2),那么,(e1),e1 e2,e1e2,e1也都是正规式,它们所表示的正规集分别为L(e1),L(e1)L(e2),L(e1)L(e2)和(L(e1);l仅由有限词使用上述三个步骤而定义的表达式才是上的正规式,仅由这些正规式所表示的字集才是上的正规集。注意:l“”读为“或”(可用“+”代替“”);l“”读为“连接”,连接符“”一般可省略不写;l“”读为“闭包”(即,任意有限次的自重复连接);l在不致混淆时,括号可省去,但规定算符的优先顺序为“”、“”、“”、“”、“”。l“”、“”和“”
5、都是左结合的。u例:令=a,b,上的正规式和相应的正规集为:正规式 正规集a aab a,bab ab(ab)(ab)aa,ab,ba,bba ,a,a,任意个a的串(ab),a,b,aa,ab 所有由a和b组成的串(ab)(aabb)(ab)上所有含有两个相继的a或两个相继的b组成的串说明:程序设计语言的单词都能用正规式来定义。例:=d,l,l表示字母,d数字,则上的正规式 e1=l(l|d)表示所有标识符集;e2=dd(?)表示无符号整数。u例:=d,e,+,-,则上的正规式ud(dd )(e(+-)dd)表示无符号数的集合。u(+-)d(dd )(e(+-)dd)表示的是有u符号数的集合
6、。其中,d为09的数字。u若两个正规式e1和e2所表示的正规集相同,则说e1和e2等价,写作e1=e2。u例如:l e1=(ab),e2=bal e1=b(ab),e2=(ba)ble1=(ab),e2=(ab)u设r,s,t为正规式,正规式服从的代数规律lrs=sr“或”服从交换律lr(st)=(rs)t“或”的可结合律l(rs)t=r(st)“连接”的可结合律lr(st)=rsrt (st)r=srtr分配律lr=r r=r 是“连接”的恒等元素(零一律)lrr=r r=rrr“或”的抽取律l注意:rssr r|(st)rs|rtu正规式和正规文法之间具有等价性,可相互转换。u例:DFA
7、M=(S,U,V,Q,a,b,f,S,Q)其中f定义为:lf(S,a)=U f(V,a)=Ul f(S,b)=V f(v,b)=Ql f(U,a)=Q f(Q,a)=Qlf(U,b)=V f(Q,b)=QNFADFANFA和和DFA的比较的比较NFAu对于任何两个有穷自动机M1 和M2,若L(M1)=L(M2),则称有穷自动机M1 和M2等价。u对于每个NFA M,必存在一个DFA N,使得L(M)=L(N)。u子集转换法中对状态集合I的几个有关运算lI的闭包表示为-closure(I),表示状态集I中任何状态A经任意条弧而能到达的状态集;l状态集合I的任何状态都属于-closure(I)。l
8、状态集I的a弧转换,表示为J=move(I,a),J是所有那些从I中某一个状态A经一条a弧而到达的后继状态全体;l对于一个NFAN=(K,f,K0,Kt)来说,若I是K的一个子集,设IS1,S2,.Sj,a是中的一个元素,则:move(I,a)=f(S1,a)f(S2,a)f(Sj,a)。l令记号Ia=-closure(J)=-closure(move(I,a)u子集构造算法假设NFA N=(K,f,K0,Kt)按如下办法构造一个DFA M=(S,d,S0,St),使得L(M)=L(N):l M的状态集S由K的一些子集组成。l用S1 S2.Sj表示S的元素,其中S1,S2,.Sj是K的状态。并
9、且约定,状态S1,S2,.Sj是按某种规则排列的,即对于子集S1,S2=S2,S1,来说,S的状态就是S1 S2;lM和N的输入字母表是相同的,即是;l转换函数定义为:D(S1 S2,.Sj,a)=R1R2.Ri,其中,R1,R2,.,Ri=-closure(move(S1,S2,.Sj,a)l S0=-closure(K0)为M的开始状态;l St=Sj Sk.Se,其中:Sj Sk.SeS且Sj,Sk,.Se Kt u构造NFA N的状态K的子集的算法,见图4.5:l 假定所构造的子集族为C,即C=(T1,T2,.Ti),其中T1,T2,.Ti为状态K的子集。u例:应用图4.5的算法对教材
10、图4.4的NFA N构造子集步骤如下:l 1.首先计算-closure(0):令T0=-closure(0)=0,1,2,4,7,T0未被标记,它现在是子集族C的唯一成员;l2.标记T0:令T1=-closure(move(T0,a)=1,2,3,4,6,7,8,将T1加入C中,T1未被标记;令T2=-closure(move(T0,b)=1,2,4,5,6,7,将T2加入C中,T2未被标记;l3.标记T1:-closure(move(T1,a)=1,2,3,4,6,7,8,即T1,T1已在C中;令T3=-closure(move(T1,b)=1,2,4,5,6,7,9,将T3加入C中,T3未
展开阅读全文