问题很简单,我已经使用 boost::spirit 编写了一个词法分析器,但是我似乎找不到生成 EOF 标记的方法。 - 那么如何去做呢?

最佳答案

什么是EOF token ?



token 迭代器 Spirit Lex 通过返回结束迭代器来发出“EOF”信号。

分词器 API ( lex::tokenize(...) ) 和 Spirit Qi 都理解这种行为(通过退出分词循环 (lex) 和/或通过使 qi::eoi 解析器成功匹配)。

例如。如果您需要断言解析到达输入的末尾,您只需说

 myrule = subrule1 >> subrule2 > qi::eoi;

或者,如果您想断言某些内容的存在(例如,关闭的 ; ),除非在输入结束时:
 myrule = subrule1 >> subrule2 >> (qi::eoi | ';');

我是否错过了一些没有像这样解决的问题?

关于token - boost::spirit::lex,如何生成文件尾标记?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18601253/

10-14 12:21