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

% 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_englisch.tex 626 2014-05-22 21:36:50Z pieper $}

\dokName{Syntax}
\jahrgang{11}

\begin{document}

\section*{Syntax -- Begriffe}

Regeln, mit denen »richtige« (== syntaktisch korrekte) Ergebnisse erstellt werden, werden als Grammatik oder Syntax bezeichnet. Die Syntax von (Programmier-)Sprachen wird mit drei verschiedenen Strukturelementen beschrieben.

\begin{small}
	\begin{center}
		\begin{tabular}{|l|l||l|}
			\hline 
			Bezeichnung & Bedeutung & Beispiel\tabularnewline
			\hline
			\hline 
			terminale Symbole & finden sich im Ergebnis als hingeschriebene Symbole wieder & L\tabularnewline
			\hline 
			nicht terminale Symbole & Zwischenelemente für die Erstellung (oder Analyse) & identifier\tabularnewline
			\hline 
			Metasymbole & Bildungsstruktur (Sequenz, Alternative, Wiederholung) & |\tabularnewline
			\hline
		\end{tabular}
	\end{center}
\end{small}

\subsection*{BNF -- EBNF -- ISO-EBNF}

Um 1960 wurde eine Darstellung für die Syntax von Programmiersprachen entwickelt, die leicht gelesen und verstanden werden kann. Diese Darstellung wurde nach den Entwicklern als Backus-Naur Form (BNF) bezeichnet. Ein Beispiel aus der Syntax von ALGOL~60 zeigt die Regel, um für diese Sprache ein korrektes nicht terminales Symbol "`identifier"' zu erzeugen. BNF-Darstellung:

\begin{center}
	\begin{tabular}{|c|}
		\hline 
		\texttt{<identifier>::= <letter> | <identifier> <letter> | <identifier>
		<digit>}\tabularnewline
		\hline
	\end{tabular}
\end{center}

Die BNF wurde zur Extended BNF (EBNF) erweitert (indem weitere Metasymbole hinzugenommen wurden) und 1996 genormt: ISO-EBNF -- Standard Extended BNF. EBNF-Darstellung: 

\begin{center}
	\begin{tabular}{|c|}
		\hline 
		\texttt{identifier = letter \{ letter | digit \}.}\tabularnewline
		\hline
	\end{tabular}
\end{center}

Die Regeln besagen (in Worten): Ein »identifier« wird gebildet durch genau ein 
nicht terminales Element »letter« gefolgt von beliebig vielen Elementen, die 
»letter« oder »digit« sein dürfen.

\subsection*{Syntax-Diagramm als alternative Darstellungsform zu {[}E]BNF}

\begin{minipage}[c][1\totalheight][t]{0.69\columnwidth}%
Mit Hilfe sogenannter \emph{Syntax}-Diagramme\footnote{durch ihre Form auch teilweise Railroad (deutsch: Schienenweg) genannt} werden die Metasymbole so dargestellt, dass sie nicht als Zeichen in den Regeln auftreten, sondern in eine grafische Darstellung eingebettet sind. Die Durchlaufrichtung erfolgt von links nach rechts bzw.~in Pfeilrichtung. Knotenpunkte sind Verzweigungen im Sinne von Alternativen oder Zusammenführungen von Wegenden.

Im nebenstehenden Beispiel ist das Nonterminal »ldu« aus der Syntax der Programmiersprache Python als Syntax-Diagramm abgebildet. Einträge in den ovalen Textboxen bezeichnen terminale Symbole, während in rechteckigen Textboxen nichtterminale Symbole stehen.%
\end{minipage}%
\hfill{}%
\begin{minipage}[c][1\totalheight][t]{0.25\columnwidth}%
%\includegraphics[width=1\columnwidth]{ldu}%
\input{ldu_englisch.tikz}
\end{minipage}%


\end{document}
