在 X3 中 运行 时将解析器传递给规则

Passing a parser to a rule at run-time in X3

spirit::qi 中,可以将解析器作为继承属性传递给规则,然后直接使用它:

... >> lazy(_r1) >> ...

在 X3 中是否有解决此问题的方法?

我可以使用 with<state_tag>(std::ref(my_parser))[destination_rule] 将解析器 "inject" 到所需的规则上下文,我可以稍后在某些语义操作中检索它 - 但我不知道如何 "invoke"那么.

我不认为它在那里。

我必须承认我只是简单地用一些 lambda 返回的解析器破解了大多数东西,但是如果你真的需要做一些响应输入流的东西,相应地改变状态,你可能想要编写一个自定义的 X3 解析器类型。

请注意,在 X3 中制作自定义解析器类型非常简单。 Baptiste WichtAgustín "K-ballo" Bergé 有一些例子,我想我也应该把它们 on-site 放在这里。让我找一些链接