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 に答える