Die folgende Grammatik G
Gesucht ist eine zu G
Wie sieht unter diesen Bedingungen
der abstrakte Syntaxbaum für
fiwufiw
Untersuchen Sie, ob
G1, G2, G3
while (P) { A; if (Q) { B; } C; }Das Spur-Alphabet ist {A, B, C, P0, P1, Q0, Q1}
Nach welcher Regel bestimmt man,
ob ein Ausdruck f(x)
korrekt getypt ist?
(Ohne Berücksichtigung von Vererbung oder Generizität.)
f
den Typ ... hat
x
den Typ ... hat,
f(x)
... .
Wie werden die folgenden Operationen für Typen in Programmiersprachen realisiert?
In Java gibt es keine direkte Realisierung der Vereinigung,
was wird stattdessen empfohlen?
Für das Ada-Programm:
with Ada.Text_Io; use Ada.Text_Io; procedure Main is X : Integer := 3; Y : Integer := 2; procedure P (X : Integer) is procedure Q (Y : Integer) is procedure R (X : Integer) is begin Put_Line (Integer'Image (X+Y)); end R; begin if Y > 0 then P(X-1); else R(X+Y); end if; end Q; begin if X > 0 then Q(X-1); else P(X-Y); end if; end P; begin P (X-1); end Main;
Zeichnen Sie die Frames mit allen Einträgen und Verweisen
zu dem Zeitpunkt direkt vor dem ersten Aufruf von Put_Line
.
Wie wird auf die Werte von X
und Y
zugegriffen,
die in Integer'Image(X+Y)
benötigt werden?
Für folgende Deklaration:
int a [] = { 1,2,0 }; void p (int x, int y) { a[y] = x; x = y; }betrachten wir den Aufruf
p(a[0], a[1])
.
Geben Sie die Ausführungsschritte sowie die resultierende Speicherbelegung an, falls zur Parameterübergabe benutzt wird:
class C { } class D extends C { } static void p (Object x, C y) { System.out.println ("1"); } static void p (D x, C y) { System.out.println ("2"); } static void p (C x, Object y) { System.out.println ("3"); }Beschreiben Sie, wie die Überladung für die folgenden Aufrufe aufgelöst wird:
p (new D(), new D());
p (new C(), new C());
2015-08-17