Leutchens? Für sowas ist Automatentheorie gut
Man nehme einen
deterministischen endlichen Automaten (DEA) und schon geht das ganze ganz einfach.
In etwa so:
Delphi-Quellcode:
type
TReader = class
private
IsTag: Boolean;
Values: TDictionary<string, string>;
Current, Tag: string;
public
procedure Feed(c: Char);
procedure Push;
end;
procedure TReader.Push;
begin
if IsTag then begin
Tag := Current;
Current := '';
end else begin
Values[Tag] := Current;
Current := '';
end;
end;
procedure TReader.Feed(c: Char);
begin
if c = '<' then begin
Push;
IsTag := true;
end else if c = '>' then begin
Push;
IsTag := false;
end else Current := Current + c;
end;
...
for i := 1 to Length(dateialsstring) do
Reader.feed(dateialsstring[i]);
Keine Garantie auf Richtigkeit, nur schnell zusammengetippt.