プログラミング言語用のインタープリターを実装するとき、私は最初に、ユーザーがコードを入力できる単純なコンソールウィンドウを考えました。このコードは、シェルとしてスタンドアロンプログラムとして実行されます。
しかし、深刻な問題があります。ユーザーが入力するコードのすべての行がスタンドアロンプログラムとして処理される場合、トークナイザーとパーサーを経由して、インタープリターによって実行される必要があります。関数についてはどうでしょうか。
- Python / Rubyインタラクティブコンソール(IDLE、irb)はどのようにしてコードを「共有」できますか?入力されたコードはどのように処理されますか?
例:
>> def x:
>> print("Blah")
>>
>> x()
関数はどこに保存されているので、いつでも呼び出すことができますか?
インタラクティブコンソールは、すべてを何度も実行することなく、明らかに1つのプログラムとして入力されたすべてのものをどのように取得できますか?