53 lines
859 B
Prolog
53 lines
859 B
Prolog
% Endliche Zustandsmenge
|
|
|
|
zustand(z0).
|
|
zustand(z1).
|
|
zustand(z2).
|
|
zustand(z3).
|
|
|
|
% Eingabealphabet
|
|
sigma(a).
|
|
sigma(b).
|
|
|
|
% Zustandsübergangsrelationen
|
|
delta(z0, a, z0).
|
|
delta(z0, b, z1).
|
|
|
|
delta(z1, a, z2).
|
|
delta(z1, b, z1).
|
|
|
|
delta(z2, a, z2).
|
|
delta(z2, b, z2z3).
|
|
|
|
delta(z2z3, a, z2z3).
|
|
delta(z2z3, b, z2z3).
|
|
|
|
|
|
% Startzustand
|
|
|
|
start(z0).
|
|
|
|
|
|
% Endzustand
|
|
|
|
end(z2).
|
|
end(z2z3).
|
|
|
|
% Menge der Wörter über Sigma
|
|
sigma_stern([]).
|
|
sigma_stern([A|Ws]) :-
|
|
sigma_stern(Ws),
|
|
sigma(A).
|
|
|
|
% Erweiterung der Transitionsrelation delta_stern
|
|
delta_stern(Zustand, [], Zustand).
|
|
delta_stern(AktZ, [A|Ws], NeuZ) :-
|
|
sigma(A), delta(AktZ, A, ZwischenZ),
|
|
sigma_stern(Ws), delta_stern(ZwischenZ, Ws, NeuZ).
|
|
|
|
% Überprüfung, ob ein Wort von dem NEA akzeptiert wird
|
|
lvonN(W) :-
|
|
start(StartZustand),
|
|
delta_stern(StartZustand, W, EndZustand),
|
|
end(EndZustand).
|