3

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

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

例如在这个java代码中:

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

有error1“第3行第10列的预期类型”和error2“第5行第22列缺少分号”

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

4

1 回答 1

0

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

于 2016-09-26T03:21:39.177 回答