diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/schule/zusatzpaketSyntaxdi.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/schule/zusatzpaketSyntaxdi.tex | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/schule/zusatzpaketSyntaxdi.tex b/Master/texmf-dist/doc/latex/schule/zusatzpaketSyntaxdi.tex new file mode 100644 index 00000000000..c4657849ea2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/schule/zusatzpaketSyntaxdi.tex @@ -0,0 +1,68 @@ +\section{Syntaxdiagramme} +\label{paket:syntaxdi} + +Mit den Paketen \pkg{syntaxdi} und \pkg{tikz} ist es möglich, +einfache Syntaxdiagramme zu erstellen. Dazu sind einige Elemente +definiert worden, die automatisch durch Pfeile miteinander +verbunden werden. + +Hierzu definiert das Paket \pkg{syntaxdi} einige TikZ-Stile, die +einfach genutzt werden können. + +\subsection{TikZ-Stile} +\begin{options} +\opt{nonterminal} definiert ein Non-Terminal. + \opt{terminal} definiert ein Terminal. +\opt{fnonterminal} definiert ein Non-Terminal ohne automatische + Verzweigung. +\opt{fterminal} definiert ein Terminal ohne automatische + Verzweigung. +\opt{point} definiert einen Punkt, der ohne ankommenden Pfeil + gezeichnet wird. +\opt{endpoint} definiert einen Punkt, der mit ankommenden Pfeil + gezeichnet wird. +\end{options} + +\subsection{Beispiel} + +Damit kann \zB\xspace das folgende Syntaxdiagramm gezeichnet werden. + +\begin{example}[gobble=0] +\begin{tikzpicture}[syntaxdiagramm] + \node [] {}; + \node [terminal] {if}; + \node [nonterminal] {Bedingung}; + \node [terminal] {:}; + \node [nonterminal] {Anweisungsblock}; + \node (ersteReiheEnde) [point] {}; + \node (ersteReiheEndeUnten) [point, below=of ersteReiheEnde] {}; + \node (zweiteReiheStartOben) [point, left=of ersteReiheEndeUnten, + xshift=-75mm] {}; + \node (zweiteReiheStart) [point, below=of zweiteReiheStartOben] {}; + { + [start chain=elif going right] + \chainin (zweiteReiheStart); + \node [terminal] {elif}; + \node [nonterminal] {Bedingung}; + \node [terminal] {:}; + \node [nonterminal] {Anweisungsblock}; + \node (elifEnde) [point] {}; + \node (elifEndeOben) [point, above=of elifEnde] {}; + \draw[->,left] (elifEndeOben) -- (ersteReiheEndeUnten); + } + \node (dritteReiheStart) [point, below=of zweiteReiheStart, + yshift=-5mm] {}; + \node (vierteReiheStart) [point, below=of dritteReiheStart, + yshift=-5mm] {}; + \node (vierteReiheEnde) [point, xshift=84mm] {}; + { + [start chain=else going right] + \chainin (dritteReiheStart); + \node [terminal] {else}; + \node [terminal] {:}; + \node (elseEnde) [nonterminal] {Anweisungsblock}; + \draw[->] (elseEnde) -| (vierteReiheEnde); + } + \node (ende) [endpoint] {}; +\end{tikzpicture} +\end{example}
\ No newline at end of file |