Pretty在Ruby中打印树数据结构
发布时间:2020-12-16 19:05:44 所属栏目:百科 来源:网络整理
导读:我正在构建一个编译器,在其中我生成一个树,代表传入的源程序.我想显示这是一个像时尚的树,所以我可以向任何感兴趣的人显示程序的结构. 现在我只需要在一行上打印树,如下所示: ProgramNode - 'Math' BlockNode - DeclarationNode - ConstantDeclarationNode
我正在构建一个编译器,在其中我生成一个树,代表传入的源程序.我想显示这是一个像时尚的树,所以我可以向任何感兴趣的人显示程序的结构.
现在我只需要在一行上打印树,如下所示: 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中的树,它们通常如何表示? 任何帮助,将不胜感激. 解决方法
这种漂亮的印刷需要相当多的数学.此外,如果树对于控制台窗口变得太宽,还不清楚会发生什么.我不知道任何现有的库会这样做.我个人使用
awesome_print .
tree = {'ConstantDeclarationNode' => ['const','ConstantListNode' => ['m',':=','7']]} require 'awesome_print' ap tree # >> { # >> "ConstantDeclarationNode" => [ # >> [0] "const",# >> [1] { # >> "ConstantListNode" => [ # >> [0] "m",# >> [1] ":=",# >> [2] "7" # >> ] # >> } # >> ] # >> } 它有很多选项,请查看! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |