\chapter{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 better 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.

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, 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
{\em Python Library Reference} document.  A few built-in modules are
mentioned when they interact in a significant way with the language
definition.

\section{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 \verb\name\ is an \verb\lc_letter\ followed by
a sequence of zero or more \verb\lc_letter\s and underscores.  An
\verb\lc_letter\ in turn is any of the single characters `a' through `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 (\verb\|\) is used to separate
alternatives; it is the least binding operator in this notation.  A
star (\verb\*\) means zero or more repetitions of the preceding item;
likewise, a plus (\verb\+\) means one or more repetitions, and a
phrase enclosed in square brackets (\verb\[ ]\) means zero or one
occurrences (in other words, the enclosed phrase is optional).  The
\verb\*\ and \verb\+\ operators bind as tightly as possible;
parentheses are used for grouping.  Literal strings are enclosed in
double 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 (\verb\<...>\) 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}

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.
