【问题标题】:How to explictly write the default rule of gnu flex?如何显式编写gnu flex的默认规则?
【发布时间】:2019-02-09 04:52:31
【问题描述】:

flex 手册说如下。

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

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

%%
. ECHO;

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

【问题讨论】:

    标签: flex-lexer


    【解决方案1】:

    默认规则是:

    .|\n    ECHO;
    

    (在每个开始条件下)

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

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

    %option nodefault
    

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多