\begin{diagram}{Blocks}{blocks}
\begin{mysyntdiag}
\synt{block} \synt{declaration\ part} \synt{statement\ part}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{declaration\ part}
\<[b]
\[
\synt{label\ declaration\ part}\\
\synt{constant\ declaration\ part}\\
\synt{type\ declaration\ part}\\
\synt{variable\ declaration\ part}\\
\synt{procedure/function\ declaration\ part}
\]
\>
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{label\ declaration\ part}
\lit*{label}
\<[b]
\synt{label}\\
\lit* ,
\>
\lit* ;
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{constant\ declaration\ part}
\lit*{const}
\<[b]
  \(
    \synt{constant\ declaration}\\
    \synt{typed\ constant\ declaration}
  \)
\>
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{type\ declaration\ part}
\lit*{type}
\<[b]
    \synt{type\ declaration}\\
\>
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{variable\ declaration\ part}
\lit*{var}
\<[b]
    \synt{variable\ declaration}\\
\>
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{procedure/function\ declaration\ part}
\<[b]
\(
    \synt{procedure\ declaration}\\
    \synt{function\ declaration}\\
    \synt{constructor\ declaration}\\
    \synt{destructor\ declaration}\\
\)
\>
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{statement\ part}
\synt{compound\ statement}
\end{mysyntdiag}
\end{diagram}