- 1、本文档共74页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构建词法分析器的方法 DFA代码化 使用词法分析器自动生成工具,如:LEX 一个状态转换图可用于识别(或接受)一定的字符串。 作业 3.3.2,3.3.3 3.4.1a)b),3.6.3, 3.6.4 3.7.1,3.7.2,3.9.3 词法分析器生成工具的功能 在生成的词法分析器中有一个模拟自动机的程序 其余部分由生成工具根据词法规则的描述自动生成,包括 自动机的转换表 和动作相关的代码,适当的时候由模拟器调用。 构造自动机时 首先构造出各个模式对应的NFA 然后将这些NFA合并成为一个NFA (根据需要)进行确定化 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. NFA合并的方法 合并方法: 引入新的开始状态,并引入从这个开始状态到各个原开始状态的ε转换。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 确定化NFA后的处理 对于DFA的每个接受状态,如果对应的NFA状态子集包含多个模式对应的接受状态,那么找出第一个这样的模式,将这个模式作为这个DFA状态的输出。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 例子(1) 假设有三个模式 a {A1} abb {A2} a*b+ {A3} 构造各模式的NFA a abb a*b+ Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 识别标识符的状态转换图 1 2 3 字母 其他 字母或数位 * 识别整常数的状态转换图 1 2 3 数位 其他 数位 * Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 状态转换图举例:关系算符relop 注:双圈表示接收状态 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 保留字和标识符的识别 在很多程序设计语言中,保留字也符合标识符的模式,识别标识符的状态转换图也会识别保留字。 解决方法 在符号表中预先填写保留字,并指明它们不是普通标识符。 为关键字/保留字建立单独的状态转换图。并设定保留字的优先级高于标识符。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 其它常用状态转换图 问题:状态19,20,21分别识别什么记号 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 词法分析器的体系结构 从转换图构造词法分析器的方法(DFA代码化) 变量state记录当前状态 整体可通过一个switch来根据state的值转到相应的代码 每个状态对应于一段代码。 这段代码根据读入的符号,确定下一个状态 如果找不到相应的边,则调用fail()进行错误恢复 进入某个接受状态时,返回相应的记号。 注意状态有*标记时,需要回退forward指针。 失效函数 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. DFA代码化举例——Relop对应的代码概要 Evaluation only. Created with As
您可能关注的文档
最近下载
- 汉语拼音教学讲座.pptx
- 2024-2030年中国工业分离筛分设备行业市场发展趋势与前景展望战略研究报告.docx
- 空间句法简明教程-20140903-01.pdf
- (高清版)DB45∕T 1625-2024 地质灾害危险性评估规程.pdf VIP
- 2023年(机械点检员)高级技能及理论综合知识考试题库与答案.pdf VIP
- 金融理财师AFP认证历年考试真题试题库(含答案).docx
- 《设施农业》课程标准.pdf
- 重庆主城排水工程可行性实施报告.pdf
- 2024浙江省温州市中考初三一模科学试题及答案.pdf VIP
- 2023小升初数学真题考点:图形与几何(复习)人教版六年级下册数学.pdf VIP
文档评论(0)