使用BoostSpirit.Qi与自定义lexer

Using Boost.Spirit.Qi with custom lexer

本文关键字:自定义 lexer Qi BoostSpirit 使用      更新时间:2023-10-16

我浏览了整个文档,找不到一个例子。所有的例子要么解析字符数据,要么使用Spirit.Lex。如果我遗漏了什么,请原谅。

有人能举一个例子,或者指出如何在我的自定义lexer中使用BoostSpirit.Qi的教程吗?例如:

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

您将不得不做以下几件事:

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

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

其允许使用CCD_ 1作为将令牌与令牌id CCD_。

集成属性(令牌值)是更复杂的,看看Spirit.Lex如何做到这一点。