Syntaxfehler verletzen Regeln, die den korrekten Aufbau von Aussagen festlegen. Nachdem Computer nicht gut darin sind, etwas aus dem Zusammenhang zu erschließen oder nach Gefühl zu entscheiden, haben Syntaxfehler in formalen Sprachen viel gravierendere Folgen als in natürlichen Sprachen.
Inhalt
Was ist eine Syntax?
Eine Syntax ist die Gesamtheit aller Regeln, die eine korrekt geformte Aussage erfüllen muss. Im Fall einer formalen Sprache sind diese Regeln exakt festgelegt und können daher auch exakt überprüft werden. Natürliche Sprachen entwickeln sich und ihre Syntax muss aus einer größeren Zahl von verständlichen Äußerungen herausgefiltert werden. Die sich ergebenden Regeln werden aber nicht immer eingehalten. Viele Aussagen in natürlichen Sprachen verletzen diese Syntax, sind aber trotzdem verständlich. Im formalen Bereich wird eine Syntax für Programmiersprachen festgelegt. Das ist aber nicht die einzige Anwendung, denn auch die Aussagen von Auszeichnungssprachen wie HTML oder XML werden nach einer Syntax gebildet. Lesen Sie hier alles zu XML.
Semantik als Gegensatz und nächster Schritt nach der Syntax
Um die Bedeutung und den Grund für die Existenz einer Syntax besser zu verstehen, sollte man sich auch zumindest kurz mit der Semantik einer Sprache beschäftigen. Diese legt die Bedeutung von Aussagen fest. In formalen Sprachen verhält es sich oft so, dass die Frage nach der Bedeutung nur für syntaktisch korrekt gebildete Aussagen als sinnvoll angesehen wird. Auch im formalen Bereich gibt es aber schon Lockerungen dieses Umstands.
In natürlichen Sprachen ist das Verhältnis von Syntax und Semantik viel subtiler und anspruchsvoller. Es ist keineswegs notwendig, dass sinnvolle und verständliche Aussagen syntaktisch korrekt gebildet sein müssen. Der Kontext lässt die Empfänger einer Aussage oft trotzdem die Bedeutung korrekt erschließen. Computer hingegen sind noch nicht fähig, solche Schritte in größerem Ausmaß zu setzen. Das Verhältnis von Syntax und Semantik ist also wesentlich strenger definiert.
Folgen von Syntaxfehlern
Liegt ein Verstoß gegen die Syntax einer formalen Sprache vor, gibt es mit der Verarbeitung des Programmtexts Schwierigkeiten. Für Programmiersprachen im engeren Sinn bricht die Verarbeitung vom Compiler oder Interpreter mit einer Fehlermeldung ab, sobald ein Syntaxfehler vorliegt. Die Entwickler gehen davon aus, dass es nicht sinnvoll ist, ein syntaktisch nicht korrektes Programm weiterzuverarbeiten. Der Programmierer erhält also eine Fehlermeldung, die mindestens den Ort des Fehlers enthalten wird und möglicherweise auch weitere Informationen über den Fehler selbst. Der Syntaxfehler muss dann korrigiert werden, damit die Chance auf eine erfolgreiche Weiterverarbeitung besteht. Man sollte sich darüber klar sein, dass semantische und logische Fehler immer noch in einem Programm enthalten sein können, auch wenn es syntaktisch korrekt ist. Die syntaktische Korrektheit ist eine notwendige, aber nicht hinreichende Bedingung für ein wie vorgesehen arbeitendes Programm.
Wie kann man Syntaxfehler erkennen?
Allgemein müssen alle Syntaxregeln auf Einhaltung überprüft sein, die auf eine gegebene Aussage anwendbar sind. Wird diese Überprüfung durch Menschen vorgenommen, siebt man die in Frage kommenden Regeln sehr schnell nach dem gegebenen Kontext aus und überprüft nur die relevanten. Eine automatische Überprüfung läuft viel systematischer ab und ist eine klassische Aufgabe in der theoretischen Informatik. Dafür kommt ein sogenannter Parser zum Einsatz, der eine Aussage Symbol für Symbol verarbeitet und die anwendbaren Regeln überprüft.
Ein Beispiel ist das Weglassen einer schließenden Klammer. In den meisten Programmier– und Auszeichnungssprachen muss jede Klammer wieder geschlossen sein, sonst liegt eben ein Syntaxfehler vor. Das Vorliegen der schließenden Klammer lässt sich sowohl von der Maschine als auch vom Menschen einfach überprüfen.
Ein weiteres Beispiel ist das Verwenden eines falsch geschriebenen Schlüsselworts. Praktisch alle Programmiersprachen reservieren bestimmte Wörter für eine bestimmte Bedeutung. Diese Wörter darf man dann nicht mehr für Bezeichnungen von Variablen oder Ähnlichem verwenden. Erfolgt beispielsweise die Einleitung einer Schlaufe mit dem Schlüsselwort „fr“ statt „for“, liegt ein Syntaxfehler vor. Manche Texteditoren können zumindest einige Syntaxfehler in bestimmten formalen Sprachen erkennen und zeigen das oft durch entsprechende Farben an. Alternativ dazu kann man den Programmtext von einem Compiler oder Interpreter verarbeiten lassen. Ein solches Programm erkennt Syntaxfehler am zuverlässigsten.
Wie kann ein Computersystem mit einem Syntaxfehler umgehen?
Im Fall eines Programms bricht die Interpretation oder Kompilierung mit einer Fehlermeldung ab. Für andere Anwendungen kommt aber auch eine sanftere Reaktion in Frage. Ein Beispiel dafür ist die Auszeichnungssprache HTML für Webseiten. Die Entwickler von Webbrowsern möchten ihren Nutzern auch fehlerhaft programmierte Webseiten so gut wie möglich anzeigen lassen. Deshalb werden die meisten Webbrowser mit Fähigkeiten ausgestattet, Syntaxfehler so weit wie möglich zu verzeihen. Diese Anwendung ist ein interessantes Beispiel dafür, dass in der Verarbeitung von formalen Sprachen syntaktische Toleranz wünschenswert sein kann und bis zu einem gewissen Grad auch möglich ist.
Wie unterscheidet sich ein Syntax- von einem Semantikfehler?
Ein Sematikfehler liegt vor, wenn eine Anweisung in einem Programm die richtige Form besitzt, aber einen inkorrekten Inhalt hat. Der Programmierer kann beispielsweise festlegen, dass man die ersten neun statt wie beabsichtigt zehn Elemente einer Liste aufsummiert. Das Ergebnis wird falsch sein, der Compiler kann diesen semantischen Fehler aber nicht erkennen. Erst beim Abarbeiten eines Programms können sich auch Fehler zeigen, die sogar zum Crash des Programms führen, obwohl kein Syntaxfehler vorliegt. Ein Beispiel ist eine Berechnung, die unter bestimmten Umständen zu einer Division durch Null führt.