是否可以使用boost :: xpressive语法报告语法错误?

时间:2011-02-10 12:25:50

标签: c++ parsing boost grammar xpressive

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

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

我可以看看如何定制每个子表达式以查找其他令牌或匹配后查找它想要的那个,并在这种情况下报告错误,但似乎这是一种非常复杂的做法它

是否有任何表达性的功能(或任何人都可以建议一种方法)允许我这样做?

感谢。

1 个答案:

答案 0 :(得分:0)

我建议改用ANTLR。这是一个很好的折衷方案,比如Boost Spirit / Qi这样的酷炫流畅的东西和像lex和yacc这样的坚定工具。它可以像你想要的那样做一些更聪明的错误报告而不需要太多努力。

请注意,目前ANTLR版本2和3都是常用的; 2包括C ++代码生成而3不包含,所以你可能想要暂时使用“旧”版本(如果v3最终有一个C ++目标,移植应该相当简单。)