LEX/FLEX词法分析器
CONTENTS:
[TOC]
这篇文章的内容包括:
lex语法格式
linux下flex的安装和使用
flex实例
flex源代码的编译和使用
Lex/Flex词法分析器
Lex是LEXical compiler的缩写,是Unix环境下非常著名的工具,主要功能是生成一个词法分析器(scanner)的C源码,描述规则采用正则表达式(regular expression)。描述词法分析器的文件*.l,经过lex编译后,生成一个lex.yy.c 的文件,然后由C编译器编译生成一个词法分析器。词法分析器,简单来说,其任务就是将输入的各种符号,转化成相应的标识符(token),转化后的标识符 很容易被后续阶段处理。 —— [ 百度百科 ]
Flex的安装和使用
在使用apt软件包管理器linux系统上我们可以非常方便地安装并使用flex。在终端中输入以下代码安装flex:
$> sudo apt-get install flex
flex代码的源文件往往是以.l为后缀名的。
.l文件通过以下命令编译(以文件名为scanner.l为例):
$> flex scanner.l
编译后在源代码相同目录下会生成一个lex.yy.c,这就是生成的能够执行上述scanner.l功能的c语言代码。使用gcc编译即可生成词法分析程序
void yywrap() { return 1; }
$> gcc lex.yy.c -o scanner
然后将需要分析的文件(以input.txt为例)作为参数传递给scanner执行分析:
$