我挖掘了整个documentation并找不到一个例子。所有示例都要么解析字符数据,要么使用Spirit.Lex。如果我错过了什么,请原谅我。
有人可以举例说明如何在我的自定义词法分析器中使用Boost.Spirit.Qi,或指向教程吗? E.g:
vector<MyTokenType> tokens = GetTokens();
// use boost spirit to work with MyTokenType on per-token granularity
答案 0 :(得分:3)
你必须做一些事情:
a)将令牌序列公开为一系列迭代器,这些迭代器必须传递给parse / phrase_parse b)向您的令牌类型添加一个默认转换运算符,公开令牌ID
struct token
{
operator int() const { return id; }
};
允许使用qi::char_(ID)
作为匹配令牌ID为ID
的令牌的解析器组件。
更多地涉及集成属性(标记值),请查看Spirit.Lex如何完成它。