2011-06-26 56 views
0

Boost Spirit Qi語法分析器的語法非常棒,我一直都在用它來做小事情。但是,有時我希望能夠編寫獨立的語法。有什麼辦法可以編寫單獨編譯的boost :: spirit :: qi語法嗎?

這很容易在一次編譯中通過#include合適的語法並將它們拼接在一起進行一次編譯。但是,這使編譯時間開始進入屋頂。還有其他缺點。

有什麼辦法可以編寫單獨編譯的語法嗎?換句話說,我想在一個頭文件中定義一個語法接口,實現這個模板,並且它是一個獨立編譯單元中的特定Iterator的實例化,然後能夠使用另一個語法的語法,而不需要完整的模板定義在編譯時可見。換句話說,我希望能夠間接使用規則中的語法

這樣的事情可能嗎?如果是這樣,一個人會怎麼做呢?

回答

1

我不認爲這是Spirit特有的東西,而是C++ 101.如果您需要編寫多個文法,您需要包含相應的頭文件,以定義您在編寫時要使用的文法。你可能想要做的是將語法構造函數的編譯分離成單獨的編譯單元。請參閱Spirit計算器示例(mini_c和其他)以瞭解如何完成此操作。這樣可以避免編譯時間過長。

+0

謝謝。 mini_c示例的確顯示瞭如何做到這一點,但是我被實現仍然存在於「頭文件」文件中(例如,mini_cc.hpp中的語句語法)拋出。實際上,這些頭文件中的語法構造函數僅包含在一個單獨的編譯單元中(例如,用於語句語法的mini_cc.cpp)中的一次實例化。我只是沒有看得很近。 – wjl

相關問題