\section{Instructions to the Parser/Compiler}
\label{parserInstructions}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{\#breakpoint}
\label{parserInstructions.breakpoint}

Syntax:
\begin{verbatim}
#breakpoint
\end{verbatim}


\code{\#breakpoint} is a debugging tool that tells the parser to stop
parsing at a specific point. All source code from that point on will be ignored.

The difference between \code{\#breakpoint} and \code{\#stop} is that
\code{\#stop} occurs in normal templates (e.g., inside an \code{\#if}) but
\code{\#breakpoint} is used only when debugging Cheetah.  Another difference is
that \code{\#breakpoint} operates at compile time, while \code{\#stop} is
executed at run time while filling the template.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{\#compiler-settings}
\label{parserInstructions.compiler-settings}

Syntax:
\begin{verbatim}
#compiler-settings
key = value    (no quotes)
#end compiler-settings

#compiler-settings reset
\end{verbatim}


The \code{\#compiler-settings} directive overrides Cheetah's standard settings,
changing how it parses source code and generates Python code.  This
makes it possible to change the behaviour of Cheetah's parser/compiler for a
certain template, or within a portion of the template.

The \code{reset} argument reverts to the default settings.  With \code{reset},
there's no end tag.

Here are some examples of what you can do:
\begin{verbatim}
$myVar
#compiler-settings
cheetahVarStartToken = @
#end compiler-settings
@myVar
#compiler-settings reset
$myVar
\end{verbatim}


\begin{verbatim}
## normal comment
#compiler-settings
commentStartToken = //
#end compiler-settings

// new style of comment

#compiler-settings reset

## back to normal comments
\end{verbatim}

\begin{verbatim}
#slurp
#compiler-settings
directiveStartToken = %
#end compiler-settings

%slurp
%compiler-settings reset

#slurp
\end{verbatim}

Here's a partial list of the settings you can change:
\begin{enumerate}
\item syntax settings
     \begin{enumerate}
     \item cheetahVarStartToken
     \item commentStartToken
     \item multilineCommentStartToken
     \item multilineCommentEndToken
     \item directiveStartToken
     \item directiveEndToken
     \end{enumerate}
\item code generation settings
     \begin{enumerate}
     \item commentOffset
     \item outputRowColComments
     \item defDocStrMsg
     \item useNameMapper
     \item useAutocalling
     \item reprShortStrConstants
     \item reprNewlineThreshold
     \end{enumerate}
\end{enumerate}
The meaning of these settings and their default values will be documented in
the future.


% Local Variables:
% TeX-master: "users_guide"
% End:      




