【问题标题】:Haskell/Alex: Warning: Tab characterHaskell/Alex:警告:制表符
【发布时间】:2015-05-14 11:49:57
【问题描述】:

我正在用 haskell 编写一种玩具语言。我正在使用 Alex 生成扫描仪。每次我使用 cabal 构建项目时,都会收到以下警告:

dist/build/optimiser/optimiser-tmp/Lexer.hs:465:1: Warning:
    Tab character

dist/build/optimiser/optimiser-tmp/Lexer.hs:466:1: Warning:
    Tab character

dist/build/optimiser/optimiser-tmp/Lexer.hs:467:1: Warning:
    Tab character

dist/build/optimiser/optimiser-tmp/Lexer.hs:471:1: Warning:
    Tab character

dist/build/optimiser/optimiser-tmp/Lexer.hs:472:1: Warning:
    Tab character

(plus about 10 more of these warnings)

似乎 alex 生成的扫描程序使用制表符而不是空格,而 ghc 的默认行为是警告用户。

是否有人知道强制 alex 使用空格或抑制来自 ghc(通过 cabal)的警告的方法?

【问题讨论】:

  • 这个警告是由 Alex 中的一个错误引起的,Simon Marlow 似乎在两周前修复了这个错误。见github.com/simonmar/alex/issues/61。尝试获取最新版本的 Alex。
  • @Jubobs 很高兴知道,感谢您的提醒。更新似乎还没有到达 Hackage 或我的发行版的 repos,但我可以容忍这个问题直到那时。

标签: haskell cabal alex


【解决方案1】:

正如 cmets 中提到的,这应该在 alex master 中得到修复。在可以使用固定版本之前,可以尝试添加

ghc-options: -fno-warn-tabs

到您的 .cabal 文件。

【讨论】:

  • 是否可以使该标志仅应用于 Alex 生成的模块?它看起来像一把重锤。
  • 事实上......我不相信这是固定的。您指向的提交仅从 Alex 源代码中删除选项卡,而不是从它生成的代码中删除。
  • 暂时还不错。干杯。
  • @dfeuer 你不能手动将{-# GHC_OPTIONS #-} 添加到 Alex 输入文件的顶部吗?
  • @MathematicalOrchid 那应该是OPTIONS_GHC。所以要清楚:{-# OPTIONS_GHC -fno-warn-tabs #-} 应该在.x 的顶部。
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
相关资源
最近更新 更多