- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
词法分析器的实现 LexAnalyze()实现为一个函数 LexAnalyze()每执行一次 识别出一个单词符号 返回相应的二元式 LexAnalyze()的两种使用方法 独立使用 作为语法分析的子程序使用 * Zhou, Erqiang School of Information and Software Engineering 特定语言手动编码方式 手动实现识别单词符号的有限自动机 参p. 190 图8-5 正则表达式方式(掌握) 自动将正则表达式转化为有限自动机 词法分析器的设计 * Zhou, Erqiang School of Information and Software Engineering 正则表达式 一种用来描述字符串集合的工具 字母表 一个有限的符号集合 集合{0, 1}是二进制字母表 字母表上的一个“串”或“句子” 字母表中符号的一个有穷序列 串s的长度,记作 |s|,指s中符号出现的次数 空串是长度为0的串,用ε表示 词法分析器的实现 * Zhou, Erqiang School of Information and Software Engineering 语言 给定字母表上一个任意的可数的串集合 正则表达式的递归定义 1)ε 是一个正则表达式 L(ε) = {ε},即该语言只包含空串。 2)如果 a 是字母表Σ上的一个符号 那么 a 是一个正则表达式,并且L(a) = {a} R、R1、R2是正则表达式 R1R2 、 R1 | R2 、 R* 、(R)是正则表达式 词法分析器的实现 * Zhou, Erqiang School of Information and Software Engineering 正则表达式的例子 (0|1)* 00 (0|1)* 所有包含00的由0、1组成的串 (0|1)(0|1)(0|1)(0|1) 0000、1010、1111、1000 (0|1){4} 词法分析器的实现 * Zhou, Erqiang School of Information and Software Engineering 正则表达式的例子 ? = {a, b} a|b {a, b} (a|b)(a|b) {aa, ab, ba, bb} aa|ab|ba|bb {aa, ab, ba, bb} a* 由字母a构成的所有串集 (a|b)* 由a和b构成的所有串集 词法分析器的实现 * Zhou, Erqiang School of Information and Software Engineering 正则表达式方式(掌握) 词法规则:用正则表达式描述 程序读入词法规则 自动生成对应的处理程序 flex 词法分析器的实现 * Zhou, Erqiang School of Information and Software Engineering Flex的规则举例(掌握) DIGIT [0-9] ID [a-z][a-z0-9]* {DIGIT}+ { printf( “ (integer, ‘%s’) , yytext); } {DIGIT}+.{DIGIT}* { printf( “(float, ‘%s’), yytext);} 词法分析器的实现 * Zhou, Erqiang School of Information and Software Engineering 有限自动机 确定的有限自动机(DFAs) 非确定的有限自动机(NFAs) 正则表达式的实现 * Zhou, Erqiang School of Information and Software Engineering 有限自动机 开始 A,B,C,…,Z 有限的有向图 初态唯一 有向边上标记字符,表示状态转换 若干终态(至少一个) * Zhou, Erqiang School of Information and Software Engineering Zhou, Erqiang 词法错误:非法的字符 不准确常量 程序括号 等 * P189 * P189 * 第三章 词法分析 周尔强 2015年09月 词法分析 中间代码生成 语法分析 语义分析 中间代码优化 目标代码优化 目标代码生成 源 程 序
文档评论(0)