【发布时间】:2019-02-09 04:52:31
【问题描述】:
flex 手册说如下。
默认情况下,任何不被 flex 扫描器匹配的文本都会被复制到输出中
我想了解如何明确地编写它。是这样的吗?
%%
. ECHO;
另外,如何禁用默认规则?
【问题讨论】:
标签: flex-lexer
flex 手册说如下。
默认情况下,任何不被 flex 扫描器匹配的文本都会被复制到输出中
我想了解如何明确地编写它。是这样的吗?
%%
. ECHO;
另外,如何禁用默认规则?
【问题讨论】:
标签: flex-lexer
默认规则是:
.|\n ECHO;
(在每个开始条件下)
请记住,(f)lex 中的 . 不匹配换行符。
要禁用默认规则,请使用声明
%option nodefault
一旦你这样做了,如果你的规则没有涵盖所有的可能性,你会收到一个警告。如果您忽略警告并使用生成的扫描仪,如果输入与任何模式都不匹配,它将停止并出现致命错误。
由于您几乎不需要默认规则,我建议始终使用上述%option。
如果您有自己的默认规则,可以将其放在文件中的最后一条规则:
<*>.|\n /* default action here */
【讨论】: