2016-12-13 6 views
0

Я учусь Иди и ища способ распечатать мой АСТ (Для справки я следую вместе с превосходным Русланом 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{...}})} 

Является ли эта функциональность встроенной, чтобы идти в любом случае? Node - это интерфейс для нескольких различных типов struct s, которые хранят данные и/или более Node s.

+0

вы не имеете встроенный способ печати, что данные, но вы можете реализовать '' print' или метод toString' для AST, если у вас есть доступ к атрибутам 'Node'. – Motakjuq

ответ

Смежные вопросы