使Boost Spirit语法无国籍

时间:2014-09-14 23:02:53

标签: c++ boost boost-spirit

根据此处的建议:How to benchmark Boost Spirit Parser? 我想让我的语法无状态,静态和常量。 因此,我必须将当前的列,行和结果存储在某处,我认为本地人将是正确的位置。不幸的是,我无法在子规则中访问父规则的本地修改它们:

  qi::rule<Iterator, qi::locals<Slk::Table::size_type, Slk::Table::size_type, Slk::Table> > cells;
cells =
            eps[ref(_b) = 1][ref(_a) = 1]

现在我想更改子规则中的本地人:

f_record =
            lit('F')
            >> +(
                skipped_field
                | y_field[ref(_a) = _1]
                | x_field[ref(_b) = _1]
            )
        ;

但是如何从父规则访问本地人?我是否必须将它们存储在属性中?! 什么是使语法无状态的最佳方法?我在哪里可以存储当前状态的变量,这些变量可能随时由语法中的任何子规则修改?

0 个答案:

没有答案