9. 최상위 요소들
****************

파이썬 인터프리터는 여러 가지 출처로부터 입력을 얻을 수 있습니다: 표준
입력이나 프로그램 인자로 전달된 스크립트, 대화형으로 입력된 것, 모듈
소스 파일 등등. 이 장은 이 경우들에 사용되는 문법을 제공합니다.


9.1. 완전한 파이썬 프로그램
===========================

언어 규격이 어떤 식으로 언어 인터프리터가 실행되는지를 미리 규정할 필
요는 없지만, 완전한 파이썬 프로그램이라는 개념을 갖는 것은 쓸모가 있습
니다. 완전한 파이썬 프로그램은 최소한으로 초기화된 환경에서 실행됩니다
: 모든 내장과 표준 모듈이 제공되지만, "sys" (각종 시스템 서비스들)와
"builtins" (내장 함수들, 예외들, "None")과 "__main__" 이외의 어느 것도
초기화되지 않았습니다. 마지막 것은 완전한 프로그램의 실행을 위한 지역
과 전역 이름 공간을 제공하는 데 사용됩니다.

완전한 파이썬 프로그램의 문법은 다음 섹션에서 설명되는 파일 입력의 경
우입니다.

인터프리터는 대화형으로 실행될 수도 있습니다; 이 경우, 완전한 프로그램
을 읽어서 실행하지 않고, 한 번에 한 문장 (복합문도 가능하다) 씩 읽어서
실행합니다. 초기 환경은 완전한 프로그램과 같습니다; 각 문장은
"__main__" 의 이름 공간에서 실행됩니다.

완전한 프로그램은 세 가지 형태로 인터프리터에게 전달될 수 있습니다:
"-c" *string* 명령행 옵션으로, 첫 번째 명령행 인자로 전달된 파일로, 표
준 입력으로. 파일이나 표준입력이 tty 장치면, 인터프리터는 대화형 모드
로 돌입합니다; 그렇지 않으면 그 파일을 완전한 프로그램으로 실행합니다.


9.2. 파일 입력
==============

비대화형 파일로부터 읽힌 모든 입력은 같은 형태를 취합니다:

   file_input ::= (NEWLINE | statement)*

이 문법은 다음과 같은 상황에서 사용됩니다:

* (파일이나 문자열로부터 온) 완전한 파이썬 프로그램을 파싱할 때;

* 모듈을 파싱할 때;

* "exec()" 함수로 전달된 문자열을 파싱할 때;


9.3. 대화형 입력
================

대화형 모드에서의 입력은 다음과 같은 문법 규칙을 사용합니다:

   interactive_input ::= [stmt_list] NEWLINE | compound_stmt NEWLINE

(최상위) 복합문은 대화형 모드에서 빈 줄을 붙여줘야 함에 유념해야 합니
다; 파서가 입력의 끝을 감지하는 데 필요합니다.


9.4. 표현식 입력
================

표현식 입력을 위해 "eval()" 이 사용됩니다. 앞에 오는 공백을 무시합니다
. "eval()" 의 문자열 인자는 다음과 같은 형식을 취해야 합니다:

   eval_input ::= expression_list NEWLINE*
