如何明确写出gnu flex的默认规则?
How to explictly write the default rule of gnu flex?
flex 手册说如下。
By default, any text not matched by a flex scanner is copied to the output
我想明白怎么写清楚。是这样的吗?
%%
. ECHO;
另外,如何禁用默认规则?
默认规则是:
.|\n ECHO;
(在每个开始条件下)
请记住 (f)lex 中的 .
不匹配换行符。
要禁用默认规则,请使用声明
%option nodefault
执行此操作后,如果您的规则未涵盖所有可能发生的情况,您将收到警告。如果您忽略警告并使用生成的扫描仪,如果输入不匹配任何模式,它将停止并出现致命错误。
由于您几乎不需要默认规则,因此我建议始终使用上述 %option
。
如果您有一些自己的默认规则,可以将其放在文件的最后一个规则中:
<*>.|\n /* default action here */
flex 手册说如下。
By default, any text not matched by a flex scanner is copied to the output
我想明白怎么写清楚。是这样的吗?
%%
. ECHO;
另外,如何禁用默认规则?
默认规则是:
.|\n ECHO;
(在每个开始条件下)
请记住 (f)lex 中的 .
不匹配换行符。
要禁用默认规则,请使用声明
%option nodefault
执行此操作后,如果您的规则未涵盖所有可能发生的情况,您将收到警告。如果您忽略警告并使用生成的扫描仪,如果输入不匹配任何模式,它将停止并出现致命错误。
由于您几乎不需要默认规则,因此我建议始终使用上述 %option
。
如果您有一些自己的默认规则,可以将其放在文件的最后一个规则中:
<*>.|\n /* default action here */