假设我用Python或Ruby编写了一个编译器,将一种语言翻译成C#AST。
如何从Python或Ruby中打印这个AST以获得很好的缩进C#代码?
Thanks, Joel
答案 0 :(得分:1)
在python中,pprint模块可用。
根据您的数据结构的不同,它可能无法返回您要查找的结果。
答案 1 :(得分:1)
一旦你有AST,这应该很容易。当你走AST时,你所要做的就是跟踪当前的缩进级别 - 你可以使用全局。每次进入块时,遍历树的代码只需要递增缩进级别,并在退出块时递减它。然后,无论何时打印一行代码,都可以这样称呼它:
print "\t"*indentlevel + code
您最终应该使用格式良好的代码。但是,我有点困惑,你问这个问题 - 如果你有能力将C#解析为AST,我无法想象你将无法编写漂亮的打印输出函数。 : - )
答案 2 :(得分:-1)
一种方法是只打印它然后调用代码格式化程序。