linux的中怎么安装和使用flex

  介绍

这篇“linux的中怎么安装和使用flex“文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获、下面我们一起来看看这篇“linux的中怎么安装和使用flex“文章吧。

在linux中,flex是一个词法分析工具,能够识别文本中的词法模式,flex读入给定的输入文件,如果没有给定文件名的话,则从标准输入读取,从而获得一个关于需要生成的扫描器的描述。

本教程操作环境:linux5.9.8系统,戴尔G3电脑。

<强> flex:词法分析器

flex是一个词法分析器。用来将一个.l文件生成一个。c程序文件。即生成一个词法分析器。然后读取输入,和正则表达式匹配,再执行相应的动作,实现了程序的功能。我们可以发现flex实现在程序外部就可以接受输入的功能。

flex是一个生成扫描器的工具,能够识别文本中的词法模式.Flex读入给定的输入文件,如果没有给定文件名的话,则从标准输入读取,从而获得一个关于需要生成的扫描器的描述。此描述叫做规则,由正则表达式和c代码对组成.Flex的输出是一个c代码文件——lex.yy.c其中定义了yylex()函数。编译输出文件可以生成一个可执行文件。当运行可执行文件的时候,它分析输入文件,为每一个正则表达式寻找匹配。当发现一个匹配时,它执行与此正则表达式相关的c代码.Flex不是GNU工程,但是GNU flex为写了手册。

<强>用法

<李>

<强>安装flex

sudo  apt-get  install  flex//或者下载相应版本的安装文件安装 <李>

<强>然后新建一个文本文件,输入以下内容:

% %   [0 - 9]+,,printf (“?”);   #,,,,,,,return  0;   只,,,,,,回声;   % %   命令行参数个数,int 主要(int  char *, argv []), {   ,,,yylex ();   ,,,return  0;   }   int  yywrap (), {,   ,,,return  1;   }

将此文件另存为hide-digits。l。注意此文件中的% %必须在本行的最前面(即% %前面不能有任何空格)。

<李>

<强>之后,在终端输入:

flex  hide-digits。l <李>

<强>此时目录下多了一个“lex.yy。c”文件,把这个c文件编译并运行一遍:

,gcc  -o  hide-digits  lex.yy.c   。/hide-digits

然后在终端不停的敲入任意键并回车,可以发现,敲入的内容中,除数字外的字符都被原样的输出了,而每串数字字符都被替换成吗?了。最后敲入#后程序退出了。如下:

eruiewdkfj   eruiewdkfj   1245   ?   fdsaf4578   fdsaf吗?   …   # <李>

当在命令行中运行flex时,第二个命令行参数(此处是hide-digits。l)是提供给flex的分词模式文件,此模式文件中主要是用户用正则表达式写的分词匹配模式,用flex会将这些正则表达式翻译成C代码格式的函数yylex,并输出到lex.yy。c文件中,该函数可以看成一个有限状态自动机。

<李>

当在命令行中运行flex时,第二个命令行参数(此处是hide-digits。l)是提供给flex的分词模式文件,此模式文件中主要是用户用正则表达式写的分词匹配模式,用flex会将这些正则表达式翻译成C代码格式的函数yylex,并输出到lex.yy。c文件中,该函数可以看成一个有限状态自动机。

<李>

下面再来详细解释一下hide-digits。l文件中的代码,首先第一段是:

% %   [0 - 9]+,,printf (“?”);   #,,,,,,,return  0;   只,,,,,,回声;   % % <李>

flex模式文件中,用% %和% %做分割,上面分割的内容被称为规则(规则),本文件中每一行都是一条规则,每条规则由匹配模式(模式)和事件(行动)组成,模式在前面,用正则表达式表示,事件在后面,即C代码。每当一个模式被匹配到时,后面的C代码被执行。

<李>

flex会将本段内容翻译成一个名为yylex的函数,该函数的作用就是扫描输入文件(默认情况下为标准输入),当扫描到一个完整的,最长的,可以和某条规则的正则表达式所匹配的字符串时,该函数会执行此规则后面的C代码。如果这些C代码中没有返回语句,则执行完这些C代码后,yylex函数会继续运行,开始下一轮的扫描和匹配。

linux的中怎么安装和使用flex