第3章 词法分析 (编译原理 陈火旺).pptVIP

  1. 1、本文档共100页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 词法分析 (编译原理 陈火旺)

Ch3.词法分析 内容: 状态转换图、正规式和有限自动机、词法分析器的自动生成 掌握: 正规式、状态转换图,DFN的概念、NFA的概念,将NFA转 换为DFA、DFA的化简、正规式与有限自动机间的转换。 理解: 正规文法与有穷自动机间的转换 词法分析器的自动产生工具LEX 本章在编译程序中的地位 3.1 设计词法分析器时应考虑的几个问题 执行词法分析的程序称为又称为词法分析器或扫描器. 词法分析的任务:从左至右逐个地扫描源程序的字符串, 按照词法规则识别出一个个正确的单词,并转换为相应的二元式形式,交给语法分析使用。 把作为字符串的源程序改造成单词符号串的词法分析是编译的基础。 3.1.1 词法分析阶段的必要性 词法分析的工作纳入整个语法分析中一揽子地进行,原则上是可行的。 在设计一个编译程序时,通常是把对源程序的结构分析分为词法分析和语法分析两个相对独立的阶段来完成。 第一,描述单词的结构比描述源程序的其它语法结构要简单得多,仅使用3型文法也就基本够用了。 第二,由于把词法分析和语法分析分开,可使编译程序各部分的功能更为单一,整个编译程序的结构也更加清晰,从而有利于编译程序的编写和调整。 上述词法分析和语法分析两个阶段的划分,仅仅是对整个编译程序的逻辑功能而言,而不一定指的是编译程序的执行流程。 3.1.2 词法分析器的输出形式 词法分析器输出的单词常常表示为二元式形式 (单词种别,单词符号的属性值) 单词种别提供给语法分析程序使用; 单词符号的属性值提供给语义分析程序使用。 具体的分类设计方法以方便语法分析程序使用为原则。 3.1.2 词法分析器的输出形式 程序语言的单词符号一般分为五种: 关键字(保留字或基本字):如 if,then,else,while,do等 标识符:用来表示各种名字,如 x1 常量:如 256,3.14,true, ’abc’ 运算符:如 +、-、*、/ 等等 分界符:如 逗号,分号,冒号等 3.1.2 词法分析器的输出形式 单词种别: 一个语言的单词符号如何分类、分为几类、如何编码主要取决于处理上的方便。通常,每种单词对应一个整数码。 注意:保留字、运算符和界符的个数确定, 标识符和常数的个数不确定。 保留字:可全体视为一种,也可一字一种; 标识符:统归为一种; 常数:统归为一种,或按整、实、布尔等再分; 运算符和界符:一符一种,或统归为一种。 3.1.2 词法分析器的输出形式 单词符号的属性值 单词符号的属性是指单词符号的特征值 。 如果一个种别只含有一个单词符号,那么对于这个单词符号,种别编码就完全代表它自身了,因而不需要属性值。 若一个种别含有多个单词符号,那么,对于它的每个单词符号,除了给出种别编码之外,还应给出有关单词符号的属性值。 3.1.2 词法分析器的输出形式 单词符号的属性值 标识符和常数 标识符的内部码 (如ASCII码等等)和常数本身的值 (二进制,逻辑值等)来表示。 标识符的符号表入口地址作为其单词符号的属性值,常量在其常量表中的入口地址作为其单词符号的属性值。 每个基本字占一个单词种别,单词符号的属性值缺省。 对于界符,运算符通常一个符号一个种别,单词符号的属性值缺省 例: 参见P42.表3.1 单词符号及种别编码 3.1.4 源程序的输入、预处理及超前搜索 词法分析器工作的第一步是输入源程序文本。 输入串一般放在一个输入缓冲区中。词法分析器的工作可以直接在输入缓冲区中进行。但在许多情况下,可以先预处理输入串,识别工作将更方便。(参见P40 图3.1) 扫描缓冲区的结构 词法分析器对扫描缓冲区进行扫描时一般使用两个指示器,一个指向当前正在识别的单词的开始位置, 即指向新单词的首字符; 另一个用于向前搜索以寻找单词的终点。 不论扫描缓冲区设得多大都不能保证单词符号不会被缓冲区的边界所打断。因此,扫描缓冲区最好使用如下一分为二的区域: 在扫描缓冲区中扫描 假定每个半个区可容120个字符,而这两个半区又是互补的。 如果搜索指示器从单词起点出发搜索到一个半区的边缘但尚未达到单词的终点,那么就调用预处理子程序,令其把后续的120个字符装入另一个半区。 认定在另一半区一定可以达到单词的终点。这意味着对标识符和常数的长度实际上必须加以限制,否则即使缓冲区再大也无济于事。 词法分析程序设计 设计方法: ⑴写出该语言的词法规则; ⑵把词法规则转换为相应的状态转换图; ⑶把各转换图的初态连

文档评论(0)

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

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档