Pretty Печать древовидной структуры данных в Ruby

Я работаю над созданием компилятора, и внутри него я генерирую дерево который представляет исходную программу, которая передается. Я хочу отобразить это в виде дерева, похожего на моду, чтобы я мог показать структуру программы всем, кто заинтересован.

Прямо сейчас я печатаю дерево одной строкой, например так:

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, как они обычно представляются?

Будем признательны за любую помощь.

7
задан Hunter McMillen 19 June 2012 в 14:51
поделиться