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