\section{Standard Module \module{token}}
\label{module-token}
\stmodindex{token}

This module provides constants which represent the numeric values of
leaf nodes of the parse tree (terminal tokens).  Refer to the file
\file{Grammar/Grammar} in the Python distribution for the defintions
of the names in the context of the language grammar.  The specific
numeric values which the names map to may change between Python
versions.

This module also provides one data object and some functions.  The
functions mirror definitions in the Python C header files.



\begin{datadesc}{tok_name}
Dictionary mapping the numeric values of the constants defined in this
module back to name strings, allowing more human-readable
representation of parse trees to be generated.
\end{datadesc}

\begin{funcdesc}{ISTERMINAL}{x}
Return true for terminal token values.
\end{funcdesc}

\begin{funcdesc}{ISNONTERMINAL}{x}
Return true for non-terminal token values.
\end{funcdesc}

\begin{funcdesc}{ISEOF}{x}
Return true if \var{x} is the marker indicating the end of input.
\end{funcdesc}

\begin{seealso}
\seemodule{parser}{second example uses this module}
\end{seealso}
