所以我的问题很简单,在我的词法分析器类(扩展lex::lexer<T>)中,我有以下内容;

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

在我的构造函数内部,该函数可以很好地进行编译,但是会在运行时触发SegFault。这个问题很明显|是正则表达式系统中的“或”运算符,如何解决这个问题?

最佳答案

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

所以你会用

 ("\\|\\|", OR_OR)
C++字符串解析器将每对中的第一个反斜杠视为转义字符,从而将第二个反斜杠放入字符串内容中。然后,Spirit::Lex看到字符串内容中的反斜杠,并转义了正则表达式运算符。

关于c++ - Boost::Spirit::Lex;如何指定 token “||”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18346489/

10-12 19:01