我最近一直在玩 boost::spirit::qi 并且一直在尝试编写我自己的(非常非常简单的)脚本语言来解析它。当我处理脚本中的 if 语句时,我遇到了麻烦。如果函数调用返回真,我需要解析器跳过部分输入。
例如,我将标记定义为接受变量名 (a-zA-Z_),并将比较设置为接受“>”或“<”。代码示例如下。
comparison_statement = token >> comparison >> token;
statement = lit("if ") >> comparison_statement[&compare] >> "then";
qi::phrase_parse(first, last, script, space); // This call the parser
如果函数 compare 返回 true,我将如何跳过下一部分?