- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 词法分析 本章将讨论词法分析程序的设计原则,单 词的描述技术,识别机制及词法分析程序 的自动构造原理。 4.1 词法分析程序的设计 4.2 单词的描述工具(正规式和正规文法) 4.3 有穷自动机(单词的识别机制) 4.4 正规式和有穷自动机的等价性 4.5 正规文法和有穷自动机间的转换 4.6 词法分析程序的自动构造 本章重点 单词的描述工具 单词的识别系统 设计和实现词法分析程序 首先需要描述和刻画程序设计语言中的原子单位——单词,其次需要识别单词和执行某些相关的动作。 描述程序设计语言的词法的机制是正则表达式,识别机制是有穷状态自动机。 回顾 什么是词法分析程序 实现词法分析(lexical analysis)的程序 逐个读入源程序字符并按照构词规则切分成一系列单词。单词是语言中具有独立意义的最小单位,包括保留字、标识符、运算符、标点符号和常量等。 词法分析是编译过程中的一个阶段,在语法分析前进行 。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。 词法分析程序的功能 词法分析程序的功能是读入源程序,输出 单词符号。 源程序 单词符号 “词法” “分析程序” “的” “功能” 假如你没有中文分词的概念,你会明白中文句子的含义吗? 词法分析程序的功能 While i<>j do if i>j then i:=i-j else j:=j-I ‘while’,‘i’,‘<>’,‘j’, ‘do’, ‘if’,‘i’,‘>’,‘j’,‘then’, i, :=’ , i, ’-’ , j, else, j, :=, j, -, ‘i 4.1 词法分析程序的设计 4.1.1 词法分析程序与语法分析程序的接口方式 4.1.2 词法分析程序的输出 程序语言单词的分类: 1.关键字(保留字或基本字):begin,end 2.标识符:用来表示各种名字 3.字面常数:256,3 .14,true,‘abc’ 4. 运算符:如,+、-、*、/ 等等 5.分界符:如逗号,分号,冒号等 4.1.2 词法分析程序的输出 词法分析程序所输出的单词符号常常用以 下二元式表示: (单词种别,单词自身的值) 单词的种别是语法分析需要的信息,而单 词的值则是编译其它阶段需要的信息。 例如:在PASCAL的语句const i=25; yes=1; 中的单词25和1的种别是常数,常数的值是25和1。 4.1.3 将词法分析工作分离的考虑 简化设计 改进编译效率 增加编译系统的可移植性 4.2 单词的描述工具 程序设计语言中的单词是基本语法成分。 单词符号的语法可以用有效的工具加以描 述。 基于描述工具,实现词法分析程序的自动构造。 4.2.1 正规文法 多数程序设计语言的单词的语法都能用正规文法或3型文法来描述。 程序设计语言中的几类单词可用下述规则 来描述: 标识符?? L|L字母数字 字母数字 ? L|d|L 字母数字 无符号整数 ? d|d| 无符号整数 运算符 ? +|-|*|/|=|=|= 界符 ? ,|;|(|)|....... 其中L表示a~z中的任何一英文字母,d表 示0~9中的任一数字。 例4.1 无符号数的正规文法 无符号数 ? d余留无符号数|.十进小数|e指数部分 余留无符号数?d余留无符号数|.十进小数| e指数部分|? 十进小数 ? d余留十进小数 余留十进小数 ? e指数部分|d余留十进小数|? 指数部分 ? d余留整指数|s整指数 整指数 ? d余留整指数 余留整指数 ? d余留整指数|? 其中s表示正或负号+,-。 4.2.2 正规式 正规式也称正则表达式,正规表达式 (regular expression)是说明单词的模 式(pattern)的一种重要的表示法(记号) ,是定义正规集的数学工具。我们用以描 述单词符号。下面是正规式和它所表示的 正规集的递归定义。 正规式和它所表示的正规集 定义(正规式和它所表示的正规集): 设字母表为?,辅助字母表?′={?,?,?,?,?,?,?}。 1.?和?都是?上的正规式,它们所表示的正规集分别为{?}和 ? ; 2. 任何a? ?,a是?上的一个正规式,它所表示的正规集为{a}; 正规式和它所表示的正规集 3. 假定e1和e2都是?上的正规式,它们所表示的正规集分别为L(e1)和L(e2),那么,(e1
文档评论(0)