在Go中从AST中删除节点

时间:2016-02-24 18:01:08

标签: go abstract-syntax-tree

有没有办法从AST中删除特定类型的节点? (例如,我想删除所有Expr语句)或者可能有一种方法用空的ast.Expr节点替换它?

我没有找到任何关于它的文档,所以任何帮助将不胜感激。提前谢谢!

UPD:

func find_node(file *ast.File) {

    ast.Inspect(file, func(node ast.Node) bool {

        switch x := node.(type) {

        case *ast.ExprStmt:

           var e ast.Expr
           e = x.X

           fmt.Printf("Expression found: %s\n", e)

        }

    return true
})

}

1 个答案:

答案 0 :(得分:0)

您可以尝试使用astutil软件包。请参见rewrite_test.go中测试中的删除示例。