来自Python的漂亮打印C#

时间:2009-04-09 14:05:38

标签: c# python ruby parsing pretty-print

假设我用Python或Ruby编写了一个编译器,将一种语言翻译成C#AST。

如何从Python或Ruby中打印这个AST以获得很好的缩进C#代码?

Thanks, Joel

3 个答案:

答案 0 :(得分:1)

在python中,pprint模块可用。

根据您的数据结构的不同,它可能无法返回您要查找的结果。

答案 1 :(得分:1)

一旦你有AST,这应该很容易。当你走AST时,你所要做的就是跟踪当前的缩进级别 - 你可以使用全局。每次进入块时,遍历树的代码只需要递增缩进级别,并在退出块时递减它。然后,无论何时打印一行代码,都可以这样称呼它:

print "\t"*indentlevel + code

您最终应该使用格式良好的代码。但是,我有点困惑,你问这个问题 - 如果你有能力将C#解析为AST,我无法想象你将无法编写漂亮的打印输出函数。 : - )

答案 2 :(得分:-1)

一种方法是只打印它然后调用代码格式化程序。