编译原理与技术_18246.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文档。上传文档
查看更多
编译原理与技术_18246

《编译原理与技术》讲义 编译原理与技术 词法分析(1) 词法分析 词法分析器介绍 正规式与正规集 有限自动机 词法分析器的自动生成-Lex 词法分析器介绍 词法分析器的功能 词法分析器介绍 词法分析器的功能 读源程序,产生记号序列 剥去源程序中的注释(块、行)和“空白”符 预处理-宏处理与文件包含 词法分析器介绍 词法分析器作为独立子程序 简化设计 提高编译效率 增强可移植性 词法分析器介绍 记号、模式与单词 记号-同类单词的总称 模式-描述构成记号的字符串的规则 单词-源程序中能匹配任一记号的字符串 程序语言的记号(1) 程序语言的记号(2) 词法分析器介绍 词法分析器的二元输出 记号,记号的属性 词法分析器介绍 词法分析器的二元输出 记号,记号的属性 词法分析器介绍 e.g.1 pascal源程序片段: begin length := length + 1; if length20 then read(nextch); end; e.g. 1 词法分析器的输出记号流(1) BEGIN,- ID,指向符号表length条目的指针 ASSIGN,- ID,指向符号表length条目的指针 //不是多余的!! +, - NUM, 1 // 属性是常量“值”本身 ; , - IF, - e.g. 1 词法分析器的输出记号流(2) ID,指向符号表length条目的指针 LT, - NUM, 20 THEN, - READ, - ( , - ID,指向符号表nextch条目的指针 ), - END, - ; , - 词法分析器介绍 超前搜索 FORTRAN中的关键字“不保留” 1) DO100K=1,10 2) DO100K=1.10 3) IF(5.EQ.M) I=10 4) IF(5)=55 有关算符的识别 C/C++, java的++, --, =, !=, == 等,与之对应 + , - , !, = 词法分析器介绍 词法错误 可检测非法字符的出现 if VS fi 词法分析器的设计 手工编写-采用汇编语言或高级语言 自动生成-Lex 词法分析器介绍 状态转换图 用于记号的识别。状态之间用带有标记(字符)的有向边连接;每读入一个字符会引起状态变化,直至单词(记号)被识别出来。 开始状态:状态转换图的初始状态(尚未读字符) 接受状态:某个单词被识别时所处的状态(终态) 单词(记号)的识别过程即是从开始状态出发到某接受状态的变化过程。 词法分析器介绍 状态转换图 词法分析器介绍 状态转换图 词法分析器介绍 状态转换图 词法分析器介绍 状态转换图 状态转换图的实现 e.g. 2 简单词法分析的转换图(识别关键字、标识符、无符号整数、算符和界符) e.g. 2简单词法分析的转换图 e.g. 2简单词法分析的转换图 e.g. 2简单词法分析的转换图 串与语言 语言 语言L={ s | s 是∑上任一字符串}, s称为语言L的一个句子。 字母表∑-符号/字符的非空有限集合 e.g. 二进制数的∑={0,1},而十进制数的∑={0,1,…,9} ∑*-表示∑上所有字符串的集合;L?∑* 字符串- ∑上若干字符组成的有穷序列 串与语言 语言 字符串 e.g. ∑={0,1}上的0,1串(二进制数)如0111,10101;∑={a,b}上的 a, b, aa , abab, … 空串-?, ?∈ ∑*, 串长-|s|={s中所含字符的个数},| ?|=0 串的连接运算-任意串x,y,一般地,xy?yx, x?= ?x 串的前缀- 任意串x,从其第一个字符(最左字符)起的字符序列是其前缀。?亦是。 e.g. x = abc, 则?,a,ab,abc均是x的前缀 语言的运算 语言 e.g. L={a,b,…,z}, D={0,1,…,9}, B={ _ } L∪D = {…} LD={…} L*={…} L(L∪D)*={…} (L∪ B)(L∪D∪B)*={…} D+={…} 正规式与正规集 正规式-用于描述记号的构成规则 正规集-正规式描述的语言(匹配正规式的串集) 正规式与正规集 正规式与正规集 正规式与正规集 正规式与正规集 正规式与正规集 e.g.3 设?={a, b}, 则 正规式与正规集 e.g.3 设?={a, b},R = a(a|b)*,事实上有 L(R) = L( a(a|b)* ) = L(a) L((a|b)*) = L(a) (

文档评论(0)

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

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

1亿VIP精品文档

相关文档