网站大量收购独家精品文档,联系QQ:2885784924

第2章词法分析综述.ppt

  1. 1、本文档共74页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 词法分析;本章重点;词法分析程序; 词法分析是编译过程中的一个阶段,在语法分析前进行。可以作为一个独立的子程序。 优势表现为: 简化设计 改进编译效率 增加编译系统的可移植性 可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。;单词符号;词法分析器的输出:Token串;单词类别有多种编码方式: 标识符一般统一为一种:一个编号 常数按类型分别编码:整数、实数、布尔、字符 关键字一般一字一种 运算符一般一符一种 界符一般一符一种 各种常数和标识符一般放在一个符号表中,在输出的token文件中的单词属性值则存放单词在符号表中的指针;例子;识别各种单词符号;扫描程序的设计-预处理;扫描缓冲区;单词的构成规则用状态转换图表示;S ;示例语言的单词符号;示例语言各类单词的状态图;示例语言单词符号的状态图;示例语言词法分析程序的算法;非=、<、>、/等与双分界符首字符不同的单分界字符:输出相应单词记号及单分界符。 /:读下一个。若不是,输出/的类码;若是*,进行注释处理。词法分析不输出“/*”,并要跳过整个注释内容直到遇到“*/”为止,然后返回开始状态,继续识别下一个单词符号。 非法字符:如果读进的字符不属于上面任意情况,则说明词法分析程序从源程序读入了一个不合法的字符,进行错误处理,报告错误信息,跳过这个字符,然后转入开始状态,继续识别下一个单词符号。 ;词法分析;正规表达式与有限自动机;字母表和符号串的基本概念;字母表和符号串的基本概念(续);符号串的运算;方幂:x的n次方幂即将n个x连接。 x0 = ε, x1 = x, x2 = xx,… xn=xx…x=xx n-1=x n-1 x 乘积:令A、B为两个符号串集合,A和B的乘积AB定义为:AB = {xy | x?A且y ?B} {ε}A=A {ε}=A ΦA= AΦ =Φ 方幂:A的n次方幂就是将n个A相乘。 A0={ε} A1=A A2=AA … An=AA…A=AA n-1 =A n-1 A ;符号串集合的运算;定义(正规式和正规集);例:令?={a,b}, ?上的正规式和相应的正规集有:;程序设计语言的单词都能用正规式来定义。 例:令?={l,d},则?上的正规式: r=l(l ?d)? 定义的正规集为: {l,ll,ld,lll,ldd,……},就是标识符的词法规则。其中l代表字母,d代表数字, 正规式 :字母(字母|数字) ? ,它表示每个元素的模式是“字母打头的字母数字串”, 例:令?={d,? ,e,+,-},则?上的正规式: d*(.dd*| ?)(e(+|-|?)dd*|?)表示的是无符号数。 其中d为0~9中的数字。 比如:2,12.59,3.6e2,471.88e-1等都是正规式表示集合中的元素。;正规式的等价;有限自动机;DFA的定义;DFA映射的表示;例:有DFA M =({0,1,2,3},{a,b}, δ,0,{3}) δ为:;状态转换图:假定DFA M含有m个状态,n个输入字符,那么这个状态图含有m个结点,每个结点最多有n个弧射出,整个图含有唯一一个初态结点和若干个终态结点,初态结点冠以双箭头“=” ,终态结点用双圈表示,若 δ (ki,a) =kj,则从状态结点ki到状态结点kj画标记为a的弧。;DFA的确定性表现在: 对任何状态s ∈S,在读入了输入符号a ∈ Σ 之后,能够唯一地确定下一个状态。 从状态转换图来看,若字母表Σ含有n个输入字符,那末任何一个状态结点最多有n条弧射出,而且每条弧以一个不同的输入字符标记。;DFA识别的字;;能接受偶数个0和偶数个1组成的串的有穷自动机。;NFA的定义;NFA映射的表示; 矩阵表示;状态转换图;NFA识别的字;;DFA 与NFA的区别: DFA是NFA的特例。 对每个NFA N存在着与之等价的DFA M。;解决的问题: 1. 初态集 2. 输入字 3. ε弧 4. 转换的目标状态集;NFA的确定化;例:(a|b)*(aa|bb)(a|b)*; 3.定义I的ε-闭包ε-closure(I), 任何状态q ∈ I,则q ∈ ε-closure(I); 任何状态q ∈ I,则q经任意条 ε 弧而能到达的状态的q’ ∈ ε-closure(I) 。 例:I={1}, ?-closure(I)={1,2}; I={5}, ?-closure(I)={5,6,2};; I={1,2}, J = {5, 4,3} ; Ia= ?-cl

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档