\documentclass{schulein}
\usepackage[utf8]{inputenc}
\usepackage{schulinf}
\usepackage{multicol}

% Dieses Dokument ist in der Zusammenarbeit von Informatikreferendaren und
% ehemaligen Informatikreferendaren der Studienseminare (heute ZfsL) Arnsberg,
% Hamm und Solingen entstanden.
%
% Das Dokument steht unter der Lizenz: Creative Commons by-nc-sa Version 4.0
% http://creativecommons.org/licenses/by-nc-sa/4.0/deed.de
%
% Nach dieser Lizenz darf das Dokument beliebig kopiert und bearbeitet werden,
% sofern das Folgeprodukt wiederum unter gleichen Lizenzbedingungen vertrieben
% und auf die ursprünglichen Urheber verwiesen wird.
% Eine kommerzielle Nutzung ist ausdrücklich ausgeschlossen.
%
% Die Namensnennung durch einen Verweis und die Lizenzangabe der ursprünglichen
% Urheber auf den Materialien für Schülerinnen und Schüler ist erforderlich.
%
% Die Sammlung der Dokumente steht unter
% http://ddi.uni-wuppertal.de/material/materialsammlung/
% zur Verfügung.
%
% Das LaTeX-Paket zum Setzen der Dokumente der Sammlung steht
% unter  http://www.ctan.org/pkg/schule
% zur Verfügung.

\usepackage[pdfauthor={Referendare der Informatikfachseminare Arnsberg, Hamm und Solingen}]{hyperref}
\includexmp{lizenz}
\cclizenz{byncsaeu}
\footerQRLink{materialsammlung_qr_url.pdf}

\svnid{$Id: info_01_syntax_identifier.tex 1467 2016-03-25 10:56:54Z pieper $}

\dokName{Syntax -- Bezeichner (identifier)}
\jahrgang{EF}

\begin{document}

\section*{Erstellung und Prüfung von Bezeichnern (identifier) -- Syntax}

\name{Niklaus Wirth} entwickelte für seine Studierenden an der ETH-Zürich eine
Form zur Präsentation von Regeln, die heute unter dem Namen 
»Railroaddiagramme« bekannt ist.

\begin{multicols}{4}

 \begin{tikzpicture}
		\node (regelbezeichner)[rectangle, draw]{digit};
 \end{tikzpicture}

 \begin{tikzpicture}[syntaxdiagramm, node distance=2mm and 2mm]
		\node {};
		\node (start) [point] {};
		\node (dots)[terminal] {..};
		\node (ende)[point] {};
		\node (en)[endpoint] {};
		{[start chain=1 going below]
		\chainin (dots);
		\node (y)[fterminal] {8};
		\node (z)[fterminal] {9};
		\node (b)[fterminal, above=of dots] {1};
		\node (a)[fterminal, above=of b] {0};
		}
		\tikzset{/tikz/arrows=->}
		\draw (start) |- (a); 
		\draw (start) |- (b); 
		\draw (start) |- (y); 
		\draw (start) |- (z); 
		\draw (a) -| (ende); 
		\draw (b) -| (ende); 
		\draw (y) -| (ende); 
		\draw (z) -| (ende); 
 \end{tikzpicture}

 \columnbreak

 \begin{tikzpicture}
		\node (regelbezeichner)[rectangle, draw]{lowercase};
 \end{tikzpicture}

 \begin{tikzpicture}[syntaxdiagramm, node distance=2mm and 2mm]
		\node {};
		\node (start) [point] {};
		\node (dots)[terminal] {..};
		\node (ende)[point] {};
		\node (en)[endpoint] {};
		{[start chain=1 going below]
		\chainin (dots);
		\node (y)[fterminal] {y};
		\node (z)[fterminal] {z};
		\node (b)[fterminal, above=of dots] {b};
		\node (a)[fterminal, above=of b] {a};
		}
		\tikzset{/tikz/arrows=->}
		\draw (start) |- (a); 
		\draw (start) |- (b); 
		\draw (start) |- (y); 
		\draw (start) |- (z); 
		\draw (a) -| (ende); 
		\draw (b) -| (ende); 
		\draw (y) -| (ende); 
		\draw (z) -| (ende); 
 \end{tikzpicture}

 \columnbreak

 \begin{tikzpicture}
		\node (regelbezeichner)[rectangle, draw]{uppercase}; 
 \end{tikzpicture}

 \begin{tikzpicture}[syntaxdiagramm, node distance=2mm and 2mm]
		\node {};
		\node (start) [point] {};
		\node (dots)[terminal] {..};
		\node (ende)[point] {};
		\node (en)[endpoint] {};
		{[start chain=1 going below]
		\chainin (dots);
		\node (y)[fterminal] {Y};
		\node (z)[fterminal] {Z};
		\node (b)[fterminal, above=of dots] {B};
		\node (a)[fterminal, above=of b] {A};
		}
		\tikzset{/tikz/arrows=->}
		\draw (start) |- (a); 
		\draw (start) |- (b); 
		\draw (start) |- (y); 
		\draw (start) |- (z); 
		\draw (a) -| (ende); 
		\draw (b) -| (ende); 
		\draw (y) -| (ende); 
		\draw (z) -| (ende); 
 \end{tikzpicture}

 \columnbreak

 \begin{tikzpicture}
		\node (regelbezeichner)[rectangle, draw]{letter};
 \end{tikzpicture}

 \begin{tikzpicture}[syntaxdiagramm, node distance=8mm and 2mm]
		\node {};
		\node (start1) [point] {};
		\node [nonterminal] {lowercase};
		\node (end1)[point] {};
		\node [point] {};
		{[start chain=1]
		\chainin (start1);
		\node [point, below=of start1] {};
		\node [nonterminal] {uppercase};
		\node [point, below=of end1] {};
		\node [endpoint, on chain=going above] {};
		}
 \end{tikzpicture}


\end{multicols}

\begin{center}
 \begin{tikzpicture}
		\node (regelbezeichner)[rectangle, draw]{identifier};
 \end{tikzpicture}



\end{center}


\end{document}

