gpt4 book ai didi

parsing - 为什么要构建 AST walker 而不是让节点负责自己的输出?

转载 作者:行者123 更新时间:2023-12-02 07:46:54 26 4
gpt4 key购买 nike

给定一个 AST,生成 Walker 的原因是什么?遍历树并执行输出的类,而不是给每个 Node a类compile()方法并让它负责自己的输出?

这里有一些例子:
Doctrine 2 (一个 ORM)使用 SQLWalker遍历 AST 并从节点生成 SQL。
Twig (一种模板语言)让节点输出自己的代码(这是一个 if 语句节点)。

最佳答案

使用单独的 Walker 进行代码生成可以避免随着目标表示数量的增加而导致 AST 节点类数量的组合激增。当 Walker 负责代码生成时,您只需更改 Walker 类即可将其重新定位到不同的表示形式。但是当 AST 节点本身负责编译时,您需要为每个单独的目标表示使用每个节点的不同版本。

关于parsing - 为什么要构建 AST walker 而不是让节点负责自己的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6364186/

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