gpt4 book ai didi

python - 如何用 Python 编写抽象语法树的访问者模式?

转载 作者:IT老高 更新时间:2023-10-28 20:34:14 24 4
gpt4 key购买 nike

我的同事建议我编写一个访问者模式来导航 AST。谁能告诉我更多我将如何开始写它?

据我了解,AST 中的每个节点都会有 visit() 方法(?),它会以某种方式被调用(从哪里?)。我的理解到此结束。

为了简化一切,假设我有节点 RootExpressionNumberOp 并且树看起来像这样:

       Root
|
Op(+)
/ \
/ \
Number(5) \
Op(*)
/ \
/ \
/ \
Number(2) Number(444)

谁能想到访问者模式将如何访问这棵树以产生输出:

 5 + 2 * 444

谢谢,博达·赛多。

最佳答案

维基百科对 how the Visitor pattern works 有一个很好的概述。 ,尽管他们使用的示例实现是用 Java 编写的。不过,您可以轻松地将其移植到 Python 中,不是吗?

基本上,您希望为double dispatch 实现一种机制。 . AST 中的每个节点都需要实现 accept() 方法(不是 visit() 方法)。该方法将访问者对象作为参数。在此 accept() 方法的实现中,您调用访问者对象的 visit() 方法(每种 AST 节点类型都有一个;在 Java 中,您'将使用参数重载,在 Python 中我想你可以使用不同的 visit_*() 方法)。然后将使用正确的节点类型作为参数分派(dispatch)正确的访问者。

关于python - 如何用 Python 编写抽象语法树的访问者模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2525677/

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