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

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


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

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

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

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

完全なプログラムは3つの形式でインタープリタに渡せます: "-c" *string*
コマンドラインオプションで、コマンドラインの第 1 引数で渡されるファイ
ル、あるいは標準入力として渡します。 ファイルや標準入力が tty デバイス
だった場合、インタープリタは対話モードに入ります。 それ以外の場合は、
ファイルを完全なプログラムとして実行します。


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

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

   file_input: (NEWLINE | statement)* ENDMARKER

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

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

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

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


9.3. 対話的入力
===============

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

   interactive_input: [stmt_list] NEWLINE | compound_stmt NEWLINE | ENDMARKER

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


9.4. 式入力
===========

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

   eval_input: expression_list NEWLINE* ENDMARKER
