如何在attrparsec中解析/跳过特定字符?

时间:2015-04-03 17:52:20

标签: parsing haskell

我正在尝试学习如何使用attrparsec模块,所以通过解析我的一个日志文件来练习。

我在行解析器的开头有以下代码:

 lineParser :: Parser LogEntry
 lineParser = do
    theMonth <- monthParser
    skipSpace
    theDate <- decimal
    skipSpace
    theHour <- decimal
    skipColon
    theMinute <- decimal
    skipColon
    theSecond <- decimal
    return  LogEntry { monthOfYear = theMonth,  dayOfMonth = theDate,
    hourOfDay = theHour, minuteOfHour = theMinute, secondOfMinute = theSecond}

但是我遇到了skipColon函数的问题。我尝试了各种版本,例如

skipColon = isColon 
   where isColon c = c == ':'

但我只是得到了类型错误

我本来希望简单地写一些像

这样的东西
skipChar ':'

但也无法解决这个问题。

围绕Char vs Word8的各种类型错误,但大多数搜索结果都是关于将Word8转换为Char,而不是相反。

会感激一些指导。非常感谢。

1 个答案:

答案 0 :(得分:0)

AJFarmer发布了最佳答案。 只需使用

char ':'

但是,您将收到有关丢弃值的警告,以避免该警告写入

_ <- char ':'

感谢您的回答。