2011-06-16 95 views
0

我在這個文件中的數據解析AST風格:的boost ::精神 - 從隨機放置項

#TITLE:Destiny; 
#SUBTITLE:; 
#ARTIST:Smiley; 
#BACKGROUND:bg.png; 
#SAMPLESTART:43.960; 
#SAMPLELENGTH:12.000; 

我想用AST解析成這樣的結構:

struct data { 
    std::string title, subtitle, artist, background; 
    double samplestart, samplelength; 
}; 

注意:文件中的條目可能以任何順序出現。

我在想是這樣的:

struct prs : qi::symbols< char, qi::parser<...> > { 
    prs() { 
    add 
     ("TITLE", link_to_some_str_parser) 
     ("SAMPLESTART", link_to_some_dbl_parser); 
    } 
}; 

,然後用它來得到正確的解析程序運行時可能使用[]語法來存儲解析結果到一些變量。

現在的主要問題。這甚至會編譯?能不能以這種方式使用qi ::符號,這是否有意義? 否則你會怎麼做?

謝謝! Alex

回答

0

我建議使用置換解析器(見here),它允許以任何順序匹配一堆替代品。

+0

謝謝。但這在AST方式下無法正常工作,對吧? – 2011-06-23 07:13:29

+0

爲什麼你認爲它不適用於AST?它應該工作得很好。 – hkaiser 2011-06-23 09:59:19

+0

我看不出任何方式使用AST和我的結構一起使用無序的條目。我錯過了什麼嗎?謝謝 – 2011-06-23 13:26:46