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

时间:2019-02-09 04:52:31

标签: flex-lexer

flex手册说以下话。

  

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

我想了解如何明确地编写它。是这样吗?

%%
. ECHO;

还有,如何禁用默认规则?

1 个答案:

答案 0 :(得分:1)

默认规则为:

.|\n    ECHO;

(在每个启动条件下)

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

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

%option nodefault

执行此操作后,如果您的规则未涵盖所有可能的情况,则会收到警告。如果您忽略该警告并使用生成的扫描仪,则如果输入与任何模式都不匹配,它将以致命错误停止。

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

如果您有自己的默认规则,则可以将其作为文件中的最后一条规则放在

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