Hallo zusammen!
Ich möchte mal einen
Lexer vorstellen, den ich für eine kleine Scriptsprache verwenden möchte. Die Frage nach dem Parsen von mathematischen Formeln taucht ja immer mal auf und vielleicht interessiert es ja jemanden, wie so etwas realisiert werden könnte.
Bei der
Unit handelt es sich nur um einen
Lexer, d.h. ein Script wird einfach in einzelne Token zerlegt, außerdem muss die Erkennung sicher noch etwas erweitert werden. Die Anpassung an eigene Vorstellungen ist recht einfach, ich wollte es ja auch für mich so einfach wie möglich halten.
Der Aufruf aus dem (noch nicht existierenden) Parser beschränkt sich auf eine Zuweisung des zu zerlegenden Strings und dem Lesen der Token.
Delphi-Quellcode:
begin
memOutput.Lines.Clear;
for i := 0 to memScript.Lines.Count - 1 do
begin
Lexer.LexStr := memScript.Lines[i]; //Zuweisung des Strings aus dem Script
Lexer.GetToken(Token); //Lesen des ersten Tokens
while Token.Kind <> tkUnknown do
begin
memOutput.Lines.Add(Token.Value);
Lexer.GetToken(Token); //Lesen der weiteren Token
end;
end;
end;
Edit: Ach ja, es handelt sich hier einfach nur darum, so etwas einmal auszuprobieren. Es steckt kein tieferer Sinn dahinter...