2010-02-02 18 views
4

我有模式的一部分,我需要解析一個模型。可以說它看起來像下面這樣。boost ::靈魂語法未排序模式

{ 
    type = "Standard"; 
    hostname="x.y.z"; 
    port="123"; 
} 

的屬性是:

  1. 元素可以出現無序的。
  2. 作爲架構一部分的所有元素都必須顯示,而不能包含其他元素。
  3. 所有元素的合成屬性都放入結構中。
  4. (可選)模式將來可能取決於類型字段 - 即基於類型的不同字段 - 但我現在不擔心這一點。
+0

「只有所需的元素纔會出現(由類型名稱指定)」:「type」鍵的值指示了該段中其他哪些鍵是有效的? – 2010-02-02 09:50:23

+0

@somebody:不是在這種情況下 - 但這是一個很好的觀點,我可以從任何這樣的見解中受益 - 畢竟type =「erlang」可能需要比主機名和端口更多的東西。 – 2010-02-02 09:54:06

回答

4

根據Spirit論壇,以下是答案。

你可能想看看 排列解析器:

a^b^c 

這在任何序列或B或C(或 它們的組合)相匹配。

如果目標是解析成一個結構,除了測試天氣所有必要部件都被初始化,該結構構件應與boost::optional<>包裹的屬性存在可隨後過程中容易地檢測的解析後的最佳方式運行。

+0

天氣是否 – Viet 2010-05-09 06:31:57