漂亮地将解析树打印到标准输出?

Pretty printing a parse tree to std out?

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

我需要一种方法将其打印到标准输出,但我不知道该怎么做。

我有一个 class 节点,它有一个函数 printSymbol() 来打印它的符号。

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

鉴于此,我怎样才能漂亮地将解析树打印到标准输出?

谢谢

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() 应该简单地输出符号、换行符及其所有子节点(如果有的话),所有这些都正确缩进。给定一个根指针,这应该将您的整个解析层次结构转储到标准输出。关于 ascii 艺术、依赖于控制台的行字符,如果您真的喜欢它,您可以获得非常有创意的东西,但它很快就会变得乏味,我警告你。

无论如何,这至少应该给你一张可以打印的图片。或者我完全误解了你的问题。

祝你好运