我正在构建一个编译器,并在其中生成一棵树,它代表传入的源程序。我想显示这是一棵树,就像时尚一样,所以我可以向任何感兴趣的人显示程序的结构。
现在我只是将树打印在一行上,如下所示:
ProgramNode -> 'Math' BlockNode -> DeclarationNode -> ConstantDeclarationNode -> const ConstantListNode -> [m := 7, ConstantANode -> [n := StringLiteralNode -> ""TEST"" ]] ;
我想要的是这样的:
ProgramNode
/ \
'Math' BlockNode
|
DeclarationNode
|
ConstantDeclarationNode ------------------------------
/ \ |
const ConstantListNode |
/ | \ \ |
m := 7 ConstantANode |
/ | \ |
n := StringLiteralNode |
/ | \ |
" TEST " ;
我还没有真正在 Ruby 中使用过树,它们通常是如何表示的?
任何帮助,将不胜感激。