8. トップレベル要素
*******************

Python インタプリタは、標準入力や、プログラムの引数として与えられたス
クリプト、対話的にタイプ入力された命令、モジュールのソースファイルなど
、様々な入力源から入力を得ることができます。この章では、それぞれの場合
に用いられる構文法について説明しています。


8.1. 完全な Python プログラム
=============================

言語仕様の中では、その言語を処理するインタプリタがどのように起動される
かまで規定する必要はないのですが、完全な Python プログラムについての概
念を持っておくと役に立ちます。完全な Python プログラムは、最小限に初期
化された環境 : 全ての組み込み変数と標準モジュールが利用可能で、かつ
"sys" ( 様々なシステムサービス ) 、 "__builtin__" ( 組み込み関数、例外
、および "None") 、 "__main__" の 3 つを除く全てのモジュールが初期化さ
れていない状態で動作します。 "__main__" は、完全なプログラムを実行する
際に、ローカルおよびグローバルな名前空間を提供するために用いられます。

完全な Python プログラムの構文は、下の節で述べるファイル入力のためのも
のです。

インタプリタは、対話的モード (interactive mode) で起動されることもあり
ます; この場合、インタプリタは完全なプログラムを読んで実行するのではな
く、一度に単一の実行文 (複合文のときもあります) を読み込んで実行します
。初期状態の環境は、完全なプログラムを実行するときの環境と同じです; 各
実行文は、 "__main__" の名前空間内で実行されます。

A complete program can be passed to the interpreter in three forms:
with the "-c" *string* command line option, as a file passed as the
first command line argument, or as standard input. If the file or
standard input is a tty device, the interpreter enters interactive
mode; otherwise, it executes the file as a complete program.


8.2. ファイル入力
=================

非対話的なファイルから読み出された入力は、全て同じ形式:

   file_input ::= (NEWLINE | statement)*

をとります。この構文法は、以下の状況で用いられます:

* (ファイルや文字列内の) 完全な Python プログラムを構文解析するとき;

* モジュールを構文解析するとき;

* "exec" 文に渡された文字列を構文解析するとき;


8.3. 対話的入力
===============

対話モードでの入力は、以下の文法の下に構文解析されます:

   interactive_input ::= [stmt_list] NEWLINE | compound_stmt NEWLINE

対話モードでは、(トップレベルの) 複合文の最後に空白行を入れなくてはな
らないことに注意してください; これは、複合文の終端をパーザが検出するた
めの手がかりとして必要です。


8.4. 式入力
===========

式入力には二つの形式があります。双方とも、先頭の空白を無視します。
"eval()" に対する文字列引数は、以下の形式をとらなければなりません:

   eval_input ::= expression_list NEWLINE*

"input()" で読み込まれる入力行は、以下の形式をとらなければなりません:

   input_input ::= expression_list NEWLINE

注意 : 文としての解釈を行わない ' 生の (raw)' 入力行を読み出すためには
、組み込み関数 "raw_input()" や、ファイルオブジェクトの "readline()"
メソッドを使うことができます。
