\begin{diagram}{Class types}{classtype} \begin{mysyntdiag} \synt{class\ type} \begin{stack} \synt{class\ forward\ definition} \\ \synt{class\ definition} \end{stack} \end{mysyntdiag} \begin{mysyntdiag} \synt{class\ forward\ definition} \lit*{class} \end{mysyntdiag} \begin{mysyntdiag} \synt{class\ definition} \begin{stack}\\ \lit*{packed} \end{stack} \lit*{class} \begin{stack}\\ heritage \end{stack} \begin{stack}\\ \begin{rep}[b] \synt{component\ list} \\ % \synt{class\ visibility\ specifier} \end{rep} \lit*{end} \end{stack} \end{mysyntdiag} \begin{mysyntdiag} \synt{heritage} \lit*( \synt{class\ type\ identifier} \begin{stack}\\ \synt{implemented\ interfaces} \end{stack} \lit* ) \end{mysyntdiag} \begin{mysyntdiag} \synt{implemented\ interfaces} \begin{rep}[b] \lit{,} \synt{interface\ identifier}\\ \end{rep} \end{mysyntdiag} \begin{mysyntdiag} \synt{component\ list} \begin{stack}\\ \synt {visibility\ specifier} \end{stack} \begin{stack}\\ \begin{rep}[b] \synt{field\ definition} \\ \end{rep} \end{stack} \begin{stack}\\ \begin{rep}[b] \begin{stack} \synt{const\ declaration\ part} \\ \synt{type\ declaration\ part} \\ \synt{variable\ declaration\ part} \\ \synt{class\ variable\ declaration\ part} \\ \synt{method\ definition} \\ \synt{property\ definition} \end{stack} \\ \end{rep} \end{stack} \end{mysyntdiag} \begin{mysyntdiag} \synt{class\ variable\ declaration\ part} \lit*{class} \synt{variable\ declaration\ part} \end{mysyntdiag} \begin{mysyntdiag} \synt{field\ definition} \synt{identifier\ list} \lit*: \synt{type} \lit*; \begin{stack}\\ \lit*{static ;} \end{stack} \end{mysyntdiag} \begin{mysyntdiag} \synt{method\ definition} \begin{stack} \begin{stack}\\ \lit*{class} \end{stack} \begin{stack} \synt{function\ header} \\ \synt{procedure\ header} \end{stack} \\ \synt{constructor\ header} \\ \synt{desctuctor\ header} \end{stack} \lit*; \begin{stack}\\ \begin{stack} \begin{stack} \lit*{virtual} \\ \lit*{dynamic} \end{stack} \begin{stack}\\ \lit*; \lit*{abstract} \end{stack} \\ \lit*{override} \\ \lit*{message} \begin{stack} \synt{integer\ constant} \\ \synt{string\ constant} \end{stack} \end{stack} \lit*; \end{stack} \begin{stack}\\ \synt{call\ modifiers} \lit*; \end{stack} \end{mysyntdiag} \begin{mysyntdiag} \synt{class\ visibility\ specifier} \begin{stack} \\ \begin{stack}\\ \lit*{strict} \end{stack} \lit*{private}\\ \begin{stack}\\ \lit*{strict} \end{stack} \lit*{protected}\\ \lit*{public}\\ \lit*{published} \end{stack} \end{mysyntdiag} \end{diagram}