如何编写从python到ruby的源代码转换器?

时间:2009-02-23 21:48:29

标签: python ruby converter

我的老师告诉我,如果我想在编程课上获得最好的成绩,我应该编写一个简单的源代码转换器。

Python to Ruby(他说的最简单)

现在我向你提问:为python编写一个简单的源代码转换器到ruby是多么困难。 (它应该转换文件控制,控制语句等)

你对我有什么建议吗?

我应该使用哪种语言来编写转换器(C#,Python或Ruby)?

8 个答案:

答案 0 :(得分:13)

我认为你的老师正在努力 - 这很难。它等同于编写编译器/解释器。我不知道你有多少时间可以参加这个项目,但是你通常会看几年人的工作。

答案 1 :(得分:2)

程序的名称可将一种代码转换为另一种代码。它被称为编译器(即使目标语言实际上不是机器或字节代码)。

编译器并不是计算机科学中最简单的部分,如果它不仅仅是转换器的玩具实现,那么这个项目就是一个庞大的项目。当然比大多数大学课程中的课堂项目通常要大。 (即使很多/大多数编译器课程都有相当适度的项目任务。

至于使用什么语言?好吧,无论哪一个你最了解的可能就是答案。虽然如果你想学习新的东西,Haskell将是一个很好的选择,具有模式匹配功能。 (免责声明:我是haskell的新手。)(如果您真的认真考虑进入编译器,也可以使用Yacc。)

您还需要咨询:The Dragon Compiler Book, 即使你不打算编写编译器,也值得研究。

答案 2 :(得分:0)

就像提出足够聪明的正则表达式来正确转换语法一样简单 Ruby和python的语法足够接近,因此不是很难 你可能需要做一些额外的工作来重写你在python中拥有的东西,例如在列表理解中没有像ruby那样存在。

答案 3 :(得分:0)

首先简单可能意味着它不会处理Python的所有有效语义,而只会处理其中的一部分。

我得到的第一件事就是龙书的副本,您可以在任何大学图书馆找到它。我要做的第二件事就是获得Python的语法和语义的副本。

答案 4 :(得分:0)

语言无关紧要。选择一个你最熟悉的字符串。

提示我会使用字典/查找数组来表示关键字。最困难的部分是处理python中的空白区域

答案 5 :(得分:0)

听起来你的老师有点像实用的小丑!

答案 6 :(得分:0)

最难的部分是保留语义。

比如在处理Ruby时如何处理元类赋值,函数装饰器或基于yield的生成器?我没有Ruby经验,所以我不知道什么是直接支持。

答案 7 :(得分:0)

Brainf***和C之间编写一个转换器会相当简单。我确信这远远低于你需要做的范围(我猜的是有关解析无上下文语法的教学内容) ),但真的很容易做到。