词法分析器flex教程
flex是基于正则表达式,用于对字符串进行提取和分析的工具。一般情况下,flex常用语编译器前端的词法分析阶段。flex程序读取用户输入的词法单元描述文件,生成lex.yy.c文件,接着使用c语言编译器编译该文件即可。学会使用flex,可以简化我们在文本分析中的工作,利用已有的工具即可。
flex输入文件的格式
flex输入文件中包含三个部分,即定义、规则和用户代码。格式如下:
definitions
%%
rules
%%
user code
在定义和规则部分,任何处于符号“%{”和“%}”之间的字符都会原样复制到输出中。
flex模式的规则
flex中的模式是扩展正则表达式,其中稍微不通的地方在与flex中双引号间的字符都会原样匹配,即使其中包含运算符。而在正则表达式中,则是通过转义符号来实现对运算符的匹配(flex中也支持此方法)。
一个简单的事例
flex代码如下:
测试代码:
输出结果,读者可以自行尝试。