Haskell/Alex:警告:制表符

Ale*_*136 6 haskell cabal alex

我在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)
Run Code Online (Sandbox Code Playgroud)

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

是否有人知道如何强制亚力克使用空格,或者从ghc(通过cabal)压制这些警告?

Dan*_*ner 9

正如评论中所提到的,这可以在alex master中修复.在您可以使用固定版本之前,您可以尝试添加

ghc-options: -fno-warn-tabs
Run Code Online (Sandbox Code Playgroud)

到您的.cabal文件.

  • @MathematicalOrchid应该是'OPTIONS_GHC`.所以要明确:`{ - #OPTIONS_GHC -fno-warn-tabs# - }`应该位于`.x`的顶部. (4认同)
  • 是否可以使该标志仅适用于Alex生成的模块?它看起来像一把重锤. (2认同)