哈斯克尔。为什么我的解析器失败

时间:2018-07-08 20:45:27

标签: parsing haskell trifecta

作为bitemyapp编写的Haskell书的练习,我需要制作一个可以解析给定日志的解析器。 所以我做了这个:https://gist.github.com/RoelofWobben/79058b1a6a5c24f08a495045c7a685f9

但是当我使用:`parseString parseMultipleDays myLog进行测试时,我看到此错误消息:

Failure (ErrInfo {_errDoc = (interactive):3:1: error: expected: new-line
# 2025-02-05
^            , _errDeltas = [Lines 2 0 20 0]})

任何可以给我提示错误所在的人。必要时,我可以通过一些测试回购我拥有的代码。

我之所以使用trifecta,是因为

1 个答案:

答案 0 :(得分:1)

string "--" *> manyTill anyChar newline *> newline

manyTill已经使用了终止符,因此上面将注释定义为“-”,后接任何内容,后接两条换行符。

您的输入仅在注释后包含一个换行符,因此您会收到一条错误消息,告诉您解析器需要第二个换行符,而不是#