% \subsection{Das Paket \texttt{syntaxdi}}
%
%  Beginn der Definition, Voraussetzung der \LaTeXe{} Version und die
%  eigene Identifizierung
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{syntaxdi}[2020/10/16 v0.8.2 %
                          Syntaxdiagramme mit TikZ]
%    \end{macrocode}
% Einbinden der benötigten Pakete
%    \begin{macrocode}
\RequirePackage{tikz}
\usetikzlibrary{chains}
\usetikzlibrary{arrows,shadows,shapes.misc,scopes}
%    \end{macrocode}
%
% \subsubsection{TikZ-Definitionen}
%
%       Definition für nicht terminale Symbole für Syntaxdiagramme in TikZ
%    \begin{macrocode}
\tikzset{
       fnonterminal/.style={
               rectangle,
               minimum size=6mm,
               text height=1.5ex,text depth=.25ex,
               very thick,
               draw=red!50!black!50,  % 50% red und 50% black,
               top color=white,              % oben: weisser Schatten ...
               bottom color=red!50!black!20, % unten: anderer Schatten
               font=\itshape
       }
}
\tikzset{
       nonterminal/.style={
               % Die Form:
               rectangle,
               % Die Größe:
               minimum size=6mm,
               text height=1.5ex,text depth=.25ex,
               % Der Rand:
               very thick,
               draw=red!50!black!50,  % 50% red und 50% black,
               % gemischt mit 50% white
               % Füllfarbe:
               top color=white,              % oben: weisser Schatten ...
               bottom color=red!50!black!20, % unten: anderer Schatten
               % Font
               font=\itshape
       }
}
%    \end{macrocode}
%
%       Definitionen für terminale Symbole im Syntaxdiagramm in TikZ
%    \begin{macrocode}
\tikzset{
       fterminal/.style={
               rounded rectangle,
               minimum size=6mm,
               very thick,draw=black!50,
               text height=1.5ex,text depth=.25ex,
               top color=white,bottom color=black!20,
               font=\ttfamily
       }
}
\tikzset{
       terminal/.style={
               % Die Form:
               rounded rectangle,
               minimum size=6mm,
               % Der Rest ...
               very thick,draw=black!50,
               text height=1.5ex,text depth=.25ex,
               top color=white,bottom color=black!20,
               font=\ttfamily
       }
}
%    \end{macrocode}
%
%       Definitionen eines Punktes für das Syntaxdiagramm in TikZ
%    \begin{macrocode}
\tikzset{
       point/.style={
               circle,
               inner sep=0pt,
               minimum size=0pt
       }
}
%    \end{macrocode}
%
%       Definition eines Endpunktes für das Syntaxdiagramm in TikZ
%    \begin{macrocode}
\tikzset{
       endpoint/.style={
               circle,
               inner sep=0pt,
               minimum size=0pt
       }
}
%    \end{macrocode}
%
%       Definition der Syntaxdiagramme in TikZ
%    \begin{macrocode}
\tikzset{
       syntaxdiagramm/.style={
               start chain,
               node distance=7mm and 5mm,
               every node/.style={on chain},
               nonterminal/.append style={join=by ->},
               terminal/.append style={join=by ->},
               endpoint/.append style={join=by ->},
               point/.append style={join=by -},
               skip loop/.style={to path={-- ++(0,-.5) -| (\tikztotarget)}}
       }
}
%    \end{macrocode}
%
% Ende des Pakets \texttt{syntaxdi}