"codeop" --- Compila código Python
**********************************

**Código fuente:** Lib/codeop.py

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

El módulo "codeop" proporciona herramientas para emular el bucle
principal del intérprete de Python (también conocido como read-eval-
print), tal como se hace en el módulo "code".  Por lo tanto, este
módulo no está diseñado para utilizarlo directamente; si desea incluir
un ciclo de este tipo en su programa, probablemente es mejor utilizar
el módulo "code" en su lugar.

Esta actividad consta de dos partes:

1. Ser capaz de identificar si una línea de entrada completa una
   sentencia de Python: en resumen, decir si se debe imprimir a
   continuación '">>>"' o '"..."' .

2. Recordar qué sentencias posteriores ha ingresado el usuario, para
   que estas entradas sean incluidas al momento de compilar.

El módulo "codeop" proporciona formas de realizar estas dos partes,
tanto de forma independiente, como en conjunto.

Para hacer lo anterior:

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

   Intenta compilar *source*, que debe ser una cadena de caracteres de
   código Python y retorna un objeto si *source* es código Python
   válido. En este caso, el atributo del nombre del archivo del objeto
   va a ser *filename*, el cuál por defecto es "'<input>'". Retorna
   "None" si *source* no es código Python válido, pero es un prefijo
   de código Python válido.

   Si hay un problema con *source*, se lanzará una excepción.
   "SyntaxError" se lanza si hay una sintaxis de Python no válida, y
   "OverflowError" o "ValueError" si hay un literal no válido.

   El argumento *symbol* determina si *source* se compila como una
   declaración ("'single'", el valor predeterminado) o como un
   *expression* ("'eval'"). Cualquier otro valor hará que se lance
   "ValueError".

   Nota:

     Es posible (pero no probable) que el analizador deje de analizar
     con un resultado exitoso antes de llegar al final de la fuente;
     en este caso, los símbolos finales pueden ignorarse en lugar de
     provocar un error. Por ejemplo, una barra invertida seguida de
     dos nuevas líneas puede ir seguida de basura arbitraria. Esto se
     solucionará una vez que la API para el analizador sea mejor.

class codeop.Compile

   Las instancias de esta clase tienen "__call__()" métodos idénticos
   en firma a la función incorporada "compile()", pero con la
   diferencia de que si la instancia compila el texto del programa que
   contiene una instrucción "__future__", la instancia 'recuerda' y
   compila todos los textos de programa posteriores con la declaración
   en vigor.

class codeop.CommandCompiler

   Las instancias de esta clase tienen "__call__()" métodos idénticos
   en firma a "compile_command()"; la diferencia es que si la
   instancia compila un texto de programa que contiene una declaración
   "__future__", la instancia 'recuerda' y compila todos los textos de
   programa posteriores con la declaración en vigor.
