"class" <identifier> ":" <list>$[\mbox{@<identifier>}]$
"{" @<properties-class-item>^* "}"
-<class-item> ::= <slot-item> ";"
-\alt <initializer-item> ";"
+<properties-class-item> ::= @[<properties>@] <class-item>
+
+<class-item> ::= <slot-item>
+\alt <initializer-item>
\alt <message-item>
\alt <method-item>
\end{grammar}
\begin{grammar}
<slot-item> ::=
- @[<properties>@]
@<declaration-specifier>^+ <list>$[\mbox{@<init-declarator>}]$ ";"
<init-declarator> ::= <simple-declarator> @["=" <initializer>@]
\subsubsection{Initializer items} \label{sec:syntax.class.init}
\begin{grammar}
-<initializer-item> ::= @["class"@] <list>$[\mbox{@<slot-initializer>}]$
+<initializer-item> ::= @["class"@] <list>$[\mbox{@<slot-initializer>}]$ ";"
<slot-initializer> ::= <dotted-name> "=" <initializer>
\begin{grammar}
<message-item> ::=
- @[<properties>@]
- @<declaration-specifier>^+ <simple-declarator> @[<method-body>@]
+ @<declaration-specifier>^+
+ <keyword-declarator>$[\mbox{@<identifier>}]$
+ @[<method-body>@]
\end{grammar}
\subsubsection{Method items} \label{sec:syntax.class.method}
\begin{grammar}
<method-item> ::=
- @[<properties>@]
- @<declaration-specifier>^+ <declarator>$[\mbox{@<dotted-name>}]$
+ @<declaration-specifier>^+
+ <keyword-declarator>$[\mbox{@<dotted-name>}]$
<method-body>
<method-body> ::= "{" <c-fragment> "}" | "extern" ";"
.IR list [ identifier ]
.<
.B {
-.IR class-item \**
+.IR properties-class-item \**
.B }
.br
+.I properties-class-item
+::=
+.RI [ properties ]
+.I class-item
+.br
.I class-item
::=
.I slot-item
.I slot-item
::=
.<
-.RI [ properties ]
.IR declaration-specifier \*+
.IR list [ init-declarator ]
.B ;
.br
.I initializer-item
::=
-.RI [ properties ]
.RB [ class ]
.IR list [ slot-initializer ]
.B ;
.br
.I message-item
::=
-.RI [ properties ]
.<
.IR declaration-specifier \*+
.I simple-declarator
-.<
.RI [ method-body ]
.br
.I method-item
-.RI [ properties ]
+::=
.<
.IR declaration-specifier \*+
-.I dotted-declarator
-.<
+.IR declarator [ dotted-name ]
.I method-body
.br
.I method-body
.I identifier
.B .\&
.I identifier
-.br
-.I dotted-declarator
-::=
-.IR declarator [ dotted-name ]
-
+.
.\"--------------------------------------------------------------------------
.SH SEE ALSO
.BR sod (1),