根据此处的建议: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]
)
;
但是如何从父规则访问本地人?我是否必须将它们存储在属性中?! 什么是使语法无状态的最佳方法?我在哪里可以存储当前状态的变量,这些变量可能随时由语法中的任何子规则修改?