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