0

我正在将 Boost Spirit Lex 程序转换为静态词法分析器模型。词法分析器具有语义操作,因此动态词法分析器的类型为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'

这正是人们使用语义动作但忘记更改lexeractor_lexer. 我确实actor_lexer在生成器程序中使用了该类型,据我所知,这似乎有效。

还有什么我想念的吗?或者目前不可能在静态词法分析器中使用语义动作?

4

1 回答 1

0

在这种情况下有一个static_actor_lexer模板可供使用,如本例所示

lex::lexertl::static_actor_lexer<
    token_type, lex::lexertl::static_::lexer_wcl
>
于 2018-01-24T16:35:15.950 回答