开发者

Using Boost.Spirit.Qi with custom lexer

开发者 https://www.devze.com 2023-03-10 04:10 出处:网络
I dug through the whole documentation and couldn\'t find an example. All the examples either parse character data or use Spirit.Lex. Forgive me if I missed something.

I dug through the whole documentation and couldn't find an example. All the examples either parse character data or use Spirit.Lex. Forgive me if I missed something.

Can someone give an example for, or point to a tutorial on, how to use Boost.Spirit.Qi with my custom lexer? E.g.:

vector<MyTokenType> tokens = GetTokens();
// use boost spirit to work with MyTokenType on per-token granulari开发者_如何学JAVAty


You will have to do sevaral things:

a) expose the token sequence as a range of iterators, which will have to be passed to parse/phrase_parse b) add a default conversion operator to your token type exposing the token id

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

that allows to use qi::char_(ID) as a parser component matching a token with the token id ID.

Integrating attributes (token values) is more involved, look at Spirit.Lex how it can be done.

0

精彩评论

暂无评论...
验证码 换一张
取 消