【问题标题】:Pretty-printing C# from Python来自 Python 的漂亮打印 C#
【发布时间】:2009-04-09 14:05:37
【问题描述】:

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

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

Thanks, Joel

【问题讨论】:

    标签: c# python ruby parsing pretty-print


    【解决方案1】:

    在 python 中,pprint 模块可用。

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

    【讨论】:

      【解决方案2】:

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

      print "\t"*indentlevel + code
      

      您应该得到格式良好的代码。但是,我对您提出这个问题感到有些困惑——如果您具备将 C# 解析为 AST 的技能,我无法想象您将无法编写打印精美的输出函数。 :-)

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2021-03-06
          • 2013-11-19
          • 2012-09-16
          • 2014-05-12
          • 1970-01-01
          • 2010-09-13
          • 2013-01-20
          • 2013-07-11
          相关资源
          最近更新 更多