1

我正在尝试解析一种自定义语言(与 JSON 不太相似),我决定尝试使用 boost expressive,因为它看起来很有趣。

但是,当一个 xpressive 匹配失败时,它只是失败了。有什么方法可以实现某种错误报告?就像 ' 表达式匹配到第 47 个字符(我可以从中获取行号)。

我可以看到人们如何在寻找它想要的标记或匹配项之后调整每个子表达式以查找其他标记或匹配项,并在这种情况下报告错误,但这似乎是一种非常复杂的方法。

是否有任何表达功能(或任何人都可以提出一种方法)可以让我这样做?

谢谢。

4

1 回答 1

0

我建议改用 ANTLR。这是 Boost Spirit/Qi 等酷炫、前沿的东西和 lex 和 yacc 等强大工具之间的良好折衷。它可以像你想要的那样做一些更智能的错误报告,而不需要太多的努力。

请注意,目前有 ANTLR 版本 2 和 3 都是常用的;2 包括 C++ 代码生成,而 3 不包括,因此您现在可能要坚持使用“旧”版本(如果 v3 最终具有 C++ 目标,移植应该相当简单)。

于 2011-02-13T17:17:23.253 回答