两个没有翻译的口译员

时间:2017-01-17 23:10:24

标签: translation interpreter

我很难理解这一点。
让I_L ^ M成为在机器M上运行的语言L的解释器。假设您可以访问用语言L编写的程序I_K ^ L,它是语言K的解释器。您现在能否(无需编写任何其他内容)翻译或口译)用K语言编写和运行程序?请解释一下。
我认为这是不可能的,因为解释器输出字节代码或其他东西。这很难理解,我想我正在过度思考它。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

是的,您应该能够以K语言运行程序。

考虑一个具体的例子可能有所帮助:让L成为Python,让K成为Lisp。 I_L^M是您可以为您的机器M获取的Python解释器,并用于运行各种Python程序。一个这样的程序是I_K^L,一个用Python编写的Lisp解释器。在lisp.py中说出来。然后你会调用: python lisp.py Python解释器将启动,打开lisp.py,并执行它在那里找到的Python代码,这将(例如)启动一个Lisp read-eval-print循环。或者你可以调用 python lisp.py fibonacci.lisp 让Lisp解释器在fibonacci.lisp中运行Lisp代码。

由于你提到字节代码:在内部,Python程序可能会将lisp.py转换为字节代码,然后执行 。但是,除了可能创建.pyc文件以节省后续运行时间之外,这对您来说几乎是不可见的。