Skript zur Vorlesung - Universität Paderborn
Skript zur Vorlesung - Universität Paderborn
Skript zur Vorlesung - Universität Paderborn
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
26 KAPITEL 3. OPERATIONALE SEMANTIK<br />
angeben. Für unser obiges Beispiel können wir beispielsweise schreiben:<br />
a4 ≡ (x − 7) + 3 bzw. a ′ 4 ≡ x − (7 + 3). Auf ähnliche Weise benutzen<br />
wir in Anweisungen die Klammern 2 und um die Struktur der Anweisung<br />
explizit zu machen. Unser vorangegangenes Beispiel war wie<br />
folgt gemeint:<br />
z : = 1 ;<br />
y : = 1 ;<br />
while y ≤ x do<br />
z := y ∗ x ;<br />
y := y + 1 <br />
Diese Klammern gehören nicht zu der Syntax unserer Programmiersprache,<br />
weil wir ja nur die abstrakte Syntax, d. h. die Ableitungsbäume<br />
betrachten. Sie dienen uns nur dazu, diese Struktur in einer ansonsten<br />
mehrdeutigen Zeichenreihe zu finden. Die Klammern sind konkrete<br />
Syntax, um die Struktur eines Ausdruck oder Anweisung eindeutig zu<br />
machen. Wir gehen im folgenden immer davon aus, daß eine textuelle<br />
Repräsentation einer Anweisung genug konkrete Syntax enthält, um<br />
eindeutig auf die Struktur der Anweisung zu schließen.<br />
Streng genommen ist in der Anweisung<br />
z : = 1 ;<br />
y : = 1 ;<br />
while y ≤ x do<br />
z := y ∗ x ;<br />
y := y + 1 <br />
immer noch nicht genügend konkrete Syntax enthalten, um eindeutig auf die<br />
Struktur zu schließen. Aber das ist nicht ganz so schlimm. Warum?<br />
1.3 Syntaktische Gleichheit<br />
Wir nennen zwei Ausdrücke oder Anweisungen syntaktisch gleich, wenn sie<br />
denselben Ableitungsbaum besitzen, d. h. wenn die abstrakte Syntax gleich<br />
ist. Um die syntaktische Gleichheit auszudrücken, benutzen wir das Symbol<br />
≡, das wir auch schon benutzt haben, um Ausdrücke und Anweisungen zu<br />
benennen. Wenn also zwei Ausdrücke a0 und a1 gleich sind, schreiben wir<br />
2 Diese Klammern ersetzen das begin und end in herkömmlichen Programmiersprachen<br />
oder die geschweiften Klammern in Java oder C.