Einzelnen Beitrag anzeigen

Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: Erste Versuche zu Parsen um mit String zu rechnen

  Alt 8. Jun 2007, 18:18
Wenn du wirklich nur die vier Grundrechenarten und keine Klammern unterstützen willst, existiert in der Tat eine einfache Möglichkeit ohne Lexer oder Baum. Du benötigst eine Funktion
Parse(aTerm: string): Double bzw. Int In dieser Funktion suchst du nach einem Operator, in dieser Reihenfolge: +,-,*,/. Ist die Suche erfolgreich, rufst du deine Funktion rekursiv mit den Teiltermen links und rechts vom Operator auf und verbindest die Ergebnisse durch den Operator. Für + also zum Bleistift:
Delphi-Quellcode:
Result := Parse(TermLinks) + Parse(TermRechts);
// Exit;
Sobald kein Operator mehr gefunden wurde, muss der restliche Term eine Zahl sein (oder eben nicht -> Exception).
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat