Index: doc/theses/jiada_liang_MMath/CFAenum.tex
===================================================================
--- doc/theses/jiada_liang_MMath/CFAenum.tex	(revision 35c792f6e48b6739bb96085db426d438fb1b8182)
+++ doc/theses/jiada_liang_MMath/CFAenum.tex	(revision 6f478349bdb1f2928d25077e5d9a5fffa8f67f73)
@@ -387,4 +387,60 @@
 
 
+\section{Enumeration I/O}
+
+As seen in multiple examples, enumerations can be printed and the default property printed is the enumerator's label, which is similar in other programming languages.
+However, very few programming languages provide a mechanism to read in enumerator values.
+Even the @boolean@ type in many languages does not have a mechanism for input using the enumerators @true@ or @false@.
+\VRef[Figure]{f:EnumerationI/O} show \CFA enumeration input based on the enumerator labels.
+When the enumerator labels are packed together in the input stream, the input algorithm scans for the longest matching string.
+For basic types in \CFA, the constants use to initialize a variable in a program are available to initialize a variable using input, where strings constants can be quoted or unquoted.
+
+\begin{figure}
+\begin{cquote}
+\setlength{\tabcolsep}{15pt}
+\begin{tabular}{@{}ll@{}}
+\begin{cfa}
+int main() {
+	enum(int ) E { BBB = 3, AAA, AA, AB, B };
+	E e;
+
+	for () {
+		try {
+			@sin | e@;
+		} catch( missing_data * ) {
+			sout | "missing data";
+			continue; // try again
+		}
+	  if ( eof( sin ) ) break;
+		sout | e | "= " | value( e );
+	}
+}
+\end{cfa}
+&
+\begin{cfa}
+$\rm input$
+BBBABAAAAB
+BBB AAA AA AB B
+
+$\rm output$
+BBB = 3
+AB = 6
+AAA = 4
+AB = 6
+BBB = 3
+AAA = 4
+AA = 5
+AB = 6
+B = 7
+
+\end{cfa}
+\end{tabular}
+\end{cquote}
+\caption{Enumeration I/O}
+\label{f:EnumerationI/O}
+\end{figure}
+
+
+
 \section{Planet Example}
 
