【问题标题】:Boost.Spirit.Qi - Errors at the beginning of a ruleBoost.Spirit.Qi - 规则开头的错误
【发布时间】:2013-04-15 19:03:52
【问题描述】:

如何在规则开始时检测错误?例如,考虑文档中包含的Mini XML example。如果我给解析器提供如下内容:

<element>this is an error<element>

然后我得到:

错误!在这里期待:“”

错误!在这里期待:“”

解析失败。

没关系,但接下来考虑喂它:

element>this is an error</element>

我得到了非常通用但没那么有用的:

解析失败。

如何修改规则以提供信息丰富的错误报告?

【问题讨论】:

    标签: c++ boost boost-spirit boost-spirit-qi


    【解决方案1】:

    您希望在文档根级别需要一个元素。

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

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

          xml = qi::eps > element;
      
    3. [不要更改任何其他内容]

    4. 利润!

    输出变成:

    Error! Expecting <element> here: "element>this is a test</element>
    "
    -------------------------
    Parsing failed
    -------------------------
    

    it live here

    【讨论】:

    • 注意:在精神X3中只需使用x3::expect[]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    相关资源
    最近更新 更多