【发布时间】:2013-08-12 17:34:44
【问题描述】:
我的解析器语法底部有以下错误处理程序:
qi::on_error<qi::fail>(
launch,
std::cerr << phoenix::val("Paring error in ") << spirit::_4 << std::endl
<< phoenix::construct<std::string>(spirit::_3, spirit::_2)
<< std::endl
);
问题在于解析器的输入事先没有被新行分解,因此生成的错误语句将是源代码中从错误点到结尾的所有行。有没有直接的替代方法
phoenix::construct<std::string>(spirit::_3, spirit::_2)
只打印发生错误的那一行?如果我尝试仅搜索 '\n',Phoenix 语义会给我带来麻烦。
【问题讨论】:
标签: c++ boost-spirit boost-spirit-qi