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

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

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

The "codeop" module provides utilities upon which the Python read-
eval-print loop can be emulated, as is done in the "code" module.  As
a result, you probably don't want to use the module directly; if you
want to include such a loop in your program you probably want to use
the "code" module instead.

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

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

2. どのfuture文をユーザが入力したのかを覚えていること。したがって、実
   質的にそれに続く入力をこれらとともにコンパイルすることができます。

The "codeop" module provides a way of doing each of these things, and
a way of doing them both.

前者は実行するには:

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__"
   文を含むプログラムテキストをコンパイルする場合に、インスタンスは有
   効なその文とともにそれに続くすべてのプログラムテキストを'覚えていて
   'コンパイルするという違いがあります。
