- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
词法分析是编译的第一个阶段,其任务是:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号,把字符串形式的源程序改造成为单词符号串形式的中间程序。执行词法分析的程序称为词法分析程序,也称为词法分析器或扫描器。词法分析器的功能是输入源程序,输出单词符号。 词法分析可以采用如下两种处理结构: (1) 把词法分析程序作为主程序。将词法分析工作作为独立的一遍来完成,即把词法分析与语法分析明显分开,由词法分析程序将字符串形式的源程序改造成单词符号串形式的中间程序,以这个中间程序作为语法分析程序的输入。在这种处理结构中,词法分析和语法分析是分别实现的,如图2-1(a)所示。 (2) 把词法分析程序作为语法分析程序调用的子程序。在进行语法分析时,每当语法分析程序需要一个单词时便调用词法分析程序,词法分析程序每一次调用便从字符串源程序中识别出一个单词交给语法分析程序。在这种处理结构中,词法分析和语法分析实际上是交替进行的,如图2-1(b)所示。 图2-1 词法分析的两种处理结构 (a) 词法分析程序作为主程序;(b) 词法分析程序作为子程序 2.1.1 单词符号的分类与输出形式 1. 单词符号分类 词法分析程序简单地说就是读单词程序,该程序扫描用高级语言编写的源程序,将源程序中由单词符号组成的字符串分解出一个个单词来。因此,单词符号是程序语言的基本语法单位,具有确定的语法意义。程序语言的单词符号通常可分为下面五种。 (1) 保留字(也称基本字):如C语言中的if、else、while和do等,这些字保留了语言所规定的含义,是编译程序识别各类语法成分的依据。几乎所有程序语言都限制用户使用保留字来作为标识符。 (2) 标识符:用来标记常量、数组、类型、变量、过程或函数名等,通常由用户自己定义。 (3) 常数:包括各种类型的常数,例如整型常数386、实型常数0.618、布尔型常数TRUE等。 (4) 运算符:如“+”、“-?”、“?*?”、“/?”、“”、“”等。 (5) 界符:在语言中是作为语法上的分界符号使用的,如“,”、“;”、“(”、“)”等。 2. 词法分析程序输出单词的形式 我们知道,词法分析程序的输入是源程序字符串,而输出是与源程序等价的单词符号序列,并且所输出的单词符号通常表示成如下的二元式: (单词种别,单词自身的值) (1) 单词种别。单词种别表示单词的种类,它是语法分析所需要的信息。一个语言的单词符号如何划分种类、分为几类、如何编码都属于技术性问题,主要取决于处理上的方便。通常让每种单词对应一个整数码,这样可最大限度地把各个单词区别开来。对于保留字,可将其全体视为一种,也可一字一种,采用一字一种的分类方法处理起来比较方便;标识符一般统归为一种;常数可统归为一种,也可按整型、实型、布尔型等分为几种;运算符和界符可采用一符一种的分法,也可统归为一种。 (2) 单词自身的值。单词自身的值是编译中其它阶段所需要的信息。对于单词符号来说,如果一个种别只含有一个单词符号,那么对于这个单词符号,其种别编码就完全代表了它自身的值。如果一个种别含有多个单词符号,那么对于它的每个单词符号,除了给出种别编码之外还应给出单词符号自身的值,以便把同一种类的不同单词区别开来。注意,标识符自身的值就是标识符自身的字符串,而常数自身的值是常数本身的二进制数值。此外,我们也可用指向某类表格中一个特定项目的指针来区分同类中的不同单词。例如,对于标识符,可以用它在符号表的入口指针作为它自身的值;而常数也可用它在常数表的入口指针作为它自身的值。 图2-2 不同输入字符的状态转换 2.1.2 状态转换图 在词法分析中,可以用状态转换图来识别单词。状态转换图是有限的有向图,结点代表状态,用圆圈表示;结点之间可由有向边连接,有向边上可标记字符。例如,图2-2表示在状态i下,若输入字符为x,则读入x并转换到状态j;若输入字符为y,则读入y并转换到状态k。 状态(即结点)数是有限的,其中必有一初始状态以及若干终止状态,终止状态(终态)的结点用双圈表示以区别于其它状态。图2-3给出了用于识别标识符、无符号整数、无符号数的状态转换图,其初始状态均用0状态表示。 图2-3 标识符及无符号数的状态转换图 (a) 标识符;(b) 无符号整数;(c) 无符号数 当到达一类单词符号的终止状态时即可给出相应的单词编码。某些终止状态是在读入了一个其它不属于该单词的符号后才得到相应的单词编码的,这表明在识别单词的过程中多读入了一个符号,所以识别出单词后应将最后多读入的这个符号予以回退;我们对此类情况的处理是在终态上以“*”作为标识。 对于不含回路的分支状态来说,可以让它对应
您可能关注的文档
- 编单片机原理与应用三版课件作者潘永雄第4-7章节第7章节.ppt
- 编码理论第二版课件作者田丽华第1-5章节第1章节.ppt
- 编码理论第二版课件作者田丽华第1-5章节第2章节.ppt
- 编码理论第二版课件作者田丽华第1-5章节第3章节.ppt
- 汽车构造与原理上册发动机第2版课件作者蔡兴旺主编第11章节新型汽车发动机.ppt
- 编码理论第二版课件作者田丽华第1-5章节第4章节.ppt
- 汽车电气系统结构与维修图解教程课件作者谭本忠2第二章节起动系统.ppt
- 编码理论第二版课件作者田丽华第6-11章节第6章节.ppt
- 编码理论第二版课件作者田丽华第6-11章节第7章节.ppt
- 编码理论第二版课件作者田丽华第6-11章节第8章节.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华模块一汽车电器检测基础.ppt
- 汽车机械基础课件作者陈红第十章节.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华项目2_3调节器的检修.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华项目2_4充电线路的连接.ppt
- 编译原理教程第三版课件作者胡元义全书第5章节.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华项目2_5充电线路的检修.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华项目4_4点火信号的波形检查.ppt
- 汽车机械基础课件作者陈红第四章节.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华项目6_5电动车窗线路的检修.ppt
- 汽车电器检测与维修实训课件作者董继明胡勇阴丽华项目6_6中央门锁线路的检修.ppt
文档评论(0)