annotate Doc/ref2.tex @ 3720:b341def4eef8 legacy-trunk

Ignore latex intermediate products.
author Guido van Rossum <guido@python.org>
date Wed, 26 Jun 1996 19:30:01 +0000
parents 68d7eae6cbd6
children d6897385c318
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 \chapter{Lexical analysis}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 A Python program is read by a {\em parser}. Input to the parser is a
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 stream of {\em tokens}, generated by the {\em lexical analyzer}. This
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 chapter describes how the lexical analyzer breaks a file into tokens.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 \index{lexical analysis}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 \index{parser}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 \index{token}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 \section{Line structure}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 A Python program is divided in a number of logical lines. The end of
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 a logical line is represented by the token NEWLINE. Statements cannot
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 cross logical line boundaries except where NEWLINE is allowed by the
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 syntax (e.g. between statements in compound statements).
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 \index{line structure}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 \index{logical line}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 \index{NEWLINE token}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 \subsection{Comments}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
22 A comment starts with a hash character (\verb@#@) that is not part of
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 a string literal, and ends at the end of the physical line. A comment
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 always signifies the end of the logical line. Comments are ignored by
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 the syntax.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 \index{comment}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 \index{logical line}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 \index{physical line}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 \index{hash character}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
31 \subsection{Explicit line joining}
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 Two or more physical lines may be joined into logical lines using
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 backslash characters (\verb/\/), as follows: when a physical line ends
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 in a backslash that is not part of a string literal or comment, it is
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 joined with the following forming a single logical line, deleting the
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 backslash and the following end-of-line character. For example:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 \index{physical line}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 \index{line joining}
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
40 \index{line continuation}
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 \index{backslash character}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 %
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 \begin{verbatim}
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
44 if 1900 < year < 2100 and 1 <= month <= 12 \
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
45 and 1 <= day <= 31 and 0 <= hour < 24 \
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
46 and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
47 return 1
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
50 A line ending in a backslash cannot carry a comment; a backslash does
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
51 not continue a comment (but it does continue a string literal, see
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
52 below).
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
53
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
54 \subsection{Implicit line joining}
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
55
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
56 Expressions in parentheses, square brackets or curly braces can be
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
57 split over more than one physical line without using backslashes.
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
58 For example:
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
59
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
60 \begin{verbatim}
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
61 month_names = ['Januari', 'Februari', 'Maart', # These are the
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
62 'April', 'Mei', 'Juni', # Dutch names
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
63 'Juli', 'Augustus', 'September', # for the months
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
64 'Oktober', 'November', 'December'] # of the year
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
65 \end{verbatim}
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
66
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
67 Implicitly continued lines can carry comments. The indentation of the
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
68 continuation lines is not important. Blank continuation lines are
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
69 allowed.
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
70
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 \subsection{Blank lines}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
72
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 A logical line that contains only spaces, tabs, and possibly a
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 comment, is ignored (i.e., no NEWLINE token is generated), except that
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 during interactive input of statements, an entirely blank logical line
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 terminates a multi-line statement.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 \index{blank line}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
78
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
79 \subsection{Indentation}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
80
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 Leading whitespace (spaces and tabs) at the beginning of a logical
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 line is used to compute the indentation level of the line, which in
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
83 turn is used to determine the grouping of statements.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 \index{indentation}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 \index{whitespace}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
86 \index{leading whitespace}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 \index{space}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
88 \index{tab}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
89 \index{grouping}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 \index{statement grouping}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
91
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 First, tabs are replaced (from left to right) by one to eight spaces
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 such that the total number of characters up to there is a multiple of
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 eight (this is intended to be the same rule as used by {\UNIX}). The
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 total number of spaces preceding the first non-blank character then
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 determines the line's indentation. Indentation cannot be split over
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 multiple physical lines using backslashes.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
98
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 The indentation levels of consecutive lines are used to generate
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 INDENT and DEDENT tokens, using a stack, as follows.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 \index{INDENT token}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 \index{DEDENT token}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
103
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 Before the first line of the file is read, a single zero is pushed on
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 the stack; this will never be popped off again. The numbers pushed on
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 the stack will always be strictly increasing from bottom to top. At
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 the beginning of each logical line, the line's indentation level is
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 compared to the top of the stack. If it is equal, nothing happens.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 If it is larger, it is pushed on the stack, and one INDENT token is
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 generated. If it is smaller, it {\em must} be one of the numbers
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 occurring on the stack; all numbers on the stack that are larger are
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 popped off, and for each number popped off a DEDENT token is
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
113 generated. At the end of the file, a DEDENT token is generated for
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 each number remaining on the stack that is larger than zero.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
115
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 Here is an example of a correctly (though confusingly) indented piece
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 of Python code:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
118
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 \begin{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 def perm(l):
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 # Compute the list of all permutations of l
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
122
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 if len(l) <= 1:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 return [l]
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 r = []
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 for i in range(len(l)):
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
127 s = l[:i] + l[i+1:]
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 p = perm(s)
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 for x in p:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 r.append(l[i:i+1] + x)
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 return r
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
133
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 The following example shows various indentation errors:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
135
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 \begin{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 def perm(l): # error: first line indented
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 for i in range(len(l)): # error: not indented
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 s = l[:i] + l[i+1:]
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 p = perm(l[:i] + l[i+1:]) # error: unexpected indent
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 for x in p:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
142 r.append(l[i:i+1] + x)
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 return r # error: inconsistent dedent
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
144 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
145
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 (Actually, the first three errors are detected by the parser; only the
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 last error is found by the lexical analyzer --- the indentation of
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
148 \verb@return r@ does not match a level popped off the stack.)
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
149
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 \section{Other tokens}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
151
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 Besides NEWLINE, INDENT and DEDENT, the following categories of tokens
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 exist: identifiers, keywords, literals, operators, and delimiters.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
154 Spaces and tabs are not tokens, but serve to delimit tokens. Where
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
155 ambiguity exists, a token comprises the longest possible string that
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
156 forms a legal token, when read from left to right.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
157
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
158 \section{Identifiers}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
159
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 Identifiers (also referred to as names) are described by the following
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 lexical definitions:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
162 \index{identifier}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 \index{name}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
164
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 \begin{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 identifier: (letter|"_") (letter|digit|"_")*
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
167 letter: lowercase | uppercase
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 lowercase: "a"..."z"
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 uppercase: "A"..."Z"
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 digit: "0"..."9"
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
172
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 Identifiers are unlimited in length. Case is significant.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
174
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 \subsection{Keywords}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
176
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 The following identifiers are used as reserved words, or {\em
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 keywords} of the language, and cannot be used as ordinary
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
179 identifiers. They must be spelled exactly as written here:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 \index{keyword}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 \index{reserved word}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
182
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 \begin{verbatim}
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
184 access del from lambda return
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
185 and elif global not try
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
186 break else if or while
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
187 class except import pass
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
188 continue finally in print
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
189 def for is raise
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
190 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
191
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
192 % When adding keywords, pipe it through keywords.py for reformatting
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
193
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
194 \section{Literals} \label{literals}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
195
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
196 Literals are notations for constant values of some built-in types.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
197 \index{literal}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
198 \index{constant}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
199
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
200 \subsection{String literals}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
201
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
202 String literals are described by the following lexical definitions:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
203 \index{string literal}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
204
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
205 \begin{verbatim}
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
206 stringliteral: shortstring | longstring
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
207 shortstring: "'" shortstringitem* "'" | '"' shortstringitem* '"'
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
208 longstring: "'''" longstringitem* "'''" | '"""' longstringitem* '"""'
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
209 shortstringitem: shortstringchar | escapeseq
2820
68d7eae6cbd6 add missing definitin of longstringitem
Guido van Rossum <guido@python.org>
parents: 2562
diff changeset
210 longstringitem: longstringchar | escapeseq
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
211 shortstringchar: <any ASCII character except "\" or newline or the quote>
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
212 longstringchar: <any ASCII character except "\">
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
213 escapeseq: "\" <any ASCII character>
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
214 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
215 \index{ASCII}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
216
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
217 In ``long strings'' (strings surrounded by sets of three quotes),
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
218 unescaped newlines and quotes are allowed (and are retained), except
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
219 that three unescaped quotes in a row terminate the string. (A
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
220 ``quote'' is the character used to open the string, i.e. either
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
221 \verb/'/ or \verb/"/.)
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
222
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
223 Escape sequences in strings are interpreted according to rules similar
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
224 to those used by Standard C. The recognized escape sequences are:
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
225 \index{physical line}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
226 \index{escape sequence}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
227 \index{Standard C}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
228 \index{C}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
229
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
230 \begin{center}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
231 \begin{tabular}{|l|l|}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
232 \hline
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
233 \verb/\/{\em newline} & Ignored \\
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
234 \verb/\\/ & Backslash (\verb/\/) \\
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
235 \verb/\'/ & Single quote (\verb/'/) \\
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
236 \verb/\"/ & Double quote (\verb/"/) \\
2550
0f6ff45bd816 replace ASCII by macro call
Guido van Rossum <guido@python.org>
parents: 1767
diff changeset
237 \verb/\a/ & \ASCII{} Bell (BEL) \\
0f6ff45bd816 replace ASCII by macro call
Guido van Rossum <guido@python.org>
parents: 1767
diff changeset
238 \verb/\b/ & \ASCII{} Backspace (BS) \\
0f6ff45bd816 replace ASCII by macro call
Guido van Rossum <guido@python.org>
parents: 1767
diff changeset
239 %\verb/\E/ & \ASCII{} Escape (ESC) \\
0f6ff45bd816 replace ASCII by macro call
Guido van Rossum <guido@python.org>
parents: 1767
diff changeset
240 \verb/\f/ & \ASCII{} Formfeed (FF) \\
0f6ff45bd816 replace ASCII by macro call
Guido van Rossum <guido@python.org>
parents: 1767
diff changeset
241 \verb/\n/ & \ASCII{} Linefeed (LF) \\
0f6ff45bd816 replace ASCII by macro call
Guido van Rossum <guido@python.org>
parents: 1767
diff changeset
242 \verb/\r/ & \ASCII{} Carriage Return (CR) \\
0f6ff45bd816 replace ASCII by macro call
Guido van Rossum <guido@python.org>
parents: 1767
diff changeset
243 \verb/\t/ & \ASCII{} Horizontal Tab (TAB) \\
0f6ff45bd816 replace ASCII by macro call
Guido van Rossum <guido@python.org>
parents: 1767
diff changeset
244 \verb/\v/ & \ASCII{} Vertical Tab (VT) \\
0f6ff45bd816 replace ASCII by macro call
Guido van Rossum <guido@python.org>
parents: 1767
diff changeset
245 \verb/\/{\em ooo} & \ASCII{} character with octal value {\em ooo} \\
0f6ff45bd816 replace ASCII by macro call
Guido van Rossum <guido@python.org>
parents: 1767
diff changeset
246 \verb/\x/{\em xx...} & \ASCII{} character with hex value {\em xx...} \\
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
247 \hline
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
248 \end{tabular}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
249 \end{center}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
250 \index{ASCII}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
251
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
252 In strict compatibility with Standard C, up to three octal digits are
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
253 accepted, but an unlimited number of hex digits is taken to be part of
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
254 the hex escape (and then the lower 8 bits of the resulting hex number
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
255 are used in all current implementations...).
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
256
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
257 All unrecognized escape sequences are left in the string unchanged,
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
258 i.e., {\em the backslash is left in the string.} (This behavior is
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
259 useful when debugging: if an escape sequence is mistyped, the
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
260 resulting output is more easily recognized as broken. It also helps a
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
261 great deal for string literals used as regular expressions or
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
262 otherwise passed to other modules that do their own escape handling.)
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
263 \index{unrecognized escape sequence}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
264
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
265 \subsection{Numeric literals}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
266
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
267 There are three types of numeric literals: plain integers, long
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
268 integers, and floating point numbers.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
269 \index{number}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
270 \index{numeric literal}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
271 \index{integer literal}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
272 \index{plain integer literal}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
273 \index{long integer literal}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
274 \index{floating point literal}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
275 \index{hexadecimal literal}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
276 \index{octal literal}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
277 \index{decimal literal}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
278
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
279 Integer and long integer literals are described by the following
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
280 lexical definitions:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
281
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
282 \begin{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
283 longinteger: integer ("l"|"L")
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
284 integer: decimalinteger | octinteger | hexinteger
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
285 decimalinteger: nonzerodigit digit* | "0"
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
286 octinteger: "0" octdigit+
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
287 hexinteger: "0" ("x"|"X") hexdigit+
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
288
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
289 nonzerodigit: "1"..."9"
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 octdigit: "0"..."7"
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
291 hexdigit: digit|"a"..."f"|"A"..."F"
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
292 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
293
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
294 Although both lower case `l' and upper case `L' are allowed as suffix
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
295 for long integers, it is strongly recommended to always use `L', since
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
296 the letter `l' looks too much like the digit `1'.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
297
2562
3828206c2dc0 made palatable for latex2html:
Guido van Rossum <guido@python.org>
parents: 2550
diff changeset
298 Plain integer decimal literals must be at most 2147483647 (i.e., the
3828206c2dc0 made palatable for latex2html:
Guido van Rossum <guido@python.org>
parents: 2550
diff changeset
299 largest positive integer, using 32-bit arithmetic). Plain octal and
3828206c2dc0 made palatable for latex2html:
Guido van Rossum <guido@python.org>
parents: 2550
diff changeset
300 hexadecimal literals may be as large as 4294967295, but values larger
3828206c2dc0 made palatable for latex2html:
Guido van Rossum <guido@python.org>
parents: 2550
diff changeset
301 than 2147483647 are converted to a negative value by subtracting
3828206c2dc0 made palatable for latex2html:
Guido van Rossum <guido@python.org>
parents: 2550
diff changeset
302 4294967296. There is no limit for long integer literals apart from
3828206c2dc0 made palatable for latex2html:
Guido van Rossum <guido@python.org>
parents: 2550
diff changeset
303 what can be stored in available memory.
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
304
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
305 Some examples of plain and long integer literals:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
306
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
307 \begin{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
308 7 2147483647 0177 0x80000000
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
309 3L 79228162514264337593543950336L 0377L 0x100000000L
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
310 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
311
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
312 Floating point literals are described by the following lexical
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
313 definitions:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
314
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
315 \begin{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
316 floatnumber: pointfloat | exponentfloat
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
317 pointfloat: [intpart] fraction | intpart "."
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
318 exponentfloat: (intpart | pointfloat) exponent
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
319 intpart: digit+
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
320 fraction: "." digit+
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
321 exponent: ("e"|"E") ["+"|"-"] digit+
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
322 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
323
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
324 The allowed range of floating point literals is
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
325 implementation-dependent.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
326
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
327 Some examples of floating point literals:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
328
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
329 \begin{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
330 3.14 10. .001 1e100 3.14e-10
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
331 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
332
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
333 Note that numeric literals do not include a sign; a phrase like
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
334 \verb@-1@ is actually an expression composed of the operator
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
335 \verb@-@ and the literal \verb@1@.
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
336
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
337 \section{Operators}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
338
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
339 The following tokens are operators:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
340 \index{operators}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
341
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
342 \begin{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
343 + - * / %
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
344 << >> & | ^ ~
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
345 < == > <= <> != >=
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
346 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
347
1751
ec25aad43724 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 949
diff changeset
348 The comparison operators \verb@<>@ and \verb@!=@ are alternate
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
349 spellings of the same operator.
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
350
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
351 \section{Delimiters}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
352
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
353 The following tokens serve as delimiters or otherwise have a special
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
354 meaning:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
355 \index{delimiters}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
356
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
357 \begin{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
358 ( ) [ ] { }
1767
907605320a5f Lots of small corrections by Andrew Kuchling (plus all new rotor docs)
Guido van Rossum <guido@python.org>
parents: 1751
diff changeset
359 , : . " ` '
907605320a5f Lots of small corrections by Andrew Kuchling (plus all new rotor docs)
Guido van Rossum <guido@python.org>
parents: 1751
diff changeset
360 = ;
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
361 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
362
2550
0f6ff45bd816 replace ASCII by macro call
Guido van Rossum <guido@python.org>
parents: 1767
diff changeset
363 The following printing \ASCII{} characters are not used in Python. Their
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
364 occurrence outside string literals and comments is an unconditional
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
365 error:
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
366 \index{ASCII}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
367
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
368 \begin{verbatim}
1767
907605320a5f Lots of small corrections by Andrew Kuchling (plus all new rotor docs)
Guido van Rossum <guido@python.org>
parents: 1751
diff changeset
369 @ $ ?
949
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
370 \end{verbatim}
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
371
bc0ab01754ba Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
372 They may be used by future versions of the language though!