写一个翻译并不是不可能的,特别是考虑到乔尔的实习生做了一个夏天。
如果你想学一种语言,这很容易。如果你想做的更多,这是有点困难,但不是太多。最难的部分是,尽管任何图灵完整语言都可以完成另一种图灵完整语言所做的工作,但内置的数据类型可以显着地改变一种语言所做的事情。
例如:
word = 'This is not a word'print word[::-2]
采取罗得C+代码的复制(好的,你可以用一些循环结构做得很短,但仍然是这样)。
我想这有点离题吧。
您曾经基于语言语法编写过标记器/解析器吗?如果你没有这样做的话,你可能想学习如何去做,因为这是这个项目的主要部分。我要做的是想出一个基本的图灵完整语法-类似于Python。字节码..然后创建一个接受语言语法的词汇/解析器(可能使用BNF),并根据语法将语言编译成您的中间语言。然后,您要做的是做相反的-创建一个解析器从您的语言到目标语言的基础上的语法。
我看到的最明显的问题是,一开始你可能会可怕效率低下的代码,特别是在更强大的*语言(如Python)中。
但是,如果您这样做,那么您可能能够找到优化输出的方法。总结如下:
- 读提供语法
- 将程序编译成中间语法(但也包括图灵完整语法)
- 将中间程序编译成最终语言(基于提供的语法)
...?
- 利润!(?)
*我的意思是,这需要4行:
myinput = raw_input("Enter something: ")print myinput.replace('a', 'A')print sum(ord(c) for c in myinput)print myinput[::-1]
向我展示另一种语言,它可以在4行中完成类似的任务,我将向您展示一种与Python一样强大的语言。