source: vendor/python/2.5/Doc/ref/ref1.tex

Last change on this file was 3225, checked in by bird, 18 years ago

Python 2.5

File size: 6.3 KB
Line 
1\chapter{Introduction\label{introduction}}
2
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.
16If you would like to see a more formal definition of the language,
17maybe you could volunteer your time --- or invent a cloning machine
18:-).
19
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
23other hand, there is currently only one Python implementation in
24widespread use (although alternate implementations exist), and
25its 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
32\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.
35
36
37\section{Alternate Implementations\label{implementations}}
38
39Though there is one Python implementation which is by far the most
40popular, there are some alternate implementations which are of
41particular interest to different audiences.
42
43Known implementations include:
44
45\begin{itemize}
46\item[CPython]
47This is the original and most-maintained implementation of Python,
48written in C. New language features generally appear here first.
49
50\item[Jython]
51Python implemented in Java. This implementation can be used as a
52scripting language for Java applications, or can be used to create
53applications using the Java class libraries. It is also often used to
54create tests for Java libraries. More information can be found at
55\ulink{the Jython website}{http://www.jython.org/}.
56
57\item[Python for .NET]
58This implementation actually uses the CPython implementation, but is a
59managed .NET application and makes .NET libraries available. This was
60created by Brian Lloyd. For more information, see the \ulink{Python
61for .NET home page}{http://www.zope.org/Members/Brian/PythonNet}.
62
63\item[IronPython]
64An alternate Python for\ .NET. Unlike Python.NET, this is a complete
65Python implementation that generates IL, and compiles Python code
66directly to\ .NET assemblies. It was created by Jim Hugunin, the
67original creator of Jython. For more information, see \ulink{the
68IronPython website}{http://workspaces.gotdotnet.com/ironpython}.
69
70\item[PyPy]
71An implementation of Python written in Python; even the bytecode
72interpreter is written in Python. This is executed using CPython as
73the underlying interpreter. One of the goals of the project is to
74encourage experimentation with the language itself by making it easier
75to modify the interpreter (since it is written in Python). Additional
76information is available on \ulink{the PyPy project's home
77page}{http://codespeak.net/pypy/}.
78\end{itemize}
79
80Each of these implementations varies in some way from the language as
81documented in this manual, or introduces specific information beyond
82what's covered in the standard Python documentation. Please refer to
83the implementation-specific documentation to determine what else you
84need to know about the specific implementation you're using.
85
86
87\section{Notation\label{notation}}
88
89The descriptions of lexical analysis and syntax use a modified BNF
90grammar notation. This uses the following style of definition:
91\index{BNF}
92\index{grammar}
93\index{syntax}
94\index{notation}
95
96\begin{productionlist}
97 \production{name}{\token{lc_letter} (\token{lc_letter} | "_")*}
98 \production{lc_letter}{"a"..."z"}
99\end{productionlist}
100
101The first line says that a \code{name} is an \code{lc_letter} followed by
102a sequence of zero or more \code{lc_letter}s and underscores. An
103\code{lc_letter} in turn is any of the single characters \character{a}
104through \character{z}. (This rule is actually adhered to for the
105names defined in lexical and grammar rules in this document.)
106
107Each rule begins with a name (which is the name defined by the rule)
108and \code{::=}. A vertical bar (\code{|}) is used to separate
109alternatives; it is the least binding operator in this notation. A
110star (\code{*}) means zero or more repetitions of the preceding item;
111likewise, a plus (\code{+}) means one or more repetitions, and a
112phrase enclosed in square brackets (\code{[ ]}) means zero or one
113occurrences (in other words, the enclosed phrase is optional). The
114\code{*} and \code{+} operators bind as tightly as possible;
115parentheses are used for grouping. Literal strings are enclosed in
116quotes. White space is only meaningful to separate tokens.
117Rules are normally contained on a single line; rules with many
118alternatives may be formatted alternatively with each line after the
119first beginning with a vertical bar.
120
121In lexical definitions (as the example above), two more conventions
122are used: Two literal characters separated by three dots mean a choice
123of any single character in the given (inclusive) range of \ASCII{}
124characters. A phrase between angular brackets (\code{<...>}) gives an
125informal description of the symbol defined; e.g., this could be used
126to describe the notion of `control character' if needed.
127\index{lexical definitions}
128\index{ASCII@\ASCII}
129
130Even though the notation used is almost the same, there is a big
131difference between the meaning of lexical and syntactic definitions:
132a lexical definition operates on the individual characters of the
133input source, while a syntax definition operates on the stream of
134tokens generated by the lexical analysis. All uses of BNF in the next
135chapter (``Lexical Analysis'') are lexical definitions; uses in
136subsequent chapters are syntactic definitions.
Note: See TracBrowser for help on using the repository browser.