Я учусь Иди и ища способ распечатать мой АСТ (Для справки я следую вместе с превосходным Русланом 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.
вы не имеете встроенный способ печати, что данные, но вы можете реализовать '' print' или метод toString' для AST, если у вас есть доступ к атрибутам 'Node'. – Motakjuq