Add*_*ddy 4 c++ boost boost-spirit boost-spirit-qi
如何在规则开始时检测到错误?例如,考虑文档中包含的Mini XML示例.如果我为解析器提供类似的东西:
<element>this is an error<element>
Run Code Online (Sandbox Code Playgroud)
然后我得到:
错误!期待这里:""
错误!期待这里:""
解析失败了.
那很好,但后来考虑喂它:
element>this is an error</element>
Run Code Online (Sandbox Code Playgroud)
我得到的非常通用,不太有用:
解析失败了.
如何修改规则以信息方式报告错误?
您需要在文档根级别要求一个元素.
其他消息由失败的期望点生成.你会想要一个额外的期望点.我这样做:
xml规则重命名为element创建一个xml具有期望点元素的新规则:
xml = qi::eps > element;
Run Code Online (Sandbox Code Playgroud)[别改变别的]
利润!
输出变为:
Error! Expecting <element> here: "element>this is a test</element>
"
-------------------------
Parsing failed
-------------------------
Run Code Online (Sandbox Code Playgroud)