Was ist der Unterschied zwischen Syntax und Semantik?

3 Antworten

Machen wir es an einem Beispiel:

#include <stdio.h>

float main(void){
     printf("Hellow World!\n");
     return 0.5;
}

Wenn der gezeigte Quellcode lediglich Zeichen des erlaubten Alphabets enthält und Wort der Sprache 'C' ist, dann ist der Programmcode syntaktisch korrekt. Er ist genau dann Teil der Sprache, wenn er die formale Grammatik erfüllt.

Aus dieser korrekten Syntax leitet sich eine Semantik ab, unter anderem, daß es eine Funktion mit Namen main gibt, die keine Parameter erhält und einen Floatwert zurückgibt.

Warum habe ich gerade dieses Beispiel gewählt?

Weil es systaktisch korrekt, aber semantisch fehlerhaft ist. Gemäß Standard ist der Rückgabewert von main() ein int. Dem Compiler ist das relativ Wurst, weil die Syntax korrekt ist. Die Konsequenz ist meist ein undefiniertes Verhalten. Im konkreten Fall läuft das Programm zwar, zeigt aber nach außen mitunter ein unerwartetes Verhalten.

Ein weiteres klassisches Beispiel:

if (a==3)
if (a=3)

Beides ist syntaktisch korrekt, der kleine Unterschied führt aber zu unterschiedlicher Semantik, in einem Fall wird ein Vergleich durchgeführt, im anderen geschaut, ob der zugewiesene Wert wahr ist..

Syntax umfasst Vokabular (Schlüsselwörter) und Grammatik, Semantik ist die daraus abgeleitete Bedeutung, also wie sich das Programm verhält/was es tut.

-------

Ergänzend zur Praxis:

Der Parser eines Compilers erzeugt mit Hilfe der fromalen Grammatik aus dem Quellcode einen Syntaxbaum (AST). Scheitert der Aufbau, so liegt ein Syntaxfehler vor.

Syntax sind die Regeln der Sprache, Anordnung der Schlüsselwörter, Operatoren, Literale, etc.

Semantik ist der Sinn dahinter, also was du mit deinem Code bezweckst.

Beispel:

a + (b - a) / 2

Die Syntax erfordert die Regel, dass wenn eine Addition VOR einer Division ausgeführt werden soll, diese geklammert werden muss.

Die Semantik sagt einfach nur: "Berechne den Mittelwert zwischen zwei Zahlen".

Du könntest es auch anders ausdrücken:

a / 2 + b / 2

Die Regeln der Syntax sind die gleichen, die Semantik (größtenteils) auch.

Syntax sind die Regeln deiner Programmiersprache. Semantik die Bedeutung deines Codes.

Woher ich das weiß:Studium / Ausbildung

Vereinfacht:

Syntax: Rechtschreibung und Grammatik

Semantik: die Bedeutung

DickCheyney974  10.10.2021, 13:11

Seit wann ist semantik die bedeutung? Schon der name "semantik" widerspricht dir. Der satzbau ist die semantik.

0