Flex与Bison使用指南
1. Flex相关功能介绍
1.1 输入与重启
input()函数可开始读取新的输入。yyrestart(file)函数,其中file是标准I/O文件指针,可让扫描器从该文件开始读取。
1.2 起始状态
起始状态(也称为起始条件或起始规则)可在定义部分声明,用于限制某些规则的作用范围或改变词法分析器处理文件部分内容的方式。起始状态分为两种:
-包含状态(Inclusive):使用%s声明。例如:
%s INCLMODE %% ^"#include" { BEGIN INCLMODE; } <INCLMODE>"<" [^>\n]+">" { ... do something with the name ... } <INCLMODE>\n { BEGIN INITIAL; /* return to normal */ }- 排他状态(Exclusive):使用
%x声明。排他状态在激活时,没有起始状态的规则将不匹配。例如,识别C语言注释: