从Python进行C#的美化输出

1 投票
3 回答
600 浏览
提问于 2025-04-15 11:06

假设我用Python或Ruby写了一个编译器,这个编译器可以把一种语言转换成C#的抽象语法树(AST)。

那么,我该怎么从Python或Ruby把这个AST格式化成好看的C#代码呢?

Thanks, Joel

3 个回答

-2

一种方法就是先把它打印出来,然后再用代码格式化工具来整理一下。

1

在Python中,有一个叫做 pprint 的模块。

根据你的数据结构不同,它可能不会返回你想要的结果。

1

一旦你有了抽象语法树(AST),接下来的事情就简单多了。当你遍历这个树的时候,只需要记住你当前的缩进级别就行了——你可以用一个全局变量来保存这个信息。遍历树的代码只需要在进入一个代码块时增加缩进级别,离开时减少缩进级别。然后,每当你要打印一行代码时,就可以这样调用:

print "\t"*indentlevel + code

这样你就能得到格式整齐的代码了。不过,我有点困惑你为什么会问这个问题——如果你已经有能力把C#解析成AST,我想象不出你会不会写一个漂亮的输出函数。:-)

撰写回答