如何抑制生成代码中的警告?

How can I suppress warnings in generated code?

我正在与 Alex 和 Happy 一起构建词法分析器和解析器。他们生成的代码在我项目的 .cabal 文件中打开 ghc-options: -Wall 时抛出大量警告。

这使得很难捕捉到真正的警告。如何仅在生成的文件中关闭警告?我知道这可以用 pragma 来完成:

{#- GHC_OPTIONS -w -#}

但我想不出一个简单的方法来将此 pragma 粘贴在每个生成的文件的顶部,每次重建它们时。

正确的做法是什么?

一个典型的 alex 文件以顶部的一些内容开始——通常是一个模块声明,它将被逐字复制到生成的文件中:

{
module Main where
}
%wrapper "basic"
...

所以只需在 module Main ... 行之前添加 GHC_OPTIONS pragma,例如:

{
{-# GHC_OPTIONS -w #-}
module Main where
}
%wrapper "basic"

它会出现在您生成的文件中。快乐的文件也可以这样做。