将 Boost actor_lexer 转换为静态:错误,好像未使用 "actor_"
Converting a Boost actor_lexer to static: Error as if "actor_" not used
我正在将 Boost Spirit Lex 程序转换为 static lexer model。词法分析器具有语义操作,因此动态词法分析器的类型为 actor_lexer
:
#ifndef USE_STATIC_SI_LEXER
typedef lex::lexertl::actor_lexer<token_type> lexer_type;
#else
typedef lex::lexertl::static_lexer<
token_type,
lex::lexertl::static_::lexer_si
> lexer_type;
#endif
现在用静态词法分析器编译时,出现错误
boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp(230):
error C2039: 'add_action' : is not a member of 'boost::spirit::unused_type'
这正是当一个人使用语义动作但忘记将 lexer
更改为 actor_lexer
时所期望的结果。我确实在生成器程序中使用了 actor_lexer
类型,据我所知这似乎有效。
还有什么我想念的吗?或者目前无法在静态词法分析器中使用语义动作?
有一个 static_actor_lexer
模板可用于这种情况,如 this example 中所示。
lex::lexertl::static_actor_lexer<
token_type, lex::lexertl::static_::lexer_wcl
>
我正在将 Boost Spirit Lex 程序转换为 static lexer model。词法分析器具有语义操作,因此动态词法分析器的类型为 actor_lexer
:
#ifndef USE_STATIC_SI_LEXER
typedef lex::lexertl::actor_lexer<token_type> lexer_type;
#else
typedef lex::lexertl::static_lexer<
token_type,
lex::lexertl::static_::lexer_si
> lexer_type;
#endif
现在用静态词法分析器编译时,出现错误
boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp(230):
error C2039: 'add_action' : is not a member of 'boost::spirit::unused_type'
这正是当一个人使用语义动作但忘记将 lexer
更改为 actor_lexer
时所期望的结果。我确实在生成器程序中使用了 actor_lexer
类型,据我所知这似乎有效。
还有什么我想念的吗?或者目前无法在静态词法分析器中使用语义动作?
有一个 static_actor_lexer
模板可用于这种情况,如 this example 中所示。
lex::lexertl::static_actor_lexer<
token_type, lex::lexertl::static_::lexer_wcl
>