2015-05-14 16 views
5

Tôi đang viết một ngôn ngữ đồ chơi trong haskell. Tôi đang sử dụng Alex để tạo ra một máy quét. Mỗi lần tôi xây dựng dự án của tôi với cabal, tôi nhận được những lời cảnh báo sau đây:Haskell/Alex: Cảnh báo: Tab ký tự

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) 

Dường như máy quét alex tạo sử dụng các tab thay vì không gian, và hành vi mặc định GHC là để cảnh báo người dùng về vấn đề này.

Có ai biết cách để buộc alex sử dụng không gian, hoặc để ngăn chặn những cảnh báo đó từ ghc (qua cabal) không?

+4

Cảnh báo này là do một lỗi trong Alex, dường như đã được Simon Marlow cố định cách đây hai tuần. Xem https://github.com/simonmar/alex/issues/61. Hãy thử tải phiên bản mới nhất của Alex. – Jubobs

+0

@Jubobs rất hay để biết, cảm ơn bạn đã đứng đầu. Bản cập nhật dường như không đạt đến Hackage hoặc repos của tôi, nhưng tôi có thể chịu đựng được vấn đề cho đến lúc đó. – AlexJ136

Trả lời

8

Như đã đề cập trong các nhận xét, điều này được cho là đã được sửa trong chủ nhân alex. Cho đến khi bạn có thể sử dụng phiên bản cố định, bạn có thể thử thêm

ghc-options: -fno-warn-tabs 

vào tệp .cabal của bạn.

+2

Có thể làm cho lá cờ đó chỉ áp dụng cho các mô-đun mà Alex tạo ra không? Nó trông giống như một cái búa nặng. – dfeuer

+0

Thực tế ... Tôi không tin rằng điều này đã được sửa. Cam kết mà bạn trỏ đến chỉ xóa các tab khỏi mã nguồn Alex chứ không phải từ mã mà nó tạo ra. – dfeuer

+0

Điều đó sẽ hoạt động tốt trong thời gian này. Chúc mừng. – AlexJ136

Các vấn đề liên quan