我正在使用 Boost Spirit 解析器,当解析器正在解析时,语义动作会反映到 ParserActions 类的实例中。
这是解析器的代码(相关部分)
struct urdf_grammar : public grammar<urdf_grammar> {
template <typename ScannerT>
struct definition {
definition(urdf_grammar const& self) {
prog = (alpha_p >> *alnum_p)[&(self.actions.do_prog)];
}
rule<ScannerT> prog;
rule<ScannerT> const&
start() const {
return prog;
}
};
const ParserActions & actions;
explicit urdf_grammar(const ParserActions & actions = ParserActions()) : actions(actions) {
}
};