首页 > 解决方案 > 使用 FParsec 解析多个语句时不显示错误

问题描述

我有一个语句解析器,当我使用这个作为解析器参数运行程序时,会显示所有错误。为了能够解析多个语句,我定义了一个新的解析器;但是,当有错误时,它不会显示它们。

这是这个解析器:

(* -------- Program -------- *)

let pprog, pprogimpl = createParserForwardedToRef ()
pprogimpl := attempt (many pstatement |>> Program)

pstatement通过另一个解析器定义所有可能的语句。

我想知道为什么pprog解析器不显示错误。我犯错了吗?忘记什么?

编辑

我终于能够通过更改many' instruction, and replacing it withmanyTill 来解决错误。显然,问题出在他无法处理“列出的”错误这一事实,如果你知道更多,我很想知道。

let pprog, pprogimpl = createParserForwardedToRef ()
pprogimpl := (attempt (manyTill (pstatement) eof) |>> Program)

标签: f#parsecfparsec

解决方案


推荐阅读