Boost.Spirit.Qi - 规则开头的错误

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)

我得到的非常通用,不太有用:

解析失败了.

如何修改规则以信息方式报告错误?

seh*_*ehe 8

需要在文档根级别要求一个元素.

其他消息由失败的期望点生成.你会想要一个额外的期望点.我这样做:

  1. 将旧xml规则重命名为element
  2. 创建一个xml具有期望点元素的新规则:

        xml = qi::eps > element;
    
    Run Code Online (Sandbox Code Playgroud)
  3. [别改变别的]

  4. 利润!

输出变为:

Error! Expecting <element> here: "element>this is a test</element>
"
-------------------------
Parsing failed
-------------------------
Run Code Online (Sandbox Code Playgroud)

在这里看到