使用megaparsec的不同位置的多个错误

时间:2016-09-23 18:43:38

标签: haskell megaparsec

我将使用megaparsec来解析大学项目的编程语言。但是,我搜索了一种报告多个错误的方法。

我知道withRecovery并且我看到this问题,但我没有发现错误发生在不同位置的情况。

例如在这个java代码中:

class A
{ 
    public get() // line 3 column 10
    {
        return x // line 5 column 22
    }
}

第3行第10列和第34行有错误1"预期类型;和错误2"在第5行第22列和第34行丢失分号;

我知道我可以将错误消息与failure结合起来,但多个位置怎么样?我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您确定Alec的建议,但又不想拥有Either (ParseError ...) (Either (ParseError ...) a),则可以在该值上使用Control.Monad.join将其转换为Either (ParseError ...) a。对不起,如果这不是太有帮助