"codeop" --- Python コードをコンパイルする
******************************************

**ソースコード:** Lib/codeop.py

======================================================================

"codeop" モジュールは、"code" モジュールが行っているように、Python の
read-eval-print (読み込み・評価・表示) ループをエミュレートするための
機能を提供します。 通常、このモジュールを直接使う必要はありません。 そ
のようなループをプログラムに組み込むには、代わりに "code" モジュールを
使うとよいでしょう。

この仕事には二つの部分があります:

1. 入力の一行がPythonの文として完全であるかどうかを見分けられること:
   簡単に言えば、次が '">>>"' か、あるいは '"..."' かどうかを見分けま
   す。

2. ユーザーが入力した future 文を記憶し、それ以降の入力を、その指定が
   有効な状態でコンパイルできること。

"codeop" モジュールは、これらを個別に行う手段と、両方をまとめて行う手
段を提供します。

前者は実行するには:

codeop.compile_command(source, filename='<input>', symbol='single')

   Pythonコードの文字列であるべき *source* をコンパイルしてみて、
   *source* が有効なPythonコードの場合はコードオブジェクトを返します。
   このような場合、コードオブジェクトのファイル名属性は、デフォルトで
   "'<input>'" である *filename* でしょう。*source* が有効なPythonコー
   ドでは *ない* が、有効なPythonコードの接頭語である場合には、"None"
   を返します。

   *source* に問題がある場合は、例外を発生させます。無効なPython構文が
   ある場合は、 "SyntaxError" を発生させます。また、無効なリテラルがあ
   る場合は、 "OverflowError" または "ValueError" を発生させます。

   *symbol* 引数は *source* が文としてコンパイルされるか("'single'" 、
   デフォルト) 、*文* のシーケンスとしてか ("'exec'") 、または *式* と
   してコンパイルされるかを決定します("'eval'")。他のどんな値も
   "ValueError" を送出させます。

   注釈:

     ソースの終わりに達する前に、成功した結果をもってパーサは構文解析
     を止めることがあります。このような場合、後ろに続く記号はエラーと
     ならずに無視されます。例えば、バックスラッシュの後ろに改行が2つあ
     って、その後ろにゴミがあるかもしれません。パーサのAPIがより良くな
     ればすぐに、この挙動は修正されるでしょう。

class codeop.Compile

   このクラスのインスタンスは、組み込み関数 "compile()" と同じシグネチ
   ャの "__call__()" メソッドを持ちます。 ただし、"__future__" 文を含
   むプログラムテキストをコンパイルすると、その文の指定を記憶し、以後
   のすべてのプログラムテキストにもその指定を適用してコンパイルします
   。

class codeop.CommandCompiler

   このクラスのインスタンスは、"compile_command()" と同じシグネチャの
   "__call__()" メソッドを持ちます。 ただし、"__future__" 文を含むプロ
   グラムテキストをコンパイルすると、その文の指定を記憶し、以後のすべ
   てのプログラムテキストにもその指定を適用してコンパイルします。
