\chapter{Statements}

\section{Overview}

XXX group into flow control, exception handling, other categories

\section{Simple Statements}

\subsection{Expressions}

\subsection{Assignments}

\subsection{Augmented Assignment}

\subsection{assert}

\subsection{break}

\subsection{continue}

\subsection{del}

\subsection{exec}

\subsection{global}

\subsection{import}

\subsection{pass}

\subsection{print}

\subsection{raise}

\subsection{return}

\subsection{yield}

\section{Compound Statements}

\subsection{if: elif: else:}

The most general form of conditional statements is the following:

\begin{verbatim}
if (\var{condition-1}):
    \var{suite-1}
elif (\var{condition-2}):
    \var{suite-2}
elif (\var{condition-3}):
    \var{suite-3}
elif ...
    ...
else:
    \var{else-suite}
\end{verbatim}

The first condition, \var{condition-1}, is evaluated.  If the result is 
found to be true,
% XXX cross-ref to boolean rules
the first suite of statements is executed and all subsequent suites
are skipped.  If the first condition is found to be false,
\var{condition-2} is evaluated and the corresponding suite is
executed.

Conditions are tested in sequence until one is found to be true or
until they've all been tried.  If none of the conditions are true and
an \keyword{else} block is present, the statements in the
\keyword{else} block are evaulated.

The \keyword{elif} blocks and the \keyword{else} block are optional;
an \keyword{if} statement can have both \keyword{elif} and
\keyword{else} blocks, either kind of block, or neither of them.  The
\keyword{else} block, if present, must always be the last one.


\subsection{while: else:}

The general form of a \keyword{while} loop is:

\begin{verbatim}
while \var{condition}:
    \var{suite-1}
else:
    \var{else-suite}
\end{verbatim}

The expression \var{condition} is evaluated.  If the result is true,
the statements in \var{suite-1} are executed.  \var{condition} is then
evaluated again, and the statements in \var{suite-1} are executed
repeatedly until the condition is false.  Once the condition is
found to be false, the \var{else-suite} is executed if it's present.

A \keyword{break} statement in \var{suite-1} ends the loop without 
executing the contents of the \var{else-suite}.  

A \keyword{continue} statement in \var{suite-1} skips
the rest of the statements in the suite 
and goes back to testing the conditional expression.


\subsection{for: else:}

The general form of a \keyword{for} loop is:

\begin{verbatim}
for \var{target-list} in \var{expression}:
    \var{suite-1}
else:
    \var{else-suite}
\end{verbatim}

The \var{expression} is evaluated exactly one.  It should return an
iterable object such as a list, tuple, or other sequence, or a
user-defined object that supports the iterator protocol.  
% XXX cross-ref to iterator protocol

XXX write explanation of iteration, and assignment

Once the iterator is exhausted, the statements in \var{else-suite}
are executed.

A \keyword{break} statement in \var{suite-1} ends the loop without 
executing the contents of the \var{else-suite}.  

A \keyword{continue} statement in \var{suite-1} skips the rest of the
statements in the suite and tries the next element returned by the
iterator.

\subsection{try: except: finally:}

\subsection{Function Definition}

\subsection{Class Definition}

