使用Boost.Spirit.Qi和自定义词法分析器

时间:2011-06-04 12:48:10

标签: c++ boost boost-spirit

我挖掘了整个documentation并找不到一个例子。所有示例都要么解析字符数据,要么使用Spirit.Lex。如果我错过了什么,请原谅我。

有人可以举例说明如何在我的自定义词法分析器中使用Boost.Spirit.Qi,或指向教程吗? E.g:

vector<MyTokenType> tokens = GetTokens();
// use boost spirit to work with MyTokenType on per-token granularity

1 个答案:

答案 0 :(得分:3)

你必须做一些事情:

a)将令牌序列公开为一系列迭代器,这些迭代器必须传递给parse / phrase_parse b)向您的令牌类型添加一个默认转换运算符,公开令牌ID

struct token
{
    operator int() const { return id; }
};

允许使用qi::char_(ID)作为匹配令牌ID为ID的令牌的解析器组件。

更多地涉及集成属性(标记值),请查看Spirit.Lex如何完成它。