"code" — インタプリタ基底クラス
*******************************

"code" モジュールはread-eval-print (読み込み-評価-表示)ループをPython
で実装するための機能を提供します。対話的なインタプリタプロンプトを提供
するアプリケーションを作るために使える二つのクラスと便利な関数が含まれ
ています。

class code.InteractiveInterpreter([locals])

   このクラスは構文解析とインタプリタ状態(ユーザの名前空間)を取り扱い
   ます。入力バッファリングやプロンプト出力、または入力ファイル指定を
   扱いません(ファイル名は常に明示的に渡されます)。オプションの
   *locals* 引数はその中でコードが実行される辞書を指定します。その初期
   値は、キー "'__name__'" が "'__console__'" に設定され、キー
   "'__doc__'" が "None" に設定された新しく作られた辞書です。

class code.InteractiveConsole([locals[, filename]])

   対話的なPythonインタプリタの振る舞いを厳密にエミュレートします。こ
   のクラスは "InteractiveInterpreter" を元に作られていて、通常の
   "sys.ps1" と "sys.ps2" をつかったプロンプト出力と入力バッファリング
   が追加されています。

code.interact([banner[, readfunc[, local]]])

   Convenience function to run a read-eval-print loop.  This creates a
   new instance of "InteractiveConsole" and sets *readfunc* to be used
   as the "InteractiveConsole.raw_input()" method, if provided.  If
   *local* is provided, it is passed to the "InteractiveConsole"
   constructor for use as the default namespace for the interpreter
   loop.  The "interact()" method of the instance is then run with
   *banner* passed as the banner to use, if provided.  The console
   object is discarded after use.

code.compile_command(source[, filename[, symbol]])

   この関数はPythonのインタプリタメインループ(別名、read-eval-printル
   ープ)をエミュレートしようとするプログラムにとって役に立ちます。扱い
   にくい部分は、ユーザが(完全なコマンドや構文エラーではなく)さらにテ
   キストを入力すれば完全になりうる不完全なコマンドを入力したときを決
   定することです。この関数は *ほとんど* の場合に実際のインタプリタメ
   インループと同じ決定を行います。

   *source* はソース文字列です。*filename* はオプションのソースが読み
   出されたファイル名で、デフォルトで "'<input>'" です。*symbol* はオ
   プションの文法の開始記号で、"'single'" (デフォルト)または "'eval'"
   のどちらかにすべきです。

   コマンドが完全で有効ならば、コードオブジェクトを返します
   ("compile(source, filename, symbol)" と同じ)。コマンドが完全でない
   ならば、 "None" を返します。コマンドが完全で構文エラーを含む場合は
   、 "SyntaxError" を発生させます。または、コマンドが無効なリテラルを
   含む場合は、 "OverflowError" もしくは "ValueError" を発生させます。


対話的なインタプリタオブジェクト
================================

InteractiveInterpreter.runsource(source[, filename[, symbol]])

   インタプリタ内のあるソースをコンパイルし実行します。引数は
   "compile_command()" のものと同じです。 *filename* のデフォルトは
   "'<input>'" で、 *symbol* は "'single'" です。あるいくつかのことが
   起きる可能性があります:

   * 入力が不正。 "compile_command()" が例外("SyntaxError" か
     "OverflowError")を起こした場合。 "showsyntaxerror()" メソッドの呼
     び出によって、構文トレースバックが表示されるでしょう。
     "runsource()" は "False" を返します。

   * 入力が完全でなく、さらに入力が必要。 "compile_command()" が
     "None" を返した場合。 "runsource()" は "True" を返します。

   * 入力が完全。 "compile_command()" がコードオブジェクトを返した場
     合 。 ("SystemExit" を除く実行時例外も処理する) "runcode()" を呼
     び出 すことによって、コードは実行されます。 "runsource()" は
     "False" を返します。

   戻り値は、次の行のプロンプトに "sys.ps1" か "sys.ps2" のどちらを使
   うのか判断するために使えます。

InteractiveInterpreter.runcode(code)

   コードオブジェクトを実行します。例外が生じたときは、トレースバック
   を表示するために "showtraceback()" が呼び出されます。伝搬することが
   許されている "SystemExit" を除くすべての例外が捉えられます。

   "KeyboardInterrupt" についての注意。このコードの他の場所でこの例外
   が生じる可能性がありますし、常に捕らえることができるとは限りません
   。呼び出し側はそれを処理するために準備しておくべきです。

InteractiveInterpreter.showsyntaxerror([filename])

   起きたばかりの構文エラーを表示します。複数の構文エラーに対して一つ
   あるのではないため、これはスタックトレースを表示しません。
   *filename* が与えられた場合は、Pythonのパーサが与えるデフォルトのフ
   ァイル名の代わりに例外の中へ入れられます。なぜなら、文字列から読み
   込んでいるときはパーサは常に "'<string>'" を使うからです。出力は
   "write()" メソッドによって書き込まれます。

InteractiveInterpreter.showtraceback()

   起きたばかりの例外を表示します。スタックの最初の項目を取り除きます
   。なぜなら、それはインタプリタオブジェクトの実装の内部にあるからで
   す。出力は "write()" メソッドによって書き込まれます。

InteractiveInterpreter.write(data)

   文字列を標準エラーストリーム("sys.stderr")へ書き込みます。必要に応
   じて適切な出力処理を提供するために、派生クラスはこれをオーバーライ
   ドすべきです。


対話的なコンソールオブジェクト
==============================

"InteractiveConsole" クラスは "InteractiveInterpreter" のサブクラスで
す。以下の追加メソッドだけでなく、インタプリタオブジェクトのすべてのメ
ソッドも提供します。

InteractiveConsole.interact([banner])

   Closely emulate the interactive Python console. The optional banner
   argument specify the banner to print before the first interaction;
   by default it prints a banner similar to the one printed by the
   standard Python interpreter, followed by the class name of the
   console object in parentheses (so as not to confuse this with the
   real interpreter – since it’s so close!).

InteractiveConsole.push(line)

   ソーステキストの一行をインタプリタへ送ります。その行の末尾に改行が
   ついていてはいけません。内部に改行を持っているかもしれません。その
   行はバッファへ追加され、ソースとして連結された内容が渡されインタプ
   リタの "runsource()" メソッドが呼び出されます。コマンドが実行された
   か、有効であることをこれが示している場合は、バッファはリセットされ
   ます。そうでなければ、コマンドが不完全で、その行が付加された後のま
   まバッファは残されます。さらに入力が必要ならば、戻り値は "True" で
   す。その行がある方法で処理されたならば、 "False" です(これは
   "runsource()" と同じです)。

InteractiveConsole.resetbuffer()

   入力バッファから処理されていないソーステキストを取り除きます。

InteractiveConsole.raw_input([prompt])

   Write a prompt and read a line.  The returned line does not include
   the trailing newline.  When the user enters the EOF key sequence,
   "EOFError" is raised. The base implementation uses the built-in
   function "raw_input()"; a subclass may replace this with a
   different implementation.
