Zur Themenübersicht     

 Sprachanalyse

Lexikalische, Syntaktische und Semantische Analyse

Bleiben wir nun bei der deutschen Sprache und nehmen wir als Beispiel einen Roman. Ein Roman besteht aus Sätzen. Diese wiederum aus einzelnen Worten. Die Worte wiederum bestehen aus einzelnen Buchstaben. 

Auch eine Programmiersprache setzt sich aus Zeichenfolgen und Sätzen zusammen, die Regeln von Programmierspraxchen sind allerdings viel strenger und genauer definiert. Man bezeichnet sie daher auch als 'formale' Sprachen.

1. Lexikalische Analyse:

Will ich prüfen, ob ein Wort eines Romans zur deutschen Sprache gehört (oder eine vielleicht geniale Eigenschöpfung des Dichters ist) , so kann ich im Duden, also einem Lexikon, nachschlagen. Man bezeichnet dieses daher als lexikalische Analyse.

Mit der lexikalischen Analyse prüfe ich,  ob eine Folge von Buchstaben als Wort zur deutschen Sprache gehört. 
Diese Aufgabe kann teilweise von erkennenden Automaten übernommen werden. Siehe dazu das Beispiel des Automaten, der die Wortendung 'man' erkennt. Im allgemeinen greift man aber wie zB. bei der Rechtschreibprüfung einer Textverarbeitung auf Lexika zurück

Auch bei Programmiersprachen ist es wichtig festzustellen, ob eine Zeichenfolge z.B. ein Schlüsselwort, wie if, then oder else oder einen zulässigern Bezeichner wie meinStift oder eine Integer-Konstante wie '12345' oder vielleicht auch etwas nicht Erlaubtes wie 12abc darstellt. Diese Aufgabe kann von erkennenden Automaten übernommen werden. Es finden sich auf dieser Homepage viele Beispiele

2. Syntaktische Analyse

Im Deutschen kann eine Folge lexikalisch richtiger Zeichenreihen, also eine Folge von "Worten" einen "Satz" bilden, wenn die Wortfolge gewissen grammatikalischen Regeln entspricht:

"Paul bist keiner Stuhl hallo" 
ist lexikalisch korrekt aber syntaktischer Unsinn, 
weil dieser Satz nicht der deutschen Grammatik entspricht.
"Paul sitzt grüne Fische"
 ist syntaktisch (also grammatikalisch) richtig, der Sinn oder die Semantik sind aber falsch!

Für die Prüfung der Syntax gibt es im deutschen recht feste Regeln. 

Auch in Programmiersprachen gibt es feste Regeln, wie die  lexikalischen Elementen der Sprache zusammenzusetzen sind. Die Prüfung dieser Regeln heißt Syntaxprüfung. Wir werden uns damit später genauer beschäftigen.

3. Semantische Analyse

Wie schon bemerkt, ist der Satz "Paul sitzt grüne Fische" syntaktisch korrekt aber semantisch falsch. Einfacher ausgedrückt: er macht keinen Sinn. Um den  Sinn von Sätzen erkennen zu können, müssen die Worte in ihrem Zusammenhang (Kontext) erfasst werden. Dieser Teil heißt semantische Analyse. Denken wir an unseren Roman, dann hat der Satz "Paul verabschiedete sich von Gerda" je nach der beschriebenen Situation, ja vielleicht sogar je nach Erzählstil des Dichters ganz unterschiedliche Bedeutungen. In der zwischenmenschlichen Kommunikation gehören zum Kontext auch Tonhöhe, Gesten usw. Die wirkliche Bedeutung eines Satzes zu erfassen ist daher nicht immer einfach, wie an manchem Streit, der nur auf Missverständnissen beruht, klar wird. 

Ähnliche Probleme stellen sich auch bei Programmiersprachen. Allerdings auf viel einfacherer Ebene. So müssen z.B. Variable, genauer Variablenbezeichner,  erst deklariert werden, bevor sie benutzt werden können. 

Wir kommen im Kapitel Aufgaben von Scanner, Parser und Codierer noch einmal auf diese Fragestellungen zurück.