我正在尝试使用boost::spirit
编写一个解析器,该解析器将匹配可能还包含_字符的字母数字序列,但会在'和中排除文字' '出'(rule0
)。
例如,它应匹配“abc3x3_”,“_ hello”,“in_12”,“out_in”等。 但是不匹配“in”或“out”。
下面的 rule1
旨在实现这一目标。
typedef boost::spirit::qi::rule <const char*, string(), ascii::space_type> myRule;
myRule rule0 = qi::lit("in") | "out";
myRule rule1 = ((qi::alpha | '_') >> *(qi::alnum | '_')) - rule0;
问题在于不匹配包含来自rule0
的文字作为子字符串的字符串:
例如,它与“_ in”,“in_12”,“out1”等不匹配。
我哪里错了?