我有一个语句解析器,当我使用该语句作为解析器参数运行程序时,将显示所有错误。为了能够解析几条语句,我定义了一个新的解析器。但是,当有错误时,它不会显示它们。
这是解析器:
(* -------- Program -------- *)
let pprog, pprogimpl = createParserForwardedToRef ()
pprogimpl := attempt (many pstatement |>> Program)
pstatement
通过另一个解析器定义所有可能的语句。
我想知道为什么pprog
解析器不显示错误。我做错了吗?忘了吗?
修改
我终于能够通过更改many' instruction, and replacing it with
manyTill`来解决错误。显然,问题出在他无法处理“列出的”错误这一事实上,如果您仍然知道更多,我很想知道。
let pprog, pprogimpl = createParserForwardedToRef ()
pprogimpl := (attempt (manyTill (pstatement) eof) |>> Program)