这篇“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