boost :: spirit :: qi-使用语法结构中的实例成员

达容基

我正在尝试创建用于解析RTF文件的语法。在某些时候,我需要在语法范围内存储一些信息。我知道,我可以使用继承的属性,但这会降低可读性。

因此,我问自己语法的实例成员变量是否可以解决我的问题,如果可以,我应该如何在语法中使用它们?

例如,我需要跟踪活动的代码页以进行字符转换。int codepage在我的语法结构内部有一个好习惯吗?

我进一步想要的是,调用一些函数以将状态变量放入并弹出堆栈。我想我会将状态信息合并到RtfState类中,可以根据需要扩展该类。调用语法结构的成员函数的最佳方法是什么?

你可以。只需对以下内容使用语义操作phx::bind

namespace phx = boost::phoenix;
switch_cp = qi::int_ [ phx::bind(&MyGrammar::_codepage, this) = _1 ];

但是,请记住,这会破坏可重入性:如果可以嵌套相关规则,则不要使用它。


或者,调用方法如下所示:

switch_cp = qi::int_ [ phx::bind(&MyGrammar::push_codepage, this, _1) ];

reset_cp = qi::eps [ phx::bind(&MyGrammar::pop_codepage, this) ]

通识读物:提振精神:“语义行为是邪恶的”?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Boost Spirit Qi-高效的报价语法

来自分类Dev

Boost Spirit Qi-高效的报价语法

来自分类Dev

使用boost :: spirit :: qi解析双打列表

来自分类Dev

boost :: bool可选,内部boost :: spirit :: qi语法

来自分类Dev

如何在boost :: spirit :: qi语法中实现#ifdef?

来自分类Dev

boost :: spirit :: qi匹配[]麻烦

来自分类Dev

Boost :: Spirit :: Qi的模板编译错误,语法简单

来自分类Dev

使用Boost Spirit Qi解析定界的令牌列表

来自分类Dev

使用Boost Spirit Qi解析包含文字的字符串

来自分类Dev

无法使用boost :: spirit :: qi解析条件的SQL类型

来自分类Dev

使用Boost Spirit Qi解析器解析枚举

来自分类Dev

使用boost :: spirit :: qi用分隔符解析数字

来自分类Dev

Boost.Spirit.Qi:如何使用Nabialek技巧返回属性

来自分类Dev

无法使用boost :: spirit :: qi解析条件所在的SQL类型

来自分类Dev

使用Boost Spirit Qi解析定界的令牌列表

来自分类Dev

boost :: spirit:qi :: rule或包含qi :: rule的结构作为解析结果

来自分类Dev

boost :: phoenix :: bind和boost :: phoenix :: actors在语义动作中对boost :: spirit :: qi的问题

来自分类Dev

处理boost :: spirit :: qi语法中的深度递归的正确方法是什么?

来自分类Dev

Boost Spirit Qi语法添加到队长内部的列表中

来自分类Dev

boost :: spirit :: qi :: parse()和boost :: spirit :: qi :: phrase_parse()有何区别?

来自分类Dev

仅在Boost.Spirit.Qi语法初始化的优化构建中存在分段错误

来自分类Dev

Boost Spirit Qi:Kleene Star解析器中的省略元素

来自分类Dev

在boost :: spirit :: qi :: phrase_parse中未定义的行为

来自分类Dev

Phoenix :: bind在boost :: spirit :: qi语义动作中为C ++ 11 lambdas

来自分类Dev

boost.spirit qi?中序列和列表运算符的属性

来自分类Dev

Segfault试图在类中使用boost :: spirit :: qi解析器

来自分类Dev

使用Spirit Qi解析具有包含std :: string的用户定义数据类型的boost :: variant

来自分类Dev

Boost.Spirit.Qi替代(|)解析器问题

来自分类Dev

boost :: spirit :: qi关键字和标识符

Related 相关文章

  1. 1

    Boost Spirit Qi-高效的报价语法

  2. 2

    Boost Spirit Qi-高效的报价语法

  3. 3

    使用boost :: spirit :: qi解析双打列表

  4. 4

    boost :: bool可选,内部boost :: spirit :: qi语法

  5. 5

    如何在boost :: spirit :: qi语法中实现#ifdef?

  6. 6

    boost :: spirit :: qi匹配[]麻烦

  7. 7

    Boost :: Spirit :: Qi的模板编译错误,语法简单

  8. 8

    使用Boost Spirit Qi解析定界的令牌列表

  9. 9

    使用Boost Spirit Qi解析包含文字的字符串

  10. 10

    无法使用boost :: spirit :: qi解析条件的SQL类型

  11. 11

    使用Boost Spirit Qi解析器解析枚举

  12. 12

    使用boost :: spirit :: qi用分隔符解析数字

  13. 13

    Boost.Spirit.Qi:如何使用Nabialek技巧返回属性

  14. 14

    无法使用boost :: spirit :: qi解析条件所在的SQL类型

  15. 15

    使用Boost Spirit Qi解析定界的令牌列表

  16. 16

    boost :: spirit:qi :: rule或包含qi :: rule的结构作为解析结果

  17. 17

    boost :: phoenix :: bind和boost :: phoenix :: actors在语义动作中对boost :: spirit :: qi的问题

  18. 18

    处理boost :: spirit :: qi语法中的深度递归的正确方法是什么?

  19. 19

    Boost Spirit Qi语法添加到队长内部的列表中

  20. 20

    boost :: spirit :: qi :: parse()和boost :: spirit :: qi :: phrase_parse()有何区别?

  21. 21

    仅在Boost.Spirit.Qi语法初始化的优化构建中存在分段错误

  22. 22

    Boost Spirit Qi:Kleene Star解析器中的省略元素

  23. 23

    在boost :: spirit :: qi :: phrase_parse中未定义的行为

  24. 24

    Phoenix :: bind在boost :: spirit :: qi语义动作中为C ++ 11 lambdas

  25. 25

    boost.spirit qi?中序列和列表运算符的属性

  26. 26

    Segfault试图在类中使用boost :: spirit :: qi解析器

  27. 27

    使用Spirit Qi解析具有包含std :: string的用户定义数据类型的boost :: variant

  28. 28

    Boost.Spirit.Qi替代(|)解析器问题

  29. 29

    boost :: spirit :: qi关键字和标识符

热门标签

归档