2013-08-20 28 views
1

所以我的問題很簡單,在我的詞法分類(擴展爲lex::lexer<T>)中,我有以下幾點;Boost :: Spirit :: Lex;我如何指定標記「||」?

this->self.add 
    ... 
    ("&&", AND_AND) 
    ("||", OR_OR) 
    ... 

在我的構造函數中,編譯得很好,但在運行時觸發SegFault。這個問題很明顯|是正則表達式系統中的'或'運算符,我該如何解決這個問題?

回答

4

http://www.boost.org/doc/libs/1_54_0/libs/spirit/doc/html/spirit/lex/quick_reference/lexer.html

\X 

如果X是A,B,E,N,R,F,T,V然後\ x的ANSI-C解釋。否則字面X(用於轉義運算符,例如*)

,因此會使用

("\\|\\|", OR_OR) 

每對中的第一個反斜槓被視爲由C++串分析器轉義字符,從而使第二個放入字符串內容。字符串內容中的反斜槓然後被Spirit :: Lex看到並且用於逃避正則表達式運算符。

+0

哦,哇,我看着完全一樣的頁面,沒有看到這個..必須越來越晚。不管怎樣,謝謝!接受! – Skeen

相關問題