Semantik und Grammatik

Semantik

Die Semantik befaßt sich mit dem Inhalt und der Bedeutung von Sprache bzw. von sprachlichen Zeichen. Die Semantik ordnet den Wörtern der Sprache somit eine Bedeutung zu. Sie beschreibt, wie komplexe Begriffe aus einfachen Begriffen abgeleitet werden können. Der Inhalt beschreibt dabei die Beziehung der Zeichen zueinander innerhalb der Sprache, während die Bedeutung die Beziehung der Zeichen zur Umwelt beschreibt. Die Ableitung komplexer Begriffe wird unter Beachtung der sog. Syntax durchgeführt. Die Syntax einer Sprache behandelt die Muster und Regeln, nach denen Wörter zu größeren funktionellen Einheiten wie Phrasen und Sätzen zusammengesetzt werden. In Anlehnung an die formale Sprache wird ebenfalls eine formale Semantik (auch Maschinensemantik) eingeführt. Die formale Semantik einer Programmiersprache hat zum Ziel, die Bedeutung von Konstrukten einer formalen Sprache zu beschreiben. Die Bedeutung der Konstrukte eines Computerprogramms werden dabei gemäß der Syntax geprüft, so dass sich über das Anwenden von sog. Ableitungsregeln (Kalkülen) Aussagen über das Programm beweisen lassen. Die formale Semantik wird also vor allem zum Korrektheitsbeweis bei der Analyse von Maschinen herangezogen, um das Ergebnis einer Berechnung zwischen Ein- und Ausgabe zweifelsfrei zu bestimmen. Damit läßt sich definieren, wie sich eine Maschine zu einem gegeben Zeitpunkt verhält.

Grammatik

Eine Grammatik legt fest, welche Konstruktionen der Sprache erlaubt und welche nicht erlaubt sind. Sie ermöglicht somit die Unterscheidung gültiger, d.h. grammatikalisch korrekter Texte, von ungültigen Texten. Die Grammatik beschreibt die Regeln der Sprache, nach der die zugehörigen Worte angeordnet werden können. Ein Text, basierend auf dieser Grammatik, besteht aus Symbolen, die als Terminal-Symbole (auch Identifikatoren bzw. Token genannt) bezeichnet werden. Ein Terminal-Symbol ist ein Symbol, das nicht weiter zerlegt werden kann. Zur Beschreibung der Grammatik werden Pseudosymbole, sog. Nicht-Terminal-Symbole (auch Ausdruck bzw. Expression genannt) verwendet, die nicht im Text auftauchen. Diese Symbole arbeiten als Platzhalter. Ein Nicht-Terminal-Symbol erhält man, wenn man Terminal- und Nicht-Terminal-Symbole in beliebiger Weise miteinander kombiniert. Die Grammatik definiert dazu Regeln, in denen genau ein Nicht-Terminal-Symbol auf der linken Seite (lhs – left hand side, Prämisse) eines Doppelpunktes einer Folge von Terminal-Symbolen und/oder weiteren Nicht-Terminal-Symbolen auf der rechten Seite (rhs – right hand side, Konklusion) zugeordnet ist. Die Regeln beschreiben dann die Möglichkeit, die eine Seite durch die andere zu ersetzen. Man unterscheidet auch hier natürliche und formale Grammatiken. Eine natürliche Grammatik wird dabei i.d.R. auf natürliche (humanoide) Sprachen angewandt, während eine formale Grammatik auf künstliche Sprachen angewendet wird. Künstliche Sprachen finden ihren Einsatz vor allem in einem mathematisch-technischen Umfeld und werden daher auch als Maschinensprachen bezeichnet. Eine formale Grammatik läßt sich somit anhand von mathematischen Modellen beschreiben.

Beispiel für die Grammatik einer natürlichen Sprache:

Gegeben seien folgende Regeln, wobei Nicht-Terminal-Symbole in Großbuchstaben und Terminal-Symbole in Kleinbuchstaben dargestellt werden

A : a (Regel R1)
A : Aa (Regel R2)
B : Ab (Regel R3)
C : Bcc (Regel R4)

Jedes Computerprogramm wird in einer formalen Sprache beschrieben, die aus einer Aneinanderreihung von sichtbaren Zeichen (Symbolen) wie Ziffern, Buchstaben, Satzzeichen, Leerzeichen usw. besteht. Diese Zeichen sind die Terminal-Symbole der Sprache. Die zugehörige formale Grammatik der formalen Sprache wird häufig in der sog. erweiterten Backus-Nauer-Form (EBNF) beschrieben. Die EBNF kann genutzt werden, um eine kontextfreie Sprache zu beschreiben. Eine Sprache ist im Sinne der Computertechnik dann kontextfrei, wenn die Symbole unabhängig ihrer Klassifizierung (Typ, Wertebereich, Speicherort usw.) verarbeitet werden können.

Beispiel für eine formale Grammatik:

E : E + E; (Regel R1)
E : E * E; (Regel R2)
E : id; (Regel R3)

Die o.g. formale Grammatik spezifiziert also, dass ein Ausdruck (E) die Summe oder das Produkt zweier Ausdrücke (E) sein kann, oder ein Token (id) ist.

Allgemein besteht eine Grammatik damit aus:

  • einer endlichen Menge an Nicht-Terminal-Symbolen (auch Nicht-Terminale oder Variablen genannt)
  • einer endlichen Menge an Terminal-Symbolen (auch Terminale genannt), wobei das Alphabet der Terminale und die Nicht-Terminale keine gemeinsamen Symbole besitzen (disjunkt sind)
  • einer endlichen Menge an Produktions-/Reduktionsregeln (auch Regeln oder Produktionen/Reduktionen genannt)
  • einem Startsymbol, das zu den Nicht-Terminalen gehört

In der Anwendung der Grammatik-Regeln unterscheidet man Produktion und Reduktion.