Index: doc/refrat/refrat.tex
===================================================================
--- doc/refrat/refrat.tex	(revision 2f9956bd13de85adb344abd36007fe8eb05d5aaa)
+++ doc/refrat/refrat.tex	(revision ce6c57cb7cd4a3a2d6d7ffbeb85116295c81b483)
@@ -2,4 +2,8 @@
 
 \documentclass[openright,twoside]{report}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Latex packages used in the document.
+
 \usepackage{fullpage,times}
 \usepackage{xspace}
@@ -13,4 +17,17 @@
 \usepackage{breakurl}
 \urlstyle{sf}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Names used in the document.
+
+\newcommand{\CFA}{Cforall\xspace}		% set language text name
+\newcommand{\CFAA}{C$\forall$\xspace}	% set language symbolic name
+\newcommand{\CC}{C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
+\def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name)
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Specialized macros used in the document.
 
 %\input code.sty
@@ -52,9 +69,4 @@
 \newcommand{\VPageref}[2][page]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}}
 
-\newcommand{\CFA}{Cforall\xspace}
-\newcommand{\CFAA}{C$\forall$\xspace}
-\newcommand{\CC}{C\kern-.1em\hbox{+\kern-.25em+}\xspace}
-\def\c11{ISO/IEC C}% cannot have numbers in latex command name
-
 % replace/adjust characters that look bad in sanserif
 \makeatletter
@@ -63,7 +75,8 @@
 \lst@ProcessOther{"3C}{\lst@ttfamily{<}{\texttt{<}}} % replace less than
 \lst@ProcessOther{"3E}{\lst@ttfamily{<}{\texttt{>}}} % replace greater than
-\lst@ProcessOther{"5E}{$\sim$} % circumflex
+\lst@ProcessOther{"5E}{\raisebox{0.4ex}{$\scriptstyle\land\,$}} % circumflex
 \lst@ProcessLetter{"5F}{\lst@ttfamily{\char95}{{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}}} % replace underscore
-\lst@ProcessOther{"7E}{\raisebox{-.4ex}[1ex][0pt]{\textasciitilde}} % lower tilde
+%\lst@ProcessOther{"7E}{\raisebox{-.4ex}[1ex][0pt]{\textasciitilde}} % lower tilde
+\lst@ProcessOther{"7E}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}} % lower tilde
 \@empty\z@\@empty
 
@@ -74,5 +87,6 @@
 
 \lstdefinelanguage{CFA}[ANSI]{C}%
-  {morekeywords={asm,_Atomic,catch,choose,_Complex,context,dtype,fallthru,forall,ftype,_Imaginary,lvalue,restrict,throw,try,type,},
+  {morekeywords={asm,_Atomic,catch,catchResume,choose,_Complex,context,disable,dtype,enable,
+	fallthru,finally,forall,ftype,_Imaginary,lvalue,restrict,throw,throwResume,try,type,},
 }
 
@@ -84,6 +98,9 @@
 xleftmargin=\parindent,
 escapechar=@,
+%fancyvrb=true,
 %showtabs=true,
-%tab=\rightarrowfill,
+keepspaces=true,
+showtabs=true,
+tab=,
 }
 
@@ -91,4 +108,6 @@
 \setcounter{tocdepth}{3}		% subsubsections in table of contents
 \makeindex
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \begin{document}
@@ -4036,4 +4055,9 @@
 \section{Statements and blocks}
 
+\begin{syntax}
+\oldlhs{statement}
+\rhs \nonterm{exception-statement}
+\end{syntax}
+
 Many statements contain expressions, which may have more than one interpretation. The following
 sections describe how the \CFA translator selects an interpretation. In all cases the result of the
@@ -4058,5 +4082,5 @@
 The following have identical meaning:
 \begin{lstlisting}
-case 1:@\ \ @case 2:@\ \ @case 3:@\ \ @case 4:@\ \ @case 5:
+case 1:  case 2:  case 3:  case 4:  case 5:
 case 1, 2, 3, 4, 5:
 case 1~5:
@@ -4067,5 +4091,6 @@
 \end{lstlisting}
 
-The \lstinline$case$ and \lstinline$default$ clauses are restricted within the \lstinline$switch$ and \lstinline$choose$ statements, precluding Duff's device.
+The \lstinline$case$ and \lstinline$default$ clauses are restricted within the \lstinline$switch$
+and \lstinline$choose$ statements, precluding Duff's device.
 
 
@@ -4122,5 +4147,6 @@
 \end{tabular}
 \end{flushleft}
-The \lstinline$choose$ statement addresses the problem of accidental fall-through associated with \lstinline$switch$ statement.
+The \lstinline$choose$ statement addresses the problem of accidental fall-through associated with
+the \lstinline$switch$ statement.
 
 
@@ -4151,11 +4177,15 @@
 \rhs \lstinline$continue$ \nonterm{identifier}\opt
 \rhs \lstinline$break$ \nonterm{identifier}\opt
+\rhs \ldots
+\rhs \lstinline$throw$ \nonterm{assignment-expression}\opt
+\rhs \lstinline$throwResume$ \nonterm{assignment-expression}\opt
 \end{syntax}
 
-Labeled \lstinline$continue$ and \lstinline$break$ allow useful but restricted control-flow that reduces the need for the \lstinline$goto$ statement for exiting multiple nested control-structures.
+Labeled \lstinline$continue$ and \lstinline$break$ allow useful but restricted control-flow that
+reduces the need for the \lstinline$goto$ statement for exiting multiple nested control-structures.
 \begin{lstlisting}
 L1: {							// compound
   L2: switch ( ... ) {			// switch
-    case ...:
+	  case ...:
 	  L3: for ( ;; ) {			// outer for
 		L4: for ( ;; ) {		// inner for
@@ -4192,6 +4222,59 @@
 \subsubsection{The \lstinline$return$ statement}
 
-An expression in a \lstinline$return$ statement is treated as being cast to the result type of the
-function.
+An expression in a \lstinline$return$ statement is treated as being cast to the result type of the function.
+
+
+\subsubsection{The \lstinline$throw$ statement}
+
+When an exception is raised, \Index{propagation} directs control from a raise in the source execution to a handler in the faulting execution.
+
+
+\subsubsection{The \lstinline$throwResume$ statement}
+
+
+\subsection{Exception statements}
+
+\begin{syntax}
+\lhs{exception-statement}
+\rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list}
+\rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{finally-clause}
+\rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list} \nonterm{finally-clause}
+\lhs{handler-list}
+\rhs \nonterm{handler-clause}
+\rhs \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
+\rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
+\rhs \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
+\rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
+\lhs{handler-clause}
+\rhs \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
+\rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
+\rhs \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
+\rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
+\lhs{finally-clause}
+\rhs \lstinline$finally$ \nonterm{compound-statement}
+\lhs{exception-declaration}
+\rhs \nonterm{type-specifier}
+\rhs \nonterm{type-specifier} \nonterm{declarator}
+\rhs \nonterm{type-specifier} \nonterm{abstract-declarator}
+\rhs \nonterm{new-abstract-declarator-tuple} \nonterm{identifier}
+\rhs \nonterm{new-abstract-declarator-tuple}
+\lhs{asynchronous-statement}
+\rhs \lstinline$enable$ \nonterm{identifier-list} \nonterm{compound-statement}
+\rhs \lstinline$disable$ \nonterm{identifier-list} \nonterm{compound-statement}
+\end{syntax}
+
+\Index{Exception statement}s allow a dynamic call to a handler for \Index{recovery} (\Index{termination}) or \Index{correction} (\Index{resumption}) of an \Index{abnormal event}.
+
+
+\subsubsection{The \lstinline$try$ statement}
+
+The \lstinline$try$ statement is a block with associated handlers, called a \Index{guarded block};
+all other blocks are \Index{unguarded block}s.
+A \lstinline$goto$, \lstinline$break$, \lstinline$return$, or \lstinline$continue$ statement can be used to transfer control out of a try block or handler, but not into one.
+
+
+\subsubsection{The \lstinline$enable$/\lstinline$disable$ statements}
+
+The \lstinline$enable$/\lstinline$disable$ statements toggle when \Index{asynchronous exception}s can or cannot be delivered.
 
 
