我正在尝试学习boost spirit,但文档中给出的示例让我有些困惑。
参考这段代码:
http://www.boost.org/doc/libs/1_46_1/libs/spirit/example/qi/roman.cpp
特别是语法的这一部分:
start = eps [_val = 0] >>
(
+lit('M') [_val += 1000]
|| hundreds [_val += _1]
|| tens [_val += _1]
|| ones [_val += _1]
)
有人能解释一下为什么是+lit('M')而不是*lit('M')吗?毕竟可能是零个或多个M,而不是一个或多个M。