【问题标题】:Writing a code beautifier [closed]编写代码美化器[关闭]
【发布时间】:2011-04-23 15:59:14
【问题描述】:

我想写一个代码美化器,我想用 Ruby 来做。有人可以告诉我一个开始的地方吗?我在网上看到了很多代码美化器,但我从未遇到过任何关于如何编写代码美化器的教程。对于以前从未从事过任何项目(例如编写编译器、解析器等)的人来说,这是一项非常具有挑战性的任务吗?

(除了 C/C++,还有其他更适合此类任务的语言吗?)

【问题讨论】:

标签: ruby code-formatting


【解决方案1】:

Python 有一个有趣的特性——它将自己的解析器暴露给脚本。 are examples 使用 AST(抽象语法树)并进行漂亮的打印。

我不知道 Ruby 以这种方式将自己的解析器暴露给它的脚本,但是有一些用 Ruby here 编写的 Ruby 解析器。

【讨论】:

    【解决方案2】:

    嗯...我认为最初的步骤是您为任何项目所做的。

    写一份需求清单。 描述程序的用户界面,你喜欢并且不会妨碍你满足这些要求。 现在您可以写下更多的“代码”设计,并选择最容易满足该设计的语言。

    以下是我想到的一些要求:

    • 支持以下语言的代码美化:Ruby、Python、Perl
    • 输出代码的行为与输入相同
    • 输出始终使用制表符/空格
    • 输出具有一致的函数命名约定
    • 输出具有一致的变量命名约定
    • 输出具有匹配的大括号和缩进

    随心所欲地制作,这是你的程序。 ;p 我在开玩笑说 Perl,但我认为你支持的每一种语言都会增加更多的工作。

    【讨论】:

    • +1。这一切都是为了找到您的要求,然后查看哪种工具最能满足这些要求,就像任何问题一样。例如。 “我想学习 Ruby”的要求可能与其他要求一样重要,并将事情朝那个方向倾斜。 :)
    • 你能告诉我我必须使用哪些工具吗?我需要使用 lex 和 yacc 之类的工具,还是那些用于其他用途的工具?我确实在某处读过我需要将代码解析为令牌或其他东西,之后我可以处理它,但这就是我所知道的。谢谢。
    • 标记行肯定会成为您程序的一部分。查看链接到的rubyBeautifier Germanlinux,它不是一个长程序。它使用了正则表达式,非常适合这一点。它们很难学,但非常有用。我不了解 Ruby,但看起来您可以在字符串上使用 .split(delimiter) 函数将其切成标记。不过,正则表达式可能是要走的路。
    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 2010-09-06
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 2010-11-29
    • 2016-01-04
    • 2011-09-03
    相关资源
    最近更新 更多