基于flex的词法分析器的设计和实现 下载本文

内容发布更新时间 : 2024/5/4 10:19:08星期一 下面是文章的全部内容请认真阅读。

课程设计1 基于Flex的词法分析器设计及实现

1.1 需求分析

1.1.1 问题定义

1、通过对 flex 基本知识的阅读,了解其工作原理和过程以及其匹配模式和规则,掌握简单的 lex 语法和规则;

2、在上述基础上能够自主编写出简单且可以运行的词法分析器,实现简单的词法分析功能;

3、通过实验,设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。

1.1.2 功能描述

本次编制调试的词法分析器基本可以实现如下简单功能:

1、可以匹配识别关键字:else if switch for int float return void while(所有的关键字都是保留字,并且必须是小写) ;

2、可以匹配识别专用符号: + - * / < <= > >= == != = ; ,( ) [ ] { } /* */; 3、 标识符(ID) 和数字(NU )通过下列正则表达式定义: ID = letter letter* NUM = digit digit* letter = a|..|z|A|..|Z digit = 0|..|9;

4、可以匹配识别空格(空格由空白、换行符和制表符组成,空格通常被忽略,除了它必须分开 ID、NUM 关键字); 5、可以识别简单的注释(/* 注释内容*/) ;

1.1.3 开发环境及工具介绍

1、Window环境下载Visual Studio之后,利用其命令提示窗口进行操作。下载并安装Flex。

2、vs2010的编译器cl.exe。 3、flex:词法分析器

Flex是用来生成程序的工具,他们所生成的程序能够处理结构化输入,最初的Flex是用来生成编译器的,但是后来他们被证明在其他领域也非常有效。Flex是一个SourceForge项目。其依赖于GNU m4宏处理器。Linux和BSD都应该有m4,对于Windos用户来说,Flex被包含在Cygein Linux模拟环境中。

什么是FLEX?它是一个自动化工具,可以按照定义好的规则自动生成一个C函数yylex(),也成为扫描器(Scanner)。这个C函数把文本串作为输入,按照定义好的规则分析文本串中的字符,找到符合规则的一些字符序列后,就执行在规则中定义好的动作(Action)。例如在规则中可以这样定义:如果遇到一个换行字符\\n,那么就把行计数器的值加一。Flex文件就是一个文本文件,内容包括定义好的一系列词法规则。

1.2 系统概要设计

1.2.1 系统体系结构

Flex源文件(.l)flex词法分析器的C 语言源文件(.h) 图1-1 体系结构图

编译此法分析器的课执行程序