《编译原理实践及应用》第3章词法分析幻灯片课件.ppt

《编译原理实践及应用》第3章词法分析幻灯片课件.ppt

  1. 1、本文档共100页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《编译原理实践及应用》第3章词法分析;词法分析程序所处的位置:;3.1 词法分析器的功能;单词:是语言中具有独立意义的最小单位,常用单词分类: 保留字:具有固定意义的标识符 运算符 界符 标识符:表示各种名字 常数 对于一个程序设计语言,保留字、运算符和界符都是确定的,可以给以固定的编号(种别码)。 标识符是根据构词规则定义的,常数是符合定义的各种类型的常数;;某语言单词的种别码定义举例;词法分析器的输出;{this is a sample program writing in simple language} program example1; {used for illustrating compiling process} var a,b,c:integer; x:char; begin if (a+c*3 b) and (b3) then c:=3; end.;2. 符号表 各种常数和标识符一般放在符号表中,在输出的token文件中的单词属性值则存放单词在符号表中的指针 符号表的格式:字符串 if (ab2) test:=3;;{this is a sample program writing in simple language} program example1; {used for illustrating compiling process} var a,b,c:integer; x:char; begin if (a+c*3 b) and (b3) then c:=3; End.;;错误处理;词法错误类型;;3.2 词法分析程序的设计;词法分析程序的接口;;;;识别单词;单词的构成规则用状态转换图表示;一个状态图可用于识别一定的字符串,大多数程序设计语言的单词符号都可以用转换图来识别。;写成C语言的函数形式: recog_id() { … char state = 0; ch = getch(); do { switch(state){ Case 0: if ch 是字母 state = 1; ch = getch();break; Case 1: if ch 是字母或数字 { state = 1; ch = getch(); } else state = 2; break; } } while (state != 2); 回退一个符号。 };;练 习 1;;练 习 2;练 习 3;状态转换图的实现:使用一个switch case 语句:每条分支对应一个case语句段 见书P45 例;词法分析器的自动生成;3.3 正规文法、正规式与有限自动机;;一、正规文法;;二、正规式;正规式和正规集的递归定义:(设字母表为?) 1、 ?和?都是?上的正规式,表示{?}和{ }; 2 、任何a? ?,则a是正规式,表示{a}; 3 、假定r和s都是?上的正规式,分别表示语言 L(r)和L(s): a) (r) | (s)是正规式,表示L (r) U L (s) ; b) (r)(s)是正规式,???示L (r)L (s); c) (r)*是正规式,表示(L (r) )*; d) (r)是正规式,表示L (r); 4、有限次使用上述三步骤而定义的表达式才是?上的正规式,仅由这些正规式所表示的集合才是?上的正规集。;;例1:令?={a,b}, ?上的正规式和相应的正规集有:;程序设计语言的单词都能用正规式来定义. 例2:令?={l,d},l 代表字母,d 代表数字,则?上的正规式: r = l(l?d)? 定义的正规集为: {l,ll,ld,lll,ldd,……},就是Pascal和 多数程序设计语言允许的的标识符的词法规则。;练 习;思考题: ?={d,. },则?上表示无符号数的正规式是什么?(不考虑含e的科学计数法,其中d为0~9的数字) 如:2 ,12.59 ,471.88等都是该集合中的元素。 ;正规式的等价;三、有穷自动机;确定的有穷自动机DFA;例3:有DFA M =({0,1,2,3},{a,b}, δ,0,{3}) δ为:;一个DFA可以表示成一个状态图(或称状态转换图)。假定DFA M含有m个状态,n个输入字符,那么这个状态图含有m个结点,每个结点最多有n个弧射出,整个图含有唯一一个初态结点和若干个(可以是0个)终态结点,初态结点冠以双箭头“=” ,终态结点用双圈表示,若 δ (ki,a) =kj,则从状态结

文档评论(0)

138****2623 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档