2016-02-04 95 views
1

我試圖端口分析器從精神到V2 X3。整體體驗非常好,但有兩個問題。升壓精神X3局部變量和獲得綜合屬性

第一個是局部變量都消失了,這是相當不方便了我,因爲我用他們經常跟蹤的東西。因此,我要求一些可以在V2中完成當地人工作的東西。

另一種是最好的與此虛擬實例說明:我要分析一個逗號分隔的整數列表爲vector<int>,但它應該只解析時,列表總結了零:

auto const int_list = rule<class int_list, vector<int>>("int_list") 
    = int_ % ',' 
    >> eps(/* How to extract the attribute? */); 

我因爲我不知道如何讓我的手掌上vector<int>這條規則正在合成,所以我堅持最後一次檢查。

回答

2

我有同樣的發現!

訣竅與「本地人」是使用with<>指令。

因爲你給不使用的情況下,我不認爲這是值得想出例子,雖然你可以搜索我的答案,讓他們*

與第二訣竅是隻使用一個語義動作(其可以是一個lambda)並分配_passBoost Spirit X3 cannot compile repeat directive with variable factor也顯示了這一點:

auto zerosum = [](auto &ctx) { 
    auto& v = x3::_attr(ctx); 
    _pass(ctx) = std::accumulate(v.begin(), v.end(), 0) == 0; 
}; 
+0

感謝您的回答,並很抱歉接受這麼晚。我會嘗試一次,我回來了我的筆記本電腦:) – LChris314

+0

沒問題。我希望你的筆記本電腦和你不會經歷長期離婚:) – sehe