A @<class-forward-declaration> informs Sod that an @<identifier> will be used
to name a class which is currently undefined. Forward declarations are
necessary in order to resolve certain kinds of circularity. For example,
-\begin{listing}
+\begin{prog}
class Sub;
-
-class Super : SodObject {
- Sub *sub;
-};
-
-class Sub : Super {
- /* ... */
-};
-\end{listing}
+\\+
+class Super : SodObject \{ \\ \ind
+ Sub *sub; \- \\
+\};
+\\+
+class Sub : Super \{ \\ \ind
+ /* \dots */ \- \\
+\};
+\end{prog}
\subsubsection{Full class definitions}
\begin{grammar}
An @<initializer>, if present, is treated as if a separate
@<initializer-item> containing the slot name and initializer were present.
For example,
-\begin{listing}
-[nick = eg]
-class Example : Super {
- int foo = 17;
-};
-\end{listing}
+\begin{prog}
+[nick = eg] \\-
+class Example : Super \{ \\ \ind
+ int foo = 17; \- \\
+\};
+\end{prog}
means the same as
-\begin{listing}
-[nick = eg]
-class Example : Super {
- int foo;
- eg.foo = 17;
-};
-\end{listing}
+\begin{prog}
+[nick = eg] \\-
+class Example : Super \{ \\ \ind
+ int foo; \\
+ eg.foo = 17; \- \\
+\};
+\end{prog}
\subsubsection{Initializer items}
\begin{grammar}