Haskell 使用megaparsec时出现多个位置不同的错误

Haskell 使用megaparsec时出现多个位置不同的错误,haskell,megaparsec,Haskell,Megaparsec,我将使用megaparsec解析大学项目的编程语言。然而,我一直在寻找报告多个错误的方法 我知道关于恢复,我看到了问题,但我没有发现错误发生在不同位置的情况 例如,在此java代码中: class A { public get() // line 3 column 10 { return x // line 5 column 22 } } 错误1“第3行第10列的预期类型”和错误2“第5行第22列的分号缺失” 我知道我可以将错误信息与故障结合起来,但是

我将使用megaparsec解析大学项目的编程语言。然而,我一直在寻找报告多个错误的方法

我知道关于恢复,我看到了问题,但我没有发现错误发生在不同位置的情况

例如,在此java代码中:

class A
{ 
    public get() // line 3 column 10
    {
        return x // line 5 column 22
    }
}
错误1“第3行第10列的预期类型”和错误2“第5行第22列的分号缺失”


我知道我可以将错误信息与
故障
结合起来,但是多个位置如何?我该怎么做?

如果您确定Alec的建议,但不想让
或(ParseError…)或(ParseError…)a
,您可以使用Control.Monad.join将该值转换为
或(ParseError…)a
。抱歉,如果这没有太大帮助的话

一篇关于介绍
with recovery
@Alec谢谢,我看到了它,但它使ParseError成为解析器结果的一部分,当你调用
runParser
时,它将返回
other(ParseError…)(other(ParseError…)a)
,这对我来说有点难看?!!