如何明确地编写gnu-flex的默认规则



flex手册说明如下。

默认情况下,任何与flex扫描仪不匹配的文本都会复制到输出

我想知道如何把它写得清晰明了。是这样的吗?

%%
. ECHO;

此外,如何禁用默认规则?

默认规则为:

.|n    ECHO;

(在每种启动条件下)

请记住,(f)lex中的.与换行符不匹配。

要禁用默认规则,请使用声明

%option nodefault

一旦你这样做了,如果你的规则没有涵盖所有可能发生的事情,你会得到警告。如果忽略警告并使用生成的扫描程序,如果输入与任何模式都不匹配,它将停止并出现致命错误。

由于您几乎不想要默认规则,我建议您始终使用上面的%option

如果你有自己的默认规则,你可以把它作为文件中的最后一条规则:

<*>.|n   /* default action here */

最新更新