2016-02-04 82 views
2

我已經經歷了Boost.Spirit X3文件我已經能夠找到---這是沒有太大---並認爲我想用這對我的下一個解析的項目。值得注意的是,我從未使用過Boost.Spirit Classic或V2,但已經使用過flex/bison和ANTLR。Spirit X3解析器啓動狀態?

我期待解析的格式,在其最基本的意義上說,是這樣的:

unimportant 
foo 
bar 
# BEGIN 
parse this 
... 
# END 
ignore this 

其中只有「#BEGIN」和「#END」之間的文本進行解析,其他一切都是完全忽略。我正試圖找出一種在X3解析器中實現這一點的有效方法。我有一些想法:

  1. 使用基本的字符串搜索功能來限制解析的範圍。這似乎是最糟糕的選擇,因爲文本將被多次處理,而不是一次處理。
  2. 看着Spirit.Lex。再次,我發現在Spirit.Lex上找到任何合適的閱讀材料都有些困難,但Lex似乎提供了詞彙開始狀態,這將是處理這項工作的傳統方式。順便說一句,因爲X 3是C++ 14基和Spirit.Lex是建立在lexertl頂部,有一個配置選項或方式使用Spirit.Lex與現代化lexertl14?
  3. 也許,這X3來處理這一些有意義的方式?由於語法實際上非常簡單,我認爲有一個單獨的詞法分析器是過度的。

回答