- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 编译原理第三章 编译原理
第3章 词法分析 本章将基于第二章介绍的几种典型的自动机,用自动机或表的方式实现词法分析器的设 计。词法分析器在编译器中的位置与作用如图 3.1 所示。 图 3.1 词法分析器在编译器中的位置与作用 编译器首先识别出源程序中每个单词,然后再分析每个语句并翻译其意义。识别单词的 任务是由词法分析器(也称为扫描器——scanner)完成的。它把识别出来的单词变成机内表 示形式交给语法分析器。 3.1. 单词的种类与机内表示法 3.1.1. 单词的种类 根据单词在高级语言中的作用,可分为以下几种类型: (1) 关键字:又称为基本字、语言字。在语言中若规定不允许用关键字作标识符, 又称为保留字。如main,while,if,else,⋯等。 (2 ) 标识符:如变量名、数组名、过程名、函数名等。 (3 ) 常数:分为整型、实型、布尔型、字符型等。 (4 ) 运算符:如算术运算符、逻辑运算符、关系运算符。 (5 ) 界限符:如 , 、; 、�、�、�、�、 = 、[、] 等。 (6 ) 编辑符:如空格符、回车符、换行符、制表符等。 3-1 3.1.2. 单词的机内表示法 单词的机内表示采用如下的长度统一的二元形式(token 字): (单词种别码,单词语义值) 其中, (1) 种别码表示单词的种类。 对单词怎样进行编码有多种方法。基本原则是最大限度地把各个单词区别开来。一般的 方法是让每种单词对应一个整数码。 (1.1) 关键字 if、else、while 、…,通常是一字一种,并且最好把这些关键字按 字典顺序排序,然后按序编号,以便在识别出一个关键字时,可以很容易地查到它的种别码。 (1.2) 各类标识符统一做为一种单词。 (1.3) 常数有好几种类型,通常按类型编种别码。 (1.4) 界限符和运算符通常是按一符一种来编码。 (2 ) 单词语义值可以是下述情况之一: (2.1 ) 语义值是单词本身符号(串)的机内编码(例如ASCII 码)。 如果单词是标识符,则它的语义值是标识符自身字符串。由于要求token 的长度统 一,所以需要对标识符的长度加以限制,如长度在8 字符以内。这意味着对较长的标识符需 要截断。 对于常数来说,其语义值就是常数本身的二进制数值。 对于关键字、界限符之类的一字一码、一符一码的单词,由于它们的种别码已经唯 一地表示了这些单词,因此,它们的语义值就不用给出。 (2.2 ) 语义值是一指示器,它表示标识符(或常数)在符号表(或常数表)中的 入口位置。这意味着扫描器需要兼管查填符号表的工作。 对于关键字、界限符的语义值的处理同 (2.1 )。 为了便于扫描器在构造单词的二元式时能方便地找到该单词的种别码,需要恰当地给程 序语言的单词编码,并且用合适的数据结构存贮它们。具体情况可根据编译器的规模参考《数 据结构》的有关内容。本讲义在3.3 节将给出一种简单的解决方案供参考。 3.2. 词法分析器的任务 扫描器的基本任务是从左向右扫描每行源程序的符号,拼成单词,换成统一的内部表示 (token),然后送给语法分析程序。具体地说: (1) 组织源程序的输入。 (2) 按规则拼单词,并转换成二元形式。(单词种别码,单词自身值) (3) 删除注解行。 (4) 删除空格及无用符号。(如回车符、字符常数的引号等) (5) 行记数,列记数(列记数用于定位词法错误) (6) 列表打印源程序 (7) 发现并定位词法错误 (8) 如果需要,还要建立符号表、常数表等表格。 分析的源程序,即词法分析器的输入是如图 3.2 所示的一个简单的C 语言程序。词法 分析器的输出为token 串。 3-2 /* 这是一个简单的C语言程序*/ void main()
文档评论(0)