2017-01-17 12 views
0

私はこれを理解するのに苦労しています。
I_L^MはマシンM上で動作する言語Lのためのインタプリタとしましょう。あなたが言語Lの言語Lで書かれたプログラムI_K^Lにアクセスできるとします。これは言語Kのためのインタプリタです。追加の翻訳者または通訳者)は、言語Kでプログラムを記述して実行できますか?説明してください。
私は、インタプリタがバイトコードなどを出力するので、これは不可能だと考えていました。理解することは非常に難しく、私はそれを思い知らされていると思う。どんな助けも素晴らしいだろう!翻訳者がいない2人の通訳者

+1

"言語L用のインタプリタ"が "言語Lで書かれた"プログラムを実行できない場合は、言語L用のインタプリタはほとんどありません。 – jasonharper

+0

Lのインタプリタを実行できます。それがマシンMで動作しているとします。 – Tammy

+0

次に、Lで書かれた任意のプログラムが仕事をすることができないと信じられないのはなぜですか? – jasonharper

答えて

1

はい、言語Kでプログラムを実行できるはずです。

具体的な例を考えてみましょう。LをPythonとし、KをLispとしましょう。 I_L^Mは、マシンMで入手できるPythonインタプリタであり、あらゆる種類のPythonプログラムを実行するために使用します。そのようなプログラムの1つはI_K^Lで、Pythonで書かれたLisp用のインタプリタです。それがlisp.pyにあるとします。 python lisp.py Pythonインタプリタが起動し、lisp.pyを開き、見つかったPythonコードを実行します。これは、Lispのread-eval-printループを開始します。または、 python lisp.py fibonacci.lisp を呼び出して、LispインタプリタにLispコードをfibonacci.lispで実行させることもできます。

バイトコードについて言及しているので、内部的にPythonプログラムがlisp.pyをバイトコードに変換してからを実行する可能性があります。しかし、その後の実行で時間を節約するために.pycファイルを作成する可能性を除いて、ほとんど目に見えません。

関連する問題