Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [Erledigt] Suche Parser - Tutorial (https://www.delphipraxis.net/27724-%5Berledigt%5D-suche-parser-tutorial.html)

mytar 16. Aug 2004 10:03

Re: Suche Parser - Tutorial
 
Ja ich verstehe.

@torud: Bei wikipedia hab ich schon geschaut.

Wie erzeuge ich aus so einem Ausdruck einen Termbaum?

greetz
mytar :)

xineohp 16. Aug 2004 13:06

Re: Suche Parser - Tutorial
 
moin,

du suchst den rangniedrigsten Operator in deinem Term (und zwar nur in der äußersten Klammerebene, d.h. Ausdrücke in Klammern werden ignoriert):
also zB: 1-2*(3+4) --> niedrigster Operator: "-"

Diesen trägst du dann als Wurzel in deinen Baum ein. Anschließend rufst du deine Funktion rekursiv wieder auf, und zwar einmal mit dem linken und einmal mit dem rechten Teilausdruck:
also nachdem obigen Beispiel:

linker Teil: 5 --> kein Operator vorhanden, 5 wird als linker Nachfolger der Baumwurzel("-") eingetragen.

rechter Teil: 2*(3+4) --> liefert "*" als niedrigsten Operator, dieser wird als rechter Nachfolger der Baumwurzel("-") eingetragen.
Anschließend: erneute Rekursion mit 2 und (3+4):

linker Teil: 2 -->kein Operator vorhanden, 2 wird als linker Nachfolger des Knotens("*") eingetragen.

rechter Teil: (3+4) --> kein Operator (außerhalb der Klammern; s.o.) vorhanden UND 1.Zeichen = "(" es folgt: der gesamte Ausdruck ist von Klammern umschlossen. daher: erstes und letztes Zeichen löschen --> 3+4 und wieder Rekursion :wink: --> niedrigster (und einzigster Operator) = "+" ... als Knoten eintragen ... Rekursion linker Teil: 3 ; Rekursion rechter Teil: 4

so, Baum fertig :mrgreen:

Code:
  1-2*(3+4) -->

     -
    / \
   1   *
      / \
     2   +
        / \
       3   4

mytar 16. Aug 2004 14:40

Re: Suche Parser - Tutorial
 
Ich verstehe jetzt langsam.

Die Rekursionsaufrufe sind genau wie bei Quicksort.

greetz
mytar :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz