我将使用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
结合起来,但多个位置怎么样?我该怎么做?
答案 0 :(得分:0)
如果您确定Alec的建议,但又不想拥有Either (ParseError ...) (Either (ParseError ...) a)
,则可以在该值上使用Control.Monad.join将其转换为Either (ParseError ...) a
。对不起,如果这不是太有帮助