blob: 4aae253400abb8148f411b3e1a0413fd6f38338b [file] [log] [blame]
Fred Drake61c77281998-07-28 19:34:22 +00001\chapter{Introduction\label{introduction}}
Fred Drakef6669171998-05-06 19:52:49 +00002
3This reference manual describes the Python programming language.
4It is not intended as a tutorial.
5
6While I am trying to be as precise as possible, I chose to use English
7rather than formal specifications for everything except syntax and
8lexical analysis. This should make the document more understandable
9to the average reader, but will leave room for ambiguities.
10Consequently, if you were coming from Mars and tried to re-implement
11Python from this document alone, you might have to guess things and in
12fact you would probably end up implementing quite a different language.
13On the other hand, if you are using
14Python and wonder what the precise rules about a particular area of
15the language are, you should definitely be able to find them here.
Thomas Woutersf9b526d2000-07-16 19:05:38 +000016If you would like to see a more formal definition of the language,
Guido van Rossum0bd37951998-06-15 16:27:37 +000017maybe you could volunteer your time --- or invent a cloning machine
18:-).
Fred Drakef6669171998-05-06 19:52:49 +000019
20It is dangerous to add too many implementation details to a language
21reference document --- the implementation may change, and other
22implementations of the same language may work differently. On the
Guido van Rossum0bd37951998-06-15 16:27:37 +000023other hand, there is currently only one Python implementation in
24widespread use (although a second one now exists!), and
Fred Drakef6669171998-05-06 19:52:49 +000025its particular quirks are sometimes worth being mentioned, especially
26where the implementation imposes additional limitations. Therefore,
27you'll find short ``implementation notes'' sprinkled throughout the
28text.
29
30Every Python implementation comes with a number of built-in and
31standard modules. These are not documented here, but in the separate
Fred Drakee15eb351999-11-10 16:13:25 +000032\citetitle[../lib/lib.html]{Python Library Reference} document. A few
33built-in modules are mentioned when they interact in a significant way
34with the language definition.
Fred Drakef6669171998-05-06 19:52:49 +000035
Fred Drake2829f1c2001-06-23 05:27:20 +000036
Fred Drake61c77281998-07-28 19:34:22 +000037\section{Notation\label{notation}}
Fred Drakef6669171998-05-06 19:52:49 +000038
39The descriptions of lexical analysis and syntax use a modified BNF
40grammar notation. This uses the following style of definition:
41\index{BNF}
42\index{grammar}
43\index{syntax}
44\index{notation}
45
46\begin{verbatim}
47name: lc_letter (lc_letter | "_")*
48lc_letter: "a"..."z"
49\end{verbatim}
50
Fred Drake5c07d9b1998-05-14 19:37:06 +000051The first line says that a \code{name} is an \code{lc_letter} followed by
52a sequence of zero or more \code{lc_letter}s and underscores. An
53\code{lc_letter} in turn is any of the single characters \character{a}
54through \character{z}. (This rule is actually adhered to for the
55names defined in lexical and grammar rules in this document.)
Fred Drakef6669171998-05-06 19:52:49 +000056
57Each rule begins with a name (which is the name defined by the rule)
Fred Drake5c07d9b1998-05-14 19:37:06 +000058and a colon. A vertical bar (\code{|}) is used to separate
Fred Drakef6669171998-05-06 19:52:49 +000059alternatives; it is the least binding operator in this notation. A
Fred Drake5c07d9b1998-05-14 19:37:06 +000060star (\code{*}) means zero or more repetitions of the preceding item;
61likewise, a plus (\code{+}) means one or more repetitions, and a
62phrase enclosed in square brackets (\code{[ ]}) means zero or one
Fred Drakef6669171998-05-06 19:52:49 +000063occurrences (in other words, the enclosed phrase is optional). The
Fred Drake5c07d9b1998-05-14 19:37:06 +000064\code{*} and \code{+} operators bind as tightly as possible;
Fred Drakef6669171998-05-06 19:52:49 +000065parentheses are used for grouping. Literal strings are enclosed in
66quotes. White space is only meaningful to separate tokens.
67Rules are normally contained on a single line; rules with many
68alternatives may be formatted alternatively with each line after the
69first beginning with a vertical bar.
70
71In lexical definitions (as the example above), two more conventions
72are used: Two literal characters separated by three dots mean a choice
73of any single character in the given (inclusive) range of \ASCII{}
Fred Drake5c07d9b1998-05-14 19:37:06 +000074characters. A phrase between angular brackets (\code{<...>}) gives an
Guido van Rossum7c0240f1998-07-24 15:36:43 +000075informal description of the symbol defined; e.g., this could be used
Fred Drakef6669171998-05-06 19:52:49 +000076to describe the notion of `control character' if needed.
77\index{lexical definitions}
Fred Drakec37b65e2001-11-28 07:26:15 +000078\index{ASCII@\ASCII}
Fred Drakef6669171998-05-06 19:52:49 +000079
80Even though the notation used is almost the same, there is a big
81difference between the meaning of lexical and syntactic definitions:
82a lexical definition operates on the individual characters of the
83input source, while a syntax definition operates on the stream of
84tokens generated by the lexical analysis. All uses of BNF in the next
85chapter (``Lexical Analysis'') are lexical definitions; uses in
86subsequent chapters are syntactic definitions.