\begin{diagram}{Units}{units}
\begin{mysyntdiag}
\synt{unit}
\synt{unit\ header}
\synt{interface\ part}
\synt{implementation\ part}
\begin{stack}\\ \synt{initialization\ part} \begin{stack}\\ \synt{finalization\ part} \end{stack} \\
    \lit*{begin} \begin{rep}[b] \synt{statement} \\ \lit* ; \end{rep}
\end{stack}
\lit*{end} \lit* .
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{unit\ header} 
\lit*{unit}
\synt{unit\ identifier}
\lit* ;
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{interface\ part} \lit*{interface}
\begin{stack}\\ \synt{uses\ clause} \end{stack}
\begin{rep}[b]
  \begin{stack}\\  \synt{constant\ declaration\ part} \\
      \synt{type\ declaration\ part}\\
      \synt{procedure\ headers\ part}
  \end{stack}
\end{rep}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{procedure\ headers\ part}
\begin{stack} \synt{procedure\ header} \\ \synt{function\ header}\end{stack} \lit* ;
\begin{stack}\\ \synt{call\ modifiers} \lit* ; \end{stack}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{implementation\ part}
\lit*{implementation}
\begin{stack}\\ \synt{uses\ clause} \end{stack}
\synt{declaration\ part}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{initialization\ part}
  \lit*{initialization} 
  \begin{rep}[b] \synt{statement} \\ \lit* ; \end{rep}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{finalization\ part}
  \lit*{finalization} 
  \begin{rep}[b] \synt{statement} \\ \lit* ; \end{rep}
\end{mysyntdiag}
\end{diagram}
