编译第4章教材.ppt

  1. 1、本文档共110页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
词法分析是编译的第一个阶段,在单词的级 别上分析和翻译源程序。 主要任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词序列。 其他任务: 滤掉源程序中的注释和空白 记录新读入的字符行的行号,以便行号与出错信息相连 在支持宏处理功能的源语言中,可以由其完成预处理:宏展开。 ; 4.1.1 词法分析程序与语法分析程序的接口方式;2.把词法分析工作作为子程序;4.1.2 词法分析程序的输出; (1)关键字:if、for、while (2)标识符:用来表示各种名字, 如常量名、变量名和过程名等。 (3) 常数:100、3.14159、TRUE、’sample’ (4) 运算符:+,*,= (5)分界符:, ; ( );三.输出表示-----单词的内部形式 ;4.2 单词的描述工具;4.2.1 正规文法;不属于三型文法;4.2.1 正规文法;例4.1 描述无符号数的正规文法: 无符号数 d余留无符号数|.十进小数|e指数部分 余留无符号数  d余留无符号数 |.十进小数|e指数部分| ? 十进小数  d余留十进小数 余留十进小数  e指数部分|d余留十进小数|? 指数部分  d余留整指数|s整指数 整指数  d余留整指数 余留整指数  d余留整指数|?   其中,s表示正或负号(+,-);4.2.2 正规式(regular expression);例题 设Σ={a,b,c},则aa*bb*cc*是∑上的一个正规式,它所表示的正规集:;练习;2.请描述下面正规式定义的串. ∑= {0,1}。 a) 0*(100*)*0* b) (0|1)*(00|11)(0|1)* c) 1(0|1)*0 ;两正规式等价? 两正规式表示的正规集相同; (ab)*与a*b* (ab)*对应的正规集是以任意个ab对出现的,即ababab…;而a*b*对应的正规集则是先出现任意个a后接任意个b,即a…ab…b;因此两者不等价。 ;(a∣b)*与(a*b*)* a、b可任意交替出现 (a*b*)*=({?,a,aa,aaa,…}{?,b,bb,bbb…})* =({?,a,b,aa,ab,bb,abb,abbb,aab,aabb,aaabbb…})* ;四.正规式的性质;程序设计语言中的单词可以使用 正规式 正规文法 标识符 字母(字母|数字)* 〈标识符〉→l|l〈字母数字〉 〈???母数字〉→l|d|l〈字母数字〉|d〈字母数字〉 无符号整数 数字(数字)* 〈无符号整数〉→d|d〈无符号整数〉;4.2.3 正规文法和正规式的等价性;4.2.3 正规文法和正规式的等价性;步骤1 构造 S→r 步骤2 不断利用下表的规则做变换,直到每个产生式最多含有一个终结符为止 ;*;三、正规文法?正规式;例 将文法G[S]转换成正规式 G:S→aA|a A→dA|d 先由产生式得: S=aA|a A=d*d 将A代入S中得: S=ad*d|a 利用正规式变换得 S=a(d*d|ε)=ad* 说明:d*d|ε=(ε|d|dd|…)d|ε =d|dd|…|ε= d* 所求正规式为ad* ;G?r;r?G;词法分析程序的输入是什么?输出是什么?以什么形式输出?完成什么功能? 词法分析程序与语法分析程序的接口方式有哪两种? 程序设计语言中的单词的描述工具有? 什么是正规式?什么是正规集? 正规式、正规文法、正规集的关系。 题型1:给定正规式,写正规集。 题型2:给定正规集,写正规式。 题型3:判断两个正规式等价 题型4:正规式?正规文法 题型5:正规文法?正规式 ;4.3 有穷自动机(FA);有穷自动机(FA);有穷自动机分为两类: 确定的有穷自动机(DFA) (Deterministic Finite Automata) 不确定的有穷自动机(NFA) (Nondeterministic Finite Automata) ; 确定的有穷自动机是一个五元组M=(K,?,f,S,Z),其中: K:有穷状态集 ?:有穷字母表 f:K???K上的单值映射,f(s,a)=s’ S:唯一的初态,S∈K Z:终止状态集,Z?K ;二.DFA的两种表示方式;例4.6 DFA M=({S,U,V,Q},{a,b},f,S,{Q})  其中f定义为: f(S,a)=U f(V,a)=U f(S,b)=V f(V,b)=Q f(U,a)=Q f(Q,a)=Q f(U,b)=V f(Q,b)=Q; 状态转换图;状态转换矩阵;总结;练习;对于∑*中的任何符号串t,若存在一条从初态

文档评论(0)

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

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

1亿VIP精品文档

相关文档