2013-04-15 27 views
4

如何在規則開始時檢測到錯誤?例如,請考慮文檔中包含的Mini XML example。如果我喂解析器是這樣的:Boost.Spirit.Qi - 規則開始處的錯誤

<element>this is an error<element> 

然後我得到:

錯誤!期待在這裏:「」

錯誤!期待在這裏:「」

解析失敗。

這很好,但再考慮餵養它:

element>this is an error</element> 

我也得到了非常通用並沒有那麼有用:

解析失敗。

我該如何修改規則以報告方式報告錯誤?

回答

8

你想要求在文檔根級別的元素。

其他消息由失敗產生期望點。你需要額外的期望點在開始。我應該這樣做:

  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

+0

注:在精神X3只是使用'X3 ::期待[]' – sehe