我正在编写一个解析器,用于使用缩进等非常复杂的配置文件。我决定使用Lex将输入分解为令牌,因为它似乎使生活更轻松。问题是我找不到任何使用Qi错误报告工具的例子(on_error
)使用解析器来处理令牌流而不是字符。
要使用的错误处理程序 on_error
需要一些能够准确指出错误在输入流中的位置。所有例子都是构建的 std::string
从这对迭代器中打印出来。但是如果使用Lex,则迭代器是标记序列的迭代器,而不是字符。在我的节目中,这导致了进入 std::string
构造函数之前我注意到无效的迭代器类型。
据我所知,令牌可以将输入流的一对迭代器作为其值。这是默认属性类型(如果类型是这样的 lex::lexertl::token<>
)。但是,如果我希望我的令牌包含更有用的解析(int
, std::string
等等),那些迭代器丢失了。
如何在使用带Qi的Lex时生成指示输入流中位置的人性化错误消息?有这种用法的例子吗?
谢谢。