Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python打印C#非常漂亮_C#_Python_Ruby_Parsing_Pretty Print - Fatal编程技术网

从Python打印C#非常漂亮

从Python打印C#非常漂亮,c#,python,ruby,parsing,pretty-print,C#,Python,Ruby,Parsing,Pretty Print,假设我用Python或Ruby编写了一个编译器,将一种语言翻译成C#AST 如何从Python或Ruby中漂亮地打印此AST以获得缩进良好的C#代码 在python中,该模块可用 根据数据的结构,它可能不会返回您要查找的结果。在python中,该模块可用 根据数据的结构,它可能不会返回您要查找的结果。一种方法是只打印它,然后调用代码格式化程序。一种方法是只打印它,然后调用代码格式化程序。一旦有了AST,这应该很容易。当您遍历AST时,您所要做的就是跟踪您当前的缩进级别——您可以使用全局缩进。遍历

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

如何从Python或Ruby中漂亮地打印此AST以获得缩进良好的C#代码

在python中,该模块可用

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

在python中,该模块可用


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

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

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

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

print "\t"*indentlevel + code

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

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

print "\t"*indentlevel + code
您应该得到格式良好的代码。但是,我有点困惑,你在问这个问题——如果你有能力将C#解析为AST,我无法想象你不能编写一个漂亮的打印输出函数。:-)