9. Komponen tingkat atas
************************

*Interpreter* Python dapat memperoleh masukan dari sejumlah sumber:
dari skrip yang diteruskan sebagai masukan standar atau sebagai
argumen program, diketikkan secara interaktif, dari berkas sumber
modul, dll. Bab ini memberikan sintaks yang digunakan dalam kasus-
kasus tersebut.


9.1. Program Python lengkap
===========================

Meskipun spesifikasi bahasa tidak perlu menentukan bagaimana
interpreter bahasa digunakan, penting untuk memiliki gagasan tentang
program Python yang lengkap. Program Python lengkap dioperasikan dalam
lingkungan yang diinisialisasi minimal: semua modul bawaan dan standar
tersedia, tetapi tidak ada yang diinisialisasi, kecuali untuk "sys"
(berbagai layanan sistem), "builtins" (fungsi bawaan, pengecualian dan
"None") dan "__main__". Yang terakhir digunakan untuk menyediakan
*namespace* lokal dan global untuk eksekusi program lengkap.

Sintaksis untuk program Python lengkap adalah untuk masukan berkas,
dijelaskan pada bagian selanjutnya.

*Interpreter* juga dapat dipanggil dalam mode interaktif; dalam hal
ini, ia tidak membaca dan menjalankan program yang lengkap tetapi
membaca dan mengeksekusi satu pernyataan (mungkin digabungkan) pada
suatu waktu. Lingkungan awal identik dengan program lengkap; setiap
pernyataan dieksekusi di *namespace* "__main__".

Program lengkap dapat diteruskan ke interpreter dalam tiga bentuk:
dengan opsi "-c" *string* opsi baris perintah, sebagai file yang
diteruskan sebagai argumen baris perintah pertama, atau sebagai
masukan standar. Jika berkas atau masukan standar adalah perangkat
tty, *interpreter* memasuki mode interaktif; jika tidak, berkas akan
dieksekusi sebagai program yang lengkap.


9.2. Masukan dari Berkas
========================

Semua input yang dibaca dari berkas non-interaktif memiliki bentuk
yang sama:

   file_input ::= (NEWLINE | statement)*

Sintaks ini digunakan dalam situasi berikut:

* saat mengurai program Python lengkap (dari berkas atau dari string);

* ketika mengurai sebuah modul;

* saat mengurai sebuah string yang dilewatkan ke fungsi "exec()";


9.3. Masukan interaktif
=======================

Input dalam mode interaktif diuraikan menggunakan tata bahasa berikut:

   interactive_input ::= [stmt_list] NEWLINE | compound_stmt NEWLINE

Perhatikan bahwa pernyataan gabungan (tingkat atas) harus diikuti oleh
baris kosong dalam mode interaktif; ini diperlukan untuk membantu
parser mendeteksi akhir masukan.


9.4. Masukan ekspresi
=====================

"eval()" digunakan untuk masukan ekspresi. Itu mengabaikan spasi
*whitespace* sebelumnya. Argumen string ke "eval()" harus memiliki
bentuk berikut:

   eval_input ::= expression_list NEWLINE*
