Sorry, aber deine Prozedur ist mir zur verkorkst bei der Hitze, da schreib ich lieber schnell eine neue.
Delphi-Quellcode:
function IsOperator(
const AValue:
string);
var
dummy: Integer;
begin
Result :=
not TryStrToInt(AValue, dummy);
end;
procedure Swap(
var AValue1, AValue2:
string);
var
temp:
string;
begin
temp := AValue1;
AValue1 := AValue2;
AValue2 := tmp;
end;
procedure SortTokensToUPN;
var
i:integer;
begin
i := High(Tokens);
if (i > 2)
and IsOperator(Tokens[i])
then
begin
// Ein Operrator ist am ende der Funktion => Syntax Error!
Writeln('
Unerwarteter Opperator: "' + Tokens[i] + '
" => Syntax Error!');
Exit;
end;
Dec(i);
while i > 2
do
begin
if IsOperator(Tokens[i])
then
Swap(Tokens[i], Tokens[i + 1]);
Dec(i);
end;
end;