2016-12-13 45 views
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的接口。

+0

你没有任何内置的方式来打印数据,但你可以实现一个'print'或'toString'方法为您的AST,如果你有访问'Node'的属性。 – Motakjuq

回答