1

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

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

在 X3 中是否有任何解决方法?

我可以使用 将解析器“注入”到所需的规则上下文中with<state_tag>(std::ref(my_parser))[destination_rule],稍后我可以在一些语义操作中检索它 - 但我不知道如何“调用”它。

4

1 回答 1

1

我不认为它在那里。

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

请注意,在 X3 中制作自定义解析器类型非常简单。Baptiste Wicht Agustín “K-ballo” Bergé 有一些例子,我想我也应该在现场展示它们。让我找到一些链接

于 2017-02-06T23:28:48.497 回答