计科17-6班陆玺文词法分析器实验报告:Flex变量与函数应用

需积分: 0 0 下载量 91 浏览量 更新于2024-08-04 收藏 941KB DOCX 举报
在计科17-6班陆玺文同学的实验报告中,他专注于第11个实验——词法分析器的设计与实现。该实验主要基于 Flex 这一强大的工具,配合 Bison 来构建一个词法扫描器,用于统计输入文本文件中的字符数、单词数和行数。实验内容包括深入理解 Flex 的基础知识,特别是其内置变量和函数的运用。 1. 实验内容部分要求学生阅读 Flex 和 Bison 相关文档,掌握 Flex 的基础,包括如何设计和编写模式匹配规则,以及如何利用 Flex 提供的变量和函数来处理解析过程中的数据。 2. 环境配置与代码验证是实验的重要环节。在 Windows 系统下,学生使用了 Flex 和 Bison 的集成开发环境,通过特定的编译步骤(LexFileCompile、LexBuild 和 Executeexedirectly)来验证 lex1 和 lex2 代码的功能。报告中提供了详细的软件使用说明和链接,展示了 lex1.l 和 lex2.l 在 Windows 上的运行结果,分别是字符数、单词数和行数的统计。 3. 在 Linux 环境(Ubuntu19.04 虚拟机)下,学生同样进行了代码验证,但具体结果并未在报告中详述,可能涉及到类似的编译和执行流程。 4. Flex 内置的变量和函数是实验的核心知识点,包括但不限于 yytext(当前读取的输入缓冲区)、yyleng(缓冲区长度)、yymore()(处理多行模式匹配)等,这些功能使得 Flex 能够根据不同的正则表达式模式匹配,动态生成 C 代码。 5. 代码分析部分深入探讨了 lex 文件的组成,包括程序的结构,如何定义模式(如识别关键字、标识符、数字等),以及如何利用 Flex 的语法来定义动作,如跳转、存储数据或调用外部函数。 6. 实验感悟部分可能会讨论到实验过程中遇到的问题、解决方案,以及对 Flex 和词法分析原理的理解提升,以及实验对实际编程能力的锻炼。 综上,本实验不仅涵盖了 Flex 的基本用法,还锻炼了学生的编程实践能力和对编译原理的理解,尤其是对词法分析和正则表达式的应用。