编译原理清华大学第4章词法分析详解.ppt

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【课前思考】 1 C语言,PASCAL语言的程序是由什么组成的? 2 C语言,PASCAL语言的标识符(变量)和数的表示分别有什么规定? 3 词法分析是什么? 词法分析程序的功能是什么? 4 编写一个程序(采用C或PASCAL语言)识别C语言的标识符。 5 PL/0词法分析程序识别哪几种单词?;【学习目标】 1 明确词法分析在编译过程所处的阶段和作用。 2 理解通常的单词分类和构词规则。 3 掌握词法分析程序的手工实现方法。 4 学会使用单词的描述和识别工具-----------正则表达式和自动机。 5 掌握词法分析程序的自动构造原理。;【学习指南】 词法分析程序是编译程序的一个构成成分,它的主要任务是扫描源程序,按构词规则识别单词,并报告发现的词法错误。词法分析也是语法分析的一部分,把词法分析从语法分析中独立出来是为了使编译程序结构清晰,也是为了便于使用自动构造工具,提高编译效率。   本章首先介绍词法分析程序的功能和设计原则,然后引入正规式和其对单词的描述,接着讲述有穷自动机理论,最后给出词法分析程序的自动构造原理。 7 如何确定一个输入符号串是否是所给文法的句子?;第4章 词法分析;本章重点;词法分析程序; 词法分析是编译过程中的第一个阶段,在语法分析前进行 。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。; 词法分析工作从语法分析工作独立出来的原因: ;§ 4.1 对于词法分析器的要求; 一个程序语言的关键字、运算符、界限符都是固定的,即数量有限及意义明确;而对于标识符和常数通常是不确定的。; 如果一个种别只含一个单词符号,那么,对于这个单词符号,种别编码就完全代表它自身了。若一个种别含有多个单词符号,那么,对于它的每个单词符号,除了给出种别编码之外,还应给出有关单词符号的属性信息。; 在教材中,我们假定关键字、运算符和界限符都是一符一种。对于它们,词法分析器只给出其种别编码,不给出它自身的值。标识符单列一种。常数按类型分种。;4.1.2词法分析器??设计;某些跳格符、回车符和换行符等编辑性字符,在别处的任何出现都没有意义,预处理时可以将其剔掉。;二、 单词符号的识别:超前有哪些信誉好的足球投注网站;三、 状态转换图; 一个状态转换图可用于识别(或接受)一定的字符串。;图4.2(c)识别整数的转换图;§4.2 正规表达式与正规集(正规语言);正规式; ?和?都是?上的正规式,它们所表示的正规集分别为{?}和{ }; 对任何a? ?,a是?上的一个正规式,它所表示的正规集为{a};;注意:;例子;正规式 正规集 (a?b)? {? ,a,b,aa,ab ……所有由a 和b组成的串};讨论下面两个例子;正规式的等价性;设U,V,W为正规式,正规式服从的代数规律有:;§4.3 有穷自动机;关于有穷自动机讨论如下内容:;1. K是一个有穷状态集,它的每个元素称为一个状态;;二、一个DFA 的例子:; 显然,一个DFA可用一个矩阵表示,该矩阵的行表示状态,列表示输入字符,即k行a列的 矩阵元素表示f(k,a)的值。这个矩阵称为状态转换矩阵。; 一个DFA也可表示成一张(确定的)状态转换图。;; 如果一个DFA M的输入字母表为Σ,则我们也称M是Σ的一个DFA。;∑*上的符号串t 在DFA M上运行:;例:证明t=baab被下图的DFA所接受。 ;三、DFA的确定性表现两个方面:;§4.3.2 非确定的有穷自动机NFA ;二、一个NFA 的例子:;矩阵表示;具有?转移的不确定的有穷自动机; 类似DFA, 对NFA M=?K,?,f,S,Z?也有如下定义:;∑*上的符号串t被NFA M接受也可以这样理解:;结论:;§4.3.3 NFA与DFA的等价性:; 从NFA的矩阵表示中可以看出,表项通常是一状态的集合,而在DFA的矩阵表示中,表项是一个状态,NFA到相应的DFA的构造的基本思路是: DFA的每一个状态对应NFA的一组状态。;一、NFA确定化算法(NFA→DFA的转换): ;二、定义对状态集合I的几个有关运算:;状态集合I的有关运算的例子;三、构造NFA N的状态K的子集的算法:;例子;等价的DFA;§4.3.4确定有穷自动机的化简;1.没有多余状态(死状态); 2.没有两个状态是互相等价(不可区别)。;例子;二、“分割法”(逐步分组试探法);三、 DFA的最小化算法;3.转2,上述过程务必一再重复,直到P中的每个集合均是不可再分时为止。 此时,P所含的集合数

文档评论(0)

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

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

1亿VIP精品文档

相关文档