漂亮地将解析树打印到标准输出?
Posted
技术标签:
【中文标题】漂亮地将解析树打印到标准输出?【英文标题】:Pretty printing a parse tree to std out? 【发布时间】:2015-03-16 23:18:26 【问题描述】:我用 C++ 编写了一个简单的递归下降解析器。
我需要一种将其打印到标准输出的方法,但我不知道该怎么做。
我有一个类 Node,它有一个函数 printSymbol()
来打印它的符号。
它的子代有一个std::list <Node*> m_children
。
鉴于此,我怎样才能将解析树漂亮地打印到标准输出?
谢谢
【问题讨论】:
【参考方案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()
应该简单地输出符号、换行符及其所有子节点(如果有的话),全部正确缩进。给定一个根指针,这应该将您的整个解析层次结构转储到标准输出。如果你真的开始使用它,你可以在 ascii 艺术、依赖于控制台的行字符方面获得非凡的创意,但我警告你,它很快就会变得乏味。
无论如何,这至少应该为您提供可以打印的图片。要么,要么我完全误解了你的问题。
祝你好运
【讨论】:
以上是关于漂亮地将解析树打印到标准输出?的主要内容,如果未能解决你的问题,请参考以下文章