gpt4 book ai didi

c++ - 注释期间和之后的 AST 排列

转载 作者:行者123 更新时间:2023-11-28 05:52:23 25 4
gpt4 key购买 nike

在 X3 中使用 annotation_base::on_success 解析期间可以访问标记的 AST 节点.

我能否获取它们的地址(并存储其他信息,例如相应的输入范围迭代器对)并依赖于它的不变性(对于所有节点,但可能除了顶级 AST 节点,它可以在 parse) 以后什么时候用?

我可以假设 AST 节点确实已经分配到一个状态,当 parse 返回时该状态不会改变吗?

AST 是聚合和 STL 容器的组合:递归树。

最佳答案

当然也可以移动/复制所有中间 AST 节点。

例如,如果您意识到当 x_rule 解析为 X 然后您解析 x_rule % ',' 时会发生什么,这就非常清楚了>。 vector (或其他容器)将移动/复制 X ,所有其他元素可能由于重新分配而移动。

如果目标是在树外附加一些数据,而不会使 AST 节点增长太多,您可以考虑单独存储信息并引用它(通过 id、指针或某种引用)。

在那种情况下,您可能只需要“垃圾收集”您单独存储的数据(并防止在大量回溯的情况下失控积累)。使用 shared_ptr 可以以更多开销为代价方便地实现这一点。

关于c++ - 注释期间和之后的 AST 排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34962982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com