2015-05-14 13 views
5

Ich schreibe eine Spielzeugsprache in Haskell. Ich benutze Alex, um einen Scanner zu erstellen. Jedes Mal, wenn ich mein Projekt mit Kabale bauen, erhalte ich die folgenden Warnungen:Haskell/Alex: Warnung: Tab-Zeichen

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) 

Es scheint, dass der alex-generierten Scanner Registerkarten anstelle von Leerzeichen verwendet, und ghc Standardverhalten ist, den Benutzer darüber zu warnen.

Kennt jemand eine Möglichkeit, entweder Alex zu zwingen, Leerzeichen zu verwenden, oder diese Warnungen von ghc (via cabal) zu unterdrücken?

+4

Diese Warnung wird durch einen Fehler in Alex verursacht, der vor zwei Wochen von Simon Marlow behoben wurde. Siehe https://github.com/simonmar/alex/issues/61. Versuchen Sie, die neueste Version von Alex zu bekommen. – Jubobs

+0

@Jubobs gut zu wissen, danke für das Heads-up. Das Update scheint noch nicht die Repos von Hackage oder meiner Distribution erreicht zu haben, aber ich kann das Problem bis dahin tolerieren. – AlexJ136

Antwort

8

Wie in den Kommentaren erwähnt, ist dies angeblich in Alex Master behoben. Bis Sie die feste Version verwenden können, können Sie versuchen,

zu Ihrer .cabal-Datei hinzuzufügen.

+2

Ist es möglich, dieses Flag nur für die Module zu aktivieren, die Alex generiert? Es sieht aus wie ein schwerer Hammer. – dfeuer

+0

In der Tat ... Ich bin nicht davon überzeugt, dass dies behoben wurde. Das Commit, auf das Sie verweisen, entfernt nur Registerkarten aus dem Alex-Quellcode, nicht aus dem generierten Code. – dfeuer

+0

Das wird vorerst gut funktionieren. Prost. – AlexJ136