0
我正在学习Go并寻找一种方法来打印我的AST(作为参考,我正在跟随Ruslan的优秀Let's Build a Simple Interpreter)。是否有递归打印树的内置方法?
我打印根有以下:
tree := par.Parse()
fmt.Printf("\nParse Tree:\n%#v\n", tree)
它打印:
Parse Tree:
&Node.Program{name:"PART10AST", block:(*Node.Block)(0x11b32160)}
有没有一种方法可以递归一个节点,所有子节点?一些影响的内容:
&Node.Program{name:"PART10AST", block:(*Node.Block{decl: *Node.declarations{...}, comp: *Node.Compound{...}})}
此功能是否以任何方式内置于Go? Node
是用于存储数据和/或更多Node
的若干不同类型的struct
的接口。
你没有任何内置的方式来打印数据,但你可以实现一个'print'或'toString'方法为您的AST,如果你有访问'Node'的属性。 – Motakjuq