漂亮的打印解析树到stdout?

时间:2015-03-16 23:18:27

标签: c++ printing tree stdout

我在C ++中编写了一个简单的递归下降解析器。

我需要一种方法将它打印到标准输出,但我无法弄清楚如何做到这一点。

我有一个类Node,它有一个函数printSymbol()来打印它的符号。

它的孩子有std::list <Node*> m_children

鉴于此,我怎样才能将解析树打印出去?

由于

1 个答案:

答案 0 :(得分:1)

printSymbol添加一个带有缩进级别或默认值的重载,可以起作用:

void printSymbol(unsigned indent = 0) const
{
    std::cout << std::string(indent,' ') << m_symbol << '\n';
    for (auto child : m_children)
        child->printSymbol(indent+2);
}

给定任何单个节点,直接调用printSymbol()应该只输出符号,换行符及其所有子节点(如果有的话),都可以正确缩进。给定一个根指针,这应该将整个解析层次结构转储到stdout。你警告你,你可以在ascii艺术,控制台相关的线条字符上获得非凡的创造力,如果你真的设置它,但它会很快变得乏味。

无论如何,这至少应该为您提供可以打印的图片。无论是那个还是我完全误解了你的问题。

祝你好运

相关问题