ArchaicSeraphim, ich glaube, Du vermischt hier zwei Dinge:
Zum einen benötigst Du vermutlich einen Stack (Keller), und zum Anderen eine Zustandsübergangstabelle. Der Keller hat aber mit der Übergangstabelle nichts zu tun.
Für die Übergänge (Y',Z') bei Eingabezeichen X, Zustand Y und Kellerzustand Z) verwendest Du ein statisches 3D-'Array of TÜebergang', so etwa:
Delphi-Quellcode:
Type
TEingabezeichenklasse = (ezA, ezB, ezIllegal); // Dein Alphabet
TZustand = (zsNeutral, zsMehrAalsB, zsMehrBalsA, zsFehler); // Deine DEA-Knoten
TKellerZustand = (kzA, kzB); // Deine Kellerzustände, kann aber Quark sein
TUebergang = Record
ZustandNeu : TZustand;
KellerzustandNeu : TKellerZustand;
End;
TZustandsuebergangstabelle = Array [TEingabezeichenklasse,TZustand, TKellerZustand] Of TUebergang;
Sei nun ZT so eine Tabelle, e das Eingabezeichen, z der aktuelle Zustand und k der aktuelle Kellerzustand, dann findest Du den nächsten Zustand so:
Delphi-Quellcode:
Var
ZT : TZustandsuebergangstabelle;
e : TEingabezeichenklasse;
z : TZustand;
k : TKellerzustand;
Begin
...
DerNeueZustand := ZT[e,z,k].ZustandNeu;
DerNeueKellerzustand := ZT[e,z,k].KellerzustandNeu;
...