第3章词法分析.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 词法分析 本章学习目标 词法分析程序的主要任务是对源程序进行扫描,从中识别出单词。它是编译程序的第一步,也是编译过程中不可缺少的部分。 理论基础: 有限自动机理论和正则表达式 正则表达式和有限自动机文法、正规表达式、正规集及自动机的相互转换 词法分析器的C语言实现 词法分析器的自动生成 完成实验1,2 3.1 词法分析器与单词符号 词法分析 词法分析是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个一个的单词。编译程序中完成词法分析任务的程序段,称为词法分析程序。词法分析程序对源程序进行扫描,从中识别出一个个的单词符号,因此,词法分析程序又称为词法分析器,又称扫描器。 词法分析器与语法分析程序之间接口方式: 一种方式是词法分析程序独立工作,把字符流的源程序变为单词序列,输出在一个中间文件上,这个文件称为语法分析程序的输入而继续编译。 另一种方法,也是常用的一种方法就是把词法分析程序设计成一个子程序,每当语法分析程序需要一个单词时,就调用该程序。词法分析程序每得到一次调用,就从源程序文件中读入一个字符,直到识别出一个单词为止。这种方法省去了中间文件。 单词符号 单词符号是程序设计语言的基本语法单位和最小语义单位。单词符号一般分为五类。 (1)关键字(又称保留字或基本字)如if,then ,else,while,do,begin和end。 (2)标识符,用于表示变量名、过程名等。 (3)常数,如123,实数型45.67等。 (4)运算符,如+,-,*,/,,=等。 (5)界限符,如逗号、分号和括号等。 程序设计语言中的关键字、运算符和界限符的数量都是确定的。而常数和标识符的数量是不确定的。 单词符号表示成机内符,形式如 1.单词类别的表示 单词类别表示单词的种类,它是语法分析所需要的信息。一个语言的单词符号如何划分种类、分为几种,如何编码都属于技术性的问题,主要取决于处理上的方便。 单词符号有5个类别:关键字、标识符、常数、运算符和界限符,可以用1、2、3、4、5来表示。 用一字符一类别码的编码形式,如保留字可以采用一字一类别。分界符也可以采用一字一类别。 对于一字一类别的单词,单词的类型就是单词的自身值,词法分析程序就不必输出其值了。常数的自身值是其自身的二进制。 2.单词的自身值 单词自身的值是编译程序中其他阶段所需要的信息。对于单词符号来说,如果一个种别只含有一个单词符号,那么这个单词符号,其种别就安全地代表了它的自身值。如果一个种别含有多个单词符号,那么对于它的每个单词符号,除了给出种别编码之外,还应该给出单词符号自身的值,以便把同一种单词区别开来。注意。 标识符自身的值就是标识符自身的字符串。而常数自身的值是常数本身的二进制数值。 一个简单的词法分析程序的设计 1.预处理 词法分析器在识别单词符号之前,需要对输入区的源程序进行预处理。预处理包括删除无用的空格、跳格、回车和换行等编辑性字符以及注释部分。每一次对一串定长的输入字符进行预处理,并装进一个指定的缓冲区。 2.状态转换图 利用状态转换图可以设计词法分析器。状态转换图是一个有向图,仅包含有限个结点,每个结点表示一个状态,其中有一个初始结点,至少有一个终态结点,结点间弧的标记是输入字符或字符类。 3 . 根据状态图设计词法分析程序(具体代码见p41) 例:状态转换:其中,0结点用‘S’标记,表示初态结点;2结点用‘E’标记,表示终态结点。从初态结点出发到某一终态结点所经过的路径,称为能为该状态转换图所接受的符号串。 单词的描述工具 正规文法(Chomsky 3型文法) 正规文法是描述正规集的文法,可用于描述程序设计语言的词法部分。 正规文法定义的几类单词(p42) 标识符和运算符 无符号整数 无符号实数 正规集 由正规文法产生的语言 注:正规集是集合,可有穷也可无穷。也可通过正规式来形式化表示。 正规式 描述单词的另外一种工具 递归定义 设有限字母表∑, ∑’={?, ?,|,.,*,(,)}则 ?,?都是∑上的正规式,它表示的正规集{?}和ф 对于任何a∈∑, a是正规式,它表示的正规集是{a} 若?、?是正规式,则?、 ??? 、 ?|?、 ?*、 ? *也是正规式。它们代表的正规集分别是L(?), L(?) ? L(? ), L(?)U L(? ), L(?) *, L(?) * 注:正规式只能通过有限次使用1,2规则获得。 例: ∑={0,1} 正规式 0|1表示的正规集{0,1} 正规式(0|1)(0|1)表示的正规集{00,01,10,11} 正规式 01 表示的正规集是{01} 正规式(0|1)*表示的正规集是{?,0,1,00,10,11,10,…..}

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档