Wer die ersten praktischen Erfahrungen mit einer Computersprache hinter sich hat, der kennt mit Sicherheit die Fehlermeldungen, die durch den Interpreter oder Compiler erzeugt werden.
Da es weder einen Interpreter noch einen Compiler gibt, der alle möglichen richtigen Quelltexte kennt, muss man Regeln für richtiges Schreiben von Programmen formulieren
Im Alphabet wird vereinbart, welche Elemente eine Sprache verwenden darf.
Beispielsweise könnte man folgendes Alphabet A1 benennen: A1={0|1}
Es besteht nur aus zwei Elementen.
Die Syntax einer Sprache regelt, in welcher Beziehung die Zeichen
einer Sprache zueinander stehen können. Dazu werden Regeln formuliert.
Mit Hilfe von Syntaxregeln kann Sprache auf ihre Korrektheit überprüft werden und es
kann damit korrekte Sprache generiert werden.
Achtung: Syntaxregeln nehmen keine inhaltliche Überprüfung vor.
Für die Formulierung von Syntaxregeln haben sich mehrere Verfahren entwickelt.
grafisch mit Hilfe von Syntaxdiagrammen | formal mit Hilfe einer formalen Notation (Backus-Naur-Form) |
---|---|
Ist das Wort 011101 ein korrektes Wort? Dazu steigt man von links in das Syntaxdiagramm ein und versucht in Pfeilrichtung
einen Weg zu finden, der alle Zeichen des Wortes passiert und anschließend das
Syntaxdiagramm wieder verlässt. Ergebnis: Das Wort ist syntaktisch korrekt Dieses Syntaxdiagramm lässt sich nun zusammenfassen: Damit lassen sich neue Syntaxdiagramme bilden, beispielsweise zur Darstellung gebrochener Dualzahlen |
<Ziffer>::='0'|'1' Hier wird ein Nichtterminalsymbol erzeugt. Eine Ziffer kann aus einem der Terminalsymbole 0 oder 1 bestehen. <Dualzahl>::=<Ziffer>{<Ziffer>} Eine Dualzahl muss mit einer Ziffer beginnen, danach können beliebig viele weitere Ziffern folgen (Iteration). <gebrochene_Dualzahl>::=<Dualzahl>['.'<Dualzahl>] Eine gebrochen Dualzahl kann eine normale Dualzahl sein. Danach folgt optional ein Punkt und eine weitere Dualzahl |
Die formale Darstellung der Syntaxregeln lässt sich gut in ein Programm einbinden und ist heute Bestandteil von Interpretern und Compilern.