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

multiple errors with different positions using megaparsec

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

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

例如在这个 java 代码中:

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

有error1"expected type at line 3 column 10"和error2"missing semicolon at line 5 column 22"

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

如果您确定 Alec 的建议,但不想 Either (ParseError ...) (Either (ParseError ...) a),您可以只对该值使用 Control.Monad.join 将其变成 Either (ParseError ...) a。抱歉,如果这不是很有帮助