4

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

<element>this is an error<element>

然后我得到:

错误!在这里期待:“”

错误!在这里期待:“”

解析失败。

没关系,但然后考虑喂它:

element>this is an error</element>

而且我得到了非常通用且不太有用的内容:

解析失败。

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

4

1 回答 1

8

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

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

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

        xml = qi::eps > element;
    
  3. [不要改变任何东西]

  4. 利润!

输出变为:

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

在这里看到它

于 2013-05-16T22:34:43.917 回答