- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理课程设计编译器实现
题 目 利用LEX自动生成词法分析程序
学 院 计算机科学与技术学院 专 业 班 级 姓 名 指导教师
2014 年 1 月 2 日
目录
1.引言…………………………………………………………………………4
2.需求分析分析………………………………………………………………5
2.1 LEX编译系统的重要性………………………………………………5
3.总体设计及开发工具的选择………………………………………………6
3.1开发工具………………………………………………………………6
3.2总体设计………………………………………………………………6
4.设计原则……………………………………………………………………6
4.1LEX编译程序产生词法分析程序的过程………………………………6
4.1.1LEX编译程序产生DFA的过程……………………………………6
4.1.2产生控制程序的过程……………………………………………6
5.数据结构……………………………………………………………………7
6.详细设计……………………………………………………………………8
7.调试与结果…………………………………………………………………10
8.收获与体会…………………………………………………………………12
9.结束语………………………………………………………………………12
10.参考文献…………………………………………………………………13
利用LEX自动生成词法分析程序
引言
Lex是LEXical compiler的缩写,是Unix环境下非常著名的工具。主要功能是生成一个词法分析器的C源码,描述规则采用正则表达式。描述词法分析器的文件*.l,经过lex编译后,生成一个lex.yy.c 的文件,然后由C编译器编译生成一个词法分析器。词法分析器,简单来说,其任务就是将输入的各种符号,转化成相应的标识符,转化后的标识符 很容易被后续阶段处理。
我们知道,正规式用于说明(描述)单词的结构十分清晰。而把一个正规式编译(或称转换)为一个NFA进而转换为相应的DFA,这个NFA货DFA正是识别该正规式所表示的语言的句子的识别器,LEX正是基于这种方法来构造词法分析程序的工具。
LEX被设计用来对输入字符流进行词法处理。它接受一种高级的、面向问题的说明书,并用它匹配字符串中的字符、生成能够识别正则表达式的程序。正则表达式通过用户输入的代码说明书给入。Lex识别这些表达式,并且将输入流分成一些匹配这些表达式的字符串。在这些字符串的分界处,用户提供的程序片段被执行。Lex代码文件将正则表达式和程序片断关联。对每一条输入到由Lex生成程序的表达式,相应的代码片段被执行。为了完成任务,除了需要提供匹配的表达式以外,用户还需要提供其它代码,甚至是由其他生成器产生的代码。用户提供一般程序设计语言的代码片断完成程序识别表达式。因此,用户自由编写动作时,并不影响其编写高层的表达式语言来匹配字符串表达式。这就避免迫使用户使用字符串语言来进行输入分析时,也必须使用同样的方法来编写字符处理程序,而这样做有时是不合适的。
Lex不是完整的语言,但是是一个新语言的生成器,它可以插入到各种不同的被叫做“宿主语言”的程序设计语言中。就像大多数目的语言可以生成在不同计算机硬件上运行的代码,Lex可以生成不同的宿主语言。宿主语言用于Lex生成输出代码,也用于用户插入程序片断。这使得Lex适用于不同的环境和不同的使用者。每一个应用程序可以是硬件、适用于该任务的宿主语言、用户背景和局部接口属性的直接结合。现在,Lex唯一支持的宿主语言是C,尽管Fortran在过去也被支持。Lex自身存在于UNIX、GCOS和OS/370上;但是Lex生成的代码可以在任何适当的编译器上使用。
2.需求分析
2.1LEX编译系统的重要性
词法分析程序手工编写极为繁琐,依赖于LEX编译系统可以实现词法分析程序的自动产生,LEX编译系统的作用如图1所示,LEX编译系统读入LEX语言源程序(该程序是用正规式描述的某语言的词法),产生LEX语言目标程序(该程序即为某语言的词法分析程序)。在UNIX环境中LEX.l为LEX的源程序,LEX.yy.c为LEX的目标程序,LEX.yy.c是个C程序,它包括从正规式构造的有穷自动机DFA,以及使用该DFA识别单词的控制程序。LEX.yy.c经过C编译程序生成目标文件a.out,这便是词法分析程序,它可以将输入字符流变换成单词流,使用LEX生成词法分析程序的过程如图2所示。
图一 LEX编译系统的作用
图二 使用LEX生成词法分析器
3.总体设计及开发工具的选择
3.1开发工具
LEX
您可能关注的文档
最近下载
- 2024年浙江省镇海中学自主招生数学试卷及答案 .pdf VIP
- 自治区取暖费补贴文件2010.pdf VIP
- 500kV变电站运维精益化管理探究(电力系统及自动化论文资料).doc VIP
- 第一单元--观察物体(单元测试)-2025-2026学年三年级上册数学人教版.docx VIP
- (入党志愿书空白表格.doc VIP
- 第一单元-观察物体(单元测试)-2025-2026学年三年级上册数学人教版.docx VIP
- 企业级数据湖建设项目解决方案.pptx VIP
- 2025年新能源微电网稳定性分析与智能电网技术发展动态报告.docx
- DLT616-2006 火力发电厂汽水管道与支吊架维护调整导则.pdf VIP
- 春秋酒店改造装修项目投标文件技术部分.doc VIP
文档评论(0)