| \chapter{Introduction\label{introduction}} | 
 |  | 
 | This reference manual describes the Python programming language. | 
 | It is not intended as a tutorial. | 
 |  | 
 | While I am trying to be as precise as possible, I chose to use English | 
 | rather than formal specifications for everything except syntax and | 
 | lexical analysis.  This should make the document more understandable | 
 | to the average reader, but will leave room for ambiguities. | 
 | Consequently, if you were coming from Mars and tried to re-implement | 
 | Python from this document alone, you might have to guess things and in | 
 | fact you would probably end up implementing quite a different language. | 
 | On the other hand, if you are using | 
 | Python and wonder what the precise rules about a particular area of | 
 | the language are, you should definitely be able to find them here. | 
 | If you would like to see a more formal definition of the language, | 
 | maybe you could volunteer your time --- or invent a cloning machine | 
 | :-). | 
 |  | 
 | It is dangerous to add too many implementation details to a language | 
 | reference document --- the implementation may change, and other | 
 | implementations of the same language may work differently.  On the | 
 | other hand, there is currently only one Python implementation in | 
 | widespread use (although a second one now exists!), and | 
 | its particular quirks are sometimes worth being mentioned, especially | 
 | where the implementation imposes additional limitations.  Therefore, | 
 | you'll find short ``implementation notes'' sprinkled throughout the | 
 | text. | 
 |  | 
 | Every Python implementation comes with a number of built-in and | 
 | standard modules.  These are not documented here, but in the separate | 
 | \citetitle[../lib/lib.html]{Python Library Reference} document.  A few | 
 | built-in modules are mentioned when they interact in a significant way | 
 | with the language definition. | 
 |  | 
 |  | 
 | \section{Notation\label{notation}} | 
 |  | 
 | The descriptions of lexical analysis and syntax use a modified BNF | 
 | grammar notation.  This uses the following style of definition: | 
 | \index{BNF} | 
 | \index{grammar} | 
 | \index{syntax} | 
 | \index{notation} | 
 |  | 
 | \begin{verbatim} | 
 | name:           lc_letter (lc_letter | "_")* | 
 | lc_letter:      "a"..."z" | 
 | \end{verbatim} | 
 |  | 
 | The first line says that a \code{name} is an \code{lc_letter} followed by | 
 | a sequence of zero or more \code{lc_letter}s and underscores.  An | 
 | \code{lc_letter} in turn is any of the single characters \character{a} | 
 | through \character{z}.  (This rule is actually adhered to for the | 
 | names defined in lexical and grammar rules in this document.) | 
 |  | 
 | Each rule begins with a name (which is the name defined by the rule) | 
 | and a colon.  A vertical bar (\code{|}) is used to separate | 
 | alternatives; it is the least binding operator in this notation.  A | 
 | star (\code{*}) means zero or more repetitions of the preceding item; | 
 | likewise, a plus (\code{+}) means one or more repetitions, and a | 
 | phrase enclosed in square brackets (\code{[ ]}) means zero or one | 
 | occurrences (in other words, the enclosed phrase is optional).  The | 
 | \code{*} and \code{+} operators bind as tightly as possible; | 
 | parentheses are used for grouping.  Literal strings are enclosed in | 
 | quotes.  White space is only meaningful to separate tokens. | 
 | Rules are normally contained on a single line; rules with many | 
 | alternatives may be formatted alternatively with each line after the | 
 | first beginning with a vertical bar. | 
 |  | 
 | In lexical definitions (as the example above), two more conventions | 
 | are used: Two literal characters separated by three dots mean a choice | 
 | of any single character in the given (inclusive) range of \ASCII{} | 
 | characters.  A phrase between angular brackets (\code{<...>}) gives an | 
 | informal description of the symbol defined; e.g., this could be used | 
 | to describe the notion of `control character' if needed. | 
 | \index{lexical definitions} | 
 | \index{ASCII@\ASCII} | 
 |  | 
 | Even though the notation used is almost the same, there is a big | 
 | difference between the meaning of lexical and syntactic definitions: | 
 | a lexical definition operates on the individual characters of the | 
 | input source, while a syntax definition operates on the stream of | 
 | tokens generated by the lexical analysis.  All uses of BNF in the next | 
 | chapter (``Lexical Analysis'') are lexical definitions; uses in | 
 | subsequent chapters are syntactic definitions. |